打印

请教一个keilc的问题,有关code数组定位的

[复制链接]
4194|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今晚打老虎|  楼主 | 2008-7-10 21:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想把自己定义的多个数组连续的放在mcu rom空间中。
例如:
uchar code array1[] = {...};
uchar code array2[] = {...};
uchar code array3[] = {...};
uchar code array4[] = {...};
uchar code array5[] = {...};
uchar code array6[] = {...};
编译的时候,array2在rom空间中并不是接在array1的后面,请问有什么方法能实现我的要求?
还有一个问题,就是在程序中有下列的一段
spi_send_data(0);
spi_send_data(0);
spi_send_data(0);
spi_send_data(0);
编译链接后只有一条spi_send_data(0);的语句了,另外的3条都被优化了,可以在每条语句间加_nop_();可是觉得这样不好,不知道有没有更好的方法?谢谢!

相关帖子

沙发
huangqi412| | 2008-7-11 07:48 | 只看该作者

把几个数组拼成一个结构体估计可以作到要求.

使用特权

评论回复
板凳
ayb_ice| | 2008-7-11 08:22 | 只看该作者

用结构体

还可以直接设置连接选项

使用特权

评论回复
地板
lenglx| | 2008-7-11 12:41 | 只看该作者

...

1.
    a)在源代码中使用ORDER指示符
    #pragma SAVE
    #pragma ORDER
        uchar code array1[] = {...};
        uchar code array2[] = {...};
        //...
    #pragam RESTORE
    
    b) 在链接命令使用 NOSORTSIZE 指示符

2.
     a) 将优化级别降低
     #pragma SAVE
     #pragma ot(0, speed)
     spi_send_data(0);
     spi_send_data(0);
     spi_send_data(0);
     #pragam RESTORE
     
     b)在你的spi_send_data()函数中使用volatile变量
     

使用特权

评论回复
5
acmilann| | 2008-7-11 22:52 | 只看该作者

code 数组的话还可以直接定位到某个特定地址

使用特权

评论回复
6
今晚打老虎|  楼主 | 2008-7-13 19:50 | 只看该作者

感谢楼上几位的回答

2,3楼的那么早就起来答疑了,谢谢啊!
4楼的哥们描述的很详细,感谢!
5楼的锦上添花啊,多谢多谢!

使用特权

评论回复
7
keaiduole| | 2008-8-3 21:52 | 只看该作者

恩恩,学习了。。。。

使用特权

评论回复
8
mohanwei| | 2008-8-4 11:01 | 只看该作者

_at_ 加 sizeof()应该可以

使用特权

评论回复
9
xwj| | 2008-8-4 11:10 | 只看该作者

数组不等长的话当然是做链表啦

去看我以前发的拼音输入法,学学思路...



不过呢...C下面为什么非要想着绝对定位呢?
要绝对定位那就综合参考4、5、8楼的贴吧:-)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

94

帖子

1

粉丝