Linux
驱动开发人员所需要做的工作
Boot Loader
当
CPU
一上电,此时
CPU
必须从
NOR Flash
或者
NAND Flash
中取指令
,
直接
从
NAND Flash
取指令的
AP
为支持
Nand
启动
。
Nand boot ,
其实原理就是
AP
内部的
ROM
里有一小段代码,包括
NAND Flash
驱
动,它启动从
Nand Flash
中读取一段(比如
4KB)
到内部的
SRAM
中,
然后跳转到
SRAM
起始位置,执行
SRAM
中的代码。
SRAM
中的代码中包括初始化
SDRAM,Nand Flash driver
等,它的第一件事情就是初始化
SDRAM,
然后把
Nand Flash
中的更多的东西
(
整个
boot loader)
搬到
SDRAM
中,然后执
行
uboot
NOR boot :
代码就在
NOR Flash
中,直接执行,初始化
CPU ,SDRAM
等,
把整
个
uboot
搬到
SDRAM
中
,然后执行
uboot
,在
uboot
中把
kernel
从
NAND Flash
中读出。
对于常用的
cpu , u boot
都支持,
这块不需要改什么
对于
u boot
不支持的
cpu ,
需要写汇编,初始化
cpu ,SDRAM
,
NAND Flash
驱
动,
NOR Flash
驱动
(
setenv
命令需要)等
在
boot loader
中,还需要
UART
驱动,以支持打印信息。
另外
要加上
LCD
驱动
,以支持
splash ,
否则在
uboot
阶段,没有任何显示。
正常启动
uboot,
以引导
linux
这些就够了。
但是对于一个产品:
它在研发阶段,
uboot
必须支持
TFTP ,
需要网卡驱动
(在
boot loader
中)
必须支持通过
uboot
下载,
对于串口下载到内存,
uboot
本身支持,
loadb,loady
等命令
,但因为速度慢
,所以
一般要
uboot
支持
USB
下载,可基于
DFU
的基础上改成
bulk
传输
。
同时对于生产
ATE
,把它放在
uboot
阶段对生产比较好,否则要等到整个系统起
来,
kernel+
小测试文件系统也要
10
多妙
。
这样的话,在
ATE
中需要加上
memory test ,LCD test,
声卡测试,需要加上
I2C
驱动
,key test,RTC test,
。