最近按照SmartQ 官方網站的方法升級V7的固件,順便研究一下這個支持3操作系統的設備的分區方式。
(這裏有個系列折騰貼,挺好的:http://www.felix021.com/blog/read.php?1813 不過它的內存分佈是老版本了)
SmartQ V7採用Telechips公司的TCC8900 ARM11處理器。FWDN爲其固件燒寫工具。
上圖可以看到Target Base 0x40000000 (有個300M的MTD是什麼?)
這裏有個隱藏區,大小20M
其中用來存放一個kernel (5M)
是ubuntu的kernel,還是Android的kernel不清楚,官方提供了rom
RamDisk (12M)
沒用上,官方的FWDN升級過程沒有指定ramdisk文件,不知道是不是空着
空餘3M左右,沒用上的
其餘的flash被劃分爲三個分區(SmartQ V7支持WinCE, linux, Android三個操作系統),三個分區的大小如圖所示,分別爲950M,128M,944M
950+128+944+20 = 2042 (也就是物理Flash一共爲2G)
這裏,128M爲手冊上宣傳的所謂的“用戶可用部分”
那個300M是不存在的,不要理他。
這個軟件只負責燒linuxl的boot loader和kernel,其它部分的升級,通過將image拷貝到sd卡,在機器上升級。
linux firmware update
燒寫完boot loader和kernel就擁有了固件升級firmware update功能,但是開機選擇三個操作系統設定高清標清那個畫面還沒有。不知道那個OS選擇畫面用的什麼技術,類似GRUB?需要升級ubuntu linux固件後纔有那個畫面。 升級完linux,我又通過FWDN的重新format了分區,發現OS選擇程序還在,所以這個OS選擇程序應該是存放在前20M的空間裏,我想。
升級linux固件過程中顯示會格式化根分區和home分區。
以上是在燒寫程序中看到的情況,進入系統linux系統,再看看。
進入linux,fdisk -l的結果比較怪異,出現一個1358M的設備,在/dev/ndda下面。這個設備分成三個區,ndda1, ndda2, ndda3,大小分別是950M,128M,216M。其中950M的掛載點是/,128M的掛載點是/home,看來這兩個分區跟FWDN中格式化的情況一致。
第三個分區就有問題了,216M,大小對不上。用mount /dev/ndda3 /media/tmp命令掛載之,發現其內容是WinCE的系統盤。
進入wince再驗證一下
通過一個叫存儲管理器的程序,看到了與linux fdisk一致的結果,即看到了950M/128M/216M三個分區,其中216M的分區是wince本身。
那麼除了13xxM左右的部分,剩下的6xxM應該是android的分區了,這個分區現在是隱藏的。進android看看!
android內部也分幾個區,例如/ 和/data 等等,cmd line上支持df, mount命令,fdisk好像不支持。
設置-->SD卡選項-->選則使用ubuntu系統內存,這樣可以將ubuntu幹掉
df的結果:/分區108M, /data分區108M,/cache分區32M
/ndda分區950M,這樣就把linux分區給用上了,不過128M的/home被浪費了,不想浪費看這裏:http://bbs.zhiqifans.com/viewthread.php?tid=34746&extra=&page=1
另外不知道android的kernel放在哪裏,我肯定不是與linux共享一個kernel,uname看版本不一樣