首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核引导在解压缩Linux时停止...好的,引导内核

Linux内核引导在解压缩Linux时停止...好的,引导内核
EN

Stack Overflow用户
提问于 2012-02-20 18:21:30
回答 1查看 4.7K关注 0票数 2

我有一个关于将内核从旧的SH4移植到新的SH4的问题。请让我来说明一下它们之间的区别。

旧SH4

引导加载程序: redboot v2.0

内核版本: 2.4

新的SH4

引导加载程序: u-boot v2009.03

内核版本: 2.6

在旧的SH4中,许多源代码是基于内核2.4开发的,因此将内核2.4移植到新的SH4看起来比在内核2.6中重新编译源代码更容易。因此,我将mkimage应用于为旧SH4开发的zImage,如下所示。

代码语言:javascript
复制
mkimage -A sh -O linux -T kernel -C none -a 0x8c210000 -e 0x8c210000 -n 'Old kernel' -d zImage uImage

该图像被加载到新的SH4上,如下所示。

代码语言:javascript
复制
tftpboot 8c800000 uImage
cp.b $(fileaddr) a0100000 $(filesize)
bootm a0100000

但是,启动在“解压缩Linux...好的,启动内核”之后停止并挂起。我发现无限循环发生在内核/head.S的下面几行,但我认为这些行没有问题,因为内核/head.S不是定制的,它可以在旧的SH4上工作。

代码语言:javascript
复制
   !               Clear BSS area
   mov.l   3f, r1 ! __bss_start
   add     #4, r1
   mov.l   4f, r2 ! _end
   mov     #0, r0
9: cmp/hs r2, r1
   bf/s    9b     ! while (r1 < r2)
   mov.l  r0,@-r2

因此,我猜这个问题来自于新旧SH4之间的环境差异。在旧SH4中,我执行fconfig命令并设置变量,如下所示。

代码语言:javascript
复制
Load Linux Kernel & File System: true
Linux Kernel Destination address: 0x8c210000
Linux Kernel Source address: 0x80140000
Linux Kernel Size: 0x100000
RAM disk Destination address: 0x8c360000
RAM disk Source address: 0x80140000
RAM disk Size: 0x400000
Modify Linux Kernel Parameter: true
Linux Kernel base address: 0x8c001000
Linux Kernel ENTRY address: 0x8c210000
Linux Kernel INITRD size: 0xc00000
Linux Kernel INITRD start address: 0x360000
Linux Kernel loader type: 1
Linux Kernel mount root read only: 1
Linux Kernel original root device: 0x100
Linux Kernel RAM disk flags: 0
Linux Kernel Enable Virtual Terminal Console: false

我想我可以在新的SH4上设置这些参数,尽管u-boot没有fconfig命令。但是我找不到如何设置参数Linux内核源地址和Linux内核基址。这与挂起问题有关吗?或者任何关于我下一步应该检查什么的建议都将是有帮助的,因为我是Linux嵌入式系统的新手。

谢谢你的帮助。

编辑过的

添加下面的信息以显示u-boot上的printenv结果。

bootcmd=icache打开

bootm a0100000

bootdelay=2

baudrate=115200

netmask=255.255.255.0

ipaddr=192.168.1.2

serverip=192.168.1.1

gatewayip=0.0.0.0

bootargs=console=ttySC1,115200,N,8 mem=32M ether=8,0x1300,0,0,eth0 video=e1356fb:system:ms104sh4,显示器:crt,bpp:8,800x600@60

stdin=serial

stdout=serial

stderr=serial

EN

回答 1

Stack Overflow用户

发布于 2012-02-21 00:31:27

我从未使用过SH4,但这在过去对我很有帮助:http://www.denx.de/wiki/view/DULG/LinuxPostMortemAnalysis

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9359530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档