专题10-移植bootm命令启动内核
0.一开始tftp能下载东西,但是很慢,做的调整有
(1)将下载地址改写成局部变量,并且每次都利用当前块编号进行重定位
(2)加上了原版u-boot里dm9000发送函数里发送前后都要清除发送标志
(3)取消了老师说的要对包进行判断,实际上不判断效果还要好一点,那一部分,要求只要在空读前后有20微妙的时间间隔就好了,经我实际测试,我的开发板确实只用空读一次就满足该条件。
(4)取消了中断处理函数里之前为了验证进的是什么中断的打印部分。时的不容易丢包,不然一直在中断,当下一个包来的时候还未跳出中断,会有丢包现象,最后导致传输失败。
1.在uboot中参考cmd_bootm.c,它主要是检查信息头。在
2.uImage和zImage的区别是uImage比后者多了一个头部信息,里面包含了OS类型,幻数,文件类型,压缩方式(从而进行解压缩),
3.找到内核的起始地址
要和tftp下载的目标地址一样。
4.设置启动参数
一开始都要先设置hdr的两个成员,在针对不同的参数类型(flag),去填写其他参数
4.1 核心参数
4.2内存参数
4.3命令行参数
4.4结束标志
5.将CPU机器码和启动参数地址传给内核,启动内核
这个函数原型和实现在linux内核,所以只要给这个函数指针指定启动参数起始地址,linux就会一句这些参数启动内核。
6.总的启动函数
7.结合前面的tftp的实现,对放在windows上的内核文件进行下载
下载完成
输入数字2启动内核
内核启动完成

浙公网安备 33010602011771号