pcDuino的linux移植二内核是启动了,但是还存在问题,先分析启动信息,再移植根文件系统
问题一:**无法读取“uEnv.txt”,来自MMC 0:1的**
部分启动信息:
阅读uEnv.txt
**无法从MMC 0:1读的“uEnv.txt”的**
装载文件“uEnv.txt”从MMC器件0:1
很明显找不到uEnv.txt,uEnv.txt是设置启动参数的,生成过程boot.cmd——>boot.src——>uEnv.txt
1,创建boot.cmd设置启动参数。boot.cmd:
SETENV的bootargs控制台= ttyS0上,115200 noinitrd的init = / init的根= / dev/mmcblk0p2 rootfstype = ext4的rootwait恐慌= 10 $ {额外}
fatload MMC 0 0×43000000开机/ script.bin
fatload MMC 0×48000000开机/的uImage
BOOTM 0×48000000
2。根据boot.cmd,生成的u-boot能够读取的boot.src文件
mkimage-C没有A臂-T脚本-D boot.cmd boot.scr
3.据说老版本的u-boot能读取boot.scr,新版本的不能直接读取。为了验证这个,我先只用boot.scr,不行再通过uEnv.txt读取boot.scr:
BOOTENV = boot.scr
loaduimage = fatload MMC $ {mmcdev}中$ $ {LOADADDR} {BOOTENV}
=回声从MMC跑步boot.scr脚本,mmcboot ...;源$ {LOADADDR}
4,烧写实验
直接用boot.scr:
改变@变化:〜/ $ Si/A10/pcduino的 vim boot.cmd的
SETENV的bootargs控制台= ttyS0上,115200 noinitrd的init = / init的根= / dev/mmcblk0p2 rootfstype = ext4的rootwait恐慌= 10 $ {额外}
fatload MMC 0 0×43000000开机/ script.bin
fatload MMC 0×48000000开机/的uImage
BOOTM 0×48000000
保存退出
变化变化:〜/ Si/A10/pcduino $ mkimage-C没有手臂-T脚本-D boot.cmd boot.scr
图片名称:
创建时间:周六04月20日21:41:43 2013
图片类型:ARM Linux的脚本(未压缩)
数据大小:225字节= 0.22 KB = 0.00 MB
加载地址:00000000
报名点:00000000
内容:
图片0:217字节= 0.21 = 0.00 MB
若干这里mkimage报错或移植二中作出
改变@变化:/ Si/A10/pcduino〜$ sudo的安装/ dev/sdb1到/ mnt /
[sudo的密码变化:改变@变化:〜/ Si/A10/pcduino $ CP boot.scr到/ mnt /
放到pcDuino TF卡槽,设置串口115200 8 N 1启动信息还是
U-Boot的SPL 2012.10(2013年4月19日- 18时46分44秒)
内存:1024MB
孙喜SD / MMC:0
的U-Boot 2012.10(2013年4月19日- 18时46分44秒)的全志科技
CPU:孙喜家庭
电路板:pcDuino
I2C:准备
DRAM:1 GIB
MMC:孙喜SD / MMC:0
***警告-坏CRC,使用默认的环境
:串行
输出:串行
错误:串行
命中任意键停止自动引导:0
阅读uEnv.txt
**无法从MMC 0:1中,读“uEnv.txt”的**
加载文件“uEnv.txt”的MMC设备0:1
ext2文件系统安装失败...
**坏ext2分区或磁盘- MMC 0:1 **
ext2load -从Ext2文件系统负载的二进制文件
用uEnv.txt读取boot.scr
改变@变化:〜/ $ Si/A10/pcduino的 vim uEnv.txt的
BOOTENV = boot.scr
loaduimage = fatload MMC $ {mmcdev}中$ $ {LOADADDR} {BOOTENV}
=回声从MMC跑步boot.scr脚本,mmcboot ...;源$ {LOADADDR}
保存,退出,TF卡插到UBUNTU变的/ dev / sdc的
改变@变化:〜/ Si/A10/pcduino $ sudo的安装/ dev/sdc1上到/ mnt / 改变@变化:〜/ Si/A10/pcduino CP uEnv.txt到/ mnt / 改变@变化:〜/ Si/A10 / pcduino $ sudo的使用umount / dev/sdc1上到/ mnt / 卸载:到/ mnt:未镶嵌
TF卡插到pcDuino卡槽,连接串口设置为115200 8 N 1,启动信息如下:
U-Boot的2012.10(2013年4月19日 - 18时46分44秒)全志科技
CPU:孙喜家庭
电路板:pcDuino
I2C:准备
DRAM:1 GIB
MMC:孙喜SD / MMC:0
***警告-坏CRC,使用默认的环境
:串行
输出:串行
错误:串行
命中任意键停止自动引导:0
阅读uEnv.txt
读取144字节
加载环境从uEnv.txt
阅读boot.scr
读取289字节
跳boot.scr的,
##44000000
错误的图像格式的“源文件”命令,
阅读script.bin的执行脚本
44900字节读
阅读的uImage
4693132字节读
#从传统的图像引导内核在48000000 ...
图片名称:Linux的3.0.62
图片类型:ARM Linux内核映像(未压缩)
数据大小:4693068字节= 4.5 MIB
加载地址:40008000
报名点:40008000
验证校验... OK
加载内核映像... OK
OK
从内核开始...
<6>初始化子系统的cgroup CPUSET
<5> Linux版本3.0.62(改成@变化)(gcc版本4.4.1(的Sourcery G+ +建兴2009Q3-67))#1 PREEMPT周六4月20日18时32分39秒CST 2013
CPU:的ARMv7处理器413fc082]修订版2(ARMv7体系),CR = 10c5387d的
CPU:VIPT的nonaliasing数据缓存,VIPT别名指令缓存
机:sun4i
<6>记忆切断:
<6>马里:0x5c000000 - 0x5fffffff(64 MB)
<4>忽略无法识别的标记0×00000000
<6>内存保留
:<6> SYS:0×43000000 - 0x4300ffff(64 KB)
<6> VE:0×44000000 - 0x48ffffff(80 MB)
<6> G2D:0×49000000 - 0x49ffffff (16 MB)
<6>液晶:0x5a000000 - 0x5bffffff的
存储器(32 MB)政策:ECC禁用,数据高速缓存回写
<6>芯片ID:A10(AW1623修订版C)
<7>在节点0总页数:245760
<7> free_area_init_node:节点0,pgdat c0887ea0,node_mem_map c094e000
<7>普通区:1280页用于MEMMAP
<7>正常区域:保留0页
<7>普通区:146176页,后进先出法批:31
<7> HIGHMEM区:768 MEMMAP用于页面
<7>区HIGHMEM:97536页,后进先出批量:31
<7> PCPU ALLOC:S0 R0 d32768 u32768的alloc = 1 * 32768
<7> PCPU ALLOC:[0] 0
内置1区顺序运行我们,移动分组上。总页数:243712
<5>内核命令行:请将console = ttyS0,115200根= 8恐慌= / dev/mmcblk0p2 rootwait记录等级= 10
<6> PID哈希表项:4096(顺序为:2,16384字节)
<6>的dentry缓存哈希表项:131072(顺序为:7,524288字节)
<6>的inode缓存哈希表项:65536(顺序为:6,262144字节)
<6>内存:448MB 512MB = 960MB总额的
<5>内存:833852k / 833852k可用,149188k保留,393216K HIGHMEM
<5>虚拟内核内存布局:
向量:为0xffff0000 - 0xffff1000(4 KB)
fixmap:0xfff00000 - 0xfffe0000(896 KB)
.........太长了此处省略若干,通过上面的启动信息发现uEnv.txt读取正常
<0>内核恐慌-不同步:试图杀害的init!
[2.650000]内核恐慌-不同步:试图杀死的init!
<c003e92c>](+0 unwind_backtrace×0/0x13c)从[<c05fa2ac>](恐慌+0×74/0×188)
[2.660000] [<c003e92c>](unwind_backtrace +0从×0/0x13c)[<c05fa2ac>](惊恐+0×74/0×188)
[<c05fa2ac>](恐慌+0×74/0)[<c006bfd0>](do_exit +0 x6c4 / 0×188×788)
[2.670000] [<c05fa2ac>](恐慌+0×74/0×188)[<c006bfd0>]( do_exit +0 x6c4 / 0×788)
[<c006bfd0>](do_exit +0 x6c4 / 0×788)[<c003c87c>](模具+0×288/0×300)
[2.690000] [<c006bfd0>](do_exit + 0x6c4 / 0)[<c003c87c>](模具+0×288/0×788×300)
[<c003c87c>](模具+0×288/0×300)从[<c0042cb0>](__do_kernel_fault +0× 74/0×84)
[2.700000] [<c003c87c>](模具+0×288/0×300)[<c0042cb0>](__do_kernel_fault +0×74/0×84)
[<c0042cb0>](__do_kernel_fault + 0×74/0×84)从[<c0042e40>](do_page_fault +0×180/0x2e4)
[2.720000] [<c0042cb0>]“(__do_kernel_fault +0×74/0×84)[<c0042e40>,](do_page_fault +0×180/0x2e4)
[<c0042e40>](do_page_fault +0×180/0x2e4)从[<c00312b4>](do_DataAbort +0×34/0×98)
[2.730000] [<c0042e40>](do_page_fault +0 ×180/0x2e4)从[<c00312b4>](do_DataAbort +0×34/0×98)
[<c00312b4>] [<c0037dd0>](__dabt_svc +0×70(do_DataAbort +0×34/0×98) / 0XA0)
[2.750000] [<c00312b4>](do_DataAbort +0×34/0×98)[<c0037dd0>](__dabt_svc +0×70/0xa0)
异常的堆栈(0xe783bee8 0xe783bf30)
[2.770000]异常堆栈( 0xe783bee8 0xe783bf30)
bee0::29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
[2.780000] bee0:29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30,
[2.790000] BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30
BF20:f8a905a8 c0059aac 20000013 FFFFFFFF
[2.810000] BF20:20000013 c0059aac f8a905a8 FFFFFFFF
[<c0037dd0>](__dabt_svc +0×70/0xa0)[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[2.810000] [<c0037dd0>] (__dabt_svc +0×70/0xa0)从[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)[<c040b868>](alloc_pin,中XC / 0 +0×60)
[2.830000] [<c0059aac>]“(sunxi_gpio_request_array +0×160/0×540)从[<c040b868>](alloc_pin +0 / 0×60)
[<c040b868>](alloc_pin +0 XC XC / 0×60)从[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0×144)
[2.850000] [<c040b868>](alloc_pin +0 XC / 0×60)从[<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C× 144)
[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0)[<c0031378>]“(do_one_initcall +0×34/0×144×180)
[2.860000] [<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C×144)从[<c0031378>](do_one_initcall +0×34/0×180)
[<c0031378>](do_one_initcall +0×34/0)[<c00084d4>](kernel_init +0×180×108/0×194)
[2.880000] [<c0031378>](do_one_initcall +0×34/0×180×194)[<c00084d4>](kernel_init +0×108/0)
[<c00084d4>](kernel_init +0×108/0× 194)[<c0039358>](kernel_thread_exit +0×0/0×8)
[2.900000] [<c00084d4>](kernel_init +0×108/0×194)来自[<c0039358>的(kernel_thread_exit +0×0 / 0×8)
<0>重新启动在10秒.. [2.920000]在10秒内重新启动..
这下内核启动算成功了,由于还没有文件系统,找不到进程初始化,故杀的init
问题二:<0>内核恐慌 - 不同步:企图杀死初始化!
上面分析了,其实就是找不到init进程,而文件系统提供这些进程。先写到这,明天开始移植文件系统
下面开始移植根文件系统:
改成@变化:〜/ Si/A10/pcduino $ MKDIR根文件系统
1,编译,安装busybox的
获取busybox的源码http://www.busybox.net/ 点击BusyBox的1.21.0下载源码,解压到工作目录并进入该目录
改成@变化:〜/ Si/A10/pcduino/busybox-1.21.0号$ make menuconfig时
先采用默认配置,不行回来再改
改成@变化:〜/ Si/A10/pcduino/busybox-1.21.0号$ VIM的Makefile
修改:
164:CROSS_COMPILE =臂没有Linux的gnueabi
190:ARCH =手臂
保存退出,开始编译
改变变化:〜/ Si/A10/pcduino/busybox-1.21.0, 使
........ / /过程有点长,省略若干
AR util-linux/volume_id/lib.a
LINK busybox_unstripped
试图图书馆:
图书馆隐窝地穴米不需要,不包括
图书馆m的需要,也不能排除它(还)的
最后一个环节:米
DOC busybox.pod
DOC BusyBox的。 TXT
DOC busybox.1
DOC BusyBox.html
编译结束,开始安装到指定目录
变化变化:〜/ Si/A10/pcduino/busybox-1.21.0号$ 使CONFIG_PREFIX =。。/ rootfs的安装
-----------------
你可能会需要让你的BusyBox二进制文件的
setuid root的,以确保所有配置的applet将
工作
改成@变化:〜/ Si/A10/pcduino/busybox-1.21.0, CD .. / rootfs的/ 改变@变化:〜/ Si/A10/pcduino/rootfs的$ ls-l的 12 drwxr-XR-X 2的变化改变4096 2013年4月21日16:05本lrwxrwxrwx 1的变化而变化11 2013年4月21日16:05 linuxrc的- > BIN / busybox的 drwxr-XR-X 2的变化而变化4096 2013年4月21日16:05 SBIN drwxr XR-X 4的变化而变化:4096 2013年4月21日16:05 USR 变化@改变:〜/ Si/A10/pcduino/rootfs的$
(2)创建设备文件
改变@变化:〜/ Si/A10/pcduino/rootfs的$ MKDIR dev的变化的变化:〜/ Si/A10/pcduino/rootfs的$ CD DEV / 改变@变化:〜/ $ sudo的Si/A10/pcduino/rootfs/dev mknod的控制台C 5 1 变化变化:〜/ $ sudo的MKNOD空Si/A10/pcduino/rootfs/dev C 1 3 变化变化:〜/ Si/A10/pcduino/rootfs/dev $ ls-l的 总0 CRW- R-R-1根5,1 2013年4月21日17:00控制台 CRW-R-R-1根1根,2013年4月21日17:00空 3。构建配置文件
改成@变化:〜/ Si/A10/pcduino/rootfs $ MKDIR等
改成@变化:〜/ Si/A10/pcduino/rootfs的$ VIM etc / inittab中
#/ etc / inittab中
控制台:: askfirst :-/ bin / sh的
保存退出
4,安装的glibc库
变化变化:〜/ Si/A10/pcduino/rootfs的$ MKDIR-P解放变化变化:〜/ Si/A10/pcduino/rootfs的 LS 斌dev等的inittab中解放linuxrc的SBIN的USR 变化变化:〜/ Si/A10号/ pcduino / rootfs的 CD *所以* / home/change/Si/A10/pcduino/rootfs/lib /-D 的变化的变化:〜/ tools/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/lib的$ CD ..的/ usr / lib中的变化变化:〜/ tools/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/usr/lib的 CP 美元 *。所以* /的home/change/Si/A10/pcduino/rootfs /解放/-D
5烧写,测试
改成@变化:〜/ tools/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/usr/lib $ CD / home/change/Si/A10/pcduino / 改变@变化:〜/ Si/A10 / $ sudo的pcduino安装/ dev/sdc2的到/ mnt / [sudo的密码改变:改变@变化:〜/ Si/A10/pcduino $ sudo的CP-R根文件系统到/ mnt /
改变@变化:〜/ Si/A10/pcduino $ sudo的使用umount / dev/sdc2
插TF到pcDuino,系统启动
U-Boot的2012.10(2013年4月19日 - 18时46分44秒)全志科技
CPU:孙喜家庭
电路板:pcDuino
I2C:准备
DRAM:1 GIB
MMC:孙喜SD / MMC:0
***警告-坏CRC,使用默认的环境
:串行
输出:串行
错误:串行
命中任意键停止自动引导:0
阅读uEnv.txt
读取144字节
加载环境从uEnv.txt
阅读boot.scr
读取289字节
跳boot.scr的,
##44000000
错误的图像格式的“源文件”命令,
阅读script.bin的执行脚本
44900字节读
阅读的uImage
4693132字节读
#从传统的图像引导内核在48000000 ...
图片名称:Linux的3.0.62
图片类型:ARM Linux内核映像(未压缩)
数据大小:4693068字节= 4.5 MIB
加载地址:40008000
报名点:40008000
验证校验... OK
加载内核映像... OK
OK
从内核开始...
<6>初始化子系统的cgroup CPUSET
<5> Linux版本3.0.62(改成@变化)(gcc版本4.4.1(的Sourcery G+ +建兴2009Q3-67))#1 PREEMPT周六4月20日18时32分39秒CST 2013
CPU:的ARMv7处理器413fc082]修订版2(ARMv7体系),CR = 10c5387d的
CPU:VIPT的nonaliasing数据缓存,VIPT别名指令缓存
机:sun4i
<6>记忆切断:
<6>马里:0x5c000000 - 0x5fffffff(64 MB)
<4>忽略无法识别的标记0×00000000
<6>内存保留
:<6> SYS:0×43000000 - 0x4300ffff(64 KB)
<6> VE:0×44000000 - 0x48ffffff(80 MB)
<6> G2D:0×49000000 - 0x49ffffff (16 MB)
<6>液晶:0x5a000000 - 0x5bffffff的
存储器(32 MB)政策:ECC禁用,数据高速缓存回写
<6>芯片ID:A10(AW1623修订版C)
<7>在节点0总页数:245760
<7> free_area_init_node:节点0,pgdat c0887ea0,node_mem_map c094e000
<7>普通区:1280页用于MEMMAP
<7>正常区域:保留0页
<7>普通区:146176页,后进先出法批:31
<7> HIGHMEM区:768 MEMMAP用于页面
<7>区HIGHMEM:97536页,后进先出批量:31
<7> PCPU ALLOC:S0 R0 d32768 u32768的alloc = 1 * 32768
<7> PCPU ALLOC:[0] 0
内置1区顺序运行我们,移动分组上。总页数:243712
<5>内核命令行:请将console = ttyS0,115200根= 8恐慌= / dev/mmcblk0p2 rootwait记录等级= 10
<6> PID哈希表项:4096(顺序为:2,16384字节)
<6>的dentry缓存哈希表项:131072(顺序为:7,524288字节)
<6>的inode缓存哈希表项:65536(顺序为:6,262144字节)
<6>内存:448MB 512MB = 960MB总额的
<5>内存:833852k / 833852k可用,149188k保留,393216K HIGHMEM
<5>虚拟内核内存布局:
向量:为0xffff0000 - 0xffff1000(4 KB)
fixmap:0xfff00000 - 0xfffe0000(896 KB)
............ / /太长了,省略若干
<0>内核恐慌-不同步:试图杀害的init!
[2.650000]内核恐慌-不同步:试图杀死的init!
<c003e92c>](+0 unwind_backtrace×0/0x13c)从[<c05fa2ac>](恐慌+0×74/0×188)
[2.660000] [<c003e92c>](unwind_backtrace +0从×0/0x13c)[<c05fa2ac>](惊恐+0×74/0×188)
[<c05fa2ac>](恐慌+0×74/0)[<c006bfd0>](do_exit +0 x6c4 / 0×188×788)
[2.670000] [<c05fa2ac>](恐慌+0×74/0×188)[<c006bfd0>]( do_exit +0 x6c4 / 0×788)
[<c006bfd0>](do_exit +0 x6c4 / 0×788)[<c003c87c>](模具+0×288/0×300)
[2.690000] [<c006bfd0>](do_exit + 0x6c4 / 0)[<c003c87c>](模具+0×288/0×788×300)
[<c003c87c>](模具+0×288/0×300)从[<c0042cb0>](__do_kernel_fault +0× 74/0×84)
[2.700000] [<c003c87c>](模具+0×288/0×300)[<c0042cb0>](__do_kernel_fault +0×74/0×84)
[<c0042cb0>](__do_kernel_fault + 0×74/0×84)从[<c0042e40>](do_page_fault +0×180/0x2e4)
[2.720000] [<c0042cb0>]“(__do_kernel_fault +0×74/0×84)[<c0042e40>](do_page_fault +0×180/0x2e4)
[<c0042e40>](do_page_fault +0×180/0x2e4)从[<c00312b4>](do_DataAbort +0×34/0×98)
[2.730000] [<c0042e40>](do_page_fault +0 ×180/0x2e4)从[<c00312b4>](do_DataAbort +0×34/0×98)
[<c00312b4>] [<c0037dd0>](__dabt_svc +0×70(do_DataAbort +0×34/0×98) / 0XA0)
[2.750000] [<c00312b4>](do_DataAbort +0×34/0×98)[<c0037dd0>](__dabt_svc +0×70/0xa0)
异常的堆栈(0xe783bee8 0xe783bf30)
[2.770000]异常堆栈( 0xe783bee8 0xe783bf30)
bee0::29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
[2.780000] bee0:29c5c734 00000000 1137666c f1c20800 00000001 55866a9a
BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30,
[2.790000] BF00:c0039358 00000000 00000001 6239831b c0944588 11376664 1137665c e783bf30
BF20:f8a905a8 c0059aac 20000013 FFFFFFFF
[2.810000] BF20:20000013 c0059aac f8a905a8 FFFFFFFF
[<c0037dd0>](__dabt_svc +0×70/0xa0)[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[2.810000] [<c0037dd0>] (__dabt_svc +0×70/0xa0)从[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)
[<c0059aac>](sunxi_gpio_request_array +0×160/0×540)[<c040b868>](alloc_pin,中XC / 0 +0×60)
[2.830000] [<c0059aac>]“(sunxi_gpio_request_array +0×160/0×540)从[<c040b868>](alloc_pin +0 / 0×60)
[<c040b868>](alloc_pin +0 XC XC / 0×60)从[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0×144)
[2.850000] [<c040b868>](alloc_pin +0 XC / 0×60)从[<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C× 144)
[<c00209cc>](sw_hci_sunxi_init +0 X3C / 0)[<c0031378>]“(do_one_initcall +0×34/0×144×180)
[2.870000] [<c00209cc>](sw_hci_sunxi_init +0 / 0 X3C×144)从[<c0031378>](do_one_initcall +0×34/0×180)
[<c0031378>](do_one_initcall +0×34/0)[<c00084d4>](kernel_init +0×180×108/0×194)
[2.880000] [<c0031378>](do_one_initcall +0×34/0×180×194)[<c00084d4>](kernel_init +0×108/0)
[<c00084d4>](kernel_init +0×108/0× 194)[<c0039358>](kernel_thread_exit +0×0/0×8)
[2.900000] [<c00084d4>](kernel_init +0×108/0×194)来自[<c0039358>的(kernel_thread_exit +0×0 / 0×8)
<0>重新启动在10秒.. [2.920000]在10秒内重新启动..
还是没有成功启动文件系统,各位大神知道的还望赐教,一起解决这个问题。待续……
转载自CSDN,感谢我用国芯分享。
原帖地址:http://blog.csdn.net/u010216127/article/details/8829378
来源:oschina
链接:https://my.oschina.net/u/1174645/blog/141932