Xilinx ZYNQ FSBL解读:FsblHandoff() 暨专栏总结

篇首

最近突发奇想,Xilinx 的集成开发环境已经很好了,很多必要的代码都直接生成了,这给开发者带来了巨大便利的同时,也让人错过了很多代码的精彩,可能有很多人用了很多年了,都还无法清楚的理解其中过程。博主准备以FSBL为例,与大家深入探讨一番,从而加深对ZYNQ的加载过程的理解,以便大家作出更精彩的设计!


FsblHandoff()函数解析

FsblHandoff()是ZYNQ7000 FSBL(第一阶段引导程序)的最后一步,负责将执行权限从FSBL移交给用户程序(如u-boot或裸机程序)。其核心逻辑如下:

  1. 关闭中断与缓存

    • 在跳转前关闭所有中断,避免移交过程中发生异常。
    • 禁用MMU(内存管理单元)和D-Cache(数据缓存),确保跳转后的程序在干净的内存环境中运行。
  2. 设置跳转地址

    • 通过LoadBootImage()函数获取用户程序的入口地址(通常存储在DDR中)。
    • 该地址被写入链接寄存器(LR)或直接传递给汇编代码。
  3. 汇编级跳转

    • fsbl_handoff.S文件中,通过汇编指令BX LR实现跳转。例如:
      ldr lr, =HandoffAddress  // 加载用户程序入口地址到LR  
      bx lr                    // 跳转执行  
      
    • 此操作直接切换程序计数器(PC),不再返回FSBL,完成控制权移交。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客不孤独

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值