MCU使用STM32F429, 内存SRAM是IS61WV25616BLL.
系统:RT-Thread 4.03
开发工具:RT-thread studio
过程:
在CubeMX中设置内存的参数,自动生成BSP代码。
在studio中配置内存,开启memheap功能。
将BSP的代码文件拷贝到studio中。特别是fmc文件,直接命名为drv_fmc。
补充GPIO部分,因为IS61WV25616BLL的地址线是18根,默认代码是16根。
补充FMC的其他部分,这些都在MX_FMC_Init()函数中。
在drv_fmc.c里面增加函数:FMC_SRAM_WriteBuffer16()与FMC_SRAM_ReadBuffer16(),别的函数暂时没有加,可以根据stm32f4xx_hal_sram.c中的函数来增加。增加的目的在于省略sram的句柄,方便其他函数调用。
注册板级软件包INIT_BOARD_EXPORT(MX_FMC_Init);
memheap.c中,增加一个heap用来描述sram。相应的可以增加一个函数,我写成rt_system_heap2_init()来初始化sram_heap。
rt_hw_board_init()中调用rt_system_heap2_init()完成sram_heap的初始化。
在代码中就可以使用rt_malloc()申请内存了。
发现一个bug:
rt_malloc()申请的如果是片内,free就OK。
rt_malloc()申请的如果是SRAM,free就崩溃。没有精力去研究,先记录一下。
原作者:gy8438242
|