米尔i.MX6UL开发板Linux操作系统的构建方法
硬件:米尔i.MX6UL开发板MYD-Y6ULX
简介:MYD-Y6ULX开发板(i.MX6UL开发板)由MYC-Y6ULX核心板和底板组成,基于 i.MX6UL处理器或i.MX6ULL处理器可选,MYD-Y6ULX开发板(i.MX6ULL开发板)提供丰盛外设硬件,板载了Mini PCIE接口(用于4G模块)及SIM卡槽、芯片及天线接口、双百兆网口、液晶接口、音频接口、带隔离的CAN,RS485,RS232等。
构建系统
本章主要介绍MYD-Y6ULX开发板上, 操作系统相关部件的编译和用法。 MYD-Y6ULX的Linux系统包含以下部件:
U-Boot: 引导程序,支持不同方式启动内核。
Linux Kernel: 适用于MYD-Y6ULX开发板的Linux 4.1.15内核,同时包含支持板载外设的驱动。
Yocto: 一个开源配合项目,提供丰盛的模板、 工具和办法来支持构建出面对产品的自定义Linux系统。
本章中用到的代码存放在资源包04-Source名目下,编译u-boot和Linux内核代码前,请先安
装meta-toolchain并加载环境变量到当前shell。
编译U-Boot
进入Bootloader名目,解压U-boot源码:
cd $DEV_ROOT/04-Source/
tar -xvf
cd MYiR-iMX-uboot
警告忽略scanf返回值开头编译:
make distclean
make
make
这里的是配置选项名称,不同的启动模式需用法不同的配置选项,MYD-Y6ULX开发板有两种选项:
启动模式 编译选项MYD-Y6ULX NAND Flash myd_y6ull_14x14_nand_defconfigMYD-Y6ULX SD Card myd_y6ull_14x14_sd_defconfig
u-boot SD卡方式启动时默认会先检测"boot.scr"文件,这是u-boot上的脚本镜像文件,用于
暂时转变启动设备挨次。 以下是从TFTP下载zImage和dtb
文件并启动的脚本例子。 用法mkimage工具""文件制做成"boot.scr"文件,mkimage工具是在u-boot的tools名目下,uboot编译完成后,mkimage也会被编译出来,挺直用法即可。

setenv mmcroot '/dev/mmcblk0p2 rootwait rw rootdelay=5 mem=256M'
run mmcargs
tftpboot 0x83000000 zImage
tftpboot 0x84000000 myd-y6ull-gpmi-weim.dtb
bootz 0x83000000 - 0x84000000
./tool/mkimage -A arm -T script -O linux - boot.scr
Linux Kernel
进入Kernel名目,解压内核源码:
cd $DEV_ROOT/04-Source
tar -xvf
cd MYiR-iMX-Linux
开头编译:
make distclean
make myd_y6ulx_defconfig
make zImage dtbs
编译完成后在"arch/arm/boot"名目会生成内核镜像文件zImage,在"arch/arm/boot/dts"名目会生成DTB文件。
DTB文件 备注myd-y6ull-gpmi-weim.dtb MYD-Y6ULX NAND启动方式
MYD-Y6ULX板上的Micro SD卡槽是衔接mmc0控制器,全部的dtb文件都是默认启用mmc0控制器。
SD卡方式启动时,U-Boot默认查的文件是myd-imx6ull-14x14-evk-gpmi-weim.dtb文件。
更新kernel后,因为版本标识转变,若驱劝是以模块方式加载,需要重新编译驱动模块:
make modules
编译后,可以安装在指定位置:
mkdir ../target-kernel
make INSTALL_MOD_PATH=../target-kernel modules_install
这样就可以把target-kernel名目打包后,解压在MYD-Y6ULX开发板的/lib名目下用法。
c语言与matlab语言的区别构建文件系统
Linux系统平台上有许多开源的系统构建框架,这些框架便利了开发者举行嵌入式系统的构建和定制化开发,目前比较频繁的有Buildroot, Yocto,
OpenEmbedded等等。 其中Yocto项目用法更强大和定制化的办法,来构建出适合嵌入式产品的Linux系统。
Yocto不仅仅是一个制做文件系统工具,同时提供整套的基于Linux的开发和维护工作流程,使底层嵌入式开发者和上层应用开发者在统一的框架下
开发,解决了传统开发方式下零散和无管理的开发形态。
Yocto是一个开源的“umbrella”项目,意指它下面有无数个子项目,Yocto只是把全部的项目整合在一起,同时提供一个参考构建项目Poky,来指导开
发人员如何应用这些项目,构建出嵌入式Linux系统。 它包含Bitbake, OpenEmbedded-Core, 板级支持包,各种软件包的配置文件。 通过Poky,可以
构建出不同类需求的系统,如最小的系统core-image-minimal、 全功能指令行系统core-im
age-base、 带Qt5图形库的fsl-image-qt5。
MYD-Y6YKX提供了符合Yocto的配置文件,协助开发者构建出可烧写在MYD-Y6ULX板上的Linux系统镜像。
Yocto还提供了丰盛的开发文档资源,让开发者学习并定制自己的系统。 因为篇幅有限,不能完整介绍Yocto的用法办法,建议开发者先阅读以下文
档后,再开头动手构建。
Yocto Project Quick start
Bitback User Manual
Yocto Project Reference Manual
Yocto Project Development Manual
Yocto Project Complete Documentation Set
Yocto构建Linux系统
本节适合需要对文件系统举行深度定制的开发者,希翼从Yocto构建出符合MYD-Y6ULX系列开发板的文件系统,同时基于它的定制需求。 初次体验
用法或无特别需要的开发者可以挺直用法MYD-Y6ULX已经提供的文件系统。
因为Yocto构建前需要下载文件系统中全部软件包到本地,为了迅速构建,MYD-Y6ULX已经把相关的软件打包好,可以挺直解压用法,削减重复下
载的时光。
注重:构建Yocto不需要加载工具链环境变量,请创建新shell或打开新的终端窗口。
MYD-Y6ULX提供的Yocto
解压Yocto源码包,同时解压软件包至Yocto名目下。 是把Yocto构建中用到的第三方软件包打包,免除
开发者再次下载花费的时光。
注重:因为文件较大,无法与MYD-Y6ULX打包在同一文件内,请拜访网页下载: ir-tech/MYD-Y6ULX/。
文件名为。
linux操作系统镜像cd $DEV_ROOT
tar xvf 04-Source/
tar xvf 04-Source/ -C fsl-release-bsp
还需要将Linux内核和U-Boot代码放在用户家名目下,便利开发和Yocto编译。
tar xvf 04-Source/ -C ~/
tar xvf 04-Source/ -C ~/
初始化Yocto构建名目
用法NXP提供的fsl-setup-release.sh脚本,会创建一个工作空间,然后在此空间下构建镜像。 执行脚本后会先要求阅读并同意版权声明后才会进入构
盡过名目。 同时,脚本会默认创建并进入build名目。 假如需要特定名目名称,可以用法-b参数,如"-b myir"。 这里的MACHINE参数为"mydy6ull14x14"。
cd fsl-release-bsp
DISTRO=myir-imx-fb MACHINE=myd-y6ull14x14 source fsl-setup-release.sh -b build
tree conf/
conf/
├── f
├──
├── f
├──
├── f.sample
├── sanity_info
└──
templateconf.cfg
build/conf名目下是当前构建的配置文件。 上面在初始化后,就可以构建适合"myd-y6ull14x14"的镜像了。
构建GUI Qt5版的系统
第一次构建时,会需要很长时光,请耐烦等待。
bitbake fsl-image-qt5
构建非GUI版的系统
其次次构建时,假如是同设备,不需要修改其它文件,挺直编译即可。
bitbake core-image-base
Image名称 描述 用途core-image-minimal minimal版本的文件系统 用于MYD-Y6ULX的升级或更新系统core-image-base base版本的终端更多功能的镜像 通用的文件系统fsl-image-qt5 构建基于Qt5的镜像 带Qt5的通用文件系统
构建文件系统完成后,会在输出名目下有manifest文件,这个文件里包含了对应文件系统中已安装的软件包。
Yocto第一次构建会需要很长时光,取决于计算机的CPU核心数和硬件读写速度。 Yocto建议可以用法八核和SSD硬盘可以加速构建速度。 第一次构
建完成后会生成缓存,后面修改的构建,时光会削减无数。
檭建完成后在会"tmp/deploy/images/myd-y6ull14x14/"名目下生成不同的文件,以下是构建后的一个例子:
ls -lh tmp/deploy/images/myd-y6ull14x14/
total 1.4G
-rw-r--r-- 1 kevinchen kevinchen 64M Oct 11 16:fs.ext4
-rw-r--r-- 1 kevinchen kevinchen 4.4K Oct 11 16:fs.manifest
-rw-r--r-- 1 kevinchen kevinchen 80M Oct 11 16:fs.sdcard
-
rw-r--r-- 1 kevinchen kevinchen 15M Oct 11 16:fs.tar.bz2
-rw-r--r-- 1 kevinchen kevinchen 11M Oct 11 16:
-rw-r--r-- 1 kevinchen kevinchen 64M Oct 11 16:fs.ext4
-rw-r--r-- 1 kevinchen kevinchen 4.4K Oct 11 16:fs.manifest
-rw-r--r-- 1 kevinchen kevinchen 80M Oct 11 16:fs.sdcard
-rw-r--r-- 1 kevinchen kevinchen 15M Oct 11 16:fs.tar.bz2
-rw-r--r-- 1 kevinchen kevinchen 11M Oct 11 16:
lrwxrwxrwx 1 kevinchen kevinchen 57 Oct 11 16:
4 -> core-image-base-myd-y6ull14x14-20171011084
4
lrwxrwxrwx 1 kevinchen kevinchen 61 Oct 11 16:48 core-image-base-myd-y6ull14x14.manifest -> core-image-base-myd-y6ull14x14-2017101
fs.manifest
lrwxrwxrwx 1 kevinchen kevinchen 59 Oct 11 16:48 core-image-base-myd-y6ull14x14.sdcard -> core-image-base-myd-y6ull14x14-201710110
fs.sdcard
lrwxrwxrwx 1 kevinchen kevinchen 60 Oct 11 16:48 core-image-base-myd-y6ull14x14.tar.bz2 -> core-image-base-myd-y6ull14x14-20171011
fs.tar.bz2
lrwxrwxrwx 1 kevinchen kevinchen 59 Oct 11 16:48 -> core-image-base-myd-y6ull14x14-201710110

-rw-r--r-- 1 kevinchen kevinchen 532M Oct 11 17:02 fsl-image-qt5-myd-y6ull14x14-20171
4
-rw-r--r-- 1 kevinchen kevinchen 7.3K Oct 11 17:fs.manifest
-rw-r--r-- 1 kevinchen kevinchen 548M Oct 11 17:fs.sdcard
-rw-r--r-- 1 kevinchen kevinchen 111M Oct 11 17:fs.tar.bz2
-rw-r--r-- 1 kevinchen kevinchen 64M Oct 11 17:
lrwxrwxrwx 1 kevinchen kevinchen 55 Oct 11 17:4 -> fsl-image-qt5-myd-y6ull14x14-20171011090003.
4
lrwxrwxrwx 1 kevinchen kevinchen 59 Oct 11 17:02 fsl-image-qt5-myd-y6ull14x14.manifest -> fsl-image-qt5-myd-y6ull14x14-20171011090
fs.manifest
lrwxrwxrwx 1 kevinchen kevinchen 57 Oct 11 17:02 fsl-image-qt5-myd-y6ull14x14.sdcard -> fsl-image-qt5-myd-y6ull14x14-2017101109000
3.rootfs.sdcard
lrwxrwxrwx 1 kevinchen kevinchen 58 Oct 11 17:02 fsl-image-qt5-myd-y6ull14x14.tar.bz2 -> fsl-image-qt5-myd-y6ull14x14-201710110900
03.rootfs.tar.bz2
lrwxrwxrwx 1 kevinchen kevinchen 57 Oct 11 17:02 -> fsl-image-qt5-myd-y6ull14x14-2017101109000
3.
-rw-r--r-- 2 kevinchen kevinchen 1.3M Oct 11 16:47 modules--4.
lrwxrwxrwx 1 kevinchen kevinchen 52 Oct 11 16: -> modules--4.
zrw-r--r-- 2 kevinchen kevinchen 294 Oct 11 17:01 README_-_DO_NOT_DELETE_FILES_IN_
lrwxrwxrwx 1 kevinchen kevinchen 26 Oct 11 16:01 u-boot.imx -> u-boot-nand-2016.03-r0.imxexists是什么
lrwxrwxrwx 1 kevinchen kevinchen 26 Oct 11 16:01 u-boot.imx-nand -> u-boot-nand-2016.03-r0.imx
lrwxrwxrwx 1 kevinchen kevinchen 24 Oct 11 16:01 u-boot.imx-sd -> u-boot-sd-2016.03-r0.imx
lrwxrwxrwx 1 kevinchen kevinchen 26 Oct 11 16:01 u-boot-myd-y6ull14x14.imx -> u-boot-nand-2016.03-r0.imx
lrwxrwxrwx 1 kevinchen kevinchen 26 Oct 11 16:01 u-boot-myd-y6ull14x14.imx-nand -> u-boot-nand-2016.03-r0.imx
lrwxrwxrwx 1 kevinchen kevinchen 24 Oct 11 16:01 u-boot-myd-y6ull14x14.imx-sd -> u-boot-sd-2016.03-r0.imx
-rwxr-xr-x 2 kevinchen kevinchen 395K Oct 11 16:01 u-boot-nand-2016.03-r0.imx
-rwxr-xr-x 2 kevinchen kevinchen 343K Oct 11 16:01 u-boot-sd-2016.03-r0.imx
lrwxrwxrwx 1 kevinchen kevinchen 51 Oct 11 16:47 zImage -> zImage--4.1.15-r0-myd-y6
ull14x14-20171011084447.bin
-rw-r--r-- 2 kevinchen kevinchen 6.2M Oct 11 16:47 zImage--4.1.15-r0-myd-y6ull14x14-20171011084447.bin
-rw-r--r-- 2 kevinchen kevinchen 37K Oct 11 16:47 zImage--4.1.15-r0-myd-y6ull-gpmi-weim-20171011084447.dtb
lrwxrwxrwx 1 kevinchen kevinchen 51 Oct 11 16:47 zImage-myd-y6ull14x14.bin -> zImage--4.1.15-r0-myd-y6ull14x14-20171011084447.bin
lrwxrwxrwx 1 kevinchen kevinchen 56 Oct 11 16:47 zImage-myd-y6ull-gpmi-weim.dtb -> zImage--4.1.15-r0-myd-y6ull-gpmi-weim-201710110
84447.dtb
生成的文件中,有一些是链接文件,下面是不同文件的用途:
文件名 用途*.rootfs.manifest 文件系统内的软件列表*.4 打包成ext4格式的文件系统*.rootfs.sdcard 可挺直写入SD卡,从SD卡启动的镜像*.rootfs.tar.bz2 打包成tar.bz2格式的文件系统*. 打包成格式的文件系统u-boot-sd-2016.03-r0.imx 适合从SD启动的u-boot镜像u-boot-nand-2016.03-r0.imx 适合从NAND启动的u-boot镜像
Bitbake常用指令
Bitbake 参数 描述-c fetch 从recipe中定义的地址,拉取软件到本地-c cleanall 清空囫囵构建名目-c deploy 部署镜像或软件包到目标rootfs内-k 有错误发生时也继续构建-c compile 重新编译镜像或软件包
更多Yocto用法办法,请参考NXP官方Yocto用法文档《i.MX Yocto Project User's Guide》 。
Yocto构建SDK工具
Yocto提供可构建出SDK工具的功能,用于底层或上层应用开发者用法的工具链和相关的头文件或库文件,免去用户手动制做或编译依靠库。 SDK工
具有两种,一种是适合底层开发的工具链,用于编译u-boot和linux内核代码,另外一种是应用开发工具链,附带目标系统的头文件和库文件,便利
应用开发者移植应用在目标设备上。 两种SDK工具都是shell自解压文件,执行后,默认安装在/opt名目下。
构建底层工具连
bitbake meta-toolchain
构建完成后,在"tmp/deploy/sdk"名目下有三个文件:
ls tmp/deploy/sdk/ -lh
myir-imx-fb-glibc-x86_64-meta-toolchain-cortexa7hf-neon-toolchain-4.1.15-2.0.1.host.manifest
myir-imx-fb-glibc-x86_64-meta-toolchain-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
myir-imx-fb-glibc-x86_64-meta-toolchain-cortexa7hf-neon-toolchain-4.1.15-2.0.1.target.manifestmybatisplus不支持两表查询
这里有两个manifest文件,host.manifest是工具链中包含主机端的软件包的列表,target.manifest是包含目标设备端的软件包列表。
构建应用层工具链
应用层工具链是和Image名称是统一的,这里可以用法"fsl-image-qt5"和"core-iamge-base"两种参数。
bitbake -c populate_sdk
构建完成后,同样在"tmp/deploy/sdk/"名目下有六个文件:
ls tmp/deploy/sdk/ -lh
myir-imx-fb-glibc-x86_64-core-image-base-cortexa7hf-neon-toolchain-4.1.15-2.0.1.host.manifest
myir-imx-fb-glibc-x86_64-core-image-base-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
myir-imx-fb-glibc-x86_64-core-image-base-cortexa7hf-neon-toolchain-4.1.15-2.0.1.target.manifest
myir-imx-fb-glibc-x86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.host.manifest
myir-imx-fb-glibc-x86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
myir-imx-fb-glibc-x86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.target.manifest虚拟机安装eclipse
".host.manifest"文件表示工具链中包含主机端的软件包列表,".target.manifest"表示工具链中包含目标设德端的软件包列表。 "myir-imx-fb-glibcx86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh"文件是构建出的fsl-image-qt5镜像对应的SDK工具链,"myir-imx-fb-glibc-x86_64-
core-image-base-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh"文件是构建出的core-image-b
ase镜像对应的SDK工具链。 可以挺直安装在其他Linux系
统中,开发和编译目标端设备的二进制程序。


版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。