前幾天做好了帶qt的檔案系統,通過nfs掛接成功,但是介面閃爍的厲害。經過分析得出結論:網卡與vga有衝突導致的,因為關閉網路時,顯示正常,但是我是通過nfs掛接的檔案系統,沒有網卡是無法工作的。禁用網卡後顯示正常,但滑鼠鍵盤均無法使用了,故需要把檔案系統燒寫到flash中運行,查出原因。大致步驟如下:
1、使用mkyaffsimage工具把帶qt的檔案系統製作成yaffs格式的鏡像。
#cd /home/ayj/work/nfsroot
#mkyaffsimage fs_qtopia fs_qtopia.yaffs
製作完成。
2、啟動開發板到uboot控制台(uboot已移植成功並支援nfs),通過nfs下載檔案系統到記憶體,然後通過nand write命令燒寫到flash中。
#nfs 0x31000000 192.168.1.100:/home/ayj/work/nfsroot/fs_qtopia.yaffs (通過nfs下載檔案系統到記憶體)
#nand erase 0x00b00000 0x4000000 (擦除)
#nand write.yaffs 0x31000000 0x00b00000 0x3800000 (燒寫)
修改命令列參數以MTD3分區作為要檔案系統(0x00b00000是mtd3的起始地址),在uboot控制台做如下設定:
#set bootargs noinitrd confole=ttySAC0 root=/dev/mtdblock3 rootfstype=yaffs
#saveenv
重啟開發板,核心啟動後會去mtd3掛載檔案系統。
啟動後檔案系統掛接成功,顯示如下資訊
......
IP-Config: Complete:
device=eth0, addr=192.168.1.70, mask=255.255.255.0, gw=192.168.1.110,
host=yc2440, domain=, nis-domain=arm9.net,
bootserver=192.168.1.101, rootserver=192.168.1.100, rootpath=
yaffs: dev is 32505859 name is "mtdblock3"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.3, "mtdblock3"
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
VFS: Mounted root (yaffs filesystem).
Freeing init memory: 136K
init started: BusyBox v1.7.0 (2009-09-15 19:57:11 CST)
starting pid 755, tty '': '/etc/init.d/rcS'
Done
starting pid 767, tty '': '/usr/sbin/telnetd'
......
顯示器也顯示qt介面,但還是閃爍,於是關閉網路,顯示正常,滑鼠鍵盤也能使用了,看來真是網卡與vga有衝突導致之前的問題。(還沒有找到解決的方法。)
在控制台輸入如下命令關閉網路:
#ifconfig eth0 down
附加:在用nfs下載fs_qtopia.yaffs到記憶體時遇到的問題。
剛開始通過命令nfs 0x31000000 192.168.1.100:/home/ayj/work/nfsroot/fs_qtopia.yaffs 進行下載時總下載不成功,顯示如下資訊就停止了。
U-Boot 2008.10 (Oct 6 2009 - 11:43:29)
I2C: ready
DRAM: 64 MB
Flash: 1 MB
NAND: NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
64 MiB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
mini2440 # nfs 0x31000000 192.168.1.100:/home/ayj/work/nfsroot/fs_qtopia.yaffs
dm9000 i/o: 0x19000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
File transfer via NFS from server 192.168.1.100; our IP address is 192.168.1.70
Filename '/home/ayj/work/nfsroot/fs_qtopia.yaffs'.
Load address: 0x31000000
Loading: *
done
很鬱悶在這裡浪費了一個多小時,查了很多地方,就是找不出原因,通過nfs下載其它檔案都能下載,可就是下載fs_qtopia.yaffs提示上面的資訊,總不能下載。搞了好久還是不行,於是就停下來,開始分析:開始懷疑nfs不支援大文傳輸,因為製作好的fs_qtopia.yaffs接近31M。嘗試下載其它大檔案能下載呀,排除這個猜想。後來懷疑是許可權問題,因為編譯時間我用的是目前使用者編譯的。而在fedora8中啟動控制台minicom是通過su來啟動的,於是查看fs_qtopia.yaffs的許可權,果然是許可權問題,因為它只支援目前使用者ayj讀取,更改許可權下載成功!
(這是一個很簡單的問題,可有時候就是這些簡單的問題把我們寶貴的時間浪費了.....故做些記錄,以備參考!)
註:
uboot控制台命令使用方法可在控制台輸入help進行查看。