u-boot-2014.10移植第31天----内核启动(一)

原本以为u-boot移植好了,引导linux内核启动不是问题吧。但是却折磨了我两天,一直在“Starting kernel...”这里卡住了。综合网上的说法出现这个问题有如下原因:

1)u-boot和linux内核主频不匹配;

2)u-boot和linux内核机器码不匹配;

3)bootarges参数数不对;

3)内核中没有添加串口相关的驱动;

实际情况是这些在我这里都是正确的。因为我用u-boot-2010.09引导linux内核启动是没有问题的,换成u-boot-2014.10就不行。。。。。。

什么信息也没有打印,除了:

Starting kernel...

这条信息是u-boot打印的,安装正常的启动,下面是会有内核打印的:

Uncompressing Linux... done, booting the kernel.

但是没有。我换了了很多种方式,反复组合测试,反复烧录,反复测试。。。。我简直就要疯了,什么情况?!

我就这么反复折腾,也不知道什么时候,我就用了go命令,出现了Uncompressing Linux... done, booting the kernel.信息,但是还是没有成功!j-link烧录又一次居然可以了正常引导启动了。

于是我再用:

tftp 30008000 zImage;go 30008000

不行,我突然想到go命令是直接设置pc地址的,不像bootm会传入参数给linux内核,于是我就讲内核中启动参数设置成:

console=ttyS0,115200 mem=64M init=/linuxrc rw loglevel=7

再运行,OK可以了。用go命令是可以的。

前面偶然又一次机会用go命令成功,是因为我再使用它之前用了:

tftp 30008000 linuxrom-s3c2440.bin;bootm 30008000

虽然没有成功引导,但是bootm已经解压了内核镜像,而且参数也传入了内核(在一个特殊的地址处),如果不掉电复位,用J-link烧录并运行u-boot,再使用go 30008000,就在前面bootm解压后的基础上成功运行了linux内核。因此,问题的症结在bootm命令有问题,我比较了u-boot-2010.04,u-boot-2014.10,和u-boot-2015.01版本的cmd_bootm.c文件,发现都有很大的改动,估计是这里有个没有被开发人员发现的bug吧,后面有机会我会在找出这个bug。

时间: 2024-08-30 16:49:08

u-boot-2014.10移植第31天----内核启动(一)的相关文章

u-boot-2014.10移植第14天----在SDRAM中运行

昨天遇到编译错误,我们从错误提示中寻找解决方法: 信息1:CHK     include/config.h /* Automatically generated - do not edit */ #define CONFIG_BOARDDIR board/samsung/tq2440 #include <config_defaults.h> #include <configs/tq2440.h> #include <asm/config.h> #include <

u-boot-2014.10移植第29天----nand flash的SPL启动(一)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 前面在移植nand flash启动时做了很多探索性的工作,但是后来发现在relocate.S文件中调用的函数中有调用大部分的库函数,牵扯到的文件较多,很难将它们一一包含到前面4K空间中去.正在想其他方法时,突然意识到SPL功能.我初步了解了一下SPL的功能,简而言之是一个将u-boot从nand flash拷贝到SDRAM

Cheatsheet: 2014 05.01 ~ 05.31

Web Choosing a Web Framework/Language Combo for the Next Decade Optimizing NGINX and PHP-fpm for high traffic sites The Absolute Beginner's Guide to Node.js Node.js Performance Tip of the Week: CPU Profiling Improved JavaScript Intellisense in Visual

【2014年5月份日常记录表(2014.5.1—5.31,31天)】

2014年5月份日常记录表(2014.5.1-5.31,31天) 日期 周次 天数 编程 日记 阅读 英语 早睡 备注 2014.5.1 周四 第1天       完成   2014.5.2 周五 第2天           2014.5.3 周六 第3天           2014.5.4 周日 第4天           大二下学期 第十一周 2014.5.5 周一 第5天           2014.5.6 周二 第6天           2014.5.7 周三 第7天      

u-boot-2014.10移植第21天----添加nand flash命令支持(三)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 虽说nand flash读写操作是可以了,但是我使用nand markbad命令将一个块标记为坏块时,再用nand scrub命令恢复出厂设置时,却出现了下面的错误: nand0: MTD Erase failure: -5 说明我们的nand flash移植是不完全正确的. 下面查找原因 在文件drivers/mtd/n

u-boot-2014.10移植第23天----nand flash启动(一)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 在Nand flash中保存环境变量 u-boot中的环境变量可以通过pri命令可以查看,可以通过set(setenv)命令设置一个参数,设置之后的参数仅仅是保存在SDRAM中,掉电后丢失, 使用save命令可以保存参数到Nor flash或Nand flash中去,但是u-boot默认是保存到Nor flash中去,下面

u-boot-2014.10移植第3天----LED裸机程序

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 在移植u-boot之前我们先熟悉一下硬件,以及如何控制硬件: 情况一: 这个情况是你的开发板中有了可以运行的u-boot.因为裸机程序能运行的前提条件是系统初始化了. 下面led.S是一位高人写的代码,完全是用ARM汇编编写的,短小精悍,主要是实现跑马灯的功能: /*****************************

【2014年7月份日常记录表(2014.7.1—7.31,31天)】

2014年7月份日常记录表(2014.7.1—7.31,31天) 日期 周次 天数 编程 日记 阅读 英语 早睡 备注 2014.7.1 周二 第1天   完成       备考 2014.7.2 周三 第2天   完成       备考 2014.7.3 周四 第3天   完成       概率论考试 2014.7.4 周五 第4天   完成       计算机组成考试 2014.7.5 周六 第5天   完成       2014.7.6 周日 第6天             大二下学期 第

2015微软创新杯Imaginecup大赛报名进行中(报名截止2014年12月31日23:59)

CSDN高校俱乐部与微软官方合作,2015微软创新杯大赛中国区官网落户CSDN高校俱乐部:http://student.csdn.net/mcs/imaginecup2015 在微软官方设置创新杯中国区奖项之外,CSDN高校俱乐部每个竞赛项目特设一等奖.二等奖.三等奖及纪念奖若干名. CSDN高校俱乐部特别奖(获奖者需在高校俱乐部进行过报名备案):详情-> 1. 一等奖(三支团队): 每个竞赛项目一等奖一名,每支团队获得奖金2,000元人民币,团队成员每人尊享2015 CSDN VIP年卡会员: