【linux】內核+文件系統下載到開發板
K開發
歡迎轉載,轉載時請保留作者信息,謝謝。
博客園地址:http://www.rzrgm.cn/embedded-tzp
Csdn博客地址:http://blog.csdn.net/xiayulewa
開發環境:http://www.rzrgm.cn/embedded-tzp/p/4443876.html
參考了網上很多資料,沒有對來源網站做記錄,故來源已經不可考,在此表示歉意與感謝。
文章包括了下載的環境搭建,如何下載,具有一定參考性。
前期環境配置
Tftpd服務器搭建
-
Windows:
直接用tftpd32.exe 或者 tftpd64.exe, 圖形界面,方便好用,適用于Ubuntu在虛擬機的情況。
-
Linux下配置tftpd:
適用于直接在Ubuntu系統下開發,而不經過虛擬機的情況。
- 安裝tftp-server
sudo apt-get install tftpd-hpa
sudo apt-get install tftp-hpa(如果不需要客戶端可以不安裝)
tftp-hpa是客戶端
tftpd-hpa是服務器端
2.配置TFTP服務器
sudo vim /etc/default/tftpd-hpa
將原來的內容改為:
TFTP_USERNAME="tftp"
TFTP_ADDRESS="0.0.0.0:69″
TFTP_DIRECTORY="tftp根目錄" #服務器目錄,如 /home/tang/wkdir/tftp ,需要設置權限為777,chomd 777
TFTP_OPTIONS="-l –c –s"
3.重新啟動TFTP服務
sudo service tftpd-hpa restart
然后需要下載u-boot(bootloader), 此時只能通過jtag方式的jlink 下載。
-
虛擬機和windows網絡配置
建議少用虛擬機,因為總是會出這樣那樣的問題,現在我已經直接在原生linux操作系統下開發, 問題少很多。
(可選)電腦端:禁用無線網卡。
配置:windows: 192.168.1.2(需要關閉防火墻,否則無法ping)
虛擬機:ubuntu: 192.168.1.6(當為橋接(虛擬機系統是獨立的計算機)時,虛擬機系統需要手工設置ip,子網等,且要和宿主機器處于同一網段,這樣才是一個局域網,虛擬機的操作系統和windows才能ping通,具體配置見下)
開發板:192.168.1.8
虛擬機ip配置:當虛擬機設置為橋接時,此時虛擬機系統需要手動設置ip,設置方法有兩種:
1: sudo ifconfig eth0 192.168.1.6
2: 這種方式時記得備份原文件,虛擬機上不了網時試試還原下該文件。
sudo pluma /etc/NetworkManager/system-connections/Wired\ connection\ 1
修改內容:
[ipv4]
method=manual
#dns=8.8.8.8;
address1=192.168.1.6/24,192.168.1.2
然后sudo service network-manager restart
實際下載
因為沒有使用虛擬機,所以電腦ip為192.168.1.2, 開發板ip為192.168.1.3。
-
ramdisk方式
根文件系統在內存,為ramdisk:
電腦端: 開啟tftpd服務端程序
開發板端:
- tftp 0x30008000 uImage
- tftp 0x32000000 ramdisk.gz
- setenv bootargs root=/dev/ram0 initrd=0x32000000,0x200000 rootfstype=ext2 console=ttySAC0,57600 init=/linuxrc ip=192.168.1.3
- bootm 0x30008000
需要注意上述console使用ttySAC0/ ttySAC1的形式,新版本的內核使用ttyS是不行的。
bootargs參數使用查看如下文檔:
src\Documentation\kernel-parameters.txt
U_boot 的 bootcmd 和bootargs參數詳解:http://www.rzrgm.cn/cornflower/archive/2010/03/27/1698279.html
initrd: src\Documentation\initrd.txt
-
nfs方式
電腦端:
盡量不要用虛擬機。
根文件系統在nfs(必須先配置虛擬機ip獲取方式為手動):
Linux mint先菜單->系統管理->網絡->設置靜態ip, 或者sudo ifconfig eth0 192.168.1.2
修改 /etc/exports: 內容為:
/home/tang/wk-tzp/prj/nfs *(insecure,rw,sync,no_subtree_check,all_squash)
然后:
sudo exportfs -ra
sudo /etc/init.d/portmap restart # 有可能失敗,不用理會
sudo /etc/init.d/nfs-kernel-server restart # 或者sudo service nfs-kernel-server restart
showmount -e :該命令看是否映射成功。
開發板端:
- tftp 0x30008000 uImage
- setenv bootargs root=/dev/nfs noinitrd rootfstype=nfs nfsroot=192.168.1.2:/home/tang/wk-tzp/prj/nfs/fs/ramdisk_fs console=ttySAC0,57600 ip=192.168.1.3:192.168.1.2:192.168.1.2:255.255.255.0::eth0:off
- bootm 0x30008000
需要注意上述console使用ttySAC0/ ttySAC1的形式,新版本的內核使用ttyS是不行的。
下載成功后,使用ls, pwd等命令,開發板就反饋給答案,折騰很傷神,但是總算會有點成就感了。
posted on 2015-04-21 11:44 embedded_linux 閱讀(1270) 評論(0) 收藏 舉報
浙公網安備 33010602011771號