ARM开发板编译----MYS-6ULX

ARM开发编译----MYS-6ULX
记录⼀下之前烧ARM板的经历,本⼈第⼀次烧ARM板,欢迎⼤家评论探讨
刚毕业,⼀进公司就被安排的明明⽩⽩。望着⼿中崭新的板⼦,慢慢摸索呗
⾸先说⼀个惨痛的经历,由于没有经验,对Linux内核、系统等不熟悉,⼀开始就是⾃⼰在PC上装了⼀个虚拟机,分配了1G内存和50G硬盘(好吧,在学校的时候这种配置够我⽤了),然⽽多次耗时耗⼒的编译失败,让我开始怀疑⼈⽣。。。
重点!保证基本的软硬件环境要求:
强烈建议内存要2G以上(注意不包括2G,因为内存太⼩编译可能有问题),磁盘空间⾄少要80G以上,推荐120G,CPU⾄少双核。强烈不推荐虚拟机⽅式,直接在硬盘上安装Ubuntu,除⾮你的磁盘性能很⾼。
最后,我是在公司的服务器上编译完成的(分配了8G内存和⾜够的磁盘空间)
参照开发⼿册《MYS-6ULX-LinuxDevelopmentGuide_zh.pdf》
1、部署开发环境
新开⼀个窗⼝,安装必备软件包
sudo apt-get install build-essential git-core libncurses5-dev flex bison texinfo zip unzip zlib1g-dev gettext u-boot-tools g++ xz-utils mtd-utils gawk diffstat gcc-multilib python git make gcc g++ diffstat bzip2 gawk chrpath wget cpio texinfo
2、建⽴⼯作⽬录
建⽴⼯作⽬录,⽅便设置统⼀的环境变量路径。下载源码到⼯作⽬录下,同时设置DEV_ROOT变量,⽅便后续步骤的路径访问。
mkdir -p ~/MYS6ULx-devel
export DEV_ROOT=~/MYS6ULx-devel    //配置到/etc/profile⽂件中,使永久⽣效
在当前⽬录下解压⽂件,得到四个⽂件夹,并复制到⼯作⽬录下。
cp -r 01-Document $DEV_ROOT
cp -r 02-Images $DEV_ROOT
cp -r 03-Tools $DEV_ROOT
cp -r 04-Source $DEV_ROOT
3、配置编译⼯具
3.1 Linaro编译器2010体操世锦赛
cd $DEV_ROOT
tar -xvf 03-Tools/Toolchain/gcc-linaro-4.9-2014.11-x86_64_
在/etc/profile⽂件中添加如下换环境
执⾏完上述命令后输⼊"arm-linux-gnueabihf-gcc -v",若有输出版本信息如下图,说明设置成功,以上设置只对当前终端有效。
3.2 Yocto编译⼯具链
Yocto提供的⼯具链有两种,⼀种是底层开发的meta-toolchain,另⼀种是⽤于应⽤开发的⼯具链。前者和Linaro类似,后者包含应⽤开发中的相关库,可以直接使⽤pkg-config⼯具来解决头⽂件或库⽂件的依赖关系。MYS-6ULX的资源包中有提供两种⼯具链。
包含Qt5相关库的应⽤⼯具链:
myir-imx-fb-glibc-x86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
不包含Qt5的应⽤⼯具链:
myir-imx-fb-glibc-x86_64-core-image-base-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
meta-toolchain:
myir-imx-fb-glibc-x86_64-meta-toolchain-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
Yocto编译器是以SDK⼯具包⽅式来提供,需要先安装SDK包后,才可以使⽤。安装⽅法如下:
以普通⽤户权限执⾏shell脚本,运⾏中会提⽰安装路径,默认在/opt⽬录下(⾃⾏建⽴⽬录,如下图),同时会提⽰输⼊⽤户密码以便有写⼊⽬录的权限。安装完成后,可以使⽤"source"或"."命令加载⼯具链环境到当前终端。
此处应先执⾏:
chmod +x myir-imx-fb-glibc-x86_64-fsl-image-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
chmod +x myir-imx-fb-glibc-x86_64-meta-toolchain-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh
活在春天里使两个⽂件拥有可执⾏权限。
验证SDK⼯具链是否安装正确,先使⽤"source"命令加载Yocto的环境配置⽂件,然后查看编译器版本。
source /opt/myir-imx6ulx-fb/4.1.15-2.0.1/environment-setup-cortexa7hf-neon-poky-linux-gnueabi  //加载环境
arm-poky-linux-gnueabi-gcc –v //显⽰版本如下图
同样⽅法安装底层开发的⼯具链meta-toolchain。安装两个⼯具链,需指定不同⽬录,请勿使⽤相同⽬录,出现⽂件相互覆盖情形。
执⾏:
source /opt/myir-imx6ulx-fb/meta-toolchain/environment-setup-cortexa7hf-neon-poky-linux-gnueabi      //加载环境
arm-poky-linux-gnueabi-gcc –v    //显⽰版本如下图
4、构建系统
主要介绍MYS-6ULX开发板上, Linux操作系统相关部件的编译和使⽤。MYS-6ULX的Linux系统包含以下部件:
U-Boot: 引导程序,⽀持不同⽅式启动内核。
Linux Kernel: 适⽤于MYS-6ULX开发板的Linux 4.1.15内核,同时包含⽀持板载外设的驱动。
Yocto: ⼀个开源协作项⽬,提供丰富的模板、⼯具和⽅法来⽀持构建出⾯向嵌⼊式产品的⾃定义Linux系统。
本部分中⽤到的代码存放在资源包04-Source⽬录下,部分软件包的⽂件名中有标识号。
编前u-boot和Linux内核代码前,请先安装meta-toolchain并加载环境变量到当前shell。
4.1 编译U-Boot
进⼊Bootloader⽬录,解压U-boot源码:
cd $DEV_ROOT/04-Source/
tar -xvf
cd MYiR-iMX-uboot
csv格式开始编译:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- <config>
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
这⾥的是配置选项名称,不同的启动模式需使⽤不同的配置选项,MYS-6ULX开发板四种选项:
启动模式                              编译选项
MYS-6ULX-IND NAND Flash        mys_imx6ul_14x14_nand_defconfig
MYS-6ULX-IND eMMC Flash        mys_imx6ul_14x14_emmc_defconfig
MYS-6ULX-IoT NAND Flash        mys_imx6ull_14x14_nand_defconfig
MYS-6ULX-IoT eMMC Flash        mys_imx6ull_14x14_emmc_defconfig
此处选择mys_imx6ul_14x14_nand_defconfig。
mkimage⼯具是在u-boot的tools⽬录下,u-boot编译完成后,mkimage也会被编译出来,直接使⽤即可。4.2 Linux Kernel
进⼊04-Source⽬录,解压内核源码:
cd $DEV_ROOT/ 04-Source
tar -xvf
cd MYiR-iMX-Linux
开始编译:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mys_imx6_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs modules
编译完成后在"arch/arm/boot"⽬录会⽣成内核镜像⽂件zImage,在"arch/arm/boot/dts"⽬录会⽣成DTB⽂件。mys-imx6ul-14x14-evk-emmc.dtb
mys-imx6ul-14x14-evk-gpmi-weim.dtb
mys-imx6ul-14x14-evk-emmc-myb6ulx.dtb
mys-imx6ul-14x14-evk-gpmi-weim-myb6ulx.dtb
mys-imx6ull-14x14-evk-emmc.dtb
mys-imx6ull-14x14-evk-gpmi-weim.dtb
mys-imx6ull-14x14-evk-emmc-myb6ulx.dtb
mys-imx6ull-14x14-evk-gpmi-weim-myb6ulx.dtb
5、构建⽂件系统
Linux系统平台上有许多开源的系统构建框架,这些框架⽅便了开发者进⾏嵌⼊式系统的构建和定制化开发,⽬前⽐较常见的有Buildroot, Yocto,OpenEmbedded等等。其中Yocto项⽬使⽤更强⼤和系统化
的⽅法,来构建出适合嵌⼊式产品的Linux系统。
Yocto不仅仅是⼀个制做⽂件系统⼯具,同时提供整套的基于Linux的开发和维护⼯作流程,使底层嵌⼊式开发者和上层应⽤开发者在统⼀的框架下开发,解决了传统开发⽅式下零散和⽆管理的开发形态。
Yocto是⼀个开源的“umbrella”项⽬,意指它下⾯有很多个⼦项⽬,Yocto只是把所有的项⽬整合在⼀起,同时提供⼀个参考构建项⽬Poky,来指导开发⼈员如何应⽤这些项⽬,构建出嵌⼊式Linux系统。它包含Bitbake,OpenEmbedded-Core, 板级⽀持包,各种软件包的配置⽂件。通过Poky,可以构建出不同类需求的系统,如最⼩的系统core-image-minimal、带GUI的图形系统fsl-image-gui、带Qt5图形库的fsl-image-qt5。
NXP i.MX6UL/i.MX6ULL芯⽚提供符合Yocto的构建配置⽂件,通过这些⽂件可以构建出NXP定制的镜像⽂件。我们提供了符合MYS-
6ULX的配置⽂件,帮助开发者构建出可烧写在MYS-6ULX板上的Linux系统镜像。
5.1 Yocto构建Linux系统
本节适合需要对⽂件系统进⾏深度定制的开发者,希望从Yocto构建出符合MYS-6ULX系列开发板的⽂
件系统,同时基于它的定制需求。初次体验使⽤或⽆特殊需要的开发者可以直接使⽤MYS-6ULX已经提供的⽂件系统。
由于Yocto构建前需要下载⽂件系统中所有软件包到本地,为了快速构建,MYS-6ULX已经把相关的软件打包好,可以直接解压使⽤,减少重复下载的时间。
这⾥提供了两种⽅式使⽤Yocto:
使⽤由MYS-6ULX资源包中的Yocto和相关⽂件
从NXP官⽹下载Yocto
初次使⽤Yocto的⽤户,推荐使⽤第⼀种⽅式。
注意:构建Yocto不需要加载⼯具链环境变量,请创建新shell或打开新的终端窗⼝。
MYS-6ULX提供的Yocto:
解压Yocto源码包,同时解压软件包⾄Yocto⽬录下。
金属钝化剂
cd $DEV_ROOT
嘌呤霉素>关典史
tar xvf 04-Source/
tar xvf 04-Source/ -C fsl-release-bsp
cd fsl-release-bsp
还需要将Linux内核和U-Boot代码放在⽤户家⽬录下,⽅便开发和Yocto编译。
cd $DEV_ROOT
tar xvf $DEV_ROOT/04-Source/ -C ~/
tar xvf $DEV_ROOT/04-Source/ -C ~/
6、初始化Yocto构建⽬录
进⼊/home/ieslab-ubuntu/MYS6ULx-devel/fsl-release-yocto⽬录,使⽤NXP提供的fsl-setup-release.sh脚本,会创建⼀个⼯作空间,然后在此空间下构建镜像。执⾏脚本后会先要求阅读并同意版权声明后才会进⼊构盡过⽬录。同时,脚本会默认创建并进⼊build⽬录。如果需要特定⽬录名称,可以使⽤-b参数,如"-b myir"。 这⾥的MACHINE参数有两种设备,"mys6ull14x14"对应于MYS-6ULX-IoT和"mys6ul14x14"对应于MYS-6ULX-IND版本。
DISTRO=myir-imx-fb MACHINE=mys6ul14x14 source fsl-setup-release.sh -b build
tree conf/
build/conf⽬录下是当前构建的配置⽂件。
7、构建GUI Qt5版的系统
在build⽬录下执⾏:
bitbake fsl-image-qt5
第⼀次构建时,会需要很长时间,⽽且⼀般会有⼏⼗个警告,请耐⼼等待。8G的内存⼤概花了6⼩时。
构建完成后会在"tmp/deploy/images/mys6ul14x14/"⽬录下⽣成不同的⽂件。
8、构建⾮GUI版的系统
此处不做描述。
9、Yocto构建SDK⼯具
Yocto提供可构建出SDK⼯具的功能,⽤于底层或上层应⽤开发者使⽤的⼯具链和相关的头⽂件或库⽂件,免去⽤户⼿动制做或编译依赖库。SDK⼯具有两种,⼀种是适合底层开发的⼯具链,⽤于编译u-boot和linux内核代码,另外⼀种是应⽤开发⼯具链,附带⽬标系统的头⽂件和库⽂件,⽅便应⽤开发者移植应⽤在⽬标设备上。两种SDK⼯具都是shell⾃解压⽂件,执⾏后,默认安装在/opt⽬录下。
9.1 构建底层⼯具连
bitbake meta-toolchain

本文发布于:2024-09-24 16:25:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/234662.html

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

标签:构建   编译   开发   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议