开发环境是开发人员在开发过程当中,所需的软硬件平台。开发环境并不是一个固定的样式,本文中将详细讲解一个嵌入式 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 用户。
因为每个 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-bootuboot 源码 暂不开源,请使用飞凌提供的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