pcDuino的linux的移植二

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

大清早就被摇醒了,床摇的厉害,赶紧往外跑,原来地震了,太吓人啦。言归正传,继pcDuino的linux移植一,实现目标二移植内核

1,获取的linux源码

https://github.com/pcduino/kernel  选中linux的孙喜,下载LINUX-孙喜源码

2,配置,编译

解压上面下载的linux的孙喜孙喜-3.0.zip,并解压到Ubuntu的工作目录

改成@变化:〜$  CD build.sh加密固件初始化的Kconfig维护模块报告BUGS脚本工具 拱复制文档FS IPC内核的Makefile净rootfs的安全USR 整体学分司机包括内核编译的lib毫米自述样本声音的virt

2.1配置单板

改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0号$  找到名称为“* defconfig”

./arch/arm/configs/sun4i_defconfig
./arch/arm/configs/netx_defconfig
./arch/arm/configs/vexpress_defconfig
./arch/arm/configs/g3evm_defconfig
./arch/arm/configs/at91rm9200_defconfig
./arch/arm/configs/pxa168_defconfig
./arch/arm/configs/at91sam9g20ek_defconfig
./arch/arm/configs/stamp9g20_defconfig
./arch/arm/configs/integrator_defconfig
./arch/arm/configs/sun3i_defconfig
./arch/arm/configs/pxa910_defconfig
./arch/arm/configs/h5000_defconfig
./arch/arm/configs/mini2440_defconfig
./arch/arm/configs/a13_defconfig
./arch/arm/configs/versatile_defconfig
./arch/arm/configs/mx1_defconfig
./arch/arm/configs/colibri_pxa270_defconfig
./arch/arm/configs/ixp2000_defconfig
./arch/arm/configs/sam9_l9260_defconfig
./arch/arm/configs/a12_nuclear_defconfig
./arch/arm/configs/s3c6400_defconfig
./arch/arm/configs/sun4i_crane_defconfig

 ARCH =手臂sun4i_defconfig的 # #配置写的。config #改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0号$  ARCH =臂menuconfig的的 HOSTCC脚本/ kconfig命令/ lxdialog / checklist.o的的 HOSTCC脚本/通过kconfig / lxdialog / inputbox.o的 HOSTCC脚本/ kconfig命令/ lxdialog / menubox.o的 HOSTCC脚本/ kconfig命令/ lxdialog / textbox.o的 HOSTCC脚本/ kconfig命令/ lxdialog / util.o的的 HOSTCC脚本/ kconfig命令/ lxdialog / yesno.o的的 HOSTCC脚本/通过kconfig / mconf.o的的的 HOSTLD脚本/ kconfig命令/ mconf 脚本/ kconfig命令/ mconf的Kconfig











保存退出即可,若执行make menuconfig时报错,需要安装屏幕绘制动态库,安装过程如下:

改变@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0号$  sudo易于得到安装与libncurses5

2.2编译

编译器可以选用自己的,这里继续用pcduino的linux的移植一配置的交叉编译链

改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0,$  ARCH = ARM CROSS_COMPILE =臂没有Linux的gnueabi的uImage

出现如下错误:

在文件中包括从包括/ LINUX / memory_hotplug.h:6 
从包括/ LINUX / mmzone.h的:671,
包括/ linux / topology.h中:32,
包括/ LINUX / sched.h中:78,
从拱/臂/核/ ASM offsets.c的的:13:
包括/ linux / notifier.h中:15:致命错误:LINUX / srcu.h:没有这样的文件或目录
汇编终止。
[1]:*** [弓/臂/内核/ ASM-offsets.s的错误1 
品牌:***错误2 [prepare0]

2.3解决问题

根据包括/ linux下/ notifier.h的:15:致命错误:LINUX / srcu.h:没有这样的文件或目录解决错误,解决过程如下:

改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0号$  VIM包括/ linux / notifier.h中的

15:#包括的的

接着发现include/linux/目录下的确没有srcu.h,很是纳闷以前编译都没有这个错误,于是到linux-3.0.62下相应目录拷贝include/linux/srcu.h文件,继续编译

改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0,$  ARCH = ARM CROSS_COMPILE =臂没有Linux的gnueabi的uImage

上面的错误没了,编译过程有点长,吃完饭继续

LD vmlinux的
SYSMAP的System.map 
SYSMAP。tmp_System.map 
objcopy把弓/手臂/开机/图像
内核:弓/手臂/引导/影像准备
弓/手臂/开机/压缩/ head.o 
CC拱的AS /手臂/开机/压缩/ misc.o 
GZIP拱/手臂/开机/压缩/ piggy.gzip的
CC弓/手臂/启动/压缩/ decompress.o的
SHIPPED arch/arm/boot/compressed/lib1funcs.S的
AS arch/arm/boot/compressed/lib1funcs的Ø 
如弓/ ARM /启动/压缩/ piggy.gzip.o 
LD拱/手臂/引导/压缩/ vmlinux的
objcopy把弓/手臂/ boot / zImage等
内核的:弓/手臂/ boot / zImage等准备
的uImage弓/手臂/开机/的uImage 
图片名称:Linux的3.0.62 
创建时间:周六4月20日18点33分26秒2013 
图片类型:ARM Linux内核映像(未压缩)
数据大小:4693068字节= 4583.07 KB = 4.48 MB 
加载地址:40008000 
入口点: 40008000 
图像拱/手臂的/ boot /的uImage准备的

终于编译完了,已生成弓/ ARM /开机/的uImage,说明编译成功。

3,烧写,测试

插上TF卡,查看设备

改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0 $ LS的/ dev / sdb的
SDB SDB1

3.1烧写的u-boot

过程参考pcduino的linux的移植一:

改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0 $  cd ..后/ U-boot的孙喜孙喜/ 变更变化:〜/ Si/A10/pcduino/u-boot-sunxi-孙喜$  sudo的DD如果= / dev / zero的= / dev / sdb上的BS = 1M数= 1 [sudo的密码变化: 1 +0 1 +0记录了 1048576字节(1.0 MB)的记录复制,0.0103637Ş 101 MB / s的 变化变化:〜/ Si/A10/pcduino/u-boot-sunxi-sunxi $ sudo的用sfdisk-R / dev / sdb上的BLKRRPART:设备或资源忙 这个磁盘正在使用中。





出现这种BLKRRPART:设备或资源 用sfdisk-R / dev / sdb上的

改成@变化:〜/ Si/A10/pcduino/u-boot-sunxi-sunxi $  sudo的猫“EOT |须藤用sfdisk阶UM为/ dev / sdb的
1,16,C 
,,L 
> EOT 
检查,没有人正在使用该磁盘现在... 
OK

磁盘/ dev / sdb上的:1020柱面,31磁头,61扇区/磁道

用sfdisk:错误:0扇区没有一个MSDOS签名
为/ dev / sdb的:无法识别的分区表型
旧的情况:
没有分区发现
新情况:
单位= 1048576字节,1024字节的块,从0开始计数mebibytes

装置开机开始结束MIB#块ID系统
/ dev/sdb1 0 + 17 - 17 - 17019çW95 FAT32(LBA)
/ dev/sdb2 17日的941 - 925 - 946445 + 83 Linux的
将/ dev/sdb3 0 - 0 0 0空
/ dev/sdb4,0 - 0 0 0空
警告:没有主分区标记为可引导的(活动),
这不要紧LILO,但在DOS MBR磁盘将无法启动。
成功写下了新的分区表

重新读取分区表...

如果您创建或改变一个DOS分区,/ dev/foo7说,然后使用dd(1)
零的前512个字节:日= / dev / zero的= / dev/foo7 BS = 512计数= 1 
(见FDISK(8))变化变化:〜/ Si/A10/pcduino/u-boot-sunxi-sunxi $  sudo的用sfdisk-L为/ dev / sdb的

磁盘/ dev / sdb上的:1020柱面,31磁头,61扇区/磁道
单位= 968192字节,1024字节的块气瓶,从0开始计数

装置开机开始结束##块ID系统
/ dev/sdb1 1 18 18 17019ÇW95 FAT32(LBA)
/ dev/sdb2 19 1019 1001 946445 + 83 Linux的
将/ dev/sdb3 0 - 0 0 0空
/ dev/sdb4,0 CYLS - 0 0 0空变化的变化:〜/ Si/A10/pcduino/u-boot-sunxi-sunxi $  sudo的mkfs.vfat / dev/sdb1将 mkfs.vfat 3.0.7(2009年12月24日)改变@变化:〜/ Si/A10/pcduino/u-boot-sunxi-sunxi $  sudo的对mkfs.ext4 / dev/sdb2 mke2fs的1.41.11(2010年3月14日) 文件系统标签= 操作系统:Linux的 块大小= 4096(登录= 2) 分块大小= 4096(日志= 2) 步= 0块,磁条宽度= 0块 59264的inode,236611块 11830块(5.00%)为超级用户保留 第一个数据块= 0的 最大文件系统块= 243269632 8块组 32768每个组块,每个组, 每个组 的超级块备份存储7408个inode 块32768片段: 32768,98304,163840,229376















正在写入的inode表:完成
创建杂志(4096块):完成
写入超级块和文件系统会计信息:完成

这个文件系统将自动检查每30的坐骑或
180天,以先到者为准。请改为使用tune2fs-c或-i的覆盖。
改成@变化:〜/ Si/A10/pcduino/u-boot-sunxi-sunxi $ sudo的DD如果= = / dev / sdb上的BS = 1024 SPL /孙喜spl.bin的寻求= 8 
20 0条记录中
20 +0的记录了
20480个字节(20 KB)复制,0.0256702Ş,798 KB / s的
变化变化:〜/ Si/A10/pcduino/u-boot-sunxi-sunxi $ sudo的DD如果=的u-boot.bin寻求= / dev / sdb上的BS = 1024 = 32 
171 +1 
171 +1 
175272字节记录了记录(175 KB)复制,0.105589Ş,1.7 MB / s的

取下TF卡,插入pcduino,接上串口线设置115200 8 N 1,默认从TF卡启动,启动界面如下:

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 
sun4i#

3.2烧写linux内核的

准备工作:

制作对对A10芯片进行配置的二进制文件script.bin

获取源码:https://github.com/pcduino/kernel选择孙喜工具,并下载

改成@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0号$ CD /孙喜工具主/

改成@变化:〜/ Si/A10/pcduino/sunxi-tools-master $

使出现如下错误:

的libusb-1.0软件包pkg-config的搜索路径中没有找到,
也许你应该添加libusb的1.0.pc 
PKG_CONFIG_PATH环境变量
没有包'的libusb-1.0发现
包装的libusb-1.0中找不到该目录包 含pkg-config的搜索路径,
也许你应该添加的目录包 含的libusb 1.0.pc 
PKG_CONFIG_PATH环境变量
没有包'的libusb-1.0“找到

文件,能把*。FEX文件生成*。二进制文件)

获取源码https://github.com/pcduino/kernel选择孙喜板,

利用上面生成的工具fex2bin,将sunxi-boards/sys_config/a10/pcduino.fex文件生成对A10芯片进行配置的二进制文件script.bin

改变@变化:〜/ Si/A10/pcduino/sunxi-tools-master $ ./fex2bin .. / sunxi-boards/sys_config/a10/pcduino.fex script.bin

下面开始烧写TF卡,插入TF卡到ubuntu的

改变@变化:〜/ Si/A10/pcduino/linux-sunxi-sunxi-3.0号$ sudo的安装/ dev/sdb1到/ mnt / 
[sudo的密码改变:
改变@变化:〜/ Si/A10/pcduino/linux-孙喜孙喜-3.0 $ CP弓/手臂/开机/的uImage到/ mnt /

改变@变化:〜/ Si/A10/pcduino/sunxi-tools-master $ CP script.bin到/ mnt / 
变化变化:〜/ Si/A10/pcduino/sunxi-tools-master $须藤UMOUNT的到/ mnt /

取下TF卡,插到pcduino,接好串口线设置为115200 8 N1,启动信息如下:

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文件系统负载的二进制文件

的用途:
ext2load 参数 [地址] [文件名] [字节] 
-负载二进制文件“filename”从“开发”的“接口”,
解决'地址'从ext2文件系统
装载文件“启动/ “MMC设备0:1 uEnv.txt 
ext2文件系统安装失败... 
**坏ext2分区或磁盘- MMC 0:1 ** 
ext2load的-从Ext2文件系统负载的二进制文件

的用途:
ext2load 参数 [地址] [文件名] [字节] 
-负载二进制文件“filename”从'开发'“接口” 
,以解决'地址'从ext2文件系统上
读取boot.scr

**无法读取MMC 0:1 ** 
装载文件的“boot.scr”,从MMC设备0:1的的“boot.scr” 
ext2文件系统安装失败... 
**坏ext2分区或磁盘- MMC 0:1 ** 
ext2load -从Ext2文件系统负载的二进制文件

的用途:
ext2load 参数 [地址] [文件名] [字节] 
-负载二进制文件“filename”从“开发”的“接口”,
解决'地址'从ext2文件系统
装载文件“启动/ “MMC设备0:1 boot.scr 
ext2文件系统安装失败... 
**坏ext2分区或磁盘- MMC 0:1 ** 
ext2load的-从Ext2文件系统负载的二进制文件

的用途:
ext2load 参数 [地址] [文件名] [字节] 
-负载二进制文件“filename”从'开发'“接口” 
,以解决'地址'从ext2文件系统上
读取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根= / dev/mmcblk0p2 rootwait的日志级别= 8恐慌= 10

............ / /太长了此处省略·若干

<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秒内重新启动..

linux的内核终于启动了,看到启动信息就知道出现不少问题。

pcduino的linux移植二写的太长了,根文件系统移植以及未解决的问题留在pcduino的linux移植三。

 

有些问题还未解决,知道的直接留言,我们一起解决。

SD卡烧写参考http://linux-sunxi.org/Bootable_SD_card

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

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

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

你可能感兴趣的:(嵌入式,操作系统,人工智能)