如何在HI3515上搭建NFS開發調試環境

http://www.non-pancaker.com/%E9%A1%B9%E7%9B%AE/hi3515%E6%94%AF%E6%8C%81nfs-root%E5%90%AF%E5%8A%A8/


目前在做Hi3515平臺監控項目,前期開發一直使用SDK裏推薦的mount nfs方式來調試代碼,雖然也算方便,但是我一直覺得用法NFS-ROOT纔是最省事的方法,而且最接近最終用戶使用環境,因爲如果NFS-ROOT調試完成後,就直接可以出firmware了.

由於SDK幾乎將所有用到的驅動都獨立編譯成了ko文件,所以爲了將驅動編譯到內核中,還是需要做一番工作的,由於初次接觸內核和驅動,所以很多東西都是剛瞭解的。通過不斷的試錯和調試,終於搞定了網卡驅動和NFS-ROOT的支持。

若想內核支持NFS-ROOT,主要是兩個方面的功能配置,一是ethernet,讓網卡在內核運行時驅動自動加載,這樣纔不會導致eth0找不到的情況,而是nfs內核中的相關配置選項。

step 0. 複製使用到的config配置文件

cp arch/arm/configs/hi3515v100_full_release_defconfig .config

step 1.在內核代碼中增加網卡驅動

     step 1.0 在驅動目錄下增加hiether文件夾,用來存放hi3515的網卡驅動

                  mkdir linux-2.6.24/drivers/net/hiether

     step 1.1 複製已有的網卡驅動到新添加的文件夾中

                  cp Hi3515_SDK_V1.0.5.0.c1/source/drv/hi3515v100-sfv300 linux-2.6.24/drivers/net/hiether

     step 1.2 修改驅動文件夾中的代碼

                  由於原有驅動是用來編譯爲獨立的ko文件的,所以裏面的部分函數使用了__exit標誌,用來表示只用來作爲模塊退出使用的函數,如果不將次函數的__exit標誌去掉,在編譯內核的時候會打印

              “ `.exit.text’ referenced in section `.init.text’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.o`.exit.text’ referenced in section `.data’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.o`.exit.text’ referenced in section `.data’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.omake: *** [.tmp_vmlinux1] 錯誤 1”

                  簡單的將__exit標誌去掉,就能順利通過編譯了。

     step 1.3 增加菜單選項

                  要想通過menuconfig來選擇是否選擇hiether驅動,要做一下修改:

                    step 1.3.0 修改Kconfig文件

                                    在net/Kconfig中config DM9000下面的位置增加下面內容

config DM9000

    tristate “DM9000 support”

    depends on ARM || BLACKFIN || MIPS

    select CRC32

    select MII

    —help—

      Support for DM9000 chipset.

      To compile this driver as a module, choose M here.  The module

      will be called dm9000.

config HIETHER

    tristate “HIETHER support”

    —help—

          step 1.3.1 修改net/Makefile,增加需要編譯的文件夾

                          obj-$(CONFIG_HIETHER) += hiether/

          step 1.3.2 在hiether文件夾中增加Makefile文件,內容如下

                          obj-$(CONFIG_HIETHER) += hiether.o
hiether-objs := mdio.o mii-drv.o mac.o ctrl.o glb.o net-drv.o mm.o sys.o proc.o

          step 1.3.3 make menuconfig 選擇新增加的驅動

                         [*] Network device support  —>  [*]   Ethernet (10 or 100Mbit)  —> <*>   hiether support

step 2. 內核增加對NFS-ROOT的支持

         Networking  —>Networking options  —>[*]   IP: kernel level autoconfiguration

                                                                    [*]     IP: DHCP support

                                                                    [*]     IP: BOOTP support

                                                                    [*]     IP: RARP support

         File systems  —> [*] Network File Systems  —> <*>   NFS file system support

                                                                                 [*]     Allow direct I/O on NFS files

                                                                                 [*]   Root file system on NFS

                                                                                 [*]   Support for rpcbind versions 3 & 4 (EXPERIMENTAL)

step 3.重新編譯內核

          make; make uImage

step4. 測試

          宿主機要安裝nfs,tftp,這些網上教程很多,這裏就不羅嗦了

          啓動參數setenv bootargs busclk=220000000 mem=64M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.6.141:/tftpboot/hi3515.filesys, nolock eth=00:1e:9a:04:5c:4d ip=192.168.6.143:192.168.6.100:192.168.6.254:255.255.255.0:tocore:eth0:off pcimod=host pciclksel=1

          下載最新內核並運行

            tftp 0xc1000000 uImage; bootm 0xc1000000

—————————啓動打印信息————————————————–

IP-Config: Complete:
device=eth0, addr=192.168.6.143, mask=255.255.255.0, gw=192.168.6.254,
host=tocore, domain=, nis-domain=(none),
bootserver=192.168.6.100, rootserver=192.168.6.141, rootpath=
Looking up port of RPC 100003/2 on 192.168.6.141
PHY: 0:01 – Link is Up – 100/Full
Looking up port of RPC 100005/1 on 192.168.6.141
VFS: Mounted root (nfs filesystem).
Freeing init memory: 112K


發佈了28 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章