嵌入式技术william hill官网
直播中

张秀兰

7年用户 1291经验值
私信 关注
[经验]

物理内存SRAM增加的具体过程简析

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

更多回帖

发帖
×
20
完善资料,
赚取积分