搜索
bottom↓
回复: 4

LPC2148不能跳到SRAM中执行?

[复制链接]

出0入0汤圆

发表于 2009-3-13 13:19:41 | 显示全部楼层 |阅读模式
2148的SRAM的地址空间:
0x40000000 - 0x40008000

从flash开始跑,跑啊跑

在SRAM里构造出一段代码出来:
    $t
    __PLT
        0x00000000:    4778        xG      BX       pc
        0x00000002:    46c0        .F      MOV      r8,r8
    $a
        0x00000004:    e59fc000    ....    LDR      r12,[pc,#0]    ; [0xc] = 0
        0x00000008:    e12fff1c    ../.    BX       r12
    $d
        0x0000000c:    00000000    ....    DCD    0
    $a
    .text
    test_function
        0x00000010:    e28f0008    ....    ADR      r0,{pc}+0x10 ; 0x20
        0x00000014:    eafffffa    ....    B        0x4
    rtm_main
        0x00000018:    e28f0000    ....    ADR      r0,{pc}+8 ; 0x20
        0x0000001c:    eafffff8    ....    B        0x4
    $d
        0x00000020:    6c6c6548    Hell    DCD    1819043144
        0x00000024:    6f4d206f    o Mo    DCD    1867325551
        0x00000028:    656c7564    dule    DCD    1701606756
        0x0000002c:    0000000a    ....    DCD    10

左边的是从0地址开始,把它搬移到0x40001D48,0x0000000c处悬而未决的地址也解析好了。rtm_main是这段代码的入口(新的地址是0x40001D60),然后继续跑。。。

等要执行rtm_main的时候就:
*** error 65: access violation at 0x40001D60 : no 'execute/read' permission

用的Keil uVision仿真,难道是仿真的缘故?还是需要设置什么东西?

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

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

出0入0汤圆

 楼主| 发表于 2009-3-13 14:31:41 | 显示全部楼层
晕大了,估计是Keil uVision仿真的缘故,试过了,用AT91SAM7S256仿真运行也不行。

出0入0汤圆

 楼主| 发表于 2009-3-13 14:40:48 | 显示全部楼层
Keil uVision仿真设置的缘故,在uVision命令行下设置:
MAP 0x40000000,0x40008000 read write exec
就可以了

嘿嘿,动态模块载入终于有个雏形了!

发现一个好处,相同的二进制模块,在LPC2148下和AT91SAM7S256下居然是通用的,不用重新编译。坏处当然是不好调试了,暂时只能调汇编。

出0入0汤圆

发表于 2009-3-14 13:57:12 | 显示全部楼层
把一个.BIN文件加载到内存当中运行,理论上是可以的,前提是为这个BIN分配好资源

出0入0汤圆

 楼主| 发表于 2009-3-14 15:23:28 | 显示全部楼层
就是资源不好分配,

加载bin文件有三个难点:
1、一般bin文件需要采用重定位方式编译,在加载的时候需要做符号的重定位,让代码中的引用指向正确的位置。
2、在卸载时(如果支持,或需要支持当bin中的任务出错时进行动态删除这个模块),需要把模块中创建的对象,分配的内存块等正确释放。
3、在调试模块时,能够让一些调试器能够支持,因为加载到内存的文件地址已经和初始的地址不一样了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 16:07

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

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