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了。
为了保证交互过程的可靠,我规定了一个协议,数据传输和响应都是按照协议进行的,如果有需要,可以提供源代码,首先说明这个上位机能用,但是不完善,毕竟才学了几天。
如果对你有帮助,请给我点个赞,多谢!
如果有嵌入式开发需求也可以留言,本人软硬件都搞,全套的!