Ubuntu下ARM裸机开发C语言环境搭建
1.设置I.MX6ULL处于SVC模式
设置寄存器CPSR的bit4-0为10011:读写状态寄存器需要用到汇编指令MSR和MRS。
MRS:加载CPSR寄存器的值到通用寄存器
MSR:加载特殊寄存器的值到CPSR寄存器
2.设置SP指针
Sp可以指向内部RAM,也可以指向DDR。设置栈大小,根据处理器栈增长方式,设置SP指针位置。
栈增长方式:
对于ARM-A7而言,栈增长方式为向下增长,设置SP指向0x80200000。
3. 跳转到C语言运行环境(main)
global _start
_start:
mrs r0, cpsr/*将CPSR寄存器的值加载到R0寄存器*/
bic r0, r0, #0x1f/*清除R0寄存器的值的BIT4-BIT0*/
orr r0, r0, #0x13/*设置R0寄存器的值的BIT4-BIT0为1*/
mrs cpsr, r0/*加载R0寄存器的值到CPSR寄存器*/
ldr sp, =0x80200000/*设置堆栈*/
b main/*跳转到main函数,进入C语言运行环境*/