mpp:mpp库是海思根据自己的硬编解码器开发的应用程序编解码库,简而言之,使用这个库实现h.264编码压缩
1.看linux、uboot的文档
2.移植SDK到ubuntu
2.1、三个脚本
source sdk.unpack解压
2.2、osdrv/Makefile和readme
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all报错
参考:ubuntu16.04 编译错误: /bin/sh: 1: pushd: not found的问题和安装32位交叉编译工具链的兼容包_Lewin~的博客-CSDN博客
2.3、解决 没有符号链接 的问题
cd ~/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/toolchain/arm-hisiv300-linux
sudo ./cross.install.v300
sudo vi ~/.bashrc
export PATH=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:$PATH
source ~/.bashrc
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
2.4、解决 生成uImage错误 的问题
cd ~/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/uboot/u-boot-2010.06/tools
sudo cp mkimage /usr/local/bin
2.5、解决 找不到zlib.h 的问题
错误:compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory
因为找不到zlib.h所以编译错误,zlib.h在tools/pc/zlib/tmp/include目录中有,只需要复制到tools/pc/jffs2_tool/tmp/include目录中即可。注意同时要将zconf.h也复制过去的。还有,要将tools/pc/zlib/tmp/lib目录下的libz.a libz.so libz.so.1 libz.so.1.2.7等4个文件复制到tools/pc/jffs2_tool/tmp/lib目录下,不然一会儿还得报错。
2.6、解决serve_image.c:32:18: error: storage size of ‘hints’ isn’t known问题
解决方案,参考:andorid编译报错serve_image.c:32:18: error: storage size of ‘hints’ isn’t known_Nate的博客-CSDN博客 方法2
2.7、重新编译make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all得到uboot、kernel、rootfs
2.8、复制到 /tftpboot目录下
3.烧录系统->通过主芯片提供的isp下载的机制来间接烧录板载flash。
3.1、安装jdk环境
3.2、运行Hi_tool来给空板烧录uboot
3.3、烧录uboot成功后,运行Securt CRT进入uboot命令行底下
执行以下命令,使用tftp的方式烧录kernel、rootfs
tftp更新并重新烧写uboot的命令序列:(由于已经烧录uboot,这步不需要)
mw.b 0x82000000 ff 0x100000
tftp 0x82000000 u-boot-hi3518ev200.bin
sf probe 0
sf erase 0x0 0x100000
sf write 0x82000000 0x0 0x100000
tftp更新并重新烧写kernel的命令序列:
mw.b 0x82000000 ff 0x300000
tftp 0x82000000 uImage_hi3518ev200
sf probe 0
sf erase 0x100000 0x300000
sf write 0x82000000 0x100000 0x300000
tftp更新并重新烧写rootfs的命令序列:
mw.b 0x82000000 ff 0xc00000
tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2
sf probe 0
sf erase 0x400000 0xc00000
sf write 0x82000000 0x400000 0xc00000
3.4、设置正确的环境变量
正确的ipaddr和serverip对应的设置命令:
set ipaddr 192.168.1.10
set serverip 192.168.1.141
正确的bootcmd和bootargs对应的设置命令:
set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)
3.5、save保存然后reset重启
4.部署mpp中的ko文件和lib库
ko/中是视频编码相关的模块
之后会用这个文件装载模块Hi3518E_SDK_V1.0.3.0\package\mpp\ko\load3518e
执行命令是:./load3518e -i -sensor ar0130 -osmem 32 -total 64
lib/中是海思提供的一些动态库和静态库
这里使用动态库,所以之后会删除所有静态库 rm *.a
4.1、开发板这边 启用网卡 并 挂载到主机Ubuntu
ifconfig lo 127.0.0.1
ifconfig eth0 192.168.1.10
mount -t nfs -o nolock 192.168.1.141:/home/aston/rootfs /mnt
4.2、主机这边 将mpp目录下的ko、lib目录复制到/home/aston/rootfs
4.3、开发板这边 复制/mnt下的ko目录到/目录
cd /mnt
cp ko / -rf
4.4、开发板这边 复制/mnt/lib下的所有文件到/usr/lib
cd /mnt
cp lib/* /usr/lib -r
至此ko文件和lib库文件都已部署完毕,接下来只需要装载ko模块就行了。。。
但是之后要是重启的话,进入命令行下还是没有网络并且还是没有挂载到主机
解决方法是修改/etc/profile文件
在/etc/profile文件中启用网卡、设置ip、装载模块、挂载到主机。。。
4.4、修改开发板中的/etc/profile文件
mount -t nfs -o nolock 192.168.1.141:/home/aston/rootfs /mnt
-t nfs:挂载的文件系统格式
-o nolock:不加文件锁
4.5、reset重启
5.sample的编译和测试
sample的编译详见Hi3518E_SDK_V1.0.3.0\package\mpp\sample\readme
这里只使用sample的venc(录像)功能
5.1、进入venc目录编译得到sample_venc
5.2、拷贝到~/rootfs目录下
5.3、在开发板中运行sample_venc
5.4、发现多了三个streamxxx.h264文件,拷贝到共享文件夹中使用VLC进行视频观看
5.5、进入到~/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/pub目录下,开始制作镜像,将之前的操作在这个文件夹形式的根文件系统中再做一遍