打印

地址偏移 调试疑问

[复制链接]
1036|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aolongzx|  楼主 | 2014-11-6 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了一个bootloader烧给芯片,用了flash的前64k,主程序编写时改了地址偏移量,改到flash的65k处,实现程序跳转。
问题1:主程序flash改动后因为地址偏移的原因无法调试,原来用iar是可以的,现在用的是atmel studio6,就不行了
问题2:我的主程烧写到flash的65k后,板子上电执行完bootloader进行跳转,可是跳过去后主程序是跑不了的,不知道什么原因,确实是跳过去了,flash烧写也是没有问题的。

bootloader和主程序都是之前验证过没有问题的,现在移植后其他地方都没有问题,就是跳转过去程序不执行

相关帖子

沙发
aolongzx|  楼主 | 2014-11-6 16:49 | 只看该作者
已经解决了,原来用的是ARM7架构的芯片,0就是0地址,现在换了cortex的,Reset地址+4

使用特权

评论回复
板凳
aolongzx|  楼主 | 2014-11-7 17:58 | 只看该作者
你好,我想再问一下:
我的程序现在可以跳到flash执行了,现在我想把app放到ram的12k之后运行,bootloader分配了ram的前12k,其余的给app,我在编译app时也需要进行相应的地址改动,app中将rom大小变为0,ram的起始地址为12k。
那么问题来了:
           rom (rx)    : ORIGIN = 0x00080000, LENGTH = 0x00000000 /* Flash, 512K -》0 */
        //ram (rwx)   : ORIGIN = 0x20070000, LENGTH = 0x00018000 /* sram, 96K */
        ram (rwx)   : ORIGIN = 0x20073000, LENGTH = 0x00015000 /* sram, 96K - 12k */
当我把rom设为0时,编译过不了:region rom overflowed by xxxbytes
如果我把rom那行屏蔽掉,系统会默认给rom赋值:0xffffffff

是否有什么设置可以解决这个问题

使用特权

评论回复
地板
aolongzx|  楼主 | 2014-11-10 09:22 | 只看该作者
你好,bootloader是实现两种方式,第一种就是通常的把app放到我的rom中,也就是flash中,掉电不丢失。
另外一种是把app放到ram中,只有本次执行一下。
我的bootloader地址是用了芯片256krom的前64k,ram的前12k,剩下的给app,这是第一种,对应的app编址就是64k往后的空间。
第二种方式对应的app地址空间是想用ram12往后的空间,一共96k,那么我的rom这个时候应该是0编译出来才会正确,现在问题是这个0不知道怎么设置,我就是编译时只想用ram,不用rom,让程序分配到ram对应地址。这样我上电后会去检测sd卡中的app程序,bootloader将它直接烧到芯片ram中执行一次。

使用特权

评论回复
5
aolongzx|  楼主 | 2014-11-10 11:28 | 只看该作者
你好,麻烦了,问题已经解决了,还是很感谢斑竹的回复!

使用特权

评论回复
6
keer_zu| | 2014-11-21 18:13 | 只看该作者
aolongzx 发表于 2014-11-10 11:28
你好,麻烦了,问题已经解决了,还是很感谢斑竹的回复!

解决过程分享一下呗,期待。。。。。。。。。。。。。

使用特权

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

本版积分规则

5

主题

18

帖子

0

粉丝