通過uboot燒寫帶QT的文件系統到nand flash (K9F1208)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章