10301|13

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

uboot引导内核到Uncompressing Linux....done, booting the kernel.就死了 [复制链接]


本人移植的是uboot1.3.2,内核用的是QQ2440 友善之臂公司已经编译好的镜像。
先用网上说的第一种解决办法:console的问题
先看以下操作:

其中
bootargs=noinitrd console=ttySAC0,115200 init=/linuxrc mem=64M


在此我的console已经是设置对了的,bootargs设置应该没什么问题了吧
在我的tftpboot目录下有几个文件,其中zImage_n35是友善公司做的内核镜像,能够

用vivi启动,一会在让大家看看vivi的启动信息。还有就是uImage是我从vmlinux开始

用mkimage做的可以用于uboot启动的内核镜像。

现就用uImage吧

[QQ2440@LCW] tftp 31000000 uImage
TFTP from server 172.16.25.70; our IP address is 172.16.25.71
Filename 'uImage'.
Load address: 0x31000000
Loading: #################################################################
         ########################################
done
Bytes transferred = 1536780 (17730c hex)
[QQ2440@LCW] imi

## Checking Image at 31000000 ...
   Image Name:   Linux Kernel
   Created:      2008-10-19  11:46:22 UTC
   Image Type:   ARM Linux Kernel Image (gzip compressed)
   Data Size:    1536716 Bytes =  1.5 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
[QQ2440@LCW] bootm
## Booting image at 31000000 ...
   Image Name:   Linux Kernel
   Created:      2008-10-19  11:46:22 UTC
   Image Type:   ARM Linux Kernel Image (gzip compressed)
   Data Size:    1536716 Bytes =  1.5 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel ...

Uncompressing

Linux.............................................................
............................................ done, booting the kernel.

到此后就死了。

接下来就用vivi加载内核,请看启动信息
其中zImage_n35已经下到nand当中,这里不在操作。
先看我的参数设置
Supervivi> param show
Number of parameters: 9
name                    :          hex             integer
.
.
Linux command line: noinitrd init=/linuxrc console=ttySAC0
Supervivi>

跟uboot的参数是一样的,现在看看能不能启动

Supervivi> boot
Copy linux kernel from 0x00050000 to 0x30008000, size = 0x00200000 ... done
zImage magic = 0x016f2818
Setup linux parameters at 0x30000100
linux command line is: "noinitrd init=/linuxrc console=ttySAC0"
MACH_TYPE = 782
NOW, Booting Linux......
Uncompressing

Linux.............................................................
............................................ done, booting the kernel.
Linux version 2.6.13 (root@localhost.localdomain) (gcc version 3.4.1) #1

由此可以看出已经引导成功了,而vivi里的参数跟uboot里的是一样,为什么vivi能引
导,而uboot不能引导呢?
网上又说了一种解决的办法,说的是vivi里的cpu时钟频率为200hz,uboot里的为405hz

,这一点我相信,因为在移植uboot的时候,我曾改过uboot里的cpu时钟频率,结果有

几次,当uboot下到nand后。启动没有信息。
好了,现在我们先来看看vivi里的cpu时钟频率

Supervivi> cpu info

Processor Information (Revision: 0x41129200)
--------------------------------------------
Processor clock: 405000000 Hz
AHB bus clock  : 101250000 Hz
APB bus clock  : 50625000 Hz

Register values
MPLLCON: 0x0007f021  (MDIV: 0x007f, PDIV: 0x02, SDIV: 0x01)
CLKDIVN: 0x00000005

Supervivi>

以上信息可以知道,我的vivi里,设置的cpu时钟频率是405hz,这个频率下为什么能够

引导内核呢?有待高人解答

现在我将uboot里的cpu频率改为200或405试试
先在start.s里改
#define CLK_CTL_BASE        0x4C000000  
#define MDIV_405       0x7f << 12   
#define PSDIV_405       0x21
    mov    r1, #CLK_CTL_BASE   
    mov    r2, #MDIV_405                   /* mpll_405mhz    */
    add    r2, r2, #PSDIV_405             /* mpll_405mhz    */
    str    r2, [r1, #0x04]

然后在QQ2440.c里改
        clk_power->MPLLCON = 0x0007f021;
以上是将cpu频率改为405Mhz。时钟比为0x05,2440里只能是这个,不能为其它。改为

0x03启动不了,已经在vivi下试过了,不信大家可以去试试。

最后重新编译,生成uboot.bin,然后下到板子上,接来看看它能不能引导内核。


bootargs=noinitrd init=/linuxrc console=ttySAC0


Environment size: 275/65532 bytes
[QQ2440@LCW] tftp 31000000 uImage
TFTP from server 172.16.25.70; our IP address is 172.16.25.71
Filename 'uImage'.
Load address: 0x31000000
Loading: #################################################################
         ########################################
done
Bytes transferred = 1536780 (17730c hex)
[QQ2440@LCW] bootm
## Booting image at 31000000 ...
   Image Name:   Linux Kernel
.
.
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel ...
Uncompressing
Linux.............................................................
............................................ done, booting the kernel.

还是卡在这里就没有反应了。

接下来我们把cpu频率改为200Mhz试试
编译重新下载到板子上后

bootargs=noinitrd init=/linuxrc console=ttySAC0

Environment size: 279/65532 bytes
[QQ2440@LCW] tftp 31000000 uImage
TFTP from server 172.16.25.70; our IP address is 172.16.25.71
Filename 'uImage'.
Load address: 0x31000000
Loading: #################################################################
         ########################################
done
Bytes transferred = 1536780 (17730c hex)
[QQ2440@LCW][QQ2440@LCW] bootm
## Booting image at 31000000 ...
.
.
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel ...

Uncompressing

Linux.............................................................
............................................ done, booting the kernel.

又再一次的失败,由此可以看出,根本不是cpu频率和console的事了。因为同样的设

备,同样的功能,只是由不同的人来执行,为什么就不行呢?看来跟本就不是执行的

人的问题,那只有一个问题了,也就是网上所上所说的,问题出在内核的console驱动

身上?还望有高人解决


有一点要提到,那就是我的vivi是烧到Nor flash里的,擦除nand 里的uboot用的是

vivi

最新回复

参数不匹配,指的是设备类型不一样吧 比如有些人把自己的设备名字从S3c2440 改成mini2440 当然会启动不了。 不过我发现我的偶然才会不启动,所以不知道是什么原因。还得再找找。 解压错误,会。  详情 回复 发表于 2013-5-22 10:05
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
好像是flash或者内存的问题。

 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主问题解决了吗?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
问题,已经解决了!是参数的问题!
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
赞,现在用QQ2440 友善之臂的人好像很多啊
LZ现在也在学习ARM吗?
你这块板子多少钱,偶也想买个过来玩玩
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
记得没有打补丁的u-boot是不能把bootline传给内核的
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼主可以对照一下我下面提供的信息  我以前的问题就是这样解决的

bootcmd的设置
setenv bootcmd nand read 0x30008000 0x100000(在nandflash的偏移位置) 0x200000(kernel分区在nandflash上面的大小)\;bootm 0x30008000

NAND read: device 0 offset 0x100000, size 0x200000
2097152 bytes read: OK
## Booting image at 30008000 ...
   Image Name:   linux kernel
   Created:      2008-10-27   3:45:14 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1660280 Bytes =  1.6 MB
   Load Address: 30008000
   Entry Point:  30008040
   Verifying Checksum ... OK
   XIP Kernel Image ... OK

 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼主可以贴出你printenv的结果吗?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
是我的mach_type参数在传给内核的时候,参数不匹配才会一直卡在那里,重新编了个新内核,问题就全部知道了
,用友善公司给的内核,他们把好多东西给改了!谢谢各位了!前不久还写了两篇文章主要是关于讲这个问题的,
可是我电脑给格式化了!一点资料没有留下!但不过还好,还好已经传了一扁到这里来了!uboot是个好东西,
有很多地方值得学习!昨天终于把uboot最版本2008也编译通过了!只是在串口没有显示,可能是频率没改好,
但不建议使用1.3.3以后的版本了,我把2008的那个版本编译出来有500k,基本上可以算是个小内核了!但是没有
那个必要,uboot只是用来启动的,用不了那么多的功能。除非你不用内核。但你不是,主要的工作还是要交给linux内核来吧。linux才是王道!

给4楼的朋友,现在友善公司的板子已经做得很好了!我们这又有三个同学买了友善公司的!现在mini2440好像
还不错,有屏还便宜!我的是今年年初买的的!1050包邮!现在850应该能拿到的!
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 
請問"參數不匹配"是怎麼知道?謝謝!!
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
关注
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
\关注
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

13
 
那个...请问一下....您参数怎定的...
 
 
 

回复

854

帖子

0

TA的资源

五彩晶圆(中级)

14
 
参数不匹配,指的是设备类型不一样吧
比如有些人把自己的设备名字从S3c2440 改成mini2440
当然会启动不了。
不过我发现我的偶然才会不启动,所以不知道是什么原因。还得再找找。
解压错误,会。
 
个人签名如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:27100460
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表