直接在硬件上跑编译程序时报C,C++库的版本不对的警告信息,看来是编译器的版本和当前板端系统上的不一致导致的,需要更新一下rootfs,使用编译器对应的BSP包:Hi3536C V100R001C02SPC040,编译一下rootfs,为了方便开发,使用jffs2的文件系统.
- 分区配置:
mem=300M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs);
- BSP编译
解压BSP包后,在Hi3536C V100R001C02SPC040\01.software\board 找到Hi3536CV100_SDK_V2.0.4.0.tgz,解压出来,在目录下再执行:sdk.unpack。
参照osdrv\opensource\kernel的说明,把kernel下载下来解压,修改补丁打上,返回到osdrv目录下,安照readme_cn.txt说明编译。
在我的ubuntu20提示mkimage找不到,这个用apt-get装上相应的工具就好了。
在编译到文件系统的mtd-utils1.5.0时会编译不过,记录几年前的处理方式我是更新到1.5.2的版本就好了。
错识主要是说找不到major,minor这几个函数,这次针对错误修改了一下,在对应的文件里加了 #include <sys/sysmacros.h>声明,还有提示zlib的头文件找不到,修改了一下对应的Makefile,因为只需要用到mkfs.jffs2,保证把这个工具编译出来后就没有往改了,编出mkfs.jffs2后,拷到osdrv/pub/bin/pc/mkfs.jffs2。
- 参照SDK里的方式,打包一下rootfs:
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_glibc -l -e 0x10000 -o osdrv/pub/rootfs_glibc_64k.jffs2
- 在ubuntu中装好tftpd-hpa的服务;
- 进入板端的uboot命令中,配置好相关的IP地址;
- 通过tftp,sf工具下发烧写好rootfs,如我的环境:
tftp 0x8200000 rootfs_glibc_64k.jffs2;sf probe 0;sf erase 0x500000 0xb00000; sf write 0x82000000 0x500000 0xb00000;
在进入系统设置好IP, mount到uboot的NFS目录,运行程序没有报错误了。
- MPP环境配置;
把Hi3536CV100_SDK_V2.0.4.0\mpp\ko目录放到挂载目录,在板端执行,但报Unknown symbol devm_pinctrl_put这些模块错误,看来kernel最好也是要更新一下了。
先把板端的kernel备份出来,再更新kernel.
直接用BSP的里编译的Kernel能正常跑起来,网络也正常,看来比较幸运,厂家与官方的DEMO变化不大,再执行下面的脚本。
./load3536c -i -total 512 -osmem 300
MPP的相应ko都加载上了。
有了这些环境后,基本就可以进行在这个板上的全业务功能开发了,把SDK里的mpp的驱动、库拷到ubuntu的挂载目录下,通过命令加载上即可!
/nfsroot/hi3536c/mpp/ko # lsmod
Module Size Used by Tainted: P
hi3536c_adec 6099 0
hi3536c_aenc 85360 0
hi3536c_ao 355555 0
hi3536c_ai 206470 1 hi3536c_aenc
hi3536c_aio 25556 0
hi3536c_ive 183354 0
hi3536c_vda 566389 0
hi3536c_jpege 46427 0
hi3536c_h265e 157524 0
hi3536c_h264e 139170 0
hi3536c_vedu 11723 0
hi3536c_chnl 36078 0
hi3536c_venc 227024 3 hi3536c_jpege,hi3536c_h265e,hi3536c_h264e
hi3536c_rc 180446 0
hi3536c_hdmi 295031 0
hifb 79096 0
hi3536c_vou 436942 0
hi3536c_vpss 365830 0
hi3536c_vgs 170236 0
hi3536c_region 76502 0
hi3536c_tde 99004 0
hi3536c_jpegd 4373 0
hi3536c_vfmw 1283461 0
hi3536c_vdec 233615 0
hi3536c_sys 65523 3 hi3536c_aenc,hi3536c_aio,hi3536c_venc
hi3536c_base 47502 24 hi3536c_adec,hi3536c_aenc,hi3536c_ao,hi3536c_ai,hi3536c_aio,hi3536c_ive,hi3536c_vda,hi3536c_jpege,hi3536c_h265e,hi3536c_h264e,hi3536c_vedu,hi3536c_chnl,hi3536c_venc,hi3536c_rc,hi3536c_hdmi,hifb,hi3536c_vou,hi3536c_vpss,hi3536c_vgs,hi3536c_region,hi3536c_tde,hi3536c_vfmw,hi3536c_vdec,hi3536c_sys
hi_osal 58462 26 hi3536c_adec,hi3536c_aenc,hi3536c_ao,hi3536c_ai,hi3536c_aio,hi3536c_ive,hi3536c_vda,hi3536c_jpege,hi3536c_h265e,hi3536c_h264e,hi3536c_vedu,hi3536c_chnl,hi3536c_venc,hi3536c_rc,hi3536c_hdmi,hifb,hi3536c_vou,hi3536c_vpss,hi3536c_vgs,hi3536c_region,hi3536c_tde,hi3536c_jpegd,hi3536c_vfmw,hi3536c_vdec,hi3536c_sys,hi3536c_base
sys_config 2845 0
检查这些ko都加载上了!
PUPANVR
PUPANVR: PUPANVR是一款开源的嵌入式NVR系统,旨在创建一款多平台,易用,稳定的NVR系统。