搜索
bottom↓
回复: 7

MDK 启动代码中复制RW 字节对齐

[复制链接]

出0入4汤圆

发表于 2010-9-3 19:32:20 | 显示全部楼层 |阅读模式
LDR     r0,=|Image$$RO$$Limit| ;
        LDR     r1, =|Image$$RW$$Base|   ; and RAM copy
        LDR     r3, =|Image$$ZI$$Base| ; Zero init base => end of RW init
        CMP     r0, r1                  ; Check that they are different
        BEQ     RWDONE
RWINIT
        CMP     r1, r3                  ; Copy init values for RW data
        LDRCC   r2, [r0], #4
        STRCC   r2, [r1], #4
        BCC     RWINIT
帮忙看看,这是初始化的时候复制RW类容的程序。

如果Image$$RO$$Limit是4字节的倍数,就没问题,但是如果不是,例如尾数是3,他就会提前3个字节开始多复制RW,也就是说我所有RW的初值都移位了。

有人遇到过同样的情况么,需要怎么设置MDK。或者有办法加一段ASM去解决。多谢!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入4汤圆

 楼主| 发表于 2010-9-4 14:10:14 | 显示全部楼层
等....

出0入4汤圆

 楼主| 发表于 2010-9-4 19:05:21 | 显示全部楼层
等....

出0入0汤圆

发表于 2010-9-7 20:32:58 | 显示全部楼层
本来就得4字节对齐吧……

出0入0汤圆

发表于 2010-9-7 20:43:25 | 显示全部楼层
回复【楼主位】gmyu  
-----------------------------------------------------------------------

解决办法是不要自己去复制,让__main自己去完成。要裁剪C运行库也不是这么干的。
这样初始化的,基本上都是源自很久以前,ADS那时候的代码;这么做会和C运行库构建起模模糊糊的关系,结果就是潜在的不定错误。

另外,RVCT4的RAM初始化数据可能是有压缩的;而且这样初始化,在多Exec Region的时候会出错。

出0入4汤圆

 楼主| 发表于 2010-9-10 16:32:28 | 显示全部楼层
顶楼上,我也这么想过,一直没试过。是自己不能摆脱8位机的思想,凡是都想亲历亲为,有时候虽然只是一条语句调用一个库就加上10k的代码。
主要是看到本坛的一个同志说过不要去调用_main,特别是将来要移植OS的时候。

出0入4汤圆

 楼主| 发表于 2010-9-10 17:14:39 | 显示全部楼层
IMPORT  __main
                ;LDR     R0, =main_entry
                ;BX      R0
        B       __main

改了一个语句,让MDK去跳转到C,代码增加了500个字节,编译pass,程序却停在
SWI_Handler     B       SWI_Handler

不能跳转到main()

出0入4汤圆

 楼主| 发表于 2010-9-10 18:38:31 | 显示全部楼层
代码全部重新写过,现在ok了,多谢dr2001
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-12 22:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表