一,前言
本轮的第一个学习目标就是完成自定义开发板,我回顾了下之前的学习笔记,代码流又想起来了。
二,需求
不用修改原来的stm代码,仅修改qemu源码添加自定义开发板。
三,实现
过程很顺利,因为改动很小。在boards-discovery.c中修改原来的F407开发板,不想再新加了,若再新加,其实也就是再copy一份。
- 修改port口,这样就不用修改stm32的代码了,继续可以用之前的led.elf,根据我新建的图像中led的位置修改xywh。
static GPIOLEDInfo stm32f4_discovery_leds_info[] = {
{
.name = "led:green",
.active_low = false,
.colour_name = "green",
.x = 50,//258,
.y = 34,//218,
.w = 34,//8,
.h = 17,//10,
.gpio_path = DEVICE_PATH_STM32_GPIO_G,//DEVICE_PATH_STM32_GPIO_D,
.irq_name = STM32_IRQ_GPIO_ODR_OUT,
.gpio_bit = 13//12,
/**/
},
- 修改jpg图片名称
cortexm_board_init_graphic_image(board,"appleboard.jpg");//(board, "STM32F4-Discovery.jpg");
- 修改开发板名称和描述
static void stm32f4_discovery_board_class_init_callback(ObjectClass *oc,
void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
mc->desc = "Apple Cai's sim board";//"ST Discovery kit for STM32F407/417 lines";
mc->init = stm32f4_discovery_board_init_callback;
}
static const TypeInfo stm32f4_discovery_machine = {
.name = BOARD_TYPE_NAME("Applecai-board"),//("STM32F4-Discovery"),
.parent = TYPE_CORTEXM_BOARD,
.class_init = stm32f4_discovery_board_class_init_callback,
/**/
};
四,输出物
编译通过后,查看支持的board,已经看到我自定义的开发板。
通过命令仿真之前的led.elf需要修改board和mcu的参数,绿色的LED能点亮。
qemu-system-gnuarmeclipse --verbose --verbose --board Applecai-board --mcu STM32F407VG -d unimp,guest_errors --image led.elf --semihosting-config enable
五,小结
好了,我的进度已经和2年前衔接了,之后会继续深入,不断探秘,今天的小目标顺利完成~