GP笔记

GP

source {D:\workplace\G_Pulse\U_BOOT_fromGP\boot}

loady 0x10000000

% cd images/linux
% petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --atf bl31.elf --force

DTG settings

tar xvf rootfs.tar.gz -C ./

u-boot env partition settings

更新

ls mmc 0:1
fatload mmc 0 0x10000000 image-ramfs.ub
bootm 0x10000000

processing system initialization files(psu_init) vivado中存在

/components/plnx_workspace/device-tree/device-tree/psu_init.tcl

petalinux

Zynq UltraScale+ MPSoC DPU TRD Vivado 2019.2:https://github.com/Xilinx/Vitis-AI/blob/master/DPU-TRD/prj/Vivado/README.md

构建 PetaLinux 系统镜像的步骤

petalinux-config

将选项:Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> boot image settings 中 ‘image storage media’ 更改为 ‘primary sd’;
将选项:Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> kernel image settings 中 ‘image storage media’ 更改为 ‘primary sd’;
将选项:Subsystem AUTO Hardware Settings -> Advanced bootable images storage Settings -> dtb image settings 中 ‘image storage media’ 更改为 ‘primary sd’

将选项:Image Packaging Configurations 中 ‘Root filesystem type’ 更改为 ‘SD card’
BOOT.BIN:包含 FSBL BIT U-BOOT三合一;
image.ub:内核文件;
system.dtb:设备树文件;

下面的步骤将验证PetaLinux是否配置为为SD引导创建Linux和引导映像。
5. Select Subsystem AUTO Hardware Settings.
6. Select Advanced Bootable Images Storage Settings.
a. Select boot image settings. b. Select Image Storage Media. c. Select primary sd as the boot device.
7. Under the Advanced Bootable Images Storage Settings submenu, do the following:
a. Select kernel image settings. b. Select Image Storage Media. c. Select primary sd as the storage device.
8. Under Subsystem AUTO Hardware Settings, select Memory Settings and set the System Memory Size to 0x6FFFFFFF

拷贝镜像文件

本节介绍了如何向 SD 卡分区拷贝图像文件。假设有两个分区被安装到 /media/BOOT 和 /media/rootfs。

  1. 更改至您的 PetaLinux 工程根目录中。
    $ cd <-plnx-proj-root>
  2. 将 BOOT.BIN 和 image.ub 拷贝至 SD 卡的 BOOT 分区。 image.ub 文件将具有设备树和内核镜像文件。
    $ cp images/linux/BOOT.BIN /media/BOOT/
    $ cp images/linux/image.ub /media/BOOT/
  3. 将 rootfs.tar.gz 文件拷贝至 SD 卡的 RootFS 分区并提取文件系统。
    $ sudo tar xvf rootfs.tar.gz -C /media/rootfs

mobaXterm

插件地址 https://mobaxterm.mobatek.net/plugins.html
步骤 https://blog.csdn.net/submarineas/article/details/90639849

https://moneyslow.com/%E5%A5%BD%E7%94%A8%E7%9A%84ssh%E8%BF%9C%E7%A8%8B%E7%BB%88%E7%AB%AF%E6%8E%A8%E8%8D%90%EF%BC%9Amobaxterm.html

ramfs rootfs

https://blog.csdn.net/u011627161/article/details/51602593?utm_source=blogxgwz3

ramfs是一种非常简单的文件系统,它直接利用linux内核已有的高速缓存机制(所以其实现代码很小,也由于这个原因,ramfs特性不能通过内核配置参数屏蔽,它是内核的天然属性),使用系统的物理内存,做成一个大小可以动态变化的的基于内存的文件系统。

什么是rootfs?
rootfs是一个特定的ramfs(或tmpfs,如果tmpfs被启用)的实例,它始终存在于linux2.6的系统中。rootfs不能被卸载(与其添加特殊代码用来维护空的链表,不如把rootfs节点始终加入,因此便于kernel维护。rootfs是ramfs的一个空实例,占用空间极小)。大部分其他的文件系统安装于rootfs之上,然后忽略它。它是内核启动初始化根文件系统

uboot命令

https://www.cnblogs.com/x_wukong/p/9244742.html uboot常用命令
bootm - boot application image from memory

     从存储器中的应用镜像引导

uboot 属于bootloader(引导程序)的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核。所以,由上面描述的,就知道,UBOOT需要具有读写flash的能力。
uboot刚开始被放到flash中,板子上电后,会自动把其中的一部分代码拷到内存中执行,这部分代码负责把剩余的uboot代码拷到内存中,然后uboot代码再把kernel部分代码也拷到内存中,并且启动,内核启动后,挂着根文件系统,执行应用程序。https://www.e-learn.cn/content/qita/614030

我们知道,bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。
然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成。它主要的功能是加载与引导内核映像
一个嵌入式的存储设备通过通常包括四个分区:
第一分区:存放的当然是u-boot
第二个分区:存放着u-boot要传给系统内核的参数
第三个分区:是系统内核(kernel)
第四个分区:则是根文件系统
链接:https://www.jianshu.com/p/42106ed7cbde

uboot 命令使用教程(uboot参数设置)
https://www.cnblogs.com/alan666/p/8312232.html

setenv ipaddr 192.168.1.22

PSU PMU

Zynq UltraScale+带有一个多功能处理系统(PS),集成了一个高度灵活和高性能可编程逻辑(PL)部分,全部在一个单系统芯片(SoC)上。Zynq UltraScale+ MPSoC PS模块包括如下引擎:
•基于四核Arm Cortex-A53的应用处理单元(APU)
•基于双核Arm Cortex-R5的实时处理单元(RPU)
•Arm Mali-400基于MP2的图形处理单元(GPU)
•**专用平台管理单元(PMU)**和配置安全单元(CSU)

高速外设列表,包括显示端口和SATA
可编程逻辑部分,除了可编程逻辑单元,也与少数高性能外设集成,包括以下::
•集成块PCI Express
•Interlaken集成块
•集成块用于100G以太网
•系统监控
•视频编解码器

工具篇

miniWiggler

miniWiggler 是英飞凌面向未来的高性能、高性价比调试工具。在主机端,其具有 USB 接口,可以在每台计算机上使用。在设备端,通过英飞凌 10 引脚 DAP 或 16 引脚 OCDSL1 接口进行通信。miniWiggler 专门设计配合英飞凌的调试访问软件 (DAS)。

  • 调试、闪存编程
  • Altium/TASKING 编译器
  • Infineon DAVE™ Bench
  • Infineon DAVE™ 3
  • 英飞凌 MemTool
  • Hitex HiTOP 调试器
  • ARM KEIL uVision

https://www.infineon.com/cms/cn/product/evaluation-boards/kit_dap_miniwiggler_usb/

MEMTOOL

英飞凌的MEMTOOL软件支持英飞凌的XC800, XC16x, XC2000, XMC4000 和 TriCore系列FLASH和OTP MCU的编程烧录。 MEMTOOL软件通过一个标准串口连接待编程目标MCU。对于XC2000, XMC4000 和 TriCore 系列MCU, 也支持JTAG 和英飞凌自己的DAS(Devices Access Server)。 是非常好用的编程烧录软件

Lauterbach & TRACE32功能简介
TRACE32作为一种真正集成化、通用性系统仿真器可以组合成多种方案,可以支持网络方案、实验室单机方案、异地光纤方案等,它具有全模块化、积木式结构、可支持JTAG及BDM接口和所有CPU,能够提供软件分析、端口分析、波形分析以及软件测试等强大功能。
TRACE32是由德国Lauterbach公司研制开发的一款仿真测试工具。

知识篇

U-Boot

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。
Das U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构。
pc上电,bios(引导操作系统)、识别C盘、运行应用程序。同样的在嵌入系统里面,启动过程:一上电的时候,uboot(引导Linux内核)、挂接根文件系统、运行应用程序

U-Boot是BootLoader的一种,是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

U-Boot的两种操作模式:

启动加载(Boot loading)模式和下载(Downloading)模式,并具有大型Boot Loader的全部功能。

bootloader 与 uboot的区别
BootLoader是嵌入式设备中用来启动操作系统内核的一段程序。
uboot(universal bootloader)是一种可以用于多种嵌入式CPU的BootLoader程序,换言之,uboot是bootloader的一个子集。
uboot的核心作用就是启动操作系统内核,uboot的本质就是一段裸机程序。

BootLoader

BootLoader是一段小程序,可以把它想象成PC机linux上的GRUB/LILO引导程序,只不过在嵌入式linux中,没有BIOS,而是直接从flash中运行,来装载内核。它可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。

一个嵌入式系统从软件角度来看分为三个层次:
1.引导加载程序
包括固化在固化中的boot程序(可选),和BootLoader两大部分
2.linux内核
特定于嵌入式平台的定制内核
3.文件系统
包括了系统命令和应用程序

BootLoader–>Boot Parameters–>Kernel–>Root Filesystem

BootLoader启动过程可分为单阶段和多阶段(stage1、stage2),其中stage1完成初始化硬件,如CPU寄存器、内存控制器,为stage2准备内存空间。一般stage1是可以直接在nor flash中运行的,并将stage2复制到内存RAM中,设置堆栈,然后跳转到stage2(从这也可以看出stage2是在RAM中运行的,与stage1不同)

BootLoader的stage1通常包括以下步骤:
1.硬件设备初始化 如CPU寄存器、内存控制器
2.为加载BootLoader的stage2准备RAM空间
3.拷贝BootLoader的stage2到RAM空间中
4.设置好堆栈 为什么?为了跳转到stage2的入口,因为stage2大多数是用C语言写的
5.跳转到stage2的C入口点

BootLoader的stage2通常包括以下步骤:
1.初始化本阶段要使用到的硬件设备 各种设备,如网卡
2.将内核映像和根文件系统映像从flash上读到RAM中去
3.调用内核

使用 XSDB/XSCT 通过 JTAG 将 MPSoC 启动到 Linux Kernel
http://www.zynqnotes.com/boot-kernel-with-xsct-jtag

petalinux工程下
/components/plnx_workspace/device-tree/device-tree/psu_init.tcl

你可能感兴趣的:(FPGA)