Studio 自动生成代码中ROM_SIZE和RAM_SIZE定义的问题

发布于 2020-08-01 11:12:24

使用Studio创建项目自动生成的代码中,board.h中有如下一段宏定义:

#define ROM_START              ((uint32_t)0x08000000)
#define ROM_SIZE               (1024)
#define ROM_END                ((uint32_t)(ROM_START + ROM_SIZE * 1024))

#define RAM_START              (0x20000000)
#define RAM_SIZE               (128)
#define RAM_END                (RAM_START + RAM_SIZE * 1024)

这里ROM_SIZE和RAM_SIZE的单位为kB,应该将单位统一到字节比较好,修改成如下:

#define ROM_START              ((uint32_t)0x08000000)
#define ROM_SIZE               (1024 * 1024)
#define ROM_END                ((uint32_t)(ROM_START + ROM_SIZE))

#define RAM_START              (0x20000000)
#define RAM_SIZE               (128 * 1024)
#define RAM_END                (RAM_START + RAM_SIZE)

因为在芯片flash驱动drv_flash_xx.h中使用了宏定义STM32_FLASH_SIZE,代码:

const struct fal_flash_dev stm32_onchip_flash = { "onchip_flash", STM32_FLASH_START_ADRESS, STM32_FLASH_SIZE, FLASH_PAGE_SIZE, {NULL, fal_flash_read, fal_flash_write, fal_flash_erase} };

STM32_FLASH_SIZE的定义在Drv_common.h中,代码:

#define STM32_FLASH_SIZE               ROM_SIZE

所以,如果不把ROM_SIZE的单位改为字节,flash驱动就会发生错误。

每次生成新工程都需要修改ROM_SIZE和RAM_SIZE这里的定义

对于新手这就是个坑,一定会掉进去。

查看更多

关注者
1
被浏览
169
chenyaxing
chenyaxing 2020-08-01

您说的很有道理,后面会修复这个问题

2 个回答
jerry2cool
jerry2cool 2020-08-01

嗯,我前段时间就是碰到这个问题,就是手动乘的1024

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友