盈鹏飞嵌入式---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如下,放在下面为以后可能有需要的做对比和参照
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如下,放在下面为以后可能有需要的做对比和参照
相关文章推荐
- 【IMX6UL开发板试用体验】OpenWRT在iMX6UL上面的移植与编译
- 嵌入式web服务器boa的编译移植
- 嵌入式ARM版本的Qt编译安装和移植过程
- tensorflow在openwrt等嵌入式linux系统上的移植以及NEON优化
- 嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得
- Kinect移植到嵌入式ARM平台上面
- 盈鹏飞嵌入式-EVB-T335(AM335) debian系统USB无线网卡移植手册
- 嵌入式web服务器boa的编译移植
- 嵌入式声卡驱动模块的编译和移植
- Qt4.8嵌入式版本的编译移植(包含QML)
- 盈鹏飞嵌入式-EVB-T335 USB无线网卡移植和使用手册
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
- 嵌入式openwrt平台(mt7688)上使用讯飞语音服务以及编译好的库文件
- 盈鹏飞嵌入式---【IMX6UL开发板试用体验】上手试用与资源使用
- 嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得
- 【ARM】嵌入式 ARM Linux 下移植 USB 蓝牙、交叉编译 bluez 各种版本
- [ZedBoard移植嵌入式Linux教程(8)]编译Linux内核
- Kinect移植到嵌入式ARM平台上面
- 编译cocos2d,移植到android上面
- 移植openssl至嵌入式linux编译工具链