【IMX6ULL笔记】-- 快速上手

        IMX6ULL 这两年算是很火的一款linux入门级的芯片了,有用过nxp rt10xx系列的小伙伴,上手这款芯片,应该会很快(rt10xx是cortex-m7架构,为一种跨界处理器,它集成了cortex-A 和 传统的mcu优点。。。额,再讲下去就讲偏了)。下面笔者就简述一下如何快速上手这IMX6ULL吧(细节留到其他篇幅)。

前期准备:

IMX6ULL开发板

网线,SD卡+读卡器,能连接串口的数据线(具体看用的什么接口)

终端工具软件 -- MobaXterm(试了几种工具,还是觉得这个最好用,其他相似的还有:secureCRT,Putty等等)

vscode:笔者一直用它来编辑代码,感觉在linux下使用也特别方便,在某些方面用起来比vim方便一些(注意 vscode 终端窗口调大一点,不然编译uboot、内核这些的menucofig功能容易出错)。

安装ubuntu系统(ubuntu 的安装分两类:虚拟机下安装;非虚拟机安装),网上教程很多,这里就不作介绍了,另外笔者装的版本是16.04

搭建好 tftp、nfs (这里先不介绍)

1、在Ubuntu中安装交叉编译工具链

什么叫交叉编译?简单理解就是在x86平台编译好的代码,必须要烧录到目标机器(ARM平台)上运行。

因为该工具链是在linux上运行的,这里下载的工具链是:arm-linux-gnueabihf (GNU embedded application binary interface),下载地址可登录Linaro官网:

Linaro Releaseshttps://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/这里笔者用的4.9版本,高版本用起来有问题,还是参考别家都常用的版本吧,至少问题不多。

安装路径在:/usr/local/arm 

sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

配置环境变量:vi /etc/profile   文件中输入:

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

保存生效:source /etc/profile

另外工具链还需要 libstdc ++6 以及 lib32stdc ++6库的支持

sudo apt-get install lsb-core lib32stdc++6

2、u-boot 移植
u-boot 实际是个通用的 bootloader,我们没必要去u-boot官网去下载,可以直接使用芯片厂商或者第三方开发板提供的u-boot

解压u-boot:

tar -vxjf uboot-imx-2016.03-2.1.0-gd3f0479-v1.4.tar.bz2

编译u-boot前安装依赖库:

sudo apt-get install libncurses5-dev

解压完u-boot 后,这里需要特别注意configs文件夹,为u-boot配置文件夹,主要用来配置评估板和目标版差异性参数的文件,移植的时候需要用的,目前可以先不管这一块。

为了今后编译方便,我们在u-boot目录下,写个脚本:

#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

然后直接执行即可:

./脚本文件名称xxxx.sh

将编译生成的 u-boot.bin文件,烧录到SD卡中(当然也可以用MfgTool工具,烧录到emmc 或者nand启动,这里忽略,原理都差不多,只是启动方式区别而已)。这里我们就直接用正点原子写好的工具烧写吧。

 注意自己U盘的名称:sda..sdb..?,不要烧错了

dmesg 命令可查看挂载的SD卡信息

//烧录方法1:用原子的执行文件
./imxdownload u-boot.bin /dev/sdb

//烧录方法2:
sudo  dd if=u-boot.imx of=/dev/sdb bs=1k seek=1 conv=fsync

 上电打印,看看u-boot运行情况:

U-Boot 2016.03 (Oct 24 2021 - 12:27:05 +0800)

CPU:   Freescale i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 41C
Reset cause: POR
Board: I.MX6U ALPHA|MINI
I2C:   ready
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Display: ATK-LCD-4.3-800x480 (800x480)
Video: 800x480x24
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc0 is current device
Net:   FEC1
Normal Boot
Hit any key to stop autoboot:  0

 3、u-boot 关键命令修改

网络命令:

setenv ipaddr 192.168.0.50         //开发板ip
setenv ethaddr 00:04:9f:04:d2:35   //MAC
setenv gatewayip 192.168.0.1       //网关
setenv netmask 255.255.255.0       //子网
setenv serverip 192.168.0.67       //服务器ip      
saveenv

ping 服务器:

 bootargs 、bootcmd 命令修改(主要目的是控制接下来内核和文件系统的启动方式):

//文件系统启动于emmc
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

//linux内核启动于 emmc  注意 zImage 和 dtb文件,对应自己硬件
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000
imx6ull-xxxx.dtb; bootz 80800000 - 83000000;'

//文件系统启动于nfs 注意搭建nfs的路径
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.67:/home/l17/linux/nfs/rootfs,proto=tcp rw
ip=192.168.0.50:192.168.0.67:192.168.0.1:255.255.255.0::eth0:off'

//linux内核启动于 tftp 注意 zImage 和 dtb文件,对应自己硬件
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-xxxx.dtb; bootz
80800000 - 83000000;'

//保存当前环境变量
saveenv

4、linux内核编译和移植

笔者这里也不大篇幅介绍linux内核,毕竟菜鸟不好意思讲,同u-boot一样,linux内核我们可以从linux官网下载,不过呢,我们还是直接从nxp官网下载芯片厂商测试过的内核吧。网址为:

https://www.nxp.com/search?keyword=imx6ull&start=0&category=software&filter=typeTax%3E%3Et749https://www.nxp.com/search?keyword=imx6ull&start=0&category=software&filter=typeTax%3E%3Et749https://www.nxp.com/search?keyword=imx6ull&start=0&category=software&filter=typeTax%3E%3Et749或者从第三方开发板商下载。

解压linux内核:

tar -vxjf linux-imx-rel-imx_4.1.15_2.1.0_ga.tar.bz2

 为了今后编译方便,我们在内核目录下,写个脚本:

#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16

建议构建一个自己的defconfig文件(脚本里面暂时用的官方的),另外dts文件可以从官方evk里面拷贝一个,用于后期驱动搭建。执行脚本,编译内核,大概要几分钟(具体看电脑配置,笔者直接用一台电脑装的ubuntu,非虚拟机,速度还挺快的):

./mx6ull_xxxx.sh    //具体看脚本起的啥名字

提取输出文件:zImage 和 dtb文件。文件路劲在 arch/arm/boot 和 arch/arm/boot/dts

然后将文件通过tftp启动,上文u-boot bootargs 、bootcmd 命令修改有讲解。

5、文件系统搭建

文件系统搭建工具有很多,busybox、buildroot(内含busybox,功能更丰富,但是编译时间更长)、Yocto(适合更专业的人员,小白可以先熟悉前两个,依次来摸索)。

busybox下载地址:BusyBox

buildroot下载地址:Buildroot - Making Embedded Linux Easy

大致操作套路都差不多:

解压构建工具:

tar -vxjf busybox-xxx.tar.bz2
tar -vxjf buildroot-xxx.tar.bz2

打开图形化配置:

make menuconfig

配置内容省略,网上资料很多可以自行搜索。

然后将输出的rootfs.tar压缩包解压到nfs,用于网路调试。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值