在Microzed上构建嵌入式linux系统(ubuntu16.04下)_第1页
在Microzed上构建嵌入式linux系统(ubuntu16.04下)_第2页
在Microzed上构建嵌入式linux系统(ubuntu16.04下)_第3页
在Microzed上构建嵌入式linux系统(ubuntu16.04下)_第4页
在Microzed上构建嵌入式linux系统(ubuntu16.04下)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在Microzed上构建嵌入式linux系统(ubuntu16.04下)我们要生成四个文件:Linux启动需要4个文件:1.boot.bin

2.device_tree.dtb

3.uImage

4.uramdisk.image.gza1.生成boot.bin文件需要:(生成boot.bin时,下面三个文件顺序不能错。)(1)FSBL:第一级启动引导程序,选择ZynqFSBL模版,生成zynq_fsbl_0.elf

(2)system.bit:硬件比特流(硬件工程文件,有的命名为zynq_system_wrapper.bit)

(3)u-boot:u-boot.elf。LinuxBootloader。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.dtbdevicetree.dtb:Linux系统设备树文件,通过u-boot加载到内存。在运行时,构建系统硬件的设备树信息传递给内核,进行系统的启动运行。作为u-boot和Linux内核之间的动态接口。设备树的引入,减少内核对系统硬件的严重依赖,提高代码重用。并且加速了Linux支持包的开发。这样,使得单个内核镜像能支持多个系统,通过降低硬件所带来的需求变化和成本,降低对内核设计和编译的要求。使用设备树运行时配置的linux内核,它允许同一内核镜像可以在不同的硬件配置上运行(Linuxkernelthatusedeviceforrun-timeconfigurationwhichallowsthesamekernelimagetorunondifferenthardwareconfigurations)。

.dts是设备树源文件的格式a3.uImageuImage: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.gzuramdisk.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(可以用mkdirbuild,也可以手动添加),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)

sudosu

exportCROSS_COMPILE=arm-none-linux-gnueabi-

makezynq_microzed_config

make//在根目录生成了u-boot(anelffile),u-boot.bin,和u-boot.srec。其中u-boot(anelffile)用于制作最后启动的Boot文件。

cpu-bootu-boot.elf//复制一下然后参照:或者陆佳华老师的《嵌入式系统软硬件协同设计实战指南》第九章,生成boot.bin文件。3.编译uImage(1)在网上下载:“linux-xlnx-xilinx-v2015.1.zip”,解压到build,cd到linux-xlnx-xilinx-v2015.1里。(2)

sudosu

sudoaptinstallu-boot-tools

sudoaptinstalllibncurses5-dev//防止makemenuconfig时缺少这个库文件(3)编译出来的目标是针对ARM体系结构的。因为是针对ARM体系结构,所以需要使用交叉编译器。

exportCROSS_COMPILE=arm-none-linux-gnueabi-

makeARCH=armxilinx_zynq_defconfig

makeARCH=armmenuconfig

makeARCH=armUIMAGE_LOADADDR=0x8000uImage

(6)打印出:

ImageName:Linux-3.18.0-xilinx

Created:TueJul1916:00:072016

ImageType:ARMLinuxKernelImage(uncompressed)

DataSize:3477600Bytes=3396.09kB=3.32MB

LoadAddress:00008000

EntryPoint:00008000

Imagearch/arm/boot/uImageisready4.创建设备树(1)(注意这是linux-xlnx/arch/arm/boot/dts/目录下存在的dts文件才可以生成dtb文件,以下以zedboard为例)在Linux源代码目录下(我的是“/home/ds/build/linux-xlnx-xilinx-v2015.1”),编译目标为”dtbs”时会把所有的dts文件编译成dtb文件,所有的dts文件和生成的dtb文件都位于linux-xlnx/arch/arm/boot/dts/目录下

cd到linux-xlnx-xilinx-v2015.1下

makeARCH=armdtbs

zynq-zed.dtb是我们需要的文件,改名为devicetree.dtb如果只想生成zynq-zed.dtb,在linux源代码根目录输入以下命令即可

makeARCH=armzynq-zed.dtb或者用设备树编译器对dts文件进行编译生成:

apt-getinstalldevice-tree-compiler

cd/home/ds/build/linux-xlnx-xilinx-v2015.1/arch/arm/boot/dts

dtc-Odtb-Idts-ozynq-zed.dtbzynq-zed.dts——但是里面没有我们想要的zynq-microzed.dts文件,因此只能用别的方法,这里介绍是为了给用其他开发板的读者带来方便(2)从步骤六可以下载到microzed_7010_7020_petalinux_SD_images,里面有devicetree_microzed_2014_4.dts,可以生成。

也可以用Vivado创建一个Microzed的项目生成比特流后导入到SDK,File—>New—>BoardSupportPackage—>BoardSupportPackageOS:device-tree—>Finish命令—->在弹出的Setting对话框中,设置bootargs的Value值为:console=ttyPS0,115200root=/dev/ram/rwearlyprintk—>在consoledevice的Value下拉菜单中选择ps7_uart_1,单击OK按钮。(这里的bootargs参数是内核的命令行参数,在内核启动阶段,这些参数被传递给内核。这里root=/dev/ram指的是内核从内存启动文件系统,U-boot将uramdisk.image.gz加载到内存后将其内存地址传递给内核,内核就知道该从什么地方运行文件系统了。但是我们知道Zedboard上的内存只有512M,况且uramdisk.image.gz最大只能到32M,那么当在构建较大的系统时该怎么办呢?解决这一问题有两种方法,第一个仍然使用uramdisk.image.gz作为文件系统,然后将需要加载到用户系统文件放到FAT分区中,当操作系统启动后,将FAT分区挂载到系统中,然后进行相应的访问。第二种方法则是将文件系统放到SD卡的EXT分区中就像第一章中启动linaro_ubuntu桌面系统一样,这里唯一需要修改的是将这里的启动参数root=/dev/ram改为root=/dev/mmcblk0p2。)——>编译结束后,device-tree_bsp_0/ps7_cotexa9_0/libsrc/device-tree_v0_00_x目录下可以看到xilinx.dts文件生成。这里的xilinx.dts不是完美的,如果在Zedboard上使用还要根据实际的情况修改,找到已经修改好的xup_zed.dts,该文件对ethernet的mdio参数进行修改。

cd~/build/linux-xup

./scripts/dtc/dtc-Idts-Odtb-odevicetree.dtbxilinx.dts

当然这个过程可逆,可以将一个.dtb转换成.dts

./scripts/dtc/dtc-Idtb-Odts-oxilinx.dtsdevicetree.dtb

或者将xilinx.dts放入arch/arm/boot/dts文件夹中,然后使用下面的命令生成devicetree.dtb。

makeARCH=armxilinx.dtb

cparch/arm/boot/dts/xilinx.dtb./devicetree.dtb5.生成uramdisk.image.gz(1)在+and+Modify+a+Rootfs下载arm_ramdisk.image.gz(该网址也有过程)

(2)在build目录中:mkdirfilesys,cdfilesys,把arm_ramdisk.image.gz放到filesys目录中

(3)cparm_ramdisk.image.gzramdisk.image.gz

(4)gunzipramdisk.image.gz

(5)mkdirfile_tmp

(6)sudomountramdisk.image-oloop./file_tmp/(或者sudomount-oloopramdisk.imagefile_tmp)

(7)此时文件系统已经挂载到了film_tmp目录中,你可以到film_tmp目录中对文件系统进行相应的修改。修改完后将文件系统umount并重新压缩即可。这里如果你要制作EXT文件系统,则只需要将SD卡插到PC机中,并将file_tmp文件夹的内容复制到SD卡的EXT分区中即可。

(8)sudoumountfile_tmp/

(9)gzipramdisk.image

(10)sudoapt-getinstallu-boot-tools

(11)mkimage-Aarm-Tramdisk-Cgzip-dramdisk.image.gzuramdisk.image.gz

输出:

ImageName:

Created:TueJul1917:32:31201

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论