最近按照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为手册上宣传的所谓的“用户可用部分”
944M为软件自己计算出来的剩余空间,没有实际意义。
那个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看版本不一样