u-boot在S3C2440上的移植問題及解決方法集錦(三)

一、移植環境

  • 主   機:VMWare6.5--Fedora 9
  • 開發板:自制開發板

              CPU:S3C2440;    SDRAM:HY57V561620FTP-H;    NOR flash:SST_39VF1601(2M);

              NAND flash:K9F1G08U0B(128M);    網卡芯片:DM9000EP

  • 編譯器:arm-linux-gcc-4.3.2
  • u-boot:u-boot-2009.08
  • linux kernel:linux-2.6.30
  • busybox:busybox-1.13.3

二、博客地址

      http://blog.csdn.net/liuqiqi677

      如有錯誤,歡迎指正。

三、參考資料

      主要參考了黃剛的博客http://blogold.chinaunix.net/u3/101649/ ,他的博客寫得相當不錯,將嵌入式開發各個階段的知識以邊做邊學的方式,輔以圖片、解釋,清晰地呈現給讀者,能夠讓讀者把握主線,對嵌入式開發有整體的瞭解。強烈推薦!!!

四、問題及解決方法

      7、Fedora9的bug,“No network connection”

       我的虛擬機採用橋接的方式與Windows連接,並且在Fedora9中能夠ping通Windows XP,但是右上角的網絡連接圖標無論是否手動激活網卡都會一直提示 "No network connection",如圖7所示,顯示一把紅色小叉。

圖7 網絡連接圖標顯示無連接

      這個問題之前一直存在,但是沒有找到解決方法,就擱置下來了。後來,我想用tftp將linux內核下載到開發板上,但是一直不能成功,我就懷疑是不是網絡部分沒有配置好,因此又去仔細研究了一下,終於發現問題所在!這實際上是 Fedora 9 的一個bug。(以前的版本沒用過不清楚)
      造成這個問題的原因是 Network Configuration 圖形設置界面的默認選項值與 /etc/sysconfig/network-scripts/ifcfg-eth0 配置文件的默認值不一致。

      剛裝完系統的情況下:在 Network Configuration 中,編輯 Device 下的 eth0,會發現 "Controlled by NetworkManager" 是不打勾的。不打勾則值爲 "no"。 而在 /etc/sysconfig/network-scripts/ifcfg-eth0 中對應上面的選項有一行:“NM_CONTROLLED = ”。 留空意味着取默認值,默認值爲 "yes"。同一個選項,一邊顯示爲 no,另一邊則默認爲 yes,能不出問題嗎?解決方法很簡單,要麼就在圖形界面下打勾,要麼就把配置文本改成 "yes"。我比較懶,就直接在複選框上打鉤了。 重啓系統,如圖9所示,一切恢復正常。

圖8 選中Controlled by NetworkManager

圖9 網絡連接正常

      8、開發板能夠ping通主機,但tftp下載失敗

      我在 Fedora 9 中配置好主機的tftp服務(適合Fedora 9的rpm包我已經上傳到http://download.csdn.net/source/3145778 ,並附有一個簡單的安裝說明歡迎大家下載,沒有資源分了,賺點分,大家不要拍我呀),在 Fedora 9 中進行本地測試十分正常,並且開發板也能夠ping通主機,但是在使用tftp想將主機中上的zImage(linux內核文件)下載到開發板上時,卻出現了問題,終端一直顯示‘T T T T T T T T T T T T T’,最後,提示‘ Retry count exceeded; starting again

      網上查了一下,原因歸納起來大致有兩點:1、網卡連接超時;2、xinetd和tftp服務沒有開啓;3、防火牆沒關。 首先針對第一種,我修改了 net/net.c 中對網絡延時的設置,結果還是不行。第二種情況,兩個服務我都打開了的。第三種情況,我檢查了 Windows 和 Fedora 9 的防火牆,都關掉了(在Fedora9的服務中,還要將iptables和ip6tables兩個服務關掉,並且重啓系統,這兩個也是防火牆)。但是,爲什麼還是不行呢?我突然意識到,除了這兩個防火牆,殺毒軟件通常還有一個防火牆,我的殺毒軟件是卡巴的,進入卡巴,關掉它的防火牆,再次測試,下載成功!


圖10 關掉卡巴的防火牆

      9、request_module: runaway loop modprobe binfmt-464c

      進入busybox的 _install/bin 目錄下,執行 # file busybox 命令,檢查編譯的文件系統是基於ARM的還是X386的,我的上面顯示居然是基於X386的,但是我一開始就配置過的呀,重新打開Makefile,一看,居然沒有改過來,可能是我忘記保存了ORZ。 把第164行改成CROSS_COMPILE = arm-linux- ,189行改成ARCH = arm,重新編譯下載,問題解決了。

      ^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章