天嵌 ARM开发社区

 找回密码
 注册
查看: 4750|回复: 17

天嵌提供UBOOT的问题

[复制链接]
chenenzhi 发表于 2010-2-10 12:50:45 | 显示全部楼层 |阅读模式
       近来在调试UBOOT,发现天嵌提供的UBOOT有个问题,具体如下描述:

用天嵌的UBOOT启动后,进入菜单后,选择"[t] Test Linux Image (zImage)",此时通过USB烧写"Linux Kernel",可以正常通过uboot启动内核.但是如果进入uboot的命令行用TFTP烧写"Linux Kernel"并保存在NAND FLASH后,已经通过saveenv保存了相应参数,printenv参数如下:
EmbedSky> printenv
bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
bootdelay=0
baudrate=115200
ethaddr=0a:1b:2c:3d:4e:5f
ipaddr=192.168.1.6
serverip=192.168.1.8
netmask=255.255.255.0
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),102
4k(logo),2m(kernel),-(root)
filesize=1d5e40
filesize+1=1e0000
fileaddr=30000000
bootcmd=nand read.jffs2 0x30008000 0x00200000 0x00200000;go 0x30008000
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bios
通过reset后进入启动内核的界面"Uncompressing Linux.............................................................
............................................................. done, booting the
kernel"后就卡住不能启动,我通过自己修改的uboot来启动内核也是同样到了此步卡住了.请问这是为什么,是否贵公司的内核做了什么特别的处理导致uboot通过tftp下载后不能启动?

我在网络上查了出现此问题有三种可能  
1. console设置没有传递到内核
2. u-boot的时钟设置不在405MHz,与Kernel的不一致
3. Machine ID设置的与Kernel不一致
但是我查了都没问题,所以暂时不明白,请贵公司帮忙说明一下,谢谢.
 楼主| chenenzhi 发表于 2010-2-10 14:29:11 | 显示全部楼层
本帖最后由 chenenzhi 于 2010-2-10 14:37 编辑

需要说明的是,我用TFTP下载是下到SDRAM中,之后直接用GO 执行执行到内核的地址.
在uboot下用boot指令和我描述的错误一样,
EmbedSky> boot

NAND read: device 0 offset 0x200000, size 0x200000

Reading data from 0x3ff800 -- 100% complete.
2097152 bytes read: OK
## Starting application at 0x30008000 ...
Uncompressing Linux.............................................................
............................................................. done, booting the
kernel.



用 bootm指令则提示
EmbedSky> bootm
## Booting image at 37000000 ...
Bad Magic Number
为什么boot执行启动不了贵公司的内核!
raintcy 发表于 2010-2-10 15:39:14 | 显示全部楼层
遇到同样问题,关注
亚瑟王 发表于 2010-2-10 16:04:22 | 显示全部楼层
你烧写的镜像格式是什么呢?zImage格式还是uImage格式呢?天嵌科技提供的uboot使用的是zImage格式的内核镜像。
亚瑟王 发表于 2010-2-10 16:04:27 | 显示全部楼层
你烧写的镜像格式是什么呢?zImage格式还是uImage格式呢?天嵌科技提供的uboot使用的是zImage格式的内核镜像。
 楼主| chenenzhi 发表于 2010-2-10 16:14:26 | 显示全部楼层
我烧写的是zImage格式内核镜像,但是用boot命令不能启动.一启动就提示这个:
EmbedSky> boot

NAND read: device 0 offset 0x200000, size 0x200000

Reading data from 0x3ff800 -- 100% complete.
2097152 bytes read: OK
## Starting application at 0x30008000 ...
Uncompressing Linux.............................................................
............................................................. done, booting the
kernel.
亚瑟王 发表于 2010-2-10 16:34:04 | 显示全部楼层
boot命令是使用的uImage,boot_zImage才是zImage格式。
 楼主| chenenzhi 发表于 2010-2-10 18:24:15 | 显示全部楼层
的确用boot_zImage就可以启动内核了,这个boot_zImage是你们添加的命令吗?
另外为什么把内核下到SDRAM 0X30008000里面,之后用go 0X30008000指令后,依然执行Uncompressing Linux.............................................................
............................................................. done, booting the
kernel这个后执行不了呢?如果正常的话,内核到内存了,应该可以正常执行了对?
kpshare 发表于 2010-2-23 17:10:51 | 显示全部楼层
的确用boot_zImage就可以启动内核了,这个boot_zImage是你们添加的命令吗?
另外为什么把内核下到SDRAM 0X30008000里面,之后用go 0X30008000指令后,依然执行Uncompressing Linux................................. ...
chenenzhi 发表于 2010-2-10 18:24


俺同样遇到这个问题,希望能有个解决方案。。。
亚瑟王 发表于 2010-3-1 11:39:33 | 显示全部楼层
1、你下载到0x30008000是什么格式的内核镜像呢?
2、使用boot_zImage这个命令就是针对zImage格式的内核镜像。
wukui1008 发表于 2012-5-5 20:43:46 | 显示全部楼层
本帖最后由 wukui1008 于 2012-5-5 20:48 编辑

我也碰到一样的问题啊
使用命令
tftp 0x30008000 zImage
成功后
怎么直接从0x30008000启动内核呢??????????
go 0x30008000 不行
boot_zImage 0x30008000可以执行,但是不是直接跑内核啊。。。。。
跑到uboot中的boot_zImage函数了  把之前从NandFlash中拷贝到SDRAM中的代码又复制到了0x30008000 然后再启动。。。。。
那我通过tftp 0x30008000 zImage下载到SDRAM的内核被覆盖了。这有个毛用啊???
EmbedSky>>boot_zImage 0x30008000
[RUN_COMMAND] cmd[33de1ae4]="boot_zImage"
[PROCESS_SEPARATORS] boot_zImage
token: "boot_zImage"
[PROCESS_MACROS] INPUT len 11: "boot_zImage"
[PROCESS_MACROS] OUTPUT len 11: "boot_zImage"
parse_line: "boot_zImage"
parse_line: nargs=1
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ...
Copy Kernel to SDRAM done
zImage magic = 0x016f2818
Setup linux parameters at 0x30000100
linux command line is: "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"
NOW, Booting Linux......zengqinglin
Uncompressing Linux........................................................................................................................... done, booting the kernel.
...
亚瑟王 发表于 2012-5-10 12:20:31 | 显示全部楼层
wukui1008 发表于 2012-5-5 20:43
我也碰到一样的问题啊
使用命令
tftp 0x30008000 zImage

亲,
1、TQ2440对应u-boot里面有个命令t,可以在内存中直接运行内核,不需要单独用命令来下载。
2、TQ2440对应的u-boot源码已经提供了,你可以在cmd_menu.c中获取t命令对应的操作指令。
zhili 发表于 2013-11-6 13:01:08 | 显示全部楼层
亚瑟王 发表于 2012-5-10 12:20
亲,
1、TQ2440对应u-boot里面有个命令t,可以在内存中直接运行内核,不需要单独用命令来下载。
2、TQ2 ...

你好,我也碰到上面的问题,但我想用bootm命令启动uImage格式的内核,该怎么解决不能启动的问题??
亚瑟王 发表于 2013-11-6 13:55:26 | 显示全部楼层
zhili 发表于 2013-11-6 13:01
你好,我也碰到上面的问题,但我想用bootm命令启动uImage格式的内核,该怎么解决不能启动的问题??

你用的是天嵌科技提供的u-boot源码?还是自己移植的源码?
如果是天嵌科技提供的源码,请参考7楼的回复。
亚瑟王 发表于 2013-11-6 13:56:35 | 显示全部楼层
zhili 发表于 2013-11-6 13:01
你好,我也碰到上面的问题,但我想用bootm命令启动uImage格式的内核,该怎么解决不能启动的问题??

你用的是天嵌科技提供的u-boot源码?还是自己移植的源码?
如果是天嵌科技提供的源码,请参考7楼的回复。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 18:23 , Processed in 1.034113 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表