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

本文详细记录了在iMX6UL平台上移植和编译OpenWRT的过程,包括遇到的错误及解决方法。通过使用master分支的最新代码,最终成功编译出适用于iMX6UL的OpenWRT固件,生成了rootfs和bootfs等文件,实现了在硬件上的运行。
摘要由CSDN通过智能技术生成
选择
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即可。

编译的错误 1. DEPEND的问题
如果使用Prebuilt的toolchain可能会出现下面这个问题:
Package libnl-tiny is missing dependencies for the following libraries:
libc.so.6
那么就需要将libc.so添加到DEPENDS变量中。
2. 内核编译错误
内核比较老,但是GCC版本较高,会出现下面这个错误:
[html] view plain copy

  • init/do_mounts_rd.o: In function `nop_flush_icache_all':  
  • do_mounts_rd.c:(.text+0x0): multiple definition of `nop_flush_icache_all'  
  • init/do_mounts.o:/ExtDisk/Projects/iMX6UL_OpenWRT/BSP_EVB/linux_3.14/init/do_mounts.c:610: first defined here  
  • init/do_mounts_rd.o: In function `nop_flush_kern_cache_all':  
  • do_mounts_rd.c:(.text+0x4): multiple definition of `nop_flush_kern_cache_all'  
  • init/do_mounts.o:/ExtDisk/Projects/iMX6UL_OpenWRT/BSP_EVB/linux_3.14/init/do_mounts.c:610: first defined here  
  • init/do_mounts_rd.o: In function `nop_flush_kern_cache_louis':  

要解决这个问题,需要在内核的CFLAG中添加 -fgnu89-inline
这个问题可以参考:
3.内核编译的错误2
[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

  • Usage:   
  •         cp [options] FILE DEST  
  •         cp [options] FILE1 [FILE2 ...] DEST-DIR  
  •         cp --help for options list  
  •          
  • cp: error: no such option: -p  
  • make[3]: *** [/ExtDisk/Projects/WRTNode/staticSDK/build_dir/host/patch-2.7.1/.configured] Error 2  
  • make[3]: Leaving directory `/ExtDisk/Projects/WRTNode/staticSDK/tools/patch'  
  • make[2]: *** [tools/patch/compile] Error 2  
  • make[2]: Leaving directory `/ExtDisk/Projects/WRTNode/staticSDK'  
  • make[1]: *** [/ExtDisk/Projects/WRTNode/staticSDK/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/stamp/.tools_install_yynyynynynyyyyyyyyyynyyyyyyyynyyyynnyyynnyynnnyyyy] Error 2  
  • make[1]: Leaving directory `/ExtDisk/Projects/WRTNode/staticSDK'  
  • make: *** [world] Error 2  


一般是因为安装了gcp导致的,所以remove掉gcp即可。
编译的结果产物
位于bin下面:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值