树莓派的cpu与gpu通信设计浅析
1.本文介绍
2.树莓派的videocoreiv
3.访问策略
4.framebuff图像访问
5.注意事项
1.本文介绍
异构设计在嵌入式开发过程中非常的重要,比如mcu与mpu的异构,还有两个不同架构的cpu或者两个不同架构的mpu等等。本文主要介绍树莓派的cpu与gpu通信的设计思想。并且通过在树莓派4上进行测试,测试访问gpu所提供的功能。
2.树莓派的videocoreiv
树莓派上电启动时,首先启动的是GPU,然后从sd卡中加载启动文件,紧接着启动CPU,所以GPU在学习使用树莓派时非常重要。可以通过下面的仓库看到底层的GPU的使用。
https://github.com/hermanhermitage/videocoreiv
要想CPU与GPU之间访问,首先需要了解两个设计的架构,下面从树莓派3b摄像头传输图像的角度去理解一下这个架构的设计。
BCM2835 SOC是芯片的设计架构,里面集成了一个ARM Cortex A53的CPU与VideoCore IV GPU。摄像头的MIPI数据传输线连接在GPU上,其摄像头SCCB连接在CPU上。
GPU上运行着一个RTOS,就是VCOS其实是基于ThreadX系统实现的。CPU与GPU共享RAM。当启动图像传输的时候,实际上就是首先由GPU出来图像时序,然后将图像放到RAM中,CPU与GPU通过VCHI管道进行通信,启动DMA将图像传递到CPU可以访问的内存区域。
那么GPU有哪些功能呢?
具体可以看下面的信息:
https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface
1.得到固件信息
2.电源管理
3.频率管理
4.内存管理
5.framebuff
6.摄像头
7.触摸屏
整体来看GPU的功能比较齐全。所以访问这些信息是如何进行的呢?
3.访问策略
如果要实现CPU与GPU的通信,树莓派做了一个控制器,就是一个独立的外设接口,