pcDuino的linux的移植三

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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!
](+0 unwind_backtrace×0/0x13c)从[](恐慌+0×74/0×188)
[2.660000] [](unwind_backtrace +0从×0/0x13c)[](惊恐+0×74/0×188)
[](恐慌+0×74/0)[](do_exit +0 x6c4 / 0×188×788)
[2.670000] [](恐慌+0×74/0×188)[]( do_exit +0 x6c4 / 0×788)
[](do_exit +0 x6c4 / 0×788)[](模具+0×288/0×300)
[2.690000] [](do_exit + 0x6c4 / 0)[](模具+0×288/0×788×300)
[](模具+0×288/0×300)从[](__do_kernel_fault +0× 74/0×84)
[2.700000] [](模具+0×288/0×300)[](__do_kernel_fault +0×74/0×84)
[](__do_kernel_fault + 0×74/0×84)从[](do_page_fault +0×180/0x2e4)
[2.720000] []“(__do_kernel_fault +0×74/0×84)[,](do_page_fault +0×180/0x2e4)
[](do_page_fault +0×180/0x2e4)从[](do_DataAbort +0×34/0×98)
[2.730000] [](do_page_fault +0 ×180/0x2e4)从[](do_DataAbort +0×34/0×98)
[] [](__dabt_svc +0×70(do_DataAbort +0×34/0×98) / 0XA0)
[2.750000] [](do_DataAbort +0×34/0×98)[](__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 
[](__dabt_svc +0×70/0xa0)[](sunxi_gpio_request_array +0×160/0×540)
[2.810000] [] (__dabt_svc +0×70/0xa0)从[](sunxi_gpio_request_array +0×160/0×540)
[](sunxi_gpio_request_array +0×160/0×540)[](alloc_pin,中XC / 0 +0×60)
[2.830000] []“(sunxi_gpio_request_array +0×160/0×540)从[](alloc_pin +0 / 0×60)
[](alloc_pin +0 XC XC / 0×60)从[](sw_hci_sunxi_init +0 X3C / 0×144)
[2.850000] [](alloc_pin +0 XC / 0×60)从[](sw_hci_sunxi_init +0 / 0 X3C× 144)
[](sw_hci_sunxi_init +0 X3C / 0)[]“(do_one_initcall +0×34/0×144×180)
[2.860000] [](sw_hci_sunxi_init +0 / 0 X3C×144)从[](do_one_initcall +0×34/0×180)
[](do_one_initcall +0×34/0)[](kernel_init +0×180×108/0×194)
[2.880000] [](do_one_initcall +0×34/0×180×194)[](kernel_init +0×108/0)
[](kernel_init +0×108/0× 194)[](kernel_thread_exit +0×0/0×8)
[2.900000] [](kernel_init +0×108/0×194)来自[的(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!
](+0 unwind_backtrace×0/0x13c)从[](恐慌+0×74/0×188)
[2.660000] [](unwind_backtrace +0从×0/0x13c)[](惊恐+0×74/0×188)
[](恐慌+0×74/0)[](do_exit +0 x6c4 / 0×188×788)
[2.670000] [](恐慌+0×74/0×188)[]( do_exit +0 x6c4 / 0×788)
[](do_exit +0 x6c4 / 0×788)[](模具+0×288/0×300)
[2.690000] [](do_exit + 0x6c4 / 0)[](模具+0×288/0×788×300)
[](模具+0×288/0×300)从[](__do_kernel_fault +0× 74/0×84)
[2.700000] [](模具+0×288/0×300)[](__do_kernel_fault +0×74/0×84)
[](__do_kernel_fault + 0×74/0×84)从[](do_page_fault +0×180/0x2e4)
[2.720000] []“(__do_kernel_fault +0×74/0×84)[](do_page_fault +0×180/0x2e4)
[](do_page_fault +0×180/0x2e4)从[](do_DataAbort +0×34/0×98)
[2.730000] [](do_page_fault +0 ×180/0x2e4)从[](do_DataAbort +0×34/0×98)
[] [](__dabt_svc +0×70(do_DataAbort +0×34/0×98) / 0XA0)
[2.750000] [](do_DataAbort +0×34/0×98)[](__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 
[](__dabt_svc +0×70/0xa0)[](sunxi_gpio_request_array +0×160/0×540)
[2.810000] [] (__dabt_svc +0×70/0xa0)从[](sunxi_gpio_request_array +0×160/0×540)
[](sunxi_gpio_request_array +0×160/0×540)[](alloc_pin,中XC / 0 +0×60)
[2.830000] []“(sunxi_gpio_request_array +0×160/0×540)从[](alloc_pin +0 / 0×60)
[](alloc_pin +0 XC XC / 0×60)从[](sw_hci_sunxi_init +0 X3C / 0×144)
[2.850000] [](alloc_pin +0 XC / 0×60)从[](sw_hci_sunxi_init +0 / 0 X3C× 144)
[](sw_hci_sunxi_init +0 X3C / 0)[]“(do_one_initcall +0×34/0×144×180)
[2.870000] [](sw_hci_sunxi_init +0 / 0 X3C×144)从[](do_one_initcall +0×34/0×180)
[](do_one_initcall +0×34/0)[](kernel_init +0×180×108/0×194)
[2.880000] [](do_one_initcall +0×34/0×180×194)[](kernel_init +0×108/0)
[](kernel_init +0×108/0× 194)[](kernel_thread_exit +0×0/0×8)
[2.900000] [](kernel_init +0×108/0×194)来自[的(kernel_thread_exit +0×0 / 0×8)
<0>重新启动在10秒.. [2.920000]在10秒内重新启动..

还是没有成功启动文件系统,各位大神知道的还望赐教,一起解决这个问题。待续……

转载自CSDN,感谢我用国芯分享。

原帖地址:http://blog.csdn.net/u010216127/article/details/8829378

转载于:https://my.oschina.net/pcduino/blog/141932

你可能感兴趣的:(操作系统,开发工具,嵌入式)