xilinx SDK生成的BOOT.bin的结构

在boot.bin中从地址0-0x8BF可以分成17个部分,每个部分都有一定的含义:

1. 0x000  中断向量表

2. 0x020  固定值 0xaa995566

3. 0x024  固定值 0x584c4e58  ASCII: XLNX

4. 0x028  如果是0xa5c3c5a3或者0x3a5c3c5a为加密的

5. 0x02C  bootrom头版本号,不用管

6. 0x030  从bootrom开始到app地址的总数(bytes)

7. 0x034  从loadimage拷到OCM的长度 【上电后BootRom会主动把FSBL拷贝到OCM中执行】

8. 0x038  目的地址到哪儿拷贝FSBL

9. 0x03C  开始执行的地址

10. 0x040  同7 【此处代码逻辑中其实是把该字段的值赋给FSBL的size】

11. 0x044  0x01为固定值

12. 0x048  校验和(从0x020-0x047)按32-bit word 相加取反

13. 0x04C  bootgen相关

14. 0x098  image头的表指针

15. 0x09C  partition头的表指针

16. 0x0A0  寄存器初始化的参数

17. 0x8A0  fsbl user defined

18. 0x8C0  fsbl开始的地方

对应的FSBL.h文件中的宏定义:

/* Boot ROM Image defines */

#define IMAGE_WIDTH_CHECK_OFFSET        (0x020)    /**< 0xaa995566 Width Detection word */

#define IMAGE_IDENT_OFFSET              (0x024) /**< 0x584C4E58 "XLNX" */

#define IMAGE_ENC_FLAG_OFFSET           (0x028) /**< 0xA5C3C5A3 */

#define IMAGE_USR_DEF_OFFSET            (0x02C)      /**< undefined  could be used as  */

#define IMAGE_SOURCE_ADDR_OFFSET        (0x030)   /**< start address of image  */

#define IMAGE_BYTE_LEN_OFFSET           (0x034)      /**< length of image> in bytes  */

#define IMAGE_DEST_ADDR_OFFSET          (0x038)     /**< destination address in OCM */

#define IMAGE_EXECUTE_ADDR_OFFSET       (0x03c)    /**< address to start executing at */

#define IMAGE_TOT_BYTE_LEN_OFFSET       (0x040)      /**< total length of image in bytes */

#define IMAGE_QSPI_CFG_WORD_OFFSET      (0x044)    /**< QSPI configuration data */

#define IMAGE_CHECKSUM_OFFSET           (0x048) /**< Header Checksum offset */

#define IMAGE_IDENT                     (0x584C4E58) /**< XLNX pattern */

Xilinx Vivado项目中生成针对Zynq-7000的设备树,首先需要确保Vivado和Xilinx SDK环境已经搭建好,并且已经根据硬件设计生成了相应的HDL文件。接下来,需要在Vivado中生成设备树源文件 (.dts),这一步骤可以通过Vivado的设备树生成器完成,生成的文件需要进一步编辑以包含特定的外设信息,例如IIC外设的型号ad9361。 参考资源链接:[Zynq设备树生成SDK与ad9361数据手册](https://wenku.csdn.net/doc/1hgzgfjg4z?spm=1055.2569.3001.10343) 具体步骤如下: 1. 在Vivado中打开你的项目,并在Flow Navigator面板中选择“Generate Block Design”。 2. 生成设计后,在IP Integrator中,右键点击并选择“Generate Output Products”。 3. 接着,选择“Generate Block Design”菜单下的“Create HDL Wrapper”选项。 4. 最后,在Flow Navigator面板中选择“File” -> “Export” -> “Export Hardware...”来导出硬件描述文件(.hdf)。 将导出的.hdf文件导入到SDK,并生成设备树源文件(.dts): 1.SDK中,选择“File” -> “New” -> “Board Support Package”。 2. 在创建板支持包的过程中,选择“Customize現有硬件(S)”,然后加载刚刚导出的.hdf文件。 3. 选择“Board Support Package Settings”,在左侧选项中找到并勾选“Generate device tree source file”。 生成.dts文件之后,你需要手动编辑它以添加IIC外设ad9361的信息。设备树描述了所有的硬件资源,包括IIC控制器和外设,以及它们的地址空间、中断和相关的配置参数。 关于BOOT.bin文件的生成,需要理解它包含了多个组成部分,它们分别承担不同的启动和初始化任务: - FSBL是启动序列的第一个执行程序,它负责初始化处理器、设置内存和其他基本硬件,为加载后续组件做准备。 - R5.elf是针对Zynq-7000上的ARM Cortex-R5核心的固件,用于特定的处理任务。 - PMU固件管理电源单元,确保SoC的电源配置正确。 - ATF负责安全启动过程,管理域控制器。 - u-boot是用户在启动序列后期加载的操作系统镜像到内存的引导加载程序。 生成BOOT.bin通常涉及使用Xilinx SDK提供的工具,如Xilinx SDK的“Create Boot Image”功能,这需要你提前准备好了以上提到的各个组件的二进制文件。 理解了设备树的生成和各个启动文件的作用后,你应该能够为Zynq-7000平台配置合适的启动环境,并通过设备树来描述和配置特定的硬件外设。 参考资源链接:[Zynq设备树生成SDK与ad9361数据手册](https://wenku.csdn.net/doc/1hgzgfjg4z?spm=1055.2569.3001.10343)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值