|
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周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|