1. 开发环境介绍
2. 安装环境
1.安装编译器 2.编译uboot
3. SD卡烧写uboot
iROM:一段固化程序 1.初始化硬件,关闭看门狗,初始化协处理器,icache,初始化时钟 2.判断OM开关,即判断是从那个外部设备启动设备
1.先将uboot.bin烧入到SD卡中 2.拨码开关拨到SD卡启动方式 3.设备启动:先将uboot.bin的前面一部分程序拷贝到iRAM中(因为此时只有iRAM能工作),这个程序会初始化外部内存,即DDR内存。外部内存初始化好后,会将uboot本身拷贝到外部内存中。随后运行uboot程序。
4. 裸机程序开发实例
准备工作
uboot编译成功后,会生成uboot.map:地址和标签的映射图
进行编程
@修饰符,标签默认为局部,声明外部文件也能使用
.global _start
_start:
@apcs规定:传递参数通过r0-r3四个寄存器
@printf("hello arm n=%d\n",99);
@取str字符串的首地址
ldr r0,=str
mov r1,#99
@执行uboot里的printf
ldr pc,=0x3ff13e54;
loop:
b loop
str:
.asciz "hello arm n=%d\n"
应该怎么编译呢?
C语言: 1.预处理 2.编译 3.汇编 4. 链接(有OS时,系统自动指定链接地址,没有OS时,需要手动指定链接地址)
ARM裸板编译时: 1-3:arm-linux-gcc -c start.s -o start.o 4.链接
arm-linux-ld -Ttext=0x40008000 start.o -o arm 指定链接脚本
arm-linux-objcopy -o binary arm arm.bin 符号表不是有效指令,需要去除符号表
发送到开发板
1.在uboot中输入
loadb 0x40008000 指定文件接受存储的地址
2.在pc上,使用串口软件,发送arm.bin程序 3.在uboot中输入
go 0x40008000 作用:把pc指针指向这个地址
|