TE2410移植linux-2.6.14及调试过程总结(2)
of RAM disks16改为8
(4096)Default RAM disk size(kbytes)4096改为8192
板子的SDRAM是64M,16*4096kB = 8*8192kB = 64M
问题依然:
RAMDISK driver initialized:8RAM disks of8192K size 1024 blocksize
Mounted devfs on /dev
Freeing init memory: 92K
attempt to access beyond end of device
ram0: rw=0, want=16518, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=1944, block=8258
Failed to execute /linuxrc.Attempting defaults...
attempt to access beyond end of device
ram0: rw=0, want=16514, limit=16384
EXT2-fs error (device ram0): ext2_get_inode: unable to read inode block - inode=1922, block=8256
Kernel panic - not syncing: No init found.Try passing init= option to kernel.
修改
Default number of RAM disks值改为4
Default RAM disk size(kbytes)值改为16384
问题解决
为什么是16384呢?16384kb=16M,我制作的ramdisk镜像大小为15M,这里的15M是未用gzip压缩前的大小.
另外关于commandline的值:initrd=0x30800040,0x400000 root=/dev/ram init=/linuxrc console=ttySAC0
initrd=0x30800040是ramdisk在SDRAM中的地址,我用mkimage将ramdisk加了64(0x40)字节头信息,制作成uboot可以识别的uRamdisk,然后下载到0x30800000,所以ramdisk的正真地址为0x30800040
0x400000(4M)为ramdisk的大小,要大于压缩后的大小,我制作好的ramdisk大小为15M,压缩后1.2M
root=/dev/ram也可以是root=/dev/ram0
我在nand flash的第四个分区下载了cramfs文件系统,可以通过mount命令挂载该分区到tmp目录下
# cd dev
# ls
consolekmemmmcptmxrdttyvcc
fbkmsgmtdblockptsrooturandomzero
fullmemnullptyshmusb
inputmiscportrandomttsvc
#mount /dev/mtdblock/3/tmp
另一种方法可以在系统启动时就挂载该分区
修改/etc/init.d/rcS文件
内容如下(蓝色字体为添加的内容):
#!/bin/sh
echo "mount cramfs from mtdblock/3"
/bin/mount /dev/mtdblock/3/tmp
echo "mount all"
/bin/mount –a
说明:/etc/init.d/rcS是可执行的二进制文件,系统启动时被执行
TE2410移植linux-2 6 14调试过 相关文章:
- TE2410移植linux-2.6.14及调试过程总结(1)(11-10)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- 基于TMS320DM642的农药喷洒系统(04-22)
- 用DSP56F805 PWM模块输出高频正弦波(05-25)
- 一种基于DSP平台的快速H.264编码算法的设计(05-19)
- 基于DSP的信号采集处理系统(07-21)