您的位置:首页 > 其它

针对Hi35xx/HIVIEW系列海思开发------HIVIEW开发环境移植到另外一个开发板(瀚视已经成功移植了)-伟哥实现的

2021-12-12 22:10 281 查看

1)uboot、kernel、rootfs的准备:

       将HIVIEW移植到3559av100使用的海思的SDK版本为031版本。对于uboot、kernel和rootfs的编译,只需要按照海思SDK的031版本的osdrv目录下readme_cn.txt的教程编译即可(编译链工具为:aarch64-himix100-linux-,编译uboot的时候,需要注意生成.reg使用的单板文件是否与板子的设计对应)

uboot、kernel、roorfs可参考:

《针对Hi35xx/HIVIEW系列海思开发------移植到Hi3516DV300------编译u-boot流程与注意点》https://www.cnblogs.com/iFrank/p/15583167.html

《针对Hi35xx/HIVIEW系列海思开发------移植到Hi3516DV300------编译kernel流程与注意点》https://www.cnblogs.com/iFrank/p/15583280.html

《针对Hi35xx/HIVIEW系列海思开发------移植到Hi3516DV300------制作根文件系统》https://www.cnblogs.com/iFrank/p/15583291.html

2)生成Hi3559av100的可执行文件

        github上最新提交的版本git下来编译3559a存在一些bug(暂时没有解决),采用我以前git下来的版本是可以编译通过的(编译遇到的错误已经解决,基本上是缺少lib的原因),直接在虚拟机HIVIEW_old的目录下source build/3559a & make,然后在HIVIEW_old/bin目录下给生成的可执行文件加上权限:chmod -R 777 *。

3)保证板卡在执行海思sdk mpp的sample_vio是有摄像头实时采集的数据的

        这一步执行的步骤为:

STEP1:确定摄像头型号(imx334?);

STEP2: 确定imx334所用的驱动(imx334.so? Imx334_slave.so?,主从模式);

STEP3:将mpp/sample目录下的Makefile.param进行修改:修改如下

STEP4:将mpp/sample/vio/sample_vio.c的1080P30修改为1080P60,将VO_OUTPUT_3840x2160_30修改为VO_OUTPUT_1080P60。

STEP5:make clean & make

STEP6:在板卡运行sample_vio: ./sample_vio 0 0

4)修改/添加摄像头代码

       在编译HIVIEW之前,需要对HIVIEW的代码进行一个改动,使得HIVIEW可以调用摄像头。以瀚视板卡为例:使用的摄像头为imx334,经过运行海思SDK的sample_vio得知,该板卡使用imx334的salve模式,因此使用的驱动为SONY_IMX334_SLAVE_MIPI_8M_30FPS_12BIT。HIVIEW关于摄像头驱动选择的代码主要在mpp.c(HIVIEW_old/mod/mpp/3559a/src),其中关键的函数与变量如下:

A、SAMPLE_MPP_SENSOR_T 静态变量:保存着HIVIEW所支持的所有摄像头驱动信息;

B、函数SAMPLE_MPP_SERSOR_GET(char* name):根据形参name的传递来选择对应的驱动;

C、函数int gsf_mpp_cfg_sns(char *path, gsf_mpp_cfg_t *cfg):获取mpp相关的配置信息,关于摄像头name的选择主要是与snsstr变量相关,该变量的定义在codec.c。

对于codec.c(HIVIEW_old/mod/codec/ipc)关于mpp配置相关的函数为:int mpp_start(gsf_bsp_def_t *def):其中与3559a摄像头驱动选择的代码如下:

将该部分代码修改为板卡所支持的摄像头驱动信息即可,例如:现在由SONY_IMX334_MIPI_8M_30FPS_12BIT 修改为 SONY_IMX334_SLAVE_MIPI_8M_30FPS_12BIT 只需根据SAMPLE_MPP_SENSOR_T 静态变量的信息,将cfg.lane、cfg.wdr、cfg.res 、cfg.fps 进行修改即可(由cfg.lane = 0; cfg.wdr = 0; cfg.res = 8; cfg.fps = 30; 修改为 cfg.lane = 1; cfg.wdr = 0; cfg.res = 8; cfg.fps = 60;)

5)将HIVIEW编译好的可执行文件(/bin/*)拷贝到/nfsroot/hiview/app/bin目录当中(记得给权限:chmod -R 777 *)

6)运行脚本如下:

Step1: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hiview/app/lib

Step2: ./mnt/hiview/app/bin/bsp.exe /mnt/hiview/app/cfg/bsp_def.json /mnt/hiview/app/cfg/bsp_parm.json & ./mnt/hiview/app/bin/codec.exe /mnt/hiview/app/cfg/codec_parm.json & #./mnt/hiview/app/bin/rec.exe /mnt/hiview/app/cfg/rec_parm.json & ./mnt/hiview/app/bin/rtsps.exe /mnt/hiview/app/cfg/rtsps_parm.json & ./mnt/hiview/app/bin/rtmps.exe /mnt/hiview/app/cfg/rtmps_parm.json & ./mnt/hiview/app/bin/onvif.exe /mnt/hiview/app/cfg/onvif_parm.json & ./mnt/hiview/app/bin/webs.exe /mnt/hiview/app/cfg/webs_parm.json & ./mnt/hiview/app/bin/svp.exe /mnt/hiview/app/cfg/svp_parm.json & ./mnt/hiview/app/bin/app.exe /mnt/hiview/app/cfg/app_parm.json & ./mnt/hiview/app/bin/sleep 5;

屏蔽到rec.exe的目的是为了保证在运行错误的情况下不会使得板卡直接挂掉。因此rec.exe连接不上会疯狂打印信息,并且reboot之后会自动格式化sd、emmc、flash。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐