在Microzed上构建嵌入式linux系统(ubuntu16.04下)
我们要生成四个文件:Linux启动需要4个文件:
1. boot.bin
2. device_tree.dtb
3. uImage
4. uramdisk.image.gz
a1.生成boot.bin文件需要:(生成boot.bin时,下面三个文件顺序不能错。)
(1)FSBL:第一级启动引导程序,选择Zynq FSBL模版,生成zynq_fsbl_0.elf
(2)system.bit:硬件比特流(硬件工程文件,有的命名为zynq_system_wrapper.bit)
(3)u-boot:u-boot.elf。 Linux Bootloader。 u-boot是用于多种嵌入式CPU的bootloader程序。体系结构:api,arch(u-boot支持的cpu架构,子目录arm使我们用到的),board(和已有开发板相关文件),common(u-boot命令行下支持的命令),disk,doc,drivers(u-boot支持的设备驱动程序),fs(支持的文件系统),include(头文件,对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。configs/zynq_common.h是我们开发板相关的文件),lib(与体系结构相关的库文件),net,tools(生成u-boot的工具,例如,mkimage,crc等,还包括Makefile和boards.cfg)
启动过程参考:
a2.device_tree.dtb
devicetree.dtb:Linux系统设备树文件,通过u-boot加载到内存。在运行时,构建系统硬件的设备树信息传递给内核,进行系统的启动运行。作为u-boot和Linux内核之间的动态接口。设备树的引入,减少内核对系统硬件的严重依赖,提高代码重用。并且加速了Linux支持包的开发。这样,使得单个内核镜像能支持多个系统,通过降低硬件所带来的需求变化和成本,降低对内核设计和编译的要求。使用设备树运行时配置的linux内核,它允许同一内核镜像可以在不同的硬件配置上运行(Linux kernel that use device for run-TIme configuraTIon which allows the same kernel image to run on different hardware configuraTIons)。
.dts是设备树源文件的格式
a3.uImage
uImage:Linux内核镜像,通过u-boot加载到内存。Linux源码采用汇编语言和C语言编写,了解内核源码的整体分布情况,有利于理解Linux如何组织各项功能的实现。arch(硬件体系结构,kernel,lib,mm,math-emu,boot), DocumentaTIon, drivers, fs, include, init, ipc(进程间通信), kernel, lib, mm, net, scripts, block, crypto, security, sound, usr.
a4.uramdisk.image.gz
uramdisk.image.gz:Linux文件系统,通过u-boot加载到内存。
文件系统是解决如何在存储设备上存储数据的一种方法,其中包括存储布局、文件命名、空间管理、安全控制等。Linux操作系统支持很多现代的流行文件系统,比如ext2、ext3和ramdisk。
1.构建交叉编译环境
(1)在网上下载: arm-2013.05-24-arm-none-linux-gnueabi-x86_64-linux-gnu.tar.bz2
(2)解压缩。我直接解压到/home/ds下,解压后路径"/home/ds/arm-2013.05"
(3)gedit /etc/environment
将PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
注释掉(或直接改更改),添加
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/ds/arm-2013.05/bin"
"/home/ds/arm-2013.05/bin"这个根据你的版本决定。
这个操作可以使用户在root权限下使用arm-none-linux-gnueabi-
(4) gedit /etc/bash.bashrc
在最后添加:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/ds/arm-2013.05/bin"
"/home/ds/arm-2013.05/bin"这个根据你的版本决定。
这个操作可以使非root用户使用arm-none-linux-gnueabi-
然后:
source /etc/bash.bashrc
立即生效
(5)arm-none-linux-gnueabi-gcc -v
打印出交叉编译器版本信息,证明设置系统环境成功。
2.编译U-Boot
(1)在/home/ds下建立新文件夹build(可以用mkdir build,也可以手动添加),cd 到build文件夹
(2)从网上下载"u-boot-xlnx-xilinx-v2015.1.zip",解压到build文件夹里,并cd 到u-boot-xlnx-xilinx-v2015.1。(此时路径为"/home/ds/build/u-boot-xlnx-xilinx-v2015.1")
(3)
sudo su
export CROSS_COMPILE=arm-none-linux-gnueabi-
make zynq_microzed_config
make//在根目录生成了u-boot(an elf file),u-boot.bin,和u-boot.srec。其中u-boot(an elf file)用于制作最后启动的Boot文件。
cp u-boot u-boot.elf //复制一下
- Xilinx Kintex UltraScale 一半尺寸的 PCI Express 平台 (HTG-K816)(06-15)
- Xilinx全新参考设计提供业界首个单芯片400G解决方案(02-12)
- Xilinx用于工业自动化的机器视觉解决方案(11-30)
- Xilinx多协议机器视觉摄像机参考设计(12-01)
- 机器视觉技术原理解析及解决方案集锦(02-06)
- 机器视觉在汽车电子方向的应用解决方案(02-13)