问题一:
make时出现一些错误,比如函数或变量没有定义等情况,仔细检查发现已经定义。
解决方法:
修改内核顶层的Makefile中的选项,CROSS_COMPILE注意这里的路径要带上,因为在我的主机上还装了其他编辑器。
如果不加上,就可能出现一些莫名其妙的错误。即:CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-linux-
问题二:
内核出现:kernel panic-not syncing……
解决方法:
在配置内核时加上支持EABI编译这一选项。
问题三:
- mkimage -n 'linux-2.6.30.4' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage.img
解决方法:
执行以上代码后,进入linux-2.6.30.4主目录,发现uImage.img文件只有64B,太小,下载到NAND FLASH上运行不好。
最后才发现生成的uImage.img文件应该在 arch/arm/boot下面。
原来我选错文件了。
问题四:
- Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
-
0x000000000000-0x000000100000 : "Boot"
-
0x000000120000-0x000000520000 : "Kernel"
-
0x000000520000-0x000004000000 : "yaffs2"
- ……
- ……
- drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
-
Root-NFS: No NFS server available, giving up.
-
VFS: Unable to mount root fs via NFS, trying floppy.
-
VFS: Cannot open root device "hda1" or unknown-block(2,0)
-
Please append a correct "root=" boot option; here are the available partitions:
-
1f00 1024 mtdblock0 (driver?)
-
1f01 4096 mtdblock1 (driver?)
-
1f02 60288 mtdblock2 (driver?)
-
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
-
[] (unwind_backtrace+0x0/0xdc) from [] (panic+0x40/0x110)
-
[] (panic+0x40/0x110) from [] (mount_block_root+0x1d0/0x210)
-
[] (mount_block_root+0x1d0/0x210) from [] (prepare_namespac)
-
[] (prepare_namespace+0x164/0x1bc) from [] (kernel_init+0xd)
-
[] (kernel_init+0xd4/0x108) from [] (kernel_thread_exit+0x0)
解决方法:
先修改内核配置里的Boot options-->Default kernel command string中root=/dev/mtdblock3,再修改bootargs为: root=/dev/mtdblock3.但又遇到新的问题,如下.
问题五:
- 问题:yaffs: dev is 32505858 name is "mtdblock2"
-
yaffs: passed flags ""
-
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
-
yaffs_read_super: isCheckpointed 0
-
VFS: Mounted root (yaffs filesystem) readonly on device 31:2.
-
devtmpfs: error mounting -2
-
Freeing init memory: 120K
-
Failed to execute /linuxrc. Attempting defaults...
-
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
这个问题困扰了我近两周。最开始我百度,很多人说是文件系统问题,我重新做了一遍文件系统,没有解决。也有人说是内核问题,我重新做了内核,仍没有解决,后来我换了内核版本,严格按照《嵌入式linux之我行》的内核版本和方法来做,但结果结果 还是让人很失望。
解决方法:
后来,通过交流,找到了同我一样用《嵌入式linux之我行》文档的朋友,他也遇到了同样的问题。把他的内核和文件系统来过来后,仍然没有解决问题。后来我怀疑是不是我的UBOOT有问题。后来找到《嵌入式linux之我行》的UBOOT,再加上我的内核 和文件系统,发现OK!
- S3C24XX RTC, (c) 2004,2006 Simtec Electronics
-
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
-
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
-
Advanced Linux Sound Architecture Driver Version 1.0.20.
-
ALSA device list:
-
No soundcards found.
-
TCP cubic registered
-
NET: Registered protocol family 17
-
RPC: Registered udp transport module.
-
RPC: Registered tcp transport module.
-
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
-
yaffs: dev is 32505859 name is "mtdblock3"
-
yaffs: passed flags ""
-
yaffs: Attempting MTD mount on 31.3, "mtdblock3"
-
yaffs_read_super: isCheckpointed 0
-
VFS: Mounted root (yaffs filesystem) readonly on device 31:3.
-
Freeing init memory: 136K
-
-
Please press Enter to activate this console.
-
[root@MY2440 /]# ls
-
bin home lost+found proc usr
-
dev lib mnt sbin var
-
etc linuxrc opt tmp www
肯定是我的UBOOT有问题了,可能原因是UBOOT中对yaffs文件系统的烧写功能不完善。
现在把解决问题五的所有可能方法列出来(当时我就是google了所有这方面的原因,一个个排除,最后才得到解决的。)
1,没有将相应的动态库库复制到文件系统的/lib目录下。
2,烧写文件系统时,nand flash的地址不正确,导致文件系统没有烧写到正确的地方。
3,制作yaffs2的工具mkyaffs2image有问题。
4,文件系统中/bin/busybox不可执行。
5,uboot不支持yaffs的烧写指令,或者命令用错(误 把nand write.yaffs用为nand write)
问题六:
- # VFS: Mounted root (yaffs filesystem) readonly on device 31:3.
-
# Freeing init memory: 136K
-
#
-
-
# Please press Enter to activate this console.
即文件系统不可写。
解决方法:
修改linux内核boot参数,加上:rw
阅读(8244) | 评论(5) | 转发(0) |