ARM如何给数组指定地址

走大路 2014-03-17 09:20:22
我用下面的语句声明了一个数组 :
volatile static unsigned short BUFFER[272][480];
怎样把这个数组放在指定的位置啊?
...全文
1374 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
东方赤那 2016-11-17
  • 打赏
  • 举报
回复
volatile int descriptor1[20000] __attribute__((at(0x8000700))) = { 1,2,3 };
fly 100% 2014-03-30
  • 打赏
  • 举报
回复
如果只是内存对齐 可以用关键字 pres8这种8字节对齐 alig 这些 如果是要制定地址 可以用指针 或者在编译器中把数组专门编译成一个.o 然后在链接脚本中链接到指定地址
jillpotti 2014-03-29
  • 打赏
  • 举报
回复
单独放在一个段里,然后在链接脚本里面为这个段指定一个特定的vma
走大路 2014-03-21
  • 打赏
  • 举报
回复
引用 2 楼 brantyou 的回复:
假设要存放的内存地址为: 0x30A0 0000 可以这样定义: unsigned short* pBuffer = (unsigned short*)0x30A00000; 然后对pBuffer 指针进行操作即可。 直接对地址操作存在一定的风险,请注意你使用的是虚拟地址还是物理地址
这个数组是给lcd屏显内存区,首地址我想让它位于4MB对齐的地方,我知道用指针可以,但是使用二维数组的话在对屏幕显示内容操作的时候就很非常非常的方便。是物理地址,arm裸机开发用的。
mangoalx 2014-03-21
  • 打赏
  • 举报
回复
只是为了对齐的话有专门命令干这个吧。用不着指定地址
YTerrenceLau 2014-03-18
  • 打赏
  • 举报
回复
链接脚本。。。
一介布衣萧萧 2014-03-18
  • 打赏
  • 举报
回复
假设要存放的内存地址为: 0x30A0 0000 可以这样定义: unsigned short* pBuffer = (unsigned short*)0x30A00000; 然后对pBuffer 指针进行操作即可。 直接对地址操作存在一定的风险,请注意你使用的是虚拟地址还是物理地址
猪头三小队长 2014-03-18
  • 打赏
  • 举报
回复
去看你的链接器的ld脚本帮助去,可以利用ld脚本指定某些模块的地址,gcc,armcc是不一样的,这种做法是允许的。
mangoalx 2014-03-17
  • 打赏
  • 举报
回复
我觉得要把内存保留出来(改配置减少编译器可用内存),然后把首地址定义为相应的指针来用吧

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧