[i.MX6UL]飞凌嵌入式 iMX6UL 开发板Linux编译


 

 

开发环境是开发人员在开发过程当中,所需的软硬件平台。开发环境并不是一个固定的样式,本文中将详细讲解一个嵌入式Linux开发环境搭建的方法。如果您已经对嵌入式开发非常了解的话,可以按照自己的需求来搭建环境。如果和本文环境不一样而产生报错,您可以从国内一些Linux论坛和网站搜索相关的信息来解决。本文介绍的环境经过飞凌嵌入式公司的测试,如果对嵌入式开发不是非常熟悉的朋友,希望您按照飞凌嵌入式提供的方法来搭建环境。各位朋友可以放心按照本文说明的方法来搭建开发环境。


1.1  版本说明

Ø  操作系统: Ubuntu12.04  64 位版

Ø  交叉工具链:arm-fsl-linux-gnueabi-gcc-4.6.2

Ø  Bootloader 版本:u-boot-2015.04

Ø  内核版本:linux-3.14.38

1.2  编译环境说明

Ø  Linux PC:在PC上直接安装ubuntu12.04作为编译的主机,这样做的好处是编译速度快、稳定。

Ø  Vmware8.0+ubuntu12.04:在 XP下安装虚拟机,并在虚拟机下进行编译。这种方式的好处是台电脑就可以搭建开发环境,编译、烧写都在同一台电脑完成,缺点是编译速度太慢,各种网络服务不稳定。

1.3  编译环境搭建

1.3.1Ubuntu的安装与设置

Ubuntu Linux 介绍:

Ubuntu是一个以桌面应用为主的Linux操作系统。Ubuntu拥有很多优点,相对于其他版本的LinuxUbuntu也有着自己的优势。首先,安装系统非常简单,只需要非常少的设置即可,完全可以和Windows桌面系统想媲美;其次,图形界面很人性化,模仿了在xp下常用的快捷键;还有,安装和升级程序时,可以通过网络,由系统自行安装依赖的文件包,从此不必再为Linux系统的依赖关系大伤脑筋。综合考虑大家的使用习惯和学习的需要,我们选用Ubuntu Linux,并在产品光盘中提供了Ubuntu12.04光盘镜像‘ubuntu-12.04-i386.iso’以便于用户刻盘和虚拟系统安装。

Linux桌面系统版本众多,目前本手册所有Linux实验和源码在ubuntu-12.04版本测试可以通过。使用其他版本Linux桌面系统,可能会出现gcc编译器和库文件相关的问题。碰到类似问题,可以在Linux系统发行商的官方论坛上咨询和查询。如果对Linux不熟悉的用户,强烈建议使用飞凌介绍的方法。

另外,为了满足各位用户的需求,在本手册的附录中,特对VMware虚拟机使用方法进行了详细的讲解。虚拟机相关操作详见《附录五:虚拟机VMware-8.0的安装与设置》

 

Ubuntu官网 129Hhttp://www.ubuntu.org.cn

可下载各个版本的Ubuntu。当然,官网能找到各种关于Ubuntu的信息。

Ubuntu官方论坛 130Hhttp://forum.ubuntu.org.cn/

可以找到大量的实用的Ubuntu资源,中文论坛。Ubuntu也有官方的英文论坛。

 

1.3.2 安装Ubuntu

步骤  1 首先准备一张Ubuntu12.04的安装光盘。将光盘插入光驱,在PCbios中把PC启动方式设置为光驱启动,启动PC

步骤  2 启动PC后,安装盘会提示选择安装语言种类。使用PC键盘的方向键选择在安装过程中显示的语言,在这里我们选择English>>点击“Install Ubuntu”按钮。

步骤 3 选择“Erase disk and install Ubuntu>>点击“Continue”按钮

注意:非虚拟系统会格式化您的硬盘!请谨慎操作。

步骤 4 硬盘空间以及挂载点的分配。这里选择默认。也可根据个人需要来进行设置.单击“Install Now

步骤 5 选择键盘布局,默认即可 ,单击“Continue.

 

步骤 6 选择所在地,上海, Continue:

步骤 7 输入系统用户名和密码,这里输入的用户名:forlinx, 密码:123456仅作为事例.点击“Continue”按钮,系统会完成安装。

注意:这里的用户名属于普通用户,不具备root用户权限。

1.3.3 Linux终端

Linux 系统中终端是一个很实用的与操作系统交互的窗口,您可以使用终端来编译应用程序,启动各种系统服务,在Linux系统中占据着非常重要的位置。

 

如图进行操作,即可将终端设置为快捷键。

        

 

以后每次单击启动面板上的图标即可运行终端窗口:

blob.png

1.3.4  Ubuntu12.04 root用户登录设置

ubuntu12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录。以普通身份登陆Ubuntu后我们需要做一些修改。
步骤 1 普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端窗口里面输入命令后回车:

#sudo  -s

步骤 2 然后输入安装Ubuntu12.04时设置的系统密码,即可进入 root用户权限模式。

步骤 3 在终端窗口中执行

#gedit  /etc/lightdm/lightdm.conf

步骤 4 在文本全部内容删除并粘贴以下七行内容:

[SeatDefaults]
allow-guest=false
autologin-user=root
autologin-user-timeout=0
autologin-session=lightdm-autologin
user-session=ubuntu
greeter-session=unity-greeter

步骤 5 然后我们启动root帐号:
       
# sudo passwd root
步骤 6 根据提示输入root帐号密码。(注意:Linux中输入密码无符号显示)
步骤 7 重启ubuntu,不需要手动输入root用户名密码,系统会自动进入root用户。

1.3.5  设置Ubuntu网络参数

因为每个PC的网络环境不一定一样,所以需要您根据自己的实际情况来设置Ubuntu的网络,如果设置不成功,可以去Ubuntu的官方论坛上咨询。本文PC Linux网络的设置方法,仅供参考。

截图是设置虚拟机 dhcp自动获得ip的步骤

blob.png

选择nat方式

blob.png

 

上述方法设置后,不用在虚拟机设置ip地址了。

步骤 1 启动Ubunturoot用户登陆系统,单击桌面最右上端的  blob.png 按钮,弹出如下选项:

步骤 2 选择 System Settings,双击 Network进入网络设置项:


步骤 3 单击Options按钮

blob.png


步骤 4 选择 IPV4设置,输入您的IP地址、子网掩码、网关DNS,点击Save...,网络设置成功。

blob.png


步骤 5 测试一下,笔者的宿主机IP192.168.0.30,用虚拟机来ping宿主机:

blob.png

如图证明网络设置成功。

1.3.6  安装交叉编译器

步骤 1 将文件gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz拷贝到Ubuntu主目录下

i.MX6UL 用户光盘/iMX6UL 用户光盘(A\linux\tool\gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz

步骤 2 Ubuntu中新建一个终端,输入下面的命令安装交叉编译器:

#cd                        (进入主目录)

#mkdir  -p /opt/freescale/usr/local      (创建目录,若目录已存在会提示错误,跳过即可)

#tar  jxvf  gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz  -C  /opt/freescale/usr/local (编译器解压到/opt/freescale/usr/local 

步骤 3 查看gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12是否解压成功。

#ls -l /opt/freescale/usr/local

如可以看到gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12文件夹即解压成功。

步骤 4 添加环境变量到 Profile,执行命令打开编辑 Profile后,重启电脑。

#gedit /etc/profile

最后一行添加以下内容

export ARCH=arm

export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-

export PATH=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin:$PATH

保存并退出。在终端输入命令,使Ubuntu重启。

#reboot

步骤 5  在终端里面执行以下命令,验证交叉编译器安装是否成功
    
#arm-fsl-linux-gnueabi-gcc -v
下图为安装成功提示

blob.png

回车,就可以使用该编译器来编译 Uboot 代码和内核代码了。

注意: 以上操作均是以 root 用户登录系统操作为例; 所修改的文件仅对当前用户有效, 如果通过终端切换用户,以上修改的文件对新用户无效。

1.3.7  安装依赖包

Linux系统的编译需要安装一些工具包,可执行本公司提供的脚本进行自动安装。本节操作前必须确保您的计算机或虚拟机能正常连接互联网,如您在安装中出现网络断开连接请再按照以下步骤进行安装。

Ø  安装 linux 依赖包  需要在ubuntu12.04 32bit 版本安装 必须连接互联网。

步骤 1 将文件setup_env.sh拷贝到Ubuntu主目录下

i.MX6用户光盘/i.MX6用户光盘(A\linux\tool\setup_env.sh

步骤 2 setup_env.sh添加可执行权限

#chmod   u+x  setup_env.sh

步骤 3 执行脚本

#./setup_env.sh

步骤 4 安装过程中出现如下提示需作出对应操作

blob.png                 此提示按下回车

blob.png    此提示输入“Y”后按下回车

 

 

1.4  编译

搭建好开发环境后,接下来进行U-bootLinux内核在PC  Linux的编译。本文一切操作基于飞凌嵌入式i.MX6UL开发板,关于iMX6UL的资料请联系飞凌嵌入式在线客服人员

1.4.1  编译u-boot

uboot源码 暂不开源,请使用飞凌提供的u-boot.imx,文件所在路径

Ø  i.MX6UL用户资料/Linux\image\uboot.imx


如您自行移植u-boot可参考以下方法进行编译:

步骤 1 解压缩uboot源码,命令如下。

#tar zxvf  uboot-2015-04.tar.bz2

步骤 3 编译uboot

#cd uboot-2015-04

# ./build.sh

 

编译成功后,将在 uboot-2015-04’目录下产生名为 u-boot.imx’的二进制文件。该文件即我们需要烧写到Emmc上的U-boot映像文件。

 

1.4.2  编译Linux-3.14.38

将压缩包 ‘linux-3.14.38.tar.gz’ 拷贝到你的工作目录下,解压缩:

#tar    zxvf    linux-3.14.38.tar.bz2

Ø  i.MX6用户光盘/i.MX6用户光盘(A\linux\src\linux-3.14.38.tar.bz2

Ø   配置内核

复制linux_imx6ul_config  .config 以方便你配置你的内核,命令如下。

#make  distclean

#cp linux_imx6ul_config  .config

Ø   编译内核

编译内核镜像zImage和设备树dtb,命令如下:

#make  ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi-

Linux-3.14.38/arch/arm/boot/zImage为将来使用的内核镜像

Linux-3.14.38/arch/arm/boot/dts/imx6ul-14x14-evk.dtb为将来所使用的设备树

blob.png

Ø   单独编译 zImage

#make  ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi-  zImage

blob.png

Ø   单独编译 dtb

#make  ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi-  dtbs

blob.png

1.4.3  制作rootfs

步骤 1 将文件系统源文件 ‘rootfs.tar.gz’拷贝到Ubuntu的根目录下

Ø  i.MX6UL用户光盘/i.MX6UL用户光盘(A\linux\src\rootfs.qt4.tar.bz2 qt界面文件系统。

Ø  i.MX6UL用户光盘/i.MX6UL用户光盘(A\linux\src\rootfs.tar.bz2console文件系统。

本文以rootfs.qt4.tar.bz2为例作为说明,rootfs.tar.bz2操作相同。

 

步骤 2 解压文件系统源文件

#tar  zxvf  rootfs.qt4.tar.bz2

步骤 3 开始制作rootfs文件系统,制作命令:

#./pack-rootfs.sh

blob.png

最后生成rootfs.tar.bz2是可以下载到开发板emmc中的文件系统映像。

 

1.4.4  更新镜像

1. 使用SD

将编译好的u-boot.imxzImageimx6ul-14x14-evk.dtbrootfs.tar.bz2放于光盘资料\Linux\src\createSdcard.tar.bz2\update.tar.bz2\system中,按照“SD卡烧写”部分进行烧写。

 

2. 使用烧写工具

将编译好的u-boot.imxzImageimx6ul-14x14-evk.dtbrootfs.tar.bz2放于光盘资料\Tools\mfgtools\Profiles\Linux\OS Firmware\files \linux中,按照“使用Mfgtools烧写系统”部分进行烧写。