day02
4412作为高性能处理器,不可能像单片机一样,一直运行裸机程序,这既是对资源的浪费,又是开发成本的浪费。
今日工作:了解UBOOT和LIUNX。烧录系统,正常启动。
回顾总结
1、A9开发板的启动流程
分为三个阶段 分别是 BL0 BL1 BL2
BL0:代码固化在cpu内部的IROM里
主要的作用就是加载并运行BL1
BL1:代码是由三星公司提供的
主要作用就是加载并运行 BL2
BL2:代码三星公司并没有提供
三星给的建议是加载并运行 操作系统
2、裸机点亮LED
要想点亮LED灯 需要分析如下几个方面
引脚的接法 通过查看核心板的原理图可知 GPM4_0 - GPM4_3
有效电平 低电平有效
寄存器 GPM4_con 0x110002E0 32位 控制8个引脚
GPM_DAT 0x110002E4 8位 控制8个引脚
代码运行在什么位置
查看BL1-BL2文档可知 BL2 0x02023400
存放的位置
查看BL1-BL2文档 可以知道
SD 第0扇区 保留扇区 存放的SD卡的信息
BL1 第1-16扇区
BL2 第17-48扇区
3、交叉编译工具
将交叉编译工具压缩包拷贝到虚拟机里
解压压缩包
配置/etc/profile
安装兼容库
生效配置文件
source /etc/profile
arm-linux-gcc -v 查看版本号
4、编译和烧录
编译
只编译不链接
arm-linux-gcc -c led.c -o led.o
指定代码的启动位置
arm-linux-ld -Ttext 0x02023400 -o led.elf led.o
生成二进制文件
arm-linux-objcopy -O binary led.elf led.bin
利用三星公司提供的源代码生成 mkbl2
用mkbl2给led.bin加上一个偶校验
./mkbl2 ./led.bin bl2.bin 14336
烧录
sudo dd iflag=dsync oflag=dsync if=./bl2.bin of=/dev/sdb seek=17