XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


C语言点灯

目录

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 $@ $< 

-Wall: 显示所有的警告

-nostdlib: 显示不链接标准启动文件