1. 大致阅读芯片手册,了解相关资源
2. 查阅硬件(核心板,开发版)
3. 物理地址统一编址(芯片手册中memory map)
初始化mmu后将物理地址映射为虚拟地址
4. 先尝试裸机开发
(1) gun常用工具
objcopy:段剪辑器
去除elf格式信息为bin:objcopy -O binary -S main_elf main.bin
注:linux执行程序时解析elf格式信息(理解为头部+bin,头部包含架构,文件大小等信息,匹配时才执行),裸机开发无架构等信息,故可以转为bin执行(去掉头部)
交叉编译
arm-linux-gcc -c led.c -o led.o
arm-linux-ld -Ttext=0x41000000 -emain led.o -o led.elf
arm-linux-objcopy
(2)位操作
P为地址指针(查寄存器地址宏定义)
第24位置1:P |= (0x1<<24)
第24位清0:P &=~(0x1<<24)
第23,22为11:P |= (0x3<<22)
第21,20清零: P &=~(0x3<<20)
(3)下载bin
①裸机无uboot需要.s启动代码
②uboot引导可执行程序加载到内存
连接串口,secureCRT,上电按enter进入uboot模式,loadb addr,进行send kermit,go addr执行程序
loadb命令:串口加载二进制文件
go命令:指定地址执行应用程序