基于HI3515的4G车载DVR的嵌入式LINUX应用二次开发说明

发布时间: 2021-03-05 22:07:34

什么是NFS as rootfs模式?

  NFS即网络文件系统,NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。对于嵌入式开发来说,我们在PC端(宿主机)共享一个目录(/tftpboot),调试的时候将板卡的文件系统放在其目录下。在uboot环境下设置板卡相应的bootargs参数,/tftpboot下的文件系统将作为板卡的根文件系统。此时板卡运行的就是/tftpboot下的程序,开发者只要将调试程序放到/tftpboot下的文件系统中,程序就可以在板卡中运行了。

  采用NFS as rootfs模式调试的优势在于调试程序只要进行简单的替换就可以,不需要每次修改后重新烧写固件到板卡中。

  一.NFS服务的环境搭建

  1.配置NFS服务和安装minicom

  NFS服务

  sudo apt-get install nfs-kernel-server portmap

  在配置文件/etc/exports增加如下内容,以后可以通过网络文件系统访问/work/nfs_root目录

  /work/nfs_root *(rw, sync, no_root_squash)

  通常我们暴露/tftpboot目录出去供目标板访问:

  /tftpboot??? *(rw, sync, no_subtree_check, no_root_squash)

  /tftpboot??? *(rw, sync, no_subtree_check, no_root_squash)

  ~

  重启NFS服务

  sudo /etc/init.d/nfs-kernel-server restart

  ??? 安装minicom

  sudo apt-get install minicom

  配置为/dev/ttyS0串口,波特率为115200 8N1

  如果下载不成功的话,要检查tftp服务是否启动:

  ps -ax|grep tftp

  sudo service tftpd-hpa restart

  2.在linux服务器上安装交叉编译器

  使用NFS调试, 首先要在PC上建立交叉编译的平台,以hi3515平台、misc_ctrl程序为例,需要用到arm-hisi-linux的编辑器。

  1.从服务器smb://192.168.6.16/nfs/crosscompiler上获取压缩包

  Hi3515_SDK_V1.0.5.0.c1.tgz

  2.将Hi3515_SDK_V1.0.5.0.c1.tgz解压缩:

  tar -zxf ?Hi3515_SDK_V1.0.5.0.c1.tgz

  (具体操作详见Hi3515 SDK 安装以及升级使用说明.txt文档)

  完成后检查/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin下有没有编译器

  3.修改配置文件,添加编译器的路径:

  sudo vi /etc/profile

  在末尾处指定编译器的路径,arm-hisi-linux是自动添加的,检查有没有添加以下路径:

  export PATH="/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin:$PATH"

  退出后,执行source /etc/profile,这样交叉编译器的脚本配置的环境就可以生效了。

  二.针对misc_ctrl的调试(hi3515为例)

  需要注意的是在交叉编译misc_ctrl时,根据板子的内核不同需要对配置文件config.mk,例如:

  cd bvpu;

  ./mklink.sh

  make hisi3515_config

  编译3515平台的misc_ctrl。

  1.调试misc_ctrl,可以采用nfs调试,首先设置好bootargs的参数。

  NFS调试vc_e

  setenv bootargs busclk=220000000 mem=128M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.6.47:/tftpboot/BVS-W4020-VC-E.filesys.3515, nolock eth=00-0B-3D-F5-09-51 ip=192.168.6.49:192.168.6.47:192.168.6.254:255.255.255.0 pcimod=host pciclksel=1 debug_cmdline;setenv ipaddr 192.168.6.49; setenv serverip 192.168.6.47;tftp 0xc1000000 BVS-W4020-VC-E.filesys.3515/uImage;bootm 0xc1000000

  此时板卡就会将/tftpboot目录当作它的根目录, 跑的是PC上/tftpboot目录下的内核。

  2.调试misc_ctrl的时候,需要先修改配置文件,防止kill 之后重新启动:

  cd /tftpboot/BVS-W4020-VC-E.filesys.3515/etc

  sudo vi misc_ctrl_spec

  ??? 修改配置文件misc_ctrl_spec的system字段

  [system]

  ??? reboot_enable=1

  ??? power_style=0

  ??? #****this use fifo name

  ??? pingcmd=elss,dialdaemo,livecams,sacdil

  ??? watchdog=0

  ??? debug=0

  (注意以下命令都在minicom中执行)

  watchdog=0 是否启用喂狗。如不想启用,请确定内核自动喂狗,否则系统会重启。将watchdog的参数1改成0, 这样kill misc_ctrl 后系统就不会重启了。

  3.运行调试后的misc_ctrl

  首先把/tftpboot目录mount到板子的/mnt/media下,然后kill misc_ctrl ,再将重新编译后的misc_ctrl放到/tftpboot,这样就可以运行新的misc_ctrl了:

  mount -o nolock -t nfs 192.168.6.46:/tftpboot /mnt/media

  cd /tftpboot/BVS-W4020-VC-E.filesys.3515/usr/bin

  kill misc_ctrl

  cd /tftpboot

  ./misc_ctrl