C语言点灯
运行环境搭建
设置处理器模式
设置处于SVC模式下, 超级管理员, 特权模式, 可以访问所有资源
设置CPSR寄存器0-4位设置为10011, 读写状态寄存器使用MRS和MSR指令, MRS指令读出, MSR写入寄存器
取反命令BIC R0, R0, #某几 位
或命令: ORR R0, R0, #数字
设施SP指针
SP可以指向内部RAM, 也可以指向DDR, 512M范围是0x80000000到0x9fffffff, 栈大小设置为2M
A7处理器的栈处理方式为向下增长设置SP指向0x80200000地址
跳转到C语言
使用B指令跳转到main函数
设置寄存器的宏
#define CCCM_CCGR0 *((volatile unsigned long*) 0x020c4068)
volatile关键字用来在每次读取的时候都去操作内存而不是缓冲区
编译
%.o : %.c
arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o $@ $<
-Wal
l: 显示所有的警告
-nostdlib
: 显示不链接标准启动文件