Ubuntu下ARM裸机开发C语言环境搭建

Ubuntu下ARM裸机开发C语言环境搭建

1.设置I.MX6ULL处于SVC模式

设置寄存器CPSR的bit4-0为10011:读写状态寄存器需要用到汇编指令MSR和MRS。
MRS:加载CPSR寄存器的值到通用寄存器
MSR:加载特殊寄存器的值到CPSR寄存器

2.设置SP指针

Sp可以指向内部RAM,也可以指向DDR。设置栈大小,根据处理器栈增长方式,设置SP指针位置。
栈增长方式:
Ubuntu下ARM裸机开发C语言环境搭建_第1张图片
对于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语言运行环境*/

你可能感兴趣的:(Ubuntu下ARM裸机开发C语言环境搭建)