MYZR-SAMA5 Linux-3.18 编译手册
目录
- 1 = 文档说明 =
- 2 系统环境说明
- 3 操作说明
- 4 截图说明
- 5 图片中的Linux命令
- 6 重要信息说明
- 7 = 安装并配置开发环境 =
- 8 安装并运行虚拟机系统
- 9 配置开发环境
- 10 常用功能演示
- 11 = 安装并配置交叉编译工具链 =
- 12 准备交叉编译工具链安装包
- 13 安装交叉编译工具
- 14 配置交叉编译工具环境变量
- 15 = AT91Bootstrap编译 =
- 16 准备源码
- 17 编译
- 18 目标文件
- 19 = u-boot编译 =
- 20 准备源码
- 21 编译
- 22 目标文件
- 23 = 内核编译 =
- 24 准备源码
- 25 编译
- 26 = 文件系统编译 =
- 27 注意及说明
- 28 编译前的准备
- 29 编译文件系统
= 文档说明 =
系统环境说明
- 编译主机CPU架构:64位
- 编译主机系统:Linux
- Linux发行版:Ubuntu
- Ubuntu版本类型:服务器版
- Ubuntu版本号:12.04.5
- Ubuntu系统类型:x86-64
注意:开发主机请使用ubuntu 12.04.5 x86-64(桌面版或服务器版均可),使用其他发行版的Linux或Ubuntu的其它版本可能会遇到的不必要的问题。
操作说明
1)文档中以“$”开头的行,其后是Linux命令。
2)文档中所有的Linux命令建议手动输入到Linux主机执行(直接复制、粘贴到Linux主机上执行,可能会执行失败)。
3)文档中的Linux执行命令,如果空格后的下一个字符是“-”的(如:sudo apt-get –y install之类的),请手动输入到Linux主机执行(直接复制、粘贴到Linux主机上执行,通常会执行失败)。
4)文档中所有一行没写完的Linux命令请手动输入到Linux主机执行,(因为复制、粘贴命令不能包含类似“换行符”之类的特殊字符)。
5)按文档输入并执行Linux命令时注意观察命令的执行结果与文档图片中的是否一致,以确认命令是否输入有误及是否执行失败。
6)第一遍编译请严格按照文档进行,否则可能出现莫名其妙的错误。
截图说明
为使视图看起来简洁整齐,截图中的命令提示符统一使用myzr$。
图片中的Linux命令
在文档的图片中观察“myzr$”开头的行可以直观的看到输入的Linux命令。
重要信息说明
为避免各位客户在搭建开发环境及编译过程中遇到不必要的问题浪费时间和精力,推荐使用明远智睿发布的“vb43-u12045-serv-amd64”虚拟机系统。
具体参见 MYZR虚拟机系统指导
= 安装并配置开发环境 =
安装并运行虚拟机系统
建议使用我们提供的虚拟机系统作为开发主机,本节针对我们提供的虚拟机进行指导。
如需要自己搭建开发环境的朋友,也请先按手册操作过一遍之后再自行搭建开发环境,以免在操作过程中浪费不必要的时间和精力。
准备虚拟机系统和软件
1)下载虚拟机系统
文件名:vm10-u12045-serv-amd64.rar
这是安装配置好的Ubuntu 12.04.5 Server版的工作环境。
2)下载虚拟机软件
文件名:VMware-workstation-full-10.0.5-2443746.exe
这是虚拟机软件VMware workstation。
安装虚拟机
1)解压虚拟机系统
在Windows下解压vm10-u12045-serv-amd64.rar到当前文件夹。
2)安装虚拟机软件
参照 vm10-u12045-serv-amd64 目录下的“00.vmware10安装”安装VMware-workstation-full-10.0.5-2443746.exe。
运行虚拟机系统
1)启动VMware Workstation软件
2)装载虚拟机系统
在VMware Workstation菜单栏依次操作:文件 -> 打开 -> 找到vm10-u12045-serv-amd64目录,选择“vm10-u12045-serv-amd64.vmx” -> 打开
3)启动虚拟机系统
点击“开启此虚拟机”
选择“我已复制该虚拟机”
4)登录虚拟机系统
用户名:myzr
密码:myzr123
配置开发环境
更新虚拟机系统的源列表
$ sudo apt-get update
更新完成后如下图所示:
更新虚拟机系统
$ sudo apt-get -y dist-upgrade
上图是更新虚拟机系统后再执行更新命令的截图。
安装aptitude包管理工具和ia32-libs
1)安装aptitude包管理工具
$ sudo apt-get –y install aptitude
提示:上图为安装过aptitude后,再次执行安装命令的截图。
2)使用aptitude安装ia32-libs
$ sudo aptitude –y install ia32-libs
提示:上图为安装过aptitude和ia32-libs后,再次执行安装命令的截图。
安装mkimage工具
$ sudo apt-get -y install uboot-mkimage
提示:下图为安装过mkimage工具后,再次执行安装命令的截图。
安装ncurses-dev
make menuconfig对其具有依赖性质
$ sudo aptitude -y install ncurses-dev
提示:上图为安装过ncurses-dev工具后,再次执行安装命令的截图。
常用功能演示
我们提供的虚拟机系统中已经配置好samba服务、tftp服务、nfs服务、GUI桌面等功能。具体可查看vm10-u12045-serv-amd64目录下03.* ~ 05.* 的文件。
在Windows与虚拟机系统之间复制文件
由于在开发过程中需要经常在Windows和虚拟机系统之间共享文件,所以这里对这种操作进行演示和说明。
1)在windows下打开虚拟机系统的共享目录
说明:在虚拟机系统中“/home/myzr”被配置为有权限的、可通过网络访问的共享目录,访问路径为“虚拟主机名/myzr.d”或“虚拟主机IP/myzr.d”。
打开windows的“计算机或我的电脑”,在地址栏输入“\u12045\myzr.d”(注意:windows系统下路径使用的是反斜杠)。
2)输入虚拟机系统的用户名和密码(myzr : myzr123)
3)输入正确的用户名和密码点击确定后共享目录即可访问
即可在Windows和虚拟机系统之间复制文件。
= 安装并配置交叉编译工具链 =
准备交叉编译工具链安装包
1)下载交叉编译工具
文件名:gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz
说明:Linux 64-bit binaries for the ARMv7 Linux hard float cross-toolchain。
2)在虚拟机系统创建工具目录
$ mkdir ~/my-sama5/03_tools -p
3)复制交叉编译工具到虚拟机系统
自己可以采取合适的方式完成。也可以参照“2.3 常用功能演示”进行。
安装交叉编译工具
1)进入交叉编译工具链目录
$ cd ~/my-sama5/03_tools/
2)解压(安装)交叉编译工具
$ tar xf gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz
3)检查安装
查看交叉编译工具链的版本信息以验证交叉编译工具链安装正常。
$ ~/my-sama5/03_tools/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -v
执行命令后会出现类似如下的信息:
可以看到交叉编译工具链相关的信息。
配置交叉编译工具环境变量
1)设置编译配置文件的环境变量
$ SAMA5_CONF=${HOME}/my-sama5/03_tools/mysama5_gcc493_hf_env
2)将 ARCH 环境变量写入配置文件
$ echo "ARCH=arm" > $SAMA5_CONF
3)将交叉编译工具路径写入配置文件
$ sed -i "\$a SAMA5_TC_PATH=${HOME}/my-sama5/03_tools" $SAMA5_CONF
4)将交叉编译工链配置写入配置文件
$ sed -i "\$a export CROSS_COMPILE=\$SAMA5_TC_PATH/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-" $SAMA5_CONF
注意:如果在1)~ 4)操作错误,则需要删除编译配置文件(删除的命令:rm $SAMA5_CONF),并重新按照本小节操作。
5) 查看配置文件
$ cat $SAMA5_CONF
6)验证编译配置文件
- 使配置文件生效
$ source ~/my-sama5/03_tools/mysama5_gcc493_hf_env
- 查看交叉编译工具信息
$ ${CROSS_COMPILE}gcc –v
说明:如果执行“${CROSS_COMPILE}gcc –v”能查看到交叉编译工具信息则表示编译配置文件正确。
= AT91Bootstrap编译 =
准备源码
1)下载源码
文件名:at91bootstrap-3.7.2.tar.bz2
AT91Bootstrap 是二级引导装载程序,为Atmel AT91 SoC提供了一套算法来管理硬件初始化。如时钟速度配置,PIO设置,内存初始化,从指定的引导介质下载主应用程序到主内存并启动。
2)创建工作目录
$ mkdir ~/my-sama5/02_source -p
3)将源码复制到工作目录
这一步自己采取合适的方式将AT91Bootstrap源码复制到“~/my-sama5/02_source”。也可以参照“2.3 常用功能演示”。
4)解压源码
- 进入工作目录
- 执行解压命令
$ tar jxf at91bootstrap-3.7.2.tar.bz2
编译
1)进入源码目录
$ cd ~/my-sama5/02_source/at91bootstrap-3.7.2/
2)使编译配置文件生效
$ source ~/my-sama5/03_tools/mysama5_gcc493_hf_env
3)清除代码中可能存在的临时文件
$ make mrproper
4)生成配置文件
$ make mysama5ek200_defconfig
5)执行编译
$ make –j4
6)编译完成
目标文件
1)目标文件
编译完成后会在源码的binaries目录下产生我们需要的目标文件。
通过ls命令可以看到,其中mysama5ek200-dataflashboot-uboot-3.7.2.bin 即是我们需要的文件。
$ ls binaries/
2)重命令目标文件
我们在烧录的时候需要使用到这些目标文件。为了烧录的方便,我们需要将目标文件修改为我们需要的文件名,即bootstrap-mysama5ek200.。
$ cd binaries/
$ rename 's/mysama5ek200-dataflashboot-uboot-3.7.2/bootstrap-mysama5ek200/' *
$ ls -1
3)保存目标文件
将bootstrap-mysama5ek200. 保存。
= u-boot编译 =
准备源码
1)下载源码
文件名:u-boot-at91-linux4sam_4.7.tar.bz2
U-Boot在Atmel AT91 SoC上作为第三阶段引导加载程序。它负责配置主要接口,并引导Linux系统。
2)将源码复制到工作目录
这一步自己采取合适的方式将u-boot源码复制到“~/my-sama5/02_source”。也可以参照“2.3 常用功能演示”。
3)解压源码
- 进入工作目录
- 执行解压命令
$ tar jxf u-boot-at91-linux4sam_4.7.tar.bz2
编译
1)进入u-boot源码目录
$ cd ~/my-sama5/02_source/u-boot-at91-linux4sam_4.7/
2)使编译配置文件生效
$ source ~/my-sama5/03_tools/mysama5_gcc493_hf_env
3)清除代码中可能存在的临时文件
$ make distclean
4)生成配置文件
$ make mysama5ek200_defconfig
5)执行编译
$ make –j4
6)编译完成
目标文件
编译完成后会在源码的目录下产生我们需要的目标文件。
通过ls命令可以看到。其中u-boot.bin 即是我们需要的文件。
$ ls u-boot* -1
2)重命令目标文件
我们在烧录的时候需要使用到这些目标文件。为了烧录的方便,我们需要将目标文件修改为我们需要的文件名,即uboot-mysama5ek200.bin。
$ mv u-boot.bin uboot-mysama5ek200.bin
$ ls uboot-mysama5ek200.bin
3)保存目标文件
将uboot-mysama5ek200.bin 保存。
= 内核编译 =
准备源码
1)下载源码
文件名:linux-at91-linux4sam_4.7.tar.bz2
2)将源码复制到工作目录
这一步自己采取合适的方式将内核源码复制到“~/my-sama5/02_source”。也可以参照“2.3 常用功能演示”。
3)解压源码
- 进入工作目录
- 执行解压命令
$ tar jxf linux-at91-linux4sam_4.7.tar.bz2
编译
1)进入内核源码目录
$ cd ~/my-sama5/02_source/linux-at91-linux4sam_4.7/
2)使编译配置文件生效
$ source ~/my-sama5/03_tools/mysama5_gcc493_hf_env
3)清除代码中可能存在的临时文件
$ make distclean
编译内核文件
1)生成内核配置文件
$ make ARCH=arm mysama5ek200_defconfig
2)执行内核文件编译命令
$ make -j4 ARCH=arm zImage
3)内核文件编译完成
4)内核目标文件
$ ls arch/arm/boot/zImage
编译设备树文件
1)执行设备树文件编译命令
$ make ARCH=arm mysama5ek200-d36.dtb
2)设备树目标文件
$ ls arch/arm/boot/dts/mysama5ek200-d36.dtb
编译内核模块
1)执行内核模块编译命令
$ make ARCH=arm modules
2)内核模块编译完成
3)安装内核模块到指定目录
$ make ARCH=arm modules_install INSTALL_MOD_PATH=./modules
4)打包内核模块
$ tar cjf modules_mysama5ek200.tar.bz2 modules/*
5)模块包
$ ls modules_mysama5ek200.tar.bz2
= 文件系统编译 =
注意及说明
a) 原始编译的过程中的下载量大约4G。(提示:可以使用我们下载好的一些文件,以减少下载量,节约时间,在7.4中会说到)。
b) 编译主机的网络连接最好使用能访问www.fackbook.com 的网络,不然可能会受到境内防火墙的限制而无法下载编译需要的软件包。
c) 初次编译需要的时间根据网络状态及编译主机的配置需要2小时到无限时间(经粗略统计除去下载时间,在16核CPU、16G内存的主机上编译QT5系统用了大约100分钟。)
客户请根据实际情况决定是否自行编译文件系统或使用我们提供的文件系统。
编译前的准备
准备Yocto编译环境
说明,Yocto编译依赖一些软件包,所以需要在开发主机上进行安装。
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat
$ sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc
$ sudo apt-get install uboot-mkimage
准备源码
1)下载源码
源码包文件名:atmel_fido.tar.bz2
2)创建yocto工作目录
3)将源码复制到开发主机
这一步自己采取合适的方式将源码复制到yocto工作目录(即:/home/myzr/yocto)。也可以参照“2.3 常用功能演示”。
4)解压源码包
- 进入用户主目录
- 执行解压命令
准备软件包
1)创建“/opt/yocto”目录用于存放软件包
$ sudo mkdir /opt/yocto
$ sudo chmod 777 /opt/yocto
2)下载软件包
在网盘中下载yocto的软件包。
软件包相对路径:yocto/downloads,将downloads下载到Windows。
3)将软件包复制到开发主机
将下载好的“downloads”目录复制到开发主机的“/opt/yocto”。
编译文件系统
编译前的配置
1)准备编译配置文件
文件目录:conf。下载conf目录到Windows。
2)进入poky目录
$ cd ~/yocto/atmel_fido/poky/
$ source oe-init-build-env build-atmel
3)初始化编译目录
$ source oe-init-build-env build-atmel
4)复制编译配置文件到编译目录
将 conf 目录复制到 /home/myzr/yocto/poky/build-atmel 。
编译QT5文件系统
$ bitbake atmel-qt5-demo-image
提示:整个编译过程除去下载时间,在16核CPU、16G内存的主机上需要1小时左右。
- 目标文件
在./tmp/deploy/images/sama5d3xek/目录下可以找到我们编译生成的目标文件。
编译QT5交叉编译工具
- 目标文件
在./tmp/deploy/images/sama5d3xek/目录下可以找到我们编译生成的目标文件。