HI3515?

基於HI3515的3G4G車載DVR的嵌入式LINUX應用二次開發說明

工具/原料

HI3515板卡,UBUNTU LINUX PC,12V電源,串口線,網線

海思ARM LINUX內核源代碼

方法/步驟

什麼是NFS as rootfs模式? NFS即網絡文件系統,NFS允許一個系統在網絡上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。對於嵌入式開發來說,我們在PC端(宿主機)共享一個目錄(/tftpboot),調試的時候將板卡的文件系統放在其目錄下。在uboot環境下設置板卡相應的bootargs參數,/tftpboot下的文件系統將作為板卡的根文件系統。此時板卡運行的就是/tftpboot下的程序,開發者只要將調試程序放到/tftpboot下的文件系統中,程序就可以在板卡中運行了。 採用NFS as rootfs模式調試的優勢在於調試程序只要進行簡單的替換就可以,不需要每次修改後重新燒寫固件到板卡中。

一.NFS服務的環境搭建

1.配置NFS服務和安裝minicomNFS服務 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

??? 安裝minicomsudo apt-get install minicom 配置為/dev/ttyS0串口,波特率為115200 8N1 如果下載不成功的話,要檢查tftp服務是否啟動: ps -ax grep tftpsudo 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.shmake hisi3515_config 編譯3515平臺的misc_ctrl。 1.調試misc_ctrl,可以採用nfs調試,首先設置好bootargs的參數。 NFS調試vc_esetenv 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目錄下的內核。

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

2.調試misc_ctrl的時候,需要先修改配置文件,防止kill 之後重新啟動: cd /tftpboot/BVS-W4020-VC-E.filesys.3515/etcsudo 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 後系統就不會重啟了。

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

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/mediacd /tftpboot/BVS-W4020-VC-E.filesys.3515/usr/binkill misc_ctrlcd /tftpboot./misc_ctrl

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

HI3515 3G4GDVR嵌入式LINUX應用二次開發說明

相關問題答案