04-ZYNQ学习之FPGA+Linux开发的流程

时间:2024-04-01 10:04:46

通过前面3节内容,我们知道了:

  1. Xilinx ZYNQ的内部结构
  2. PL端FPGA的开发过程
  3. ZYNQ启动过程及固化

 那么ZYNQ包含CortexTM-A9核,那么它的ARM资源应用主要就落在嵌入式linux上。ZYNQ的嵌入式Linux开发流程是本节介绍的重点。

一、嵌入式linux开发三要点

嵌入式linux底层开发主要工作是:

  1. bootloader

  2. 内核
  3. 文件系统

内核和文件系统都是编译好或制作好的文件,一般固化在flash上等待uboot加载或内核挂载。所以上电要确保运行的ARM端程序就是uboot。

u-boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:
1)第一阶段的功能
 硬件设备初始化
 加载 u-boot 第二阶段代码到 RAM 空间
 设置好栈,跳转到第二阶段代码入口
2)第二阶段的功能
 初始化本阶段使用的硬件设备
 检测系统内存映射
 将内核从 Flash 读读到 RAM 中
 为内核设置启动参数
 调用内核

04-ZYNQ学习之FPGA+Linux开发的流程

二、ZYNQ开发重点

2.1 Boot.bin(FPGA+Bootloader)

       这是一个过程,主要是完成FPGA端资源的设计,同时完成ARM bootloader的开发,这样保证了上电后FPGA功能被正常配置,且uboot可以引导起后期的内核。最终就是完成boot.bin的开发。

2.2 FPGA功能的具体设计

       重点之一FPGA端资源的驱动及功能实现。完成后需要更新boot.bin。

2.3 ARM端内核驱动开发

       重点之一就是完成外设的驱动。此部分不需要重新编译boot.bin,只需要覆盖新开发好的内核即可。

2.4 应用开发

      完成FPGA功能设计后,主要就是完成ARM应用程序的设计以实现产品的开发。比如QT移植等。应用开发依赖于第3步的驱动及创建的设备节点。

三、总结

      Xilinx为ZYNQ提供了很好的系统支持,比如uboot、内核代码等,所以ZYNQ开发的重点在于:

  1. FPGA逻辑资源的设计
  2. 定制ARM端内核驱动
  3. FPGA与ARM的协同工作