本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/Fa8XDHgjoGZ0hX5BVmd8-w"> Ingdan FPGA微信公众号</a></span>
目前基于MPSOC的一些参考设计中并没有实现开机画面的功能 ,那在一些带显示屏的产品在设计的时候就需要这一功能,基于原来传统的方式也可以在FPGA中来实现,今天分享一个在PS侧来实现开机画面,以节省PL侧的宝贵资源。
这个设计是基于PS侧的RPU(R5_0)来实现的上电送显,首先系统上电在载完FPGA代码后同时启动A53和RPU,然后我们通过RPU初始化HDMI接口并实现开机画面的送,在显示指定时间后自动退出来将HDMI(Mixer,Framebuffer等)控制权给ARM(A53)来使用。
<center><img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211799-tu1…; alt=""></center>
<p align="center"><strong>此设计基于VCU TRD 2020.1版本</strong></p>
<strong>1. 使用vitis工具新建一个R5的软件工程</strong>
a. 基于vcu trd 2020.1开发包里的xsa新建一个平台
<img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211800-tu2…; alt="">
b. 导入hdmi的参考示例代码,注意选择版本为R5
<img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211801-tu3…; alt="">
<strong>2. 更新配置及替换代码</strong>
a. 将R5的串口输出定向到uart1,便于调试
<img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211802-tu4…; alt="">
b. 替换xhdmi_example.c文件
在xhdmi_example.c中的我们基于vcu trd实现了对framerbuffer、mixer、hdmitx 等IP的初始化及图像数据的搬运、送显,还有开机画面时间的控制。
c. 修改自定义开机画面显示时间
用户可以根据自己系统实际开机时间来通过logoShowTime变量设置开机画面停留 的时间,如果想控制得更精确一些可以再实现一个R5和A53的通讯接口。
<img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211803-tu5…; alt="">
d. 编译生成TxOnly_R5.elf
<strong>3. 打包BOOT.bin</strong>
a. 修改打包配置文件bif文件如下
<img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211804-tu6…; alt="">
b. 使用bootgen工具生成BOOT.bin
$bootgen-image output.bif-arch zynqmp -o BOOT.bin -w on
<strong>4. 自定义开机画面</strong>
目前参考工程中开机画面的分辨率为640x480,图像数据也是以静态数组的形式存储在logo.c中,用户可以将自己的图片数据以RGB的形式存储在logo.c中,参考设计中也是提供一个转换方法将jpg或png的格式转换成数组文件
a. 从http://ffmpeg.org下载ffmpeg工具
b. 使用ffmpeg工具将jpg或png图片转成RGB的裸数据
c. $ffmpeg -ilogo.jpg -vcodecrawvideo -pix_fmtrgb24 logo.rgb
d. 将二进制的裸数据转成数组
$./raw2varlogo.rgb >logo.c
e. 替换工程中的logo.c再重新编译生成TxOnly_R5.elf并重新打包生成BOOT.bin
<center><img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211805-tu7…; alt=""></center>
<strong>5. 运行系统</strong>
将BOOT.bin及原来vcu trd软件包中的image.ub 、boot.scr拷贝到SD中在ZCU106上运行测试。
<center><img src="http://xilinx.eetrend.com/files/2021-07/wen_zhang_/100114339-211806-tu8…; alt=""></center>
如果您有此类问题需要讨论或者需要实际工程验证,请联系我们:
simonyang@comtech.com.cn
charlesxu@comtech.com.cn