`
java-mans
  • 浏览: 11421567 次
文章分类
社区版块
存档分类
最新评论

内核移植出现的错误&&解决方法

 
阅读更多

转载自:http://bbs.chinaunix.net/thread-2033313-1-1.html


出现问题:
## Starting application at 0x30008000 ...
Uncompressing Linux.............................................................
解决方案:
setenv bootargs console=ttySAC0,115200 mem=64M ;console明令在哪暂时还没解决???
setenv
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "" or unknown-block(2,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
解决方法:把
08.05.11、 RAM disk support
09.27.07、 Compressed ROM file system support (cramfs)

1. 问题一
  下载内核到flash中,运行到如下即停止没有下文:
Uncompressing Linux……………………done,booting the kernel
卡在这里不动了
原因
分析
:可能是内核的启动参数传递时没有填写正确,也可能是在linux内核中没对flash分区,还有另一可能原因是在内核编译
配置
时没将串口驱动勾选。
解决办法:
如果是命令参数问题,则作如下修改:注释掉arch/arm/kernel/setup.c文件中的parse_tag_cmdline()函数中的strlcpy()函数,这样就可以
使用
默认的CONFIG_CMDLINE了,在.config文件中它被定义为"root=/dev/mtdblock2 ro init=/linuxrc console=ttySAC0,115200"(视具体
情况
而定),在内核配置文件的Boot options中填入也可。
如果是内核NAND flash分区的问题,则作如下修改:
1. 1 修改文件arch/arm/mach-s3c2410/devs.c,添加如下
信息

#include
#include
#include
static struct mtd_partition partition_info[]=
{
{
name:"bootloader",
size:0x00040000,
offset:0,
},
{
name:"kernel",
size:0x001c0000,
offset:0x00040000,
},
{
name:"rootfs",
size: 0x01e00000,
offset:0x00200000,
},
{
name:"ext-fs1",
size: 0x01000000,
offset:0x02000000,
},
{
name:"ext-fs2",
size: 0x01000000,
offset:0x03000000,
},
};
//以上分区和NAND flash物理分区一样,分区不一样没试过,根据自己板子情况而定
struct s3c2410_nand_set nandset=
{
nr_partitions:5,
partitions:partition_info,
};
struct s3c2410_platform_nand s3c_nand_info=
{
tacls:0,
twrph0:30,
twrph1:0,
sets:&nandset,
nr_sets:1,
};
以上分区和NAND flash物理分区一样,分区不一样没试过,根据自己板子情况而定
struct s3c2410_nand_set nandset=
{
nr_partitions:5,
partitions:partition_info,
};
struct s3c2410_platform_nand s3c_nand_info=
{
tacls:0,
twrph0:30,
twrph1:0,
sets:&nandset,
nr_sets:1,
};
struct platform_device s3c_device_nand={
.name="s3c2410-nand",
.id = -1,
.num_resources = ARRAY_SIZE(s3c_nand_resources),
.resource = s3c_nand_resource, /*黑体为新加内容*/
.dev = {
.platform_data=&s3c_nand_info
}

};
1.2 在arch/arm/mach-s3c2410/mach-smdk2410.c文件中添加&s3c_device_nand,如下所示:
static struct platform_device * smdk2410_device[] _initdata=
{
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c,
&s3c_device_iis,
&s3c_device_nand,
};
配置好以上内容后重新编译内核即可。
如果是串口驱动没有勾选,则一定记住将勾上如下选项:
Character devices
-> Serial Drivers下的项勾上.
2. 出现如下错误:VFS:Cannot open root device "mtdblock/2" or unknown-block(0,0)
Please append a correct "root=" boot option.
Kernel panic not syncing,VFS Unable to mount root fs on unknown-block(0,0)
原因分析:出现这种情况一般有两种情况:没有文件系统或boot options参数不正确,如我的系统文件系统为cramfs格式,存放文件系统的分区为第三个分区,启动参数为:
"noinitrd root=/dev/mtdblock2 ro init=/linuxrc console=ttySAC0,115200 rootfstype=cramfs mem=64M"
其中文件系统使用busybox-1.10.1
制作
重新编译即可。
3. 系统启动后出现如下错误:
Kernel panic -not syncing:VFS:Unable to mount root fs on unknown-block(31,2)
或者类似的错误。
原因分析:我在这里耗了大量的
时间
,这种情况一般是NAND flash分区未能分正确,或者所在的分区上没有文件系统,当启动中出现类似如下信息时表明分区正确了
Scanning device for bad blocks
Creating 5 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00040000 : "boot"
mtd: Giving out device 0 to boot
0x00040000-0x00200000 : "kernel"
mtd: Giving out device 1 to kernel
0x00200000-0x02000000 : "rootfs"
mtd: Giving out device 2 to rootfs
0x02000000-0x03000000 : "ext-fs1"
mtd: Giving out device 3 to ext-fs1
0x03000000-0x04000000 : "ext-fs2"
mtd: Giving out device 4 to ext-fs2
从上面看出我的文件系统放在第三个分区rootfs上,其设备号为2,启动后文件系统能挂上,如下所示
Reading data from NAND FLASH without ECC is not recommended
the error code is:0,name=/dev/root,fs=cramfs,flags=32769
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 104K
Reading data from NAND FLASH without ECC is not recommended
init started: BusyBox v1.10.1 (2008-04-23 23:20:41 CST)
starting pid 229, tty '': '/etc/init.d/rcS'
Reading data from NAND FLASH without ECC is not recommended
the error code is:0,name=/dev/root,fs=cramfs,flags=32769
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 104K
Reading data from NAND FLASH without ECC is not recommended
init started: BusyBox v1.10.1 (2008-04-23 23:20:41 CST)
starting pid 229, tty '': '/etc/init.d/rcS'
Please press Enter to activate this console.
4. 系统启动到到如下语句即停止不前,停在那里:
VFS:Mounted root (cramfs filesystem) readonly.
Freeing init memory:104
卡在这里没有下文
原因分析:系统在启用init函数时有这么一句,粗体所示
static int init(void * unused)
{
if(execute_command)
{
run_init_process(execute_command);
}
………………

在这句里面出错就会没有下文
解决办法:在配置内核时少选了几句,将如下选择全选上
Floating Point emulation
->At least one emulation must be selected:
NWFPE math emulation
Support extended precision
FastFPE math emulation(EXPERIMENTAL)
5. 关于文件系统问题:在有些资料上提到在配置内核时选上devfs,如果不存在时则手动在文件里加上。但我在内核里面和busybox-1.10.1中都未加devfs支持,文件系统运行正常。在linux-2.6.14.1及以后版本中已去掉devfs。
6. linux-2.6.15.4这个版本也能成功在s3c2410上运行.


分享到:
评论

相关推荐

    iTop4412精英版配置支持NFS文件系统服务器和QT并烧录到开发板上,保姆级教程,遇到了各种错误。

    嵌入式Linux实验讯为ITop4412定制内核,并支持NFS文件系统与QT,遇到了各种错误,保姆级教程。 错误列举:1. PL2303TA不支持Windows11。 2. 系统误识别为Android1.0。 3. Android ADB Interface上有叹号。无法成功...

    移植新内核到Linux系统上的操作步骤

    编译新的Linux内核给X86内核使用出现以下错误: scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: No such file or directory 解决方法: (1)下载openssl-1.0.1d.tar.gz tar xzf openssl-1.0.1d.tar.gz...

    嵌入式移植docker报错问题(汇总)

    经过了漫长时间的移植和查询资料,得以解决一下嵌入式docker出现的问题,很多网上的资料全都是复制粘贴复制粘贴,找不到合适的解决方法让人很是苦恼,希望自己总结出的一些解决问题的经验给广大朋友减少一些负担吧!...

    windows上可编译Linux内核

    编译过程: 1). 解压后默认的文件夹位置是在D:\Linux-0.11,如果你不是将文件解压到该目录下, ... 权宜之计,把0xffff再改成0x3ffff,这样VirtualAddress就不能大于0x3ffff,不知谁有更好的解决方法,

    uboott移植实验手册及技术文档

    了解 U-Boot-1.3.1 的代码结构,掌握其移植方法。 【实验环境】 1、Ubuntu 7.0.4发行版 2、u-boot-1.3.1 3、FS2410平台 4、交叉编译器 arm-softfloat-linux-gnu-gcc-3.4.5 【实验步骤】 一、建立自己的平台...

    Windows CE原创资料汇总

    解决WINCE6.0 远程工具不能使用ActiveSync连接 S3C6410 CE6.0移植 mfc多媒体测试程序 三星官方S3C6410 bsp资料 移植后源码 移植文档 其他 wince DriectX BusTransBusAddrToVirtual使用 CE4.2与CE5.0使用...

    android_kernel_xiaomi_sm8350:SM8350设备的内核树

    除非这些问题解决了Android特有的错误,否则除非与进行协调,否则很难接受这些。 如果要继续,请发布符合以下补丁要求的补丁。常见内核补丁要求所有补丁必须符合Linux内核编码标准,并通过script/checkpatch.pl ...

    RealView MDK调试资料

    MDK调试时出现MEMORY MISMATCH错误的原因及解决方法.pdf MDK(μVsion3)问题总结及解决方法.pdf RealView MDK中使用内联函数时需要注意的问题.pdf Realview MDK中启动代码的配置详解.pdf RealView MDK中如何指定子...

    RealView MDK 调试资料

    MDK调试时出现MEMORY MISMATCH错误的原因及解决方法.pdf MDK(μVsion3)问题总结及解决方法.pdf RealView MDK中使用内联函数时需要注意的问题.pdf Realview MDK中启动代码的配置详解.pdf RealView MDK中如何指定子...

    libusb 源码(win32 & linux USB开发)

     有问题产生必然会有想办法解决问题的人, libusb的出现给我们带来了某些方便,即节约了我们的时间,也降低了公司的成本。 所以在一些情况下,就可以考虑使用libusb的无驱设计了。  下面我们就来详细讨论一下...

    windows下可编译linux 用insight+bochs源码级调试

    权宜之计,把0xffff再改成0x3ffff,这样VirtualAddress就不能大于0x3ffff,不知谁有更好的解决方法, 08/4/4 实现了gdb+bochs源码级调试linux 0.11 08/4/6 添加了insight,可以在GUI界面里源码调试内核了

    android_kernel_xiaomi_sm8350

    除非这些问题解决了Android特定的错误,否则除非与进行协调,否则很难接受这些。 如果要继续,请发布符合以下补丁要求的补丁。 常见内核补丁要求 所有补丁必须符合Linux内核编码标准,并通过script/checkpatch.pl ...

    22春“计算机科学与技术”专业《嵌入式系统与结构》在线作业一答案参考9.docx

    为手持设备和一般类型的应用提供了低价格、低功耗、高性能微控制器的解决方案 C.支持Thumb 16位压缩指令集 D.以上全对 参考答案:ABCD 3. 嵌入式系统设备与应用密切相关,一般具有( )。 A.专用性 B.通用性 C.功能...

    android系统原理及开发要点详解_韩超_梁泉 4

     第3章“Android的Linux内核与驱动程序”,介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。  第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序...

    android_kernel_brcm_rpi

    除非这些问题解决了Android特有的错误,否则除非与进行协调,否则很难接受这些。 如果要继续,请发布符合以下补丁要求的补丁。常见内核补丁要求所有补丁必须符合Linux内核编码标准,并通过script/checkpatch.pl ...

    venus-r-oss:所有小米Mi11代码都放在一个地方,因为它们的存储库上一团糟

    除非这些问题解决了Android特有的错误,否则除非与进行协调,否则很难接受这些。 如果要继续,请发布符合以下补丁要求的补丁。 常见内核补丁要求 所有补丁必须符合Linux内核编码标准,并通过script/checkpatch.pl ...

    C/C++笔试题(附答案,华为面试题系列)

    答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a; 改后答案依次为9,10,10,11 2.某32位系统下, C++程序,请计算sizeof 的值(5分). char str[] = “http://www.ibegroup.com/” char *p = str ; int n ...

    基于mediastreamer2的网络电话实现流程以及源码库

    解决方法就是交叉编译json 下载源码:http://ftp.debian.org/debian/pool/main/j/json-c/ 分析:缺少json库,那么我们继续交叉编译json库 json-c_0.12.1.orig.tar.gz 然后通过winshare(Windows和Linux的通信)把...

    android系统原理及开发要点详解_韩超_梁泉 1

     第3章“Android的Linux内核与驱动程序”,介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。  第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序...

    深入解析Windows操作系统中文.part2.rar

    解决常见的引导问题 281 5.3 停机 286 5.4 本章总结 288 第6章 进程、线程和作业 289 6.1 进程的内部机理 289 数据结构 289 内核变量 297 性能计数器 297 有关的函数 298 6.2 CreateProcess的流程 300 阶段1:打开...

Global site tag (gtag.js) - Google Analytics