当前位置:首页 > > ZYNQ
		


1,组成


ZYNQ上面移植Linux操作系统包括四个部分,uboot,devicetree,kernel,ramdisk.


其中uboot类似于bios,负责对设备进行简单的初始化,devicetree以树的形式对zynq相连的硬件设备进行描述,kernel是加载的操作系统内核,ramdisk是操作系统启动之后挂载的文件系统。




2,启动过程



移植操作系统后zynq的启动过程如下,首先加载bootrom(zynq中自带,用户无法修改),然后执行fsbl(这个根据硬件在sdk中创建),然后执行uboot,uboot会将kernel、devicetree和ramdisk载入ddr,跳转到内核入口处执行,这样linux就启动了

对bootrom、fsbl和uboot详细描述如下



3,uboot设置


uboot可以从xilinx 官方github上面下载,地址是?

主要修改下面几个地方:http://xilinx.eetrend.com/content/2019/100018437.html


4,devicetree设置


devicetree源文件可以从xilinx官方下载,地址:https://github.com/Xilinx/device-tree-xlnx/releases


将dtsi,dts文件拷入linux系统下,使用dts工具制作devicetree.dtb文件。

如果需要修改devicetree文件。


可以通过dtc工具转换为可读文件dts,当对dts修改完成后,再次使用dtc工具编译产生devicetree.dtb即可。


5, 文件系统配置


在文件系统中,如果需要添加用户自定义的shell脚本或可执行程序,可以放在/usr/bin目录下。如果要设置系统自启动项,可以在/etc/rc5.d中增加shell脚本。

这里进行了IP地址的配置 cd /home/root ;ifconfig eth0 192.168.x.x


6,内核配置


内核可以从xilinx官方git下载,地址:

目前linux内核中已经集成了常见的驱动,驱动源码位于drivers文件夹下。针对内核的修改位于 arch\arm\configs\xilinx_zynq_defconfig文件中,该文件中定义了内核所包含的驱动程序


7, 常见驱动


8,启动文件制作


知识点


PetaLinux (UG1144).

PetaLinux工具集是一个嵌入式Linux系统开发工具包。它提供了一个多方面的Linux工具流,可以为Xilinx Zynq设备(包括Zynq UltraScale+设备)的Linux操作系统提供完整的配置、构建和部署环境。

PetaLinux工具设计中心提供特定于PetaLinux工具的信息和文档链接。


Bootgen


Xilinx®FPGA和片上系统(SoC)设备通常具有多个硬件和软件二进制文件,用于引导它们按设计和预期工作。这些二进制文件可以包括FPGA比特流、固件映像、引导加载程序、操作系统和用户选择的应用程序,这些应用程序可以用非安全和安全的方法加载

Bootgen 是一个 Xilinx 工具,可以将二进制文件缝合在一起并生成设备引导映像。Bootgen 定义了多个属性、属性和参数,这些属性和参数是在创建用于 Xilinx 设备的引导映像时输入的。(UG1283)


BootROM


Bootrom(或Boot ROM)是嵌入处理器芯片内的一小块掩模ROM或写保护闪存。它包含处理器在上电或复位时执行的第一个代码。根据某些带式引脚或内部保险丝的配置,它可以决定从哪里加载要执行的代码的下一部分以及如何或是否验证其正确性或有效性。有时它可能包含其他功能,可能在引导期间或之后由用户代码使用。


引导程序


Bootloader 就是在操作系统内核运行之前运行的一段程序,它类似于 PC机中的 BIOS 程序。通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射图的功能,从而将系统的软硬件环境带到一个合适的状态,为最终调用系统内核做好准备。通常,Bootloader 是严重地依赖于硬件实现的,特别是在嵌入式中。


Bootloader 的操作模式。大多数Bootloader 都包含两种不同的操作模式:“启动加载”模式和“下载”模式。


启动加载模式:这种模式也称为“自主”模式。也就是 Bootloader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是嵌入式产品发布时的通用模式。


下载模式:在这种模式下,目标机上的 Bootloader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Bootloader 保存到目标机的 RAM 中,然后再被 Bootloader 写到目标机上的FLASH 类固态存储设备中。Bootloader 的这种模系统是在更新时使用。工作于这种模式下的Bootloader 通常都会向它的终端用户提供一个简单的命令行接口。

Bootloader负责查找和加载应该在芯片上运行的最终操作系统或固件。与bootrom的一个主要区别是它通常在可写闪存中,可以更换或升级。


有时bootrom可以执行引导加载程序的工作。例如,OMAP的bootrom足够复杂(它可以解析FAT32!),你可以加载它并直接启动Linux内核。


但是,在许多情况下,使用单独的引导加载程序,或者因为bootrom不够(或不存在),或者因为需要额外的灵活性。它可以非常简单(从RAM中的固定闪存位置加载内核并跳转到它),或者可能更复杂。例如, 的U-Boot 就像一个迷你操作系统本身 - 它有一个控制台,一些命令,允许你打破启动过程,例如修改内核命令行参数,甚至从不同的位置(SD / MMC或USB)加载内核,运行一些测试等等。


当您拥有或多或少复杂的操作系统时,通常会使用引导加载程序,在启动之前可能需要进行一些设置。


在最简单的芯片上可能根本没有引导ROM或引导加载程序 - 它们只是尝试从固定的启动地址获取和执行指令。事实上,今天大多数x86芯片都是这样工作的 - 他们只是开始在FFFFFFF0上执行代码,期望芯片组已经映射了那里的BIOS闪存芯片。在这里,您可以说BIOS是引导加载程序(尽管它也为操作系统提供服务,类似于bootrom)。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭