前幾天做好了帶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進行查看。