准备工作
环境:1、自行搭建VMware Linux虚拟机(推荐18.04LTS)
2、代码编辑工具推荐使用vscode
3、准备一套海思的SDK(下文涉及SS524、SS528、SS626、SS928、
HI3516DV500、HI3519DV500)
SDK说明
注:由于特殊情况,有些内容是不能贴图的,还请谅解
首先值得庆幸的是海思的文档还是十分详尽的,并且几乎找不出错误,包括错别字。解压SDK后第一时间,我们应该浏览其目录结构,以及文档位置,不着急着手于查看具体代码,下面以SS524为例说明。
1、找到一个类似《SS524V100的SDK安装和升级说明》的文档,按照文档内容进行确认你之前linux服务器环境的无误。
2、其工程目录结构重点有OSDRV、OPENSOURCE、MPP这三个,其中SDK的编译是放在了OSDRV的Makefile下,建议是大致要能看懂这个Makfile的逻辑,先不要自行改动,要了解大概编译了哪些东西以及怎么编译的,并且最后生成的固件在哪里,而后再根据实际情况进行改动;而OPENSOURCE中是存放着Uboot和Kernel的源码,常使用的dts和defconfig配置文件就在其中;MPP则是海思的媒体处理平台,这就是重难点的内容,其下会有各类的sample,如视频VI、VO、VENC、VDEC,音频AI、AO、AENC、ADEC等等内容,并且配套的有《MPP 媒体处理软件 V5.0 开发参考》和《MPP 媒体处理软件 V5.0 FAQ》,两个文档内容很多,建议是先浏览前者中的VI、VO,然后对应分析sample的VIVO视频环出代码部分,并在调试时结合后者FAQ文档进行排查。
3、文档一定要先整体查看,要知道每个文档的大致位置在哪里,另外对于MPP的那两个文档一定要很熟练,其中对于音视频的每个模块的实现原理,以及接口函数的使用等要了解且有印象,这样改demo的时候,才有思路;并且要学会根据demo的报错,如何在文档中查找对应函数错误,从而确定bug的原因。
SDK使用
1、初始最重要的就是把整个SDK编译通过,成功的话会在对应的镜像文件夹里生成供给板子烧录使用的uboot、kernel、rootfs。开始建议不要多线程去编译OSDRV下的Makefile,可能会有部分内容编译不进去。重点开始关注下Makefile中的芯片型号、flash类型、文件系统类型等要素是否正确,不然编译完了也烧录不进去。
2、OPENSOURCE中的kernel的dts和uboot下的defconfig文件可暂时先不用动,后续比如有要增加使用的串口之类的,再打开就好了。另外,MPP的sample开始从sample_vio.c看起,最好自己画个流程图,可以更清晰一点,并且对后面的demo分析也有好处。
开发板配套使用
1、海思多数使用网络烧写固件的,大致流程是:串口烧写uboot,而后网络烧写kernel和rootfs,脑海中有个基础的判断流程,当烧写的时候进度条一点都没动,那一定是你串口选错了、或者芯片型号选错、或者TX、RX反了;当uboot烧录完成,在kernel烧写的时候报错,首先检查你的网络是不是好的、网线是不是好的、电脑防火墙关了没;一般情况下前两个烧录成功后,文件系统的烧录是没有问题的。
2、结合上面所说,如果你想验证下VI -> VO的这个demo,你就需要对应板子的原理查看HDMI是转成什么接口到主控的,常见的有bt656、bt1120、MIPI等,这个就需要你对应修改sysconfig.c中的引脚复用,并调整demo中的接口参数等,再结合上面说的根据MPP手册去排查问题,不出意外,外接个显示屏就可以看到测试视频了。