1. 程式人生 > >在Linux系統下通過TFTP或NFS燒寫內核

在Linux系統下通過TFTP或NFS燒寫內核

配置 username 配置網絡 help def 定義 不讓 服務 一行

一直想直接通過Linux系統往JZ2440開發板中燒寫內核,但網上的教程千篇一律都是借助Windows平臺上的TFTP工具燒寫的,十分不爽,因為我不喜歡在虛擬機上玩Linux!摸索了一下午,終於搞定了,下來記錄一下燒錄過程。本文主要講訴TFTP燒寫內核的過程,NFS的最後提一下即可,原理大同小異。

開發環境

  • Linux 16.04 LTS(需要配置好TFTP)
  • JZ2440V3

    Linux配置TFTP

    NFS的配置詳見我的上一篇博客https://www.cnblogs.com/multimicro/p/9269863.html
    按步驟執行以下命令
sudo apt-get install tftpd-hpa tftp-hpa
sudo vim /etc/default/tftpd-hpa

vim終端信息修改為:
技術分享圖片

圖片裏的配置信息為:

 # /etc/default/tftpd-hpa                                                               
   
 TFTP_USERNAME="tftp"
 TFTP_DIRECTORY="/home/china/ftproot"
 TFTP_ADDRESS="0.0.0.0:69"
 TFTP_OPTIONS="-l -c -s"

裏面的TFTP_DIRECTORY路徑可以這樣看到,以後用tftp協議傳輸時,文件需要拷貝到這個文件夾裏面!
技術分享圖片

每修改一次配置信息,都需要重啟一次tftp服務

sudo service tftpd-hpa restart

驗證TFTP服務正常開啟

tfpt 192.168.1.218
tfpt> get hello
tfpt> quit

技術分享圖片

tftp配置成功!下面開始記錄如何在Linux下通過tftp服務燒寫內核。

在Linux系統下通過TFTP服務燒寫內核

第一步:在Linux下通過minicom串口助手連接JZ2440開發板

啟動JZ2440開發板後,點擊鍵盤,不讓其啟動裏面的Linux系統,如圖:
技術分享圖片

這個時候要輸入q方可出現OpenJTAG界面

OpenJTAG>

技術分享圖片

第二步:配置網絡環境

這個時候需要按照JZ2440配套的PDF資料裏的韋東山講解配置網絡了,否則不能讓Linux和JZ2440開發板通信。
配置要求

  • 讓開發板網段和Linux系統處於同一網段(如IP地址為192.168.1.x)
  • 網關配置一致
    現在可以在Linux下通過ifconfig命令查看IP地址,可以通過route -n命令查看網關
    技術分享圖片

技術分享圖片

然後在OpenJATG界面使用命令配置u-boot的網絡環境

set ipaddr 192.168.1.18
set serverip 192.168.1.218
set gatewayip 192.168.1.1
  • 第一行命令是配置開發板的IP地址,保證在同一網段的情況下不沖突即可
  • 第二行命令是配置作為服務端的Linux地址,這個IP地址是通過上面的ifconfig得到的,不可胡寫!
  • 第三行命令是配置網關,通過上面的route -n得到,不可胡寫!
    技術分享圖片

韋東山的文檔細節如下,詳情可參考這個PDF文檔。
技術分享圖片

在OpenJATG中

ping 192.168.1.218

一下,看能不能出來alive呢?
技術分享圖片

說明配置正確!O(∩_∩)O哈哈~
可以使用print查看配置情況,其他命令可以詳見help
技術分享圖片

網絡環境配置成功!呼啦啦~

第三步:開始放大招了——燒內核!

1)把要少些的uImage內核文件copy到Linux系統下的tftp服務掛載文件夾下面,如圖:
技術分享圖片

細心的小夥伴發現了,這個uImage的權限被調到了最高,是的,必須要這樣做,否則在接下來的傳輸中會出現permission denied哦,圖片中的lm命令是我自定義的命令,和ls -al的作用是一樣一樣的。
2)進入minicom串口助手裏面
那個

OpenJATG>

還在等你輸入命令呢。
現在要參考韋東山《嵌入式Linux應用開發完全手冊》P291中的內容:
技術分享圖片

不要著急在

OpenJATG>

命令行中輸入書本上的命令,這些命令有三分之二都是錯的!
因為我在按照上訴命令燒寫內核時,板子根本啟動不了Linux系統!最後返回來在Windows平臺下通過DNW工具燒寫發現問題所在了。
左邊是通過DNW正確的擦除和寫入信息,右邊呢... ...
技術分享圖片

所以,要在

OpenJATG>

中輸入以下命令:

tftp 0x30000000 uImage
nand erase 0x60000 0x00200000
nand write.jffs2 0x30000000 0x60000 $(filesize)

技術分享圖片

燒寫完,然後重啟開發板就好了!

在Linux系統下通過TFTP或NFS燒寫內核