imx6ull移植openwrt系统

参考博文:i.mx6ul开发板移植openwrt系统_imx6ul openwrt-CSDN博客

i.mx6ul 移植Openwrt_imx6ull openwrt-CSDN博客

【IMX6UL开发板试用体验】OpenWRT在iMX6UL上面的移植与编译_imx6ul openwrt-CSDN博客

记录i.mx6ull(正点原子 mini版本 V1.7)上移植openwrt_正点原子 openwrt-CSDN博客

本文纯属个人娱乐,所用开发板为正点原子imx6ull emmc版开发板,屏幕为4.3寸 800*480 在移植openwrt之前应先按照教程将uboot和内核移植好。

在ubuntu搭建openwrt的开发环境

下载openwrt需要的依赖库

sudo apt-get install subversion g++ zlib1g-dev build-essential git python python3 libncurses5-dev gawk gettext unzip file libssl-dev wget libelf-dev ecj fastjar java-propose-classpath asciidoc bzip2 libz-dev libtool

下载openwrt源码

19.07地址https://github.com/openwrt/openwrt/archive/v19.07.2.tar.gz,下载好之后解压,然后进入源码顶层目录,假设目录名为openwrt,即cd openwrt

然后执行

./scripts/feeds update -a ./scripts/feeds install -a make defconfig make menuconfig

进去第一个Target System ---> 选择 (Freescale i.MX 6)

选择[*] Advanced configuration options (for developers) --->,然后进去,Toolchain Options --->选项,进去后如下图,

进入后选择glibc,保存退出

进入源码目录下,target/linux/imx6/目录,修改该目录下的Makefile

第一个,源Freescale i.MX 6平台是cortex-a9架构,我们i.mx6ul是cortex-a7架构

第二个,源Freescale i.MX 6平台不支持浮点型,我们i.mx6ul要支持浮点

第三个,源Freescale i.MX 6平台的linux内核是4.14版本,我们i.mx6ul是4.1.15版本,这里改为4.1就好。有说改为4.1.15会报错,我这里没有验证。改为4.1亲侧可用。

我们的在我们的内核源码目录下的arch/arm/configs也就是我的/home/book/linux-imx/arch/arm/configs目录下,找到自己开发板对应的xxxxx_defconfig,然后把这个文件名称修改为config-4.1(这里的4.1数字是要根上面的Makefile里面内核源码版本一样),并且拷贝到target/linux/imx6/目录下,并把原来的config-4.14删除。然后再删除target/linux/generic/下面的config-4.14文件。

编译外部内核

在 OpenWrt 构建系统中选择使用外部内核源代码树时出现以下这种情况

make[5]: Entering directory '/home/book/Desktop/books/linux_kernel/linux-imx' HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf --silentoldconfig Kconfig * * Restart config...

解决方法:编译openwrt之前 先编译外部内核源码 因此在编译openwrt之前需要把改好的内核按照正点原子教程先编译好

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xxx_defconfig make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs

编译openwrt

make V=1 -j8

编译问题

缺少文件,找不到文件。我们进入到对应的文件夹,把类似的文件拷贝一份改为它找不到的文件名字,这样就可以找到了。因为这些找不到的文件对我编译的内容不影响。

openwrt启动问题

1、rootfs在openwrt源码下bin/targets/imx6/generic-glibc/目录下 文件名为openwrt-imx6-default-rootfs.tar.gz,我们生成的是这个文件,具体最后需要的格式如果跟这个不一样,则需要对他先解压,再压缩成需要的格式。压缩命令如下:

sudo tar -cjf rootfs.tar.bz2 ./*

2、zImage在openwrt源码下build_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi/linux-imx6/目录下,有个zImage文件

3、dtb文件在build_dir/target-arm_cortex-a7+neon-vfpv4_glibc_eabi/linux-imx6/linux-4.1/arch/arm/boot/dts/目录下,该目录下有好多个文件,我需要的是imx6ul-alientek-emmc.dtb。

TFTP 加载内核和设备数,NFS 挂载文件系统的方法行不通(可能是我网线连接的ENET2(eth0 fec1) 而这个网口被openwrt用作wan ENET2 不能up),改为通过固化整个系统到sd卡中,再从SD卡启动整个系统

使用脚本固化系统到SD卡

拷贝开发板光盘 A-基础资料->5、开发工具->4、正点原子 MFG_TOOL 出厂固件烧录工具->mfgtool->Profiles->Linux->OS Firmware->files 整个文件夹到 Ubuntu 虚拟机

chmod +x imx6mksdboot.sh

1.如果需要替换boot目录下的文件,替换的文件必须与boot目录下的文件同名==》将openwrt编译出的zImage和dtbs替换zImage和imx6ull-14x14-emmc-4.3-800x480-c.dtb

2.如果需要替换filesystem下的文件,替换的文件必须与filesystem目录下的文件同名==》将openwrt编译出的文件系统替换rootfs.tar.bz2

3.如果需要替换modules下的文件,替换的文件必须与modules目录下的文件同名

4.脚本烧写方式,可以拷贝files文件夹执行脚本直接烧写

5.mfgtool(OTG方式)烧写,直接选择mfgtool目录下的*vbs进行烧写系统

进入 files 目录后

sudo ./imx6mksdboot.sh -device /dev/sdb -flash emmc -ddrsize 512

按连接 TF 卡到 Ubuntu 的方法,再点击断开即可退出 TF 卡。固化完成后,将拨码开关拨至 TF 启动方式 10000010,成功启动系统

从打印log可看出eth0没有up 只有eth1 将网线换到ENET1口 ifconfig 192.168.10.24 可以ping通虚拟机,但是没有网页管理页面

解决方法make menuconfig 进入Luci选项卡-->进入Collections子选项卡-->选择luci-->保存退出,重新编译,重新烧录

ifconfig eth1 192.168.10.24

在电脑侧输入192.168.10.24进入管理页面

用户名:root 密码:admin

  • 18
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值