怎么样将大数组定义到外部SRAM
答案:2 悬赏:60 手机版
解决时间 2021-02-24 10:53
- 提问者网友:难遇难求
- 2021-02-23 23:45
怎么样将大数组定义到外部SRAM
最佳答案
- 五星知识达人网友:旧脸谱
- 2021-02-24 01:04
用定义一个新数据段的办法,在写C程序时可以不用考虑地址分配
这样你可以在外部RAM分配很多变量,而不必关心变量的定位,编译器和链接器会帮你搞定一切。
这个办法比绝对定位好很多,下次外部RAM地址变了只需改动LINK文件即可。
这样你可以在外部RAM分配很多变量,而不必关心变量的定位,编译器和链接器会帮你搞定一切。
这个办法比绝对定位好很多,下次外部RAM地址变了只需改动LINK文件即可。
全部回答
- 1楼网友:春色三分
- 2021-02-24 01:14
arm芯片复位后都是从0x0000 0004地址启动。stm32会转入一段自己的bootloader。然后根据boot引脚,选择启动位置。如果是flash则跳转到0x0800 0000(不知道地址有没记错)执行。
程序一般指定flash的地址是链接地址(arm使用绝对地址,运行和链接地址必须一致)。
数组分2类,用const标示的常量数组,普通数组。
const数组一般位于flash中的一个特定位置。
普通数组位于堆,一般是ram的低地址往上生长。
数组的初值存在flash中,即rodata段,开机时通过一段程序(通常是汇编) ,拷贝到地址的ram中。
如果数组没给初值,会通过bss段全部清成0。
如果是用keil、iar等不用关心这些。因为这些设置建立工程时候都已经做好了(链接地址&启动文件)。
从初学者使用的角度建议,数组要赋初值,即使是0。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯