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

接下来以iMX6UL开发板为例说一下如何搭建Linux开发环境。i.MX6UL系列iMX6UL核心板是一款基于NXP(原Freescale)i.MX 6UltraLite Cortex-A7架构处理器设计的核心板,丰富的产品资料,稳定的售后技术支持,加快产品设计速度。供货稳定,最长超过十年的产品生命周期,无后顾之忧。

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  台电脑就可以搭建开发环境,编译、烧写都在同一台电脑完成,缺点是编译速度太慢,各种网络服务不稳定。

1.3   编译环境搭建1.3.1 Ubuntu 的安装与设置

Ubuntu Linux 介绍:

Ubuntu 是一个以桌面应用为主的Linux 操作系统。Ubuntu 拥有很多优点,相对于其他版本的 Linux ,Ubuntu 也有着自己的优势。首先,安装系统非常简单,只需要非常少的设置即可,完全可以和 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 官网 :   129H http://www.ubuntu.org.cn

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

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

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

1.3.2  安装 Ubuntu

步骤  1 : 首先准备一张 Ubuntu12.04 的安装光盘。将光盘插入光驱,在 PC 的 bios 中把 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 系统中占据着非常重要的位置。

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

         

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

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 的步骤

选择 nat 方式

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

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

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


步骤 3 : 单击 Options 按钮


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


步骤 5 : 测试一下,笔者的宿主机 IP 为 192.168.0.30 ,用虚拟机来 ping 宿主机 :

如图证明网络设置成功。

1.3.6   安装交叉编译器

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

1  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
下图为安装成功提示

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

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

1.3.7   安装依赖包

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

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

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

1  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 : 安装过程中出现如下提示需作出对应操作

                   此提示按下回车

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

1.4   编译

搭建好开发环境后,接下来进行 U-boot 和 Linux 内核在 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 为将来所使用的设备树

Ø    单独编译 zImage

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

Ø    单独编译 dtb

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

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.bz2 为 console 文件系统。

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

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


原文链接:https://www.forlinx.com/article_view_318.html