一,启动文件
.global _start
_start:
@设置处理器进入SVC模式
mrs r0, cpsr @读取cpsr到r0
bic r0, r0, #0x1f @清除cpsr的bit4-0
orr r0, r0, #0x13 @使用svc模式
msr cpsr, r0 @将r0写入到cpsr
ldr sp, =0x80200000 @设置sp指针起始地址,此处已初始化ddr,若开发板未初始化ddr,则要手动初始化
b main @跳转到C语言main函数
汇编位运算
设置CPSR寄存器,看M[4:0] 设置为1001100XB ,时6ULL处于SVC模式,读写状态寄存器需要用MRS(特殊寄存器读写到普通寄存器中)MSR(普通寄存器读写到特殊寄存器中)指令
设置SP来控制出栈和入栈,可以指向内部RAM,也可以DDR,这里指向DDR,设置栈大小为0x200000=2MB,栈是向上增长。
二,main文件
main.c
#include "main.h"
/* 使能外设时钟 */
void clk_enable(void)
{
CCM_CCGR1 = 0XFFFFFFFF;
CCM_CCGR2 = 0XFFFFFFFF;
CCM_CCGR3 = 0XFFFFFFFF;
CCM_C