以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
一、概述
 mpp是海思编写的与视频编解码有关的驱动、库等内容。我们需要部署这些内容,也就是把这些内容放在合适的目录位置。
二、mpp的目录结构
 mpp目录位于Hi3518E_SDK_V1.0.3.0\package\mpp,其文件组织如下。
 
 
 
二、完整版(即包含mpp)根文件系统的制作
 因为海思SDK提供的根文件系统还没有部署mmp,因而里面没有ko、lib等文件内容,所以不能执行sample,需要自己制作完整的根文件系统并制作成镜像烧录至板子。
 (1)在osdev/pub/目录下找到rootfs_uclibc.tgz(也可以使用Hi3518E_SDK_V1.0.3.0/package目录系的),解压开后得到文件夹形式的根文件系统osdrv/pub/rootfs_uclibc/。
 (2)将Hi3518E_SDK_V1.0.3.0\package\mpp目录下的ko文件夹复制到osdrv/pub/rootfs_uclibc/目录下,将lib文件夹里的内容复制到osdrv/pub/rootfs_uclibc/usr/lib中。lib文件夹中有a静态库和.so动态库,这里主要是动态库的部署,所以可以把.a文件删掉。
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub# ls
bin  image_uclibc  rootfs_uclibc  rootfs_uclibc.tgz
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub# cd rootfs_uclibc
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc# ls
bin  boot  dev  etc  home  init  lib  linuxrc  lost+found  mkimg.rootfs  mknod_console  mnt  nfsroot  opt  proc  root  sbin  share  sys  tmp  usr  var
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc# cp ../../../mpp/ko/ ./ -rf
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc# ls
bin  boot  dev  etc  home  init  ko  lib  linuxrc  lost+found  mkimg.rootfs  mknod_console  mnt  nfsroot  opt  proc  root  sbin  share  sys  tmp  usr  var
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc# cd lib/
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc/lib# ls
ld-uClibc-0.9.33.2.so  libc.so.0          libgcc_s.so.1     libnsl-0.9.33.2.so      libresolv-0.9.33.2.so  libstdc++.so              libthread_db.so.1
ld-uClibc.so.0         libdl-0.9.33.2.so  libhimount_api.a  libnsl.so.0             libresolv.so.0         libstdc++.so.6            libuClibc-0.9.33.2.so
libcrypt-0.9.33.2.so   libdl.so.0         libm-0.9.33.2.so  libpthread-0.9.33.2.so  librt-0.9.33.2.so      libstdc++.so.6.0.19       libutil-0.9.33.2.so
libcrypt.so.0          libgcc_s.so        libm.so.0         libpthread.so.0         librt.so.0             libthread_db-0.9.33.2.so  libutil.so.0
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc/lib# cp ../../../../mpp/lib/* ./
root@ubuntu:/home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc/lib# (3)在osdrv/pub/rootfs_uclibc/etc/profile文件中添加“设置板载系统网卡的ip址”的指令。
ifconfig lo 127.0.0.1                                                           
ifconfig eth0 192.168.1.11 
(4)在osdrv/pub/rootfs_uclibc/etc/profile文件中添加“自动挂载NFS服务器”的指令。
mount -t nfs -o nolock 192.168.1.141:/home/xjh/iot/hisi_development/hisi_rootfs /mnt
(5)在osdrv/pub/rootfs_uclibc/etc/profile文件中继续添加如下指令(其中第一条指令只是为了挂载SD卡而已,可无,见下面完整的profile文件内容中的描述。)
mount -t vfat /dev/mmcblk0p1 /usr/mmc 
cd /ko                                  
./load3518e -i -sensor ar0130 -osmem 32 -total 64
完整的/etc/profile文件内容如下。
# /etc/profile: system-wide .profile file for the Bourne shells
#
#
set_path_before()
{[ -d $1 ] && PATH="$1:$PATH"
}PATH="/usr/bin:/usr/sbin:/bin:/sbin"
set_path_before /usr/local/sbin
set_path_before /usr/local/bin
#若自己设置了其他路径,需要导出,即使用export LD_LIBRARY_PATH=xxxx:$LD_LIBRARY_PATH
LD_LIBRARY_PATH="/usr/local/lib:/usr/lib"export PATH
export LD_LIBRARY_PATH# ANSI COLORS         
CRE="^M^[[K"                        
NORMAL="^[[0;39m"                   
RED="^[[1;31m"                      
GREEN="^[[1;32m"                    
YELLOW="^[[1;33m"                   
BLUE="^[[1;34m"                     
MAGENTA="^[[1;35m"                  
CYAN="^[[1;36m"                          
WHITE="^[[1;37m"                         umask 022                                echo "${GREEN}Welcome to HiLinux.${NORMAL}"   ifconfig lo 127.0.0.1                                                           
ifconfig eth0 192.168.1.11#/usr/mmc是我自己创建的,一开始没有这个目录(所以第一次执行此命令的话会报错,要创建此目录后才能使用下面的那条mount命令)。
#/dev/mmcblk0p1是插卡后显示的。
#整句命令意思是将SD卡挂载到/usr/mmc目录下。                                                    
#mount -t vfat /dev/mmcblk0p1 /usr/mmc  cd /ko                                    
./load3518e -i -sensor ar0130 -osmem 32 -total 64mount -t nfs -o nolock 192.168.1.141:/home/xjh/iot/hisi_development/hisi_rootfs /mntcd /mnt
(6)输入以下命令手工制作根文件系统镜像文件。注意路径。
 
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2
(7)烧录至spiflash。烧录方法见博客(注意实际的镜像文件名字!):海思方案中uboot、kernel和rootfs的烧写方法
 (8)镜像测试。uboot启动后,首先要测试是否能ping通虚拟机;然后板载系统启动后,看挂载是否成功;然后看/etc/profile里设置的内容是否得到执行。