专题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启动内核

内核启动完成

posted @ 2015-04-15 16:43  生活需要深度  阅读(581)  评论(0)    收藏  举报