通过前面3节内容,我们知道了:
Xilinx ZYNQ的内部结构PL端FPGA的开发过程ZYNQ启动过程及固化
?那么ZYNQ包含CortexTM-A9核,那么它的ARM资源应用主要就落在嵌入式linux上。ZYNQ的嵌入式Linux开发流程是本节介绍的重点。
嵌入式linux底层开发主要工作是:
bootloader
内核文件系统
内核和文件系统都是编译好或制作好的文件,一般固化在flash上等待uboot加载或内核挂载。所以上电要确保运行的ARM端程序就是uboot。
u-boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:
1)第一阶段的功能
? 硬件设备初始化
? 加载 u-boot 第二阶段代码到 RAM 空间
? 设置好栈,跳转到第二阶段代码入口
2)第二阶段的功能
? 初始化本阶段使用的硬件设备
? 检测系统内存映射
? 将内核从 Flash 读读到 RAM 中
? 为内核设置启动参数
? 调用内核
? ? ? ?这是一个过程,主要是完成FPGA端资源的设计,同时完成ARM bootloader的开发,这样保证了上电后FPGA功能被正常配置,且uboot可以引导起后期的内核。最终就是完成boot.bin的开发。
? ? ? ?重点之一FPGA端资源的驱动及功能实现。完成后需要更新boot.bin。
? ? ? ?重点之一就是完成外设的驱动。此部分不需要重新编译boot.bin,只需要覆盖新开发好的内核即可。
? ? ? 完成FPGA功能设计后,主要就是完成ARM应用程序的设计以实现产品的开发。比如QT移植等。应用开发依赖于第3步的驱动及创建的设备节点。
? ? ? Xilinx为ZYNQ提供了很好的系统支持,比如uboot、内核代码等,所以ZYNQ开发的重点在于:
FPGA逻辑资源的设计定制ARM端内核驱动FPGA与ARM的协同工作