您的位置:首页 > 运维架构

盈鹏飞嵌入式---OpenWRT在iMX6UL上面的移植与编译

2017-04-17 13:54 1026 查看
选择

OpenWRT在最近的时期分裂出了LEDE出来,因此这就涉及到了这两个的选择。

前段时间,编译过LEDE用于树莓派3,于是想着直接使用以前的LEDE,这样子省去了下载,毕竟在国内下载很多source code可能需要很长的时间,如果没有proxy的话。于是想着省些事情就用起来了以前的LEDE来编译,但是编译过程中出现了很多错误,
因此最终我决定切回到OpenWRT,并且使用master上面新的代码来移植编译。

代码仓库:http://www.dwz.cn/5MODVb

OpenWRT配置

本身LEDE与OpenWRT里面已经有一个imx6 Cortex-A9的arch支持,因此直接选择这个为base来做Porting与Compile较为合适。配置如下:



Compile
Tuning

因为imx6ul是Cortex-A7,所以我们需要更改一下



选择好Target之后,我们需要做移植工作。

Target移植内核移植

移植需要将内核更改一把,这个位于:

$ ls target/Linux/imx6/

base-files  config-3.14  config-4.4  files-4.4  image  Makefile  patches-4.4  profiles

其中config-XX是内核的.config文件,注意不要有modules,全部用builtin,否则将会出错。

然后patches-XX是对应内核的patches,我们不需要这些东西,所以不需要。

内核位置的指定



然后直接编译make即可。

编译的错误
4000
1.
DEPEND的问题

如果使用Prebuilt的toolchain可能会出现下面这个问题:

Package libnl-tiny is missing dependencies for the following libraries:

libc.so.6

那么就需要将libc.so添加到DEPENDS变量中。
2. 内核编译错误

内核比较老,但是GCC版本较高,会出现下面这个错误:

[cpp] view
plain copy

ERROR: module '/openwrt/build_dir/target-arm_cortex-a9+neon_musl-1.1.16_eabi/linux-imx6/linux-3.14/drivers/usb/gadget/udc/udc-core.ko' is missing.  

出现问题是因为我们没有正确的配置kernel module对应的item,但是因为我们暂时不需要,所以直接将其干掉即可:



4. 并发编译出错

一般都是因为make的时候指定-jN的N过大导致。
5. 环境编译问题

编译的时候出现:

[plain] view
plain copy

$ ls bin/imx6/ -l  

total 130528  

-rw-r--r--  1 hexiongjun hexiongjun      617 1月  23 22:48 md5sums  

-rw-r--r--  1 hexiongjun hexiongjun 23667550 1月  23 22:48 openwrt-imx6-generic-rootfs.tar.gz  

2107e
-rw-r--r--  1 hexiongjun hexiongjun 10158080 1月  23 22:48 openwrt-imx6-ventana-bootfs_large.ubifs  

-rw-r--r--  1 hexiongjun hexiongjun  8888320 1月  23 22:48 openwrt-imx6-ventana-bootfs_normal.ubifs  

-rw-r--r--  1 hexiongjun hexiongjun  6855569 1月  23 22:48 openwrt-imx6-ventana-bootfs.tar.gz  

-rw-r--r--  1 hexiongjun hexiongjun 35389440 1月  23 22:48 openwrt-imx6-ventana-squashfs-nand_large.ubi  

-rw-r--r--  1 hexiongjun hexiongjun 33816576 1月  23 22:48 openwrt-imx6-ventana-squashfs-nand_normal.ubi  

-rw-r--r--  1 hexiongjun hexiongjun  7431416 1月  23 22:48 openwrt-imx6-ventana-uImage  

-rw-r--r--  1 hexiongjun hexiongjun  7431416 1月  23 22:48 openwrt-imx6-wandboard-uImage  

drwxr-xr-x 10 hexiongjun hexiongjun     4096 1月  22 11:31 packages  

-rw-r--r--  1 hexiongjun hexiongjun      977 1月  23 22:48 sha256sums  

这里面我们使用generic的rootfs即可。

然后我们使用zImage而不是uImage,这个位于:

build_dir/target-arm_cortex-a9+neon_musl-1.1.16_eabi/linux-imx6/zImage

dtb位于:

build_dir/target-arm_cortex-a9+neon_musl-1.1.16_eabi/linux-imx6/linux-3.14/arch/arm/boot/dts/imx6ul-14x14-evk.dtb

启动

将zImage与dtb拷贝到tftp directory,然后将rootfs解压到SD卡,使用SD卡作为rootfs。然后就可以使用下面这些命令来启动了。

[plain] view
plain copy

set serverip 192.168.1.100  

set bootargs 'console=ttymxc0,115200 ip=192.168.1.120 root=/dev/mmcblk0p2 rootwait'  

run bootcmd  

启动后的log如下,放在下面为以后可能有需要的做对比和参照
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  软件 嵌入式 移植