当前位置: 首页 > news >正文

zynq远程更新程序

记录一下近期开发远程更新程序功能遇到的问题,如果有进行类似开发的同学可以借鉴,如果你对启动过程不了解,请看UG1085/UG585等对应的手册,或者网络搜一下。

片子是赛灵思的ZU11EG, vitis2019.2,跑的ftreeRTOS+LWIP,方案如下,

        具体方案是先通过UDP将boot.bin写入到emmc中,然后再从emmc烧写到flash,这里有一个注意事项,之所以不直接从emmc启动,是因为emmc没挂在对应的口上,从下面的boot mode可以看到,emmc必须挂载MIO[22:13]上面才行,否则没法从emmc启动,而用的硬件emmc挂在MIO[51:39]上面,因此没法直接刷emmc,如果是跑linux是可以的。

然后第二个注意事项是在写flash的时候,用的是官方的例程里的函数,最好是在写之前一次性擦完,然后只管写就行了,还要注意每次只能写一个page,如果每次都先擦一次写一次,由于是按照secter擦的(见下图),导致之前写的都被擦掉了,因为这个原因困扰了我一天,写完一读全是FF,

 为了验证下位机程序,我还专门学习了一下winform上位机,因为没人给写,还好比较简单,

 代码已经验证通过,以后就不用哭呵呵的用jtag了。

为了保证交互过程的可靠,我规定了一个协议,数据传输和响应都是按照协议进行的,如果有需要,可以提供源代码,首先说明这个上位机能用,但是不完善,毕竟才学了几天。

还有一个注意事项,由于boot是存储在emmc中的,每次下载都会下载到同一个文件里面,如果下载的boot和上一次大小不同就需要注意了,如果新的boot比上一次大,则没问题,如果比上一次小,则需要将文件大小进行截断,否则上一次boot的尾巴也会被写入flash,导致启动失败。

如果对你有帮助,请给我点个赞,多谢!

http://www.dtcms.com/a/234139.html

相关文章:

  • C++类二
  • 电子电路基础1(杂乱)
  • 使用 Preetham 天空模型与硬边太阳圆盘实现真实感天空渲染
  • Day 40训练
  • Unknown key: ‘auto_activate_base‘解决
  • AI变革思考2:当小众需求遇上人工智能,催生长尾应用的春天
  • 【AAOS】【源码分析】用户管理(三)-- 用户启动
  • 045-代码味道-数据泥团
  • ObservableRecipient与ObservableObject
  • 深度学习习题2
  • Python爬虫与Java爬虫深度对比:从原理到实战案例解析
  • Java 中比较两个 long 类型变量大小的方法
  • Linux网桥实战手册:从基础配置到虚拟化网络深度优化
  • N2语法 強調、限定
  • RK3588 InsightFace人脸识别移植及精度测试全解析
  • 合并表格(按行合并)
  • 汇川变频器MD600S-4T-5R5为什么要搭配GRJ9000S-10-T滤波器?
  • Unity基础-Mathf相关
  • latex画表格
  • 深度学习习题3
  • c# :this() 和 :base()区别
  • Axure 与 Cursor 集成实现方案
  • 【iOS】cache_t分析
  • IDEA202403 设置主题和护眼色
  • 探秘 MyBatis:开启你的数据库操作「智能之旅」
  • 如何设置合适的缓存过期时间(TTL)?是否有必要实现缓存预热?
  • 模型蒸馏过程中的“软目标”与“温度”
  • 中国森林地上和地下植被碳储量数据集(2002~2021)
  • glibc 交叉编译
  • LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考