ZYNQ Linux操作系统移植说明文档

http://xilinx.eetrend.com/content/2019/100018437.html

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)。

参考

ZYNQ Linux操作系统移植说明文档
BOOTROM的理解:
Linux下的C如何使用GDB调试工具
linux下如何用GDB调试c++程序
linux学习笔记一:在linux编写及调试c语言
【Linux学习笔记19】Linux调试程序的方法(上)GDB的基本使用方法
https://blog.csdn.net/xiang90721/article/details/53115778

ug1209 Zynq UltraScale+ MPSoC嵌入式设计教程

Example Project: Creating a New Embedded Project with Zynq UltraScale+ MPSoC(Vivado)

  • Build Software for PS Subsystems
    Example Project: Running the “Hello World” Application from Arm Cortex-A53
    Example Project: Running the “Hello World” Application from Arm Cortex-R5
    Example Project: Create a Bare-MetalApplication Project in the Vitis IDE
    Example Project: Create Linux Images using PetaLinux
    Design Example 1: Using GPIOs, Timers, and Interrupts
    Design Example 2: Example Setup for Graphics and DisplayPort Based Sub-System

Zynq UltraScale+ MPSoC Embedded Design Methodology Guide

UG1157 PetaLinux Tools Documentation Command Line Reference Guide

BOOT


ZYNQ + Linux相关推荐

  1. ebaz s9 zynq linux中关于网络的一些小问题

    ebaz s9 zynq linux中关于网络的一些小问题 在使用petaalinux 编译ebaz的linux时,如果只按照某金与某原子的linux教程制作linux系统会卡死在内核启动的过程中.其 ...

  2. ZYNQ Linux 移植:包含petalinux移植和手动移植debian9

    问题: 1.ZYNQ Linux启动流程: BOOTROM→FSBL→Uboot→Kernel→RootFS 环境: 虚拟机ubuntu16.04 petalinux2018.3 vivado2018 ...

  3. ZYNQ Linux 添加I2C-RTC驱动

    原文链接:ZYNQ:Linux添加I2C-RTC驱动 硬件情况 使用的是DS1338这款RTC时钟芯片,I2C总线对应到PS端的I2C1. 配置 内核 添加有关的驱动: 因为DS1338用的驱动与DS ...

  4. ZYNQ LINUX开发笔记——内存直接访问

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ LINUX开发笔记--内存直接访问 LINUX 脚本方式 C APP模式 LINUX 脚本方式 写内存: devmem 0x ...

  5. Zynq Linux 使用 SPI ADC (ADS8332)

    目录 参考文章 一.ADS8332介绍 1. ADS8332通道选择模式 2. ADS8332转换开始(CONVST)控制 3. ADS8332转换结束(EOC)状态 4. ADS8332 TAG模式 ...

  6. 转载:ZYNQ+linux网口调试笔记(1)PS-GEM0

    ZYNQ+linux网口调试笔记(1)PS-GEM0 转载原文:https://www.jianshu.com/p/a4e25e8b2f5e 开发环境 Windows SDK 2017.4 Ubunt ...

  7. linux ps-pl中断,zynq linux驱动之PL-PS中断

    PC:Windows 10 虚拟机:ubuntu 16.04 vivado:2017.04 PetaLinux:2017.04 开发板:黑金AX7010 根文件系统:debian8 --------- ...

  8. zynq Linux软件中断,zynq linux驱动之PL-PS中断【转】

    PC:Windows 10 虚拟机:ubuntu 16.04 vivado:2017.04 的的PetaLinux:2017.04 开发板:黑金AX7010 根文件系统:debian8 ------- ...

  9. ZYNQ LINUX开发笔记——windows下用xilinx SDK编译zynq linux app小程序

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ LINUX开发笔记--windows下用xilinx SDK编译zynq linux app小程序 前言 操作方法 总结 前 ...

最新文章

  1. 给女友讲讲设计模式——适配器模式(JAVA实例)5
  2. 七、使用栈实现综合计算器(中缀表达式)
  3. mysql 演示吧_postgreSQL常用命令
  4. 总结构建子类对象时的顺序
  5. XSS-Game level 5
  6. 学写网站(二)前端配置之glup
  7. creo数控编程怎么样_creo3.0数控编程加工使用实例视频教程入门到精通 车床编程...
  8. 单稳态电路和双稳态电路电路详解 CD4013触发器开关电路驱动继电器
  9. python操作word
  10. VB.NET学习笔记:使用Random类生成随机数(不重复、数字、字母)
  11. 高光谱解混与变化检测专题
  12. Django之stark组件1
  13. java 最短遍历路径_凯文培根游戏的最短路径图遍历
  14. CY8C5888AXQ-LP096 CY8C5888AXI-LP096,IC MCU 32BIT
  15. ansys 基础建模(从0开始)
  16. vue 实现图片查看器(仿windows图片查看器 )
  17. 简记_ LDO基础知识
  18. 数据查询语言及联表查询
  19. CQ: 字节系创作质量中台实践
  20. phpmyadmin for linux,linux下phpmyadmin安装

热门文章

  1. 如何将本地代码推送至github
  2. js控制浏览器窗口弹出、警告框、确认框
  3. 关于Unity LitJson写入数据报错的问题
  4. 3种iPhone手机数据备份,轻松备份和恢复数据
  5. 2019.11.2图论专题(AtCoder Splatter Painting、President and Roads、Shortest Cycle、ISlands II)
  6. 浅谈学习编程语言的心得与体会
  7. php __destruct反序列化原理
  8. 完美世界手游服务器维护时间表,完美世界手游开服时间表 新区开服时间总览[多图]...
  9. 手把手教您使用北美打折返利网
  10. 应届生求职经历-一路坎坷