【IMX6ULL笔记】 |
您所在的位置:网站首页 › imx6ull中文参考手册 › 【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 Releases 安装路径在:/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++62、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: 03、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 saveenvping 服务器: 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;' //保存当前环境变量 saveenv4、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%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,用于网路调试。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |