ubooteth0
A. 掛載文件系統出錯,怎麼回事
用NFS方式掛載根文件系統 由於原來的內核是用ATBOOT的方式下載的,不知道怎麼傳遞參數(好像不能,網上查的nfs方式都是用U-boot的方式掛載的),因此決定用u-boot重新下載內核。 1rph0 = 30,<br/>.twrph1 = 10,<br/>... 原來是20,60,20,但這個參數會找不到nand flash,需要修改為上面幾個。否則得到的uImage 文件會下載運行不了。 1.1.3修改交叉編譯器 vi Makefile 找到 CROSS_COMPILE ?= arm-linux 這一行,將arm-linux-修改為交叉編譯器的路徑(Linux系統上交叉編譯工具的路徑為下) /usr/local/arm/3.4.1/bin/arm-linux- 輸入:wq 保存並退出。 1.1.4編譯 make clean make uImage (在執行命令之前要執行make menuconfig,進行配置內核: networking options-》IP:kernel level autoconfiguralion項 選中file systems-》network file systems-》下的root file system on nfs和nfs file system support 由於我解壓的是板子自帶的內核,發現這些都已經選中了,因此直接編譯即可,執行make uImage後,最後會提示一個錯誤,說不能創建某個文件,但我發現uImage已經生成了,就沒理會錯誤,直接拿來用了) 1.2下載u-boot和內核 1.2.1下載u-boot 1.2.1.1 SJF2440 環境設置(見前面部分圖文介紹) 下載u-boot用板子自帶工具SJF2440.exe,安裝其驅動,具體見說明文檔 1.2.1.2 燒寫u-boot.bin 到Nand flash 中 新建D:\atboot,把sjf2440.exe 和u-boot.bin復制到文件夾內 (sjf2440.exe 和u-boot.bin 必須在同一目錄下) 具體見說明文檔 1.2.1.3 利用u-boot下載uImage和文件系統到arm板上 由於板子自帶是用autoflash.img自動下載uImage和文件系統到arm板上,現在我還不太明白具體的地址,因此就自動把文件系統也下載上去了,但是這個文件系統不用,下面將用nfs掛載linux主機上的文件系統rootfs文件 具體見說明文檔 2. 用nfs掛載根文件系統 2.1 在虛擬機Linux上建立文件夾 /home/water/rootfs 把板子自帶的系統直接拷進rootfs文件夾內 2.2linux主機 配置nfs 文件系統 修改/etc/exports 文件,格式為共享目錄開發板ip 地址(許可權設置):cat <<EOM >/etc/exports /home/water/rootfs *(rw,sync,insecure,no_root_squash) 重啟nfs 伺服器: /etc/init.d/nfs restart 2.3 IP設置 XP:192.168.1.100 linux:192.168.1.128 arm:192.168.1.7(這個一會用U-boot給內核傳遞) 2.4 給u-boot傳遞參數 啟動u-boot,在倒計時結束前,按下空格鍵,進入輸入參數界面 輸入: AVANTECH# set bootargs root=/dev/nfs nfsroot=192.168.1.128:/home/water/rootfs rw noinitrd init=/linuxrc ip=192.168.1.7:192.168.1.128:192.168.1.128:255.255.255.0:avantech:eth0:off console=ttySAC0,115200 (注:上面為一行代碼,只是可能自動換行的緣故,因此輸入是可以一部分一部分的復制) AVANTECH# saveenv AVANTECH# reset 2.5然後就ok了
B. 高手來幫我忙,小弟弄了好久的問題~u-boot tftp無法接受文件~
看一下這些信息,知道主機已經開始發信息過來了,就所沒有收到,而後面主機不知為什麼又一直找目標機的mac地址?
我的網卡是dm9000A,uboot據說是給9000的,但是我也按網上說的改過了
不知道問題在哪裡?????????
C. openwrt系統中,uboot在引導內核和掛載文件系統的時候出現問題,跪求大俠指點!!
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
看起來是文件系統的問題
D. 在ubuntu下使用什麼工具對uboot及內核進行燒寫
tftp比較通用的 網路燒寫 DNW USB燒寫
E. tp4310用TTL線修復,怎麼進不了uboot模式
發現原因了,數據發送這根線接觸不良。弄好後可刷機。可最後把uboot刷壞了,ttl也無法修復了,這下全完了!!:'(:'(
F. 我的友善之臂micro2440開發板,燒寫uboot和Linux內核後我想設置nfs網路根文件系統,但是一直有問題。
linux-2.6.35在fs2410開發板啟動後,通過nfs掛載文件系統,但是rtc不能用,也會在掛載文件系統之前列印如下提示信息:
TCP cubic registered
NET: Registered protocol family 1
RPC: Registered udp transport mole.
RPC: Registered tcp transport mole.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
IP-Config: Complete:
device=eth0, addr=192.168.20.253, mask=255.255.255.0, gw=192.168.20.1,
host=thomas_fs2410, domain=, nis-domain=(none),
bootserver=192.168.20.192, rootserver=192.168.20.192, rootpath=
Looking up port of RPC 100003/2 on 192.168.20.192
Looking up port of RPC 100005/1 on 192.168.20.192
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 184K
解決方案:
1. 內核配置選項
--- Real Time Clock
[*] Set system time from RTC on startup and resume
(rtc0) RTC used to set the system time
[ ] RTC debug support
*** RTC interfaces ***
[*] /sys/class/rtc/rtcN (sysfs)
[*] /dev/rtcN (character devices)
[ ] RTC UIE emulation on dev interface
*** on-CPU RTC drivers ***
<*> Samsung S3C series SoC RTC
2. linux kernel 中 已經支持S3C2410的RTC,但是並沒有添加到平台設備初始化數組中,所以系統啟動時並不會初始化這一部分,需要修改文件mach-smdk.c
static struct platform_device *smdk2410_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_rtc, //新增代碼
};
3. 創建設備節點,在文件系統/dev目錄下執行:
sudo mknod rtc c 10 135
4. 重新編譯內核,查看啟動信息
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c-rtc s3c2410-rtc: rtc disabled, re-enabling
s3c-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
這里說明rtc驅動起來可以正常工作了
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
ALSA device list:
No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
s3c-rtc s3c2410-rtc: hctosys: invalid date/time
以上信息說明當前 RTC 時間invalid , RTC 初始時間為 Wed Dec 31 23:59:59 1969 ;
從內核函數 int rtc_valid_tm(struct rtc_time *tm) ,可以看出,當 year 小於 1970 時,認為是時間 invalid ,函數返回 -EINVAL ;
drivers/rtc/rtc-lib.c
/*
* Does the rtc_time represent a valid date/time?
*/
int rtc_valid_tm(struct rtc_time *tm)
{
if (tm->tm_year < 70
|| ((unsigned)tm->tm_mon) >= 12
|| tm->tm_mday < 1
|| tm->tm_mday > rtc_month_days(tm->tm_mon, tm->tm_year + 1900)
|| ((unsigned)tm->tm_hour) >= 24
|| ((unsigned)tm->tm_min) >= 60
|| ((unsigned)tm->tm_sec) >= 60)
return -EINVAL;
return 0;
}
EXPORT_SYMBOL(rtc_valid_tm);
下面來驗證一下這個想法
# hwclock
Wed Dec 31 23:59:59 1969 0.000000 seconds
# date
Thu Jan 1 00:06:58 UTC 1970
系統時間是通過 date 來設置的, RTC 時間是通過 hwclock 來設置的。開機時系統時間首先通過 RTC 來獲得,RTC沒有設置時,系統時間也會使用Wed Dec 31 23:59:59 1969。
# hwclock --help
BusyBox v1.9.2 (2008-04-01 21:32:34 CST) multi-call binary
Usage: hwclock [-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc] [-f FILE]
Query and set a hardware clock (RTC)
Options:
-r Read hardware clock and print result
-s Set the system time from the hardware clock
-w Set the hardware clock to the system time
-u The hardware clock is kept in coordinated universal time
-l The hardware clock is kept in local time
-f FILE Use the specified clock (e.g. /dev/rtc2)
# hwclock -s
hwclock: settimeofday() failed: Invalid argument
# hwclock -w
s3c2410-rtc s3c2410-rtc: rtc only supports 100 years
hwclock: RTC_SET_TIME: Invalid argument
以上錯誤信息都是因為 year 設置不當引起的。沒有設置 RTC , RTC 也不會啟動計時。
下面首先設置正確的系統時間,然後將系統時間傳遞給 RTC 。
# date 040612282008.20
Sun Apr 6 12:28:20 UTC 2008
# hwclock -w
# hwclock
Sun Apr 6 12:29:01 2008 0.000000 seconds
# hwclock
Sun Apr 6 12:30:15 2008 0.000000 seconds
Ok , RTC 開始工作了!
為了使系統時間和 RTC 時間同步,可以在初始化文件中添加命令
Hwclock –s
使每次開機時讀取 RTC 時間,並同步給系統時間。
在 etc/init.d/rcS 中添加
/bin/hwclock -s
時間設置的相關命令(轉載)
1. 在虛擬終端中使用date 命令來查看和設置系統時間
查看系統時鍾的操作:
# date
設置系統時鍾的操作:
# date 091713272003.30
通用的設置格式:
# date 月日時分年. 秒
2. 使用hwclock 或clock 命令查看和設置硬體時鍾
查看硬體時鍾的操作:
# hwclock --show 或
# clock --show
2003年 09月 17日 星期三 13 時24 分11 秒 -0.482735 seconds
設置硬體時鍾的操作:
# hwclock --set --date="09/17/2003 13:26:00"
或者
# clock --set --date="09/17/2003 13:26:00"
通用的設置格式:hwclock/clock --set --date=「 月/ 日/ 年時:分:秒」 。
3. 同步系統時鍾和硬體時鍾
Linux 系統( 筆者使用的是Red Hat 8.0 ,其它系統沒有做過實驗) 默認重啟後,硬體時鍾和系統時鍾同步。如果不大方便重新啟動的話( 伺服器通常很少重啟) ,使用clock 或hwclock 命令來同步系統時鍾和硬體時鍾。
硬體時鍾與系統時鍾同步:
# hwclock --hctosys
或者
# clock --hctosys
上面命令中,--hctosys 表示Hardware Clock to SYStem clock 。
系統時鍾和硬體時鍾同步:
# hwclock --systohc
或者
# clock --systohc
使用圖形化系統設置工具設置時間
參考:http://blogold.chinaunix.net/u2/63560/showart_518707.html
G. uboot中hostarch 和 hostos兩個變數有什麼用
VMWare提供三種工作模式橋接(bridge)、NAT(網路地址轉換)和host-only(主機模式)。橋接模式在橋接模式下,VMWare虛擬出來的操作系統就像是區域網中的一台獨立的主機(主機和虛擬機處於對等地位),它可以訪問網內任何一台機器。在橋接模式下,我們往往需要為虛擬主機配置IP地址、子網掩碼等(注意虛擬主機的ip地址要和主機ip地址在同一網段)。使用橋接模式的虛擬系統和主機的關系,就如同連接在一個集線器上的兩台電腦;要讓他們通訊就需要為虛擬系統配置ip地址和子網掩碼。如果我們需要在區域網內建立一個虛擬伺服器,並為區域網用戶提供服務,那就要選擇橋接模式。但對於想進行種種網路實驗的朋友這種模式是不太適合的,因為你無法對虛擬機的網路進行控制,它直接出去了。NAT模式在NAT模式下,虛擬系統需要藉助NAT(網路地址轉換)功能,通過宿主機器所在的網路來訪問公網。也就是說,使用NAT模式虛擬系統可把物理主機作為路由器訪問互聯網。NAT模式下的虛擬系統的TCP/IP配置信息是由VMnet8(NAT)虛擬網路的DHCP伺服器提供的,無法進行手工修改,因此虛擬系統也就無法和本區域網中的其他真實主機進行通訊。採用NAT模式最大的優勢是虛擬系統接入互聯網非常簡單,你不需要進行任何其他的配置,只需要宿主機器能訪問互聯網即可。這種方式也可以實現HostOS與GuestOS的雙向訪問。但網路內其他機器不能訪問GuestOS,GuestOS可通過HostOS用NAT協議訪問網路內其他機器。NAT方式的IP地址配置方法是由VMware的虛擬DHCP伺服器中分配一個IP,在這個IP地址中已經設置好路由,就是指向192.168.138.1的。如果你想利用VMWare安裝一個新的虛擬系統,在虛擬系統中不用進行任何手工配置就能直接訪問互聯網,建議你採用NAT模式。這種方式下host內部出現了一個虛擬的網卡vmnet8(默認情況下),如果你有過做nat伺服器的經驗,這里的vmnet8就相當於連接到內網的網卡,而虛擬機本身則相當於運行在內網上的機器,虛擬機內的網卡(eth0)則獨立於vmnet8。你會發現在這種方式下,vmware自帶的dhcp會默認地載入到vmnet8界面上,這樣虛擬機就可以使用dhcp服務。更為重要的是,vmware自帶了nat服務,提供了從vmnet8到外網的地址轉換,所以這種情況是一個實實在在的nat伺服器在運行,只不過是供虛擬機用的。很顯然,如果你只有一個外網地址,此種方式很合適。主機模式主機模式下,真實環境和虛擬環境是隔離開的;在這種模式下,所有的虛擬系統是可以相互通信的,但虛擬系統和真實的網路是被隔離開。(虛擬系統和宿主機器系統是可以相互通信的,相當於這兩台機器通過雙絞線互連。)這應該是最為靈活的方式,有興趣的話可以進行各種網路實驗。和nat唯一的不同的是,此種方式下,沒有地址轉換服務,因此,默認情況下,虛擬機只能到主機訪問。
H. linux下Uboot終端命令行參數輸入過長
修改成這樣試試(用分割了一下)
setenvbootargs"root=/dev/nfsnfsroot=192.168.1.118:
/root/work/nfsip=192.168.0.119:192.168.1.118:192.168.1.1:
255.255.255.0:witech.com.cn:eth0:offconsole=ttySAC2,115200"
I. 求助 關於uboot.BIN 燒寫uImage到開發板的內存中
直接文件系統列舉吧燒寫uboot、內核及文件系統 :1、uboot燒寫
載Uboot兩步驟第步uboot載系統擴展RAM並運行第二步通內存運行uboot整uboot載內存再燒寫nandflash
第步 載uboot擴展RAM
首先使用短路塊選擇系統內部啟復位或者電串口軟體(115200 8 n 1)看列印信息LPC31xx READY FOR PLAIN IMAGE>使用串口軟體發送文件選擇發送u-boot-init.bin再發送u-boot.binRAM啟uboot列印輸啟信息並進行倒計發送任意字元給系統停止計關閉串口軟體使用超級終端連接系統
第二步 燒寫ubootnandflash
超級終端輸入loady命令再使用傳送/發送文件選擇Ymodem協議發送u-boot.bin接收完先擦除nand erase全擦掉(用給參數)使用使用參數指定區域般第要全擦使用nand_paramsflash信息寫入其使用nand write 0x30001000 0x4000 0x100000
其0x30001000 uboot內存址;
0x4000 ubootflash存放起始址需要根據實際區情況定;
0x100000 uboot於實際;
至uboot寫入nandflash短路跳線掉使其nandflash啟
2、內核燒寫
uboot啟倒計擊任意鍵停止輸入loady與uboot燒寫相似使用命令主要:nand erase 0x200000(址) 0x200000()
nand write 0x30001000 0x200000 0x200000
3、文件系統燒寫
文件系統燒寫通與內核相似使用串口燒寫通掛載nfs使用mtd_debug 工具燒寫由於文件系統較使用第種式慢些
串口燒寫使用命令
loady
nand erase 0x600000 0x3a00000(目前區情況)
nand write 0x30001000 0x600000 0x800000(實際)
使用nfs燒寫用命令
mtd_debug erase /dev/mtd2 0 0x3a00000
mtd_debug write /dev/mtd2 0 0x800000 ubi.img
各項含義參考mtd_debug 幫助直接mtd_debug 即獲取說明其len使用十進制數uboot加0x認十六進制
4、啟掛載文件系統選項
uboot通環境變數設置啟選項般需要配置掛載文件系統nfsubi及內核啟選項
掛載nanflashubifs:
setenv bootargs console=ttyS0,115200n8 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs;
掛載129.1.4.199/rfs/rootfs並且本機ip設129.1.31.33等:
setenv bootargs noinitrd root=/dev/nfs console=ttyS0,115200n8 nfsroot=129.1.4.199:/rfs/rootfs,proto=tcp,nfsvers=3,nolock ip=129.1.31.33:129.1.4.199:129.1.88.1:255.255.0.0::eth0:off
啟內核選項:
setenv bootcmd nand read 0x30001000 0x200000 0x200000\; bootm 0x30001000\;
修改uboot環境變數都需要saveenv命令保存修改
J. 為什麼我在arch安裝時使用ifconfig沒有出現eth0和wlan0
vim /etc/sysconfigu/network-script/ifcfg-eth0
如果有ifcfg-eth0那就進去把ONBOOT=no 改為yes
如果沒有就 ifconfig -a看有沒