免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2068 | 回复: 8

[BootLoader] u-boot有时可引导内核,有时又不可引导内核的问题 [复制链接]

论坛徽章:
0
发表于 2011-04-11 20:33 |显示全部楼层
本帖最后由 skykingf 于 2011-04-13 10:17 编辑

之前从网上下载了个u-boot.2010.03,可以引导linux内核和initramfs系统。
最近自己亲自移植了u-boot.2010.09,用nand write把内核写到nand里面后reset有时会出现引导不成功的问题
uboot解压缩完内核后就死在
Uncompressing

Linux.............................................................
............................................ done, booting the kernel.
之后就没有任何提示了

nand 分区
static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name        = "U-Boot",
                .size        = 0x60000,
                .offset        = 0,
        },
        [1] = {
                .name        = "U-Boot Parameter",
                .offset = 0x60000,
                .size        = 0x20000,
        },
        [2] = {
                .name        = "Linux Kernel",
                .offset = 0x80000,
                .size        = 0x1300000,
        },
        [3] = {
                .name        = "Data",
                .offset = 0x1380000,
                .size        = 0x08000000-0x1380000, //0x6C80000
        }
};

uboot 的环境变量
bootargs=noinitrd init=/linuxrc root=/dev/nfs nfsroot=192.168.2.103:/home/wangfei/devlop/rootfs console=ttySAC0,115200 mem=64M ip=192.168.2.109 netmask=255.255.255.0
bootcmd=nboot 30008000 0 80000;bootm 30008000
bootdelay=3
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
ipaddr=192.168.2.109
serverip=192.168.2.103
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
ethact=dm9000

百思不得其解。
这两个uboot环境变量都是设置成一样的。

从有时用nand write把内核写到nand里面后reset能成功 可判断不是mach-ID不匹配的问题。

问题出在哪里呢?请各位高手给个线索。

论坛徽章:
0
发表于 2011-04-12 08:51 |显示全部楼层
过来看看 没人知道线索么?

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2011-04-12 10:21 |显示全部楼层
分区不对吧?
或者mach-type没对上

论坛徽章:
0
发表于 2011-04-13 10:15 |显示全部楼层
回复 3# T-Bagwell


    分区是对的,一直用的这个分区

static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name        = "U-Boot",
                .size        = 0x60000,
                .offset        = 0,
        },
        [1] = {
                .name        = "U-Boot Parameter",
                .offset = 0x60000,
                .size        = 0x20000,
        },
        [2] = {
                .name        = "Linux Kernel",
                .offset = 0x80000,
                .size        = 0x1300000,
        },
        [3] = {
                .name        = "Data",
                .offset = 0x1380000,
                .size        = 0x08000000-0x1380000, //0x6C80000
        }
};


mach-id也是匹配的

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2011-04-13 10:51 |显示全部楼层
确定是kernel没有引导起来吗?
会不会是串口没有输出数据呢?
有led灯没?驱动一下试试
如果不是上面的两个问题,就得一个问题一个问题的往外摘了

论坛徽章:
0
发表于 2011-04-14 07:13 |显示全部楼层
一个一个来试试吧

论坛徽章:
0
发表于 2011-04-14 10:48 |显示全部楼层
回复 5# T-Bagwell


    我跟踪内核发现是在
decompress_kernel结束后就没有反应了。

难道真要一步步调?  这是内核还处于汇编阶段呀

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
发表于 2011-04-14 10:57 |显示全部楼层
回复  T-Bagwell


    我跟踪内核发现是在
decompress_kernel结束后就没有反应了。

难道真要一步步 ...
skykingf 发表于 2011-04-14 10:48



   有可能,因为他给的信息只有bootloader部分输出的,kernel不知道是不是被加载成功,是否正在运行,还在oops了
可以做个driver,在kernel里驱起来一个观察的设备,比如蜂鸣器,比如led,比如马达,都可以,确认是否进入到kernel里面了

论坛徽章:
0
发表于 2011-04-14 14:08 |显示全部楼层
回复 8# T-Bagwell

看来只好这样了  正好研究一下ARM  Linux的kernel启动过程
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP