1.在学习韦东山ARM开发的第二个小程序,用c语言编程点亮led灯,烧写到开发板,发现无法点亮。通过生成.dis的机器码,发现没有生成分配内存地址,检查了汇编程序,没发现问题,请各位大佬指教,谢谢
/*
* 给main函数分配地址,并调用函数
*/
.text
.global _start
_start:
/* 设置内存: sp 栈*/
ldr sp, = 4096
/* 启动main函数*/
bl main
halt:
b halt
int main()
{
unsigned int *pGPFCON = (unsigned int *)0X56000050;
unsigned int *pGPFDAT = (unsigned int *)0X56000054;
/* 配置GPF4为输出引脚*/
*pGPFCON = 0x100;
/* 配置GPF4输出低电平*/
*pGPFDAT = 0;
return 0;
}
```机器码部分,len_on.dis
led_on.elf: file format elf32-littlearm
Disassembly of section .text:
00000000 <main>:
0: e1a0c00d mov ip, sp
4: e92dd800 stmdb sp!, {fp, ip, lr, pc}
8: e24cb004 sub fp, ip, #4 ; 0x4
c: e24dd008 sub sp, sp, #8 ; 0x8
10: e3a03456 mov r3, #1442840576 ; 0x56000000
14: e2833050 add r3, r3, #80 ; 0x50
18: e50b3010 str r3, [fp, #-16]
1c: e3a03456 mov r3, #1442840576 ; 0x56000000
20: e2833054 add r3, r3, #84 ; 0x54
24: e50b3014 str r3, [fp, #-20]
28: e51b2010 ldr r2, [fp, #-16]
2c: e3a03c01 mov r3, #256 ; 0x100
30: e5823000 str r3, [r2]
34: e51b2014 ldr r2, [fp, #-20]
38: e3a03000 mov r3, #0 ; 0x0
3c: e5823000 str r3, [r2]
40: e3a03000 mov r3, #0 ; 0x0
44: e1a00003 mov r0, r3
48: e24bd00c sub sp, fp, #12 ; 0xc
4c: e89da800 ldmia sp, {fp, sp, pc}
00000050 <_start>:
50: e3a0da01 mov sp, #4096 ; 0x1000
54: ebffffe9 bl 0 <main>
00000058 <halt>:
58: eafffffe b 58 <halt>
Disassembly of section .comment:
00000000 <.comment>:
0: 43434700 cmpmi r3, #0 ; 0x0
4: 4728203a undefined
8: 2029554e eorcs r5, r9, lr, asr #10
c: 2e342e33 mrccs 14, 1, r2, cr4, cr3, {1}
10: Address 0x10 is out of bounds.