从零开始写bootloard

2019-07-12 18:33发布

目标--实现一个bootloader
  支持外部程序的下载,运行, 固化和自加载
完成这个目标, 有哪些中间步骤?
1-能够实现led灯的闪烁 (汇编级和C语言级)
2-能够实现串口的初始化和读写(C语言)
3-能够实现基于串口的下载和执行(C语言)
4-能够实现命令行解析方式的下载和执行
5-能够实现Flash的固化
6-能够实现固化后的自加载启动 中间里程碑之一
闪灯
汇编语言实现
LDR, STR 内存读写指令
B, Bl 跳转指令
armasm 汇编器, armlink 链接器
S3C2440 DataSheet 数据手册
SFR 特殊功能寄存器之 GPIO 控制器
硬件设计原理图
H-jtag flasher 烧写
闪灯
C语言实现
SRAM内部存储和地址
sp 堆栈指针和栈空间
armcc编译器
volatile 关键字
#define 宏用法
main函数
反汇编工具 fromelf
SDRAM初始化 中间里程碑之二 串口
串口工作原理
缓冲寄存器,移位寄存器
帧格式
数据位,停止位,奇偶校验,流控,波特率
时钟频率设置
IO管脚的功能复用
控制寄存器,数据寄存器,状态寄存器
下载和执行
接收二进制可执行代码
getchar
跳转命令的C语言实现
函数指针
Xmodem协议
协议帧格式
传输过程控制
命令行解析
标准IO输入输出
gets
puts
printf
字符串函数
strcmp 函数(字符串比较)
strstr 函数(字符串匹配)
atoi 函数(字符串转整数)
常用命令
download
go
flashw
Flash固化
flash 的内部存储结构
flash 与主芯片的连接关系
怎样传地址, 怎样传数据
flash 的初始化配置
flash 的读写时序
Nor flash
Nand flash
自启动方式
加电后的启动流程
等待1-3秒, 如无用户输入, 则进入自加载模式
Flash的分区
加载不同应用(操作系统)
传递给内核相应参数