E680i 硬件规格研究以 及 虚拟内存使用研究

[复制链接]
发表于 2006-5-3 20:29:00 | 显示全部楼层 |阅读模式
E680i的硬件,很多资料上说用的是Intel xscale CPU PAX262,内存是50M等等,到底是不是真的呢?<BR><BR>      不过据mot的网站上居然说是(PXA 270) 312MHz CPU<BR>        <a href="http://sg.motorola.com/pcs/e680i/sg/full_specs.ASP?" target="_blank" ><FONT color=#000000>http://sg.motorola.com/pcs/e680i/sg/full_specs.ASP?</FONT></A><BR>这儿有个概念要澄清,对于普通手机用户,所有的资料都在宣传内存有多大多大,然后还可以加SD卡扩内存,加了SD卡,是不是多大的程序都可以运行了,其实真的是这样吗?当然不是的,其实手机中有2种存储空间,1个是FLASH内存(ROM),1个是SDRAM内存(RAM),和电脑比较来说,FLASH相当于硬盘,SDRAM才是真的内存。扩SD卡,加的只是FLASH,对于系统的内存来说,没有任何的可扩充的空间。就是说,你加了SD卡,能存很多的东西,但是对于应用程序来说,如果要求内存太大,系统内存还是一样的不够的。更通俗的说法是,硬盘再大,内存不够还是不够,不会因为硬盘大而内存就够了。电脑上还好一些,因为可以用硬盘做虚拟内存,但是在手机上就不行了,因为FLASH读写太慢,如果用FLASH来虚拟内存,速度将慢到不可想象的地步,所以在嵌入式系统中都不会使用虚拟内存的。LINUX在X86上是有虚拟内存的,不过移植到了嵌入式CPU上,这个功能已经专门关闭了。<BR><BR>      关于网上有一篇文章写如何将内存扩成270M,大意是通过换CPU达到扩展内存的目的,这种说法不可取,更本一点都不懂开发和内存概念,换个PXA263,没错,芯片是管腿兼容,但是硬件也需要底层软件来配合的,程序不去用那多出来的FLASH空间,再大又有什么用。虽然我们做底层软件一般都会把FLASH存储的做兼容,但是谁知道mot是否也这样做了。再说了,通过换cpu来增加Flash,为什么不用加SD卡的方式,简单实用,真的不会这样去想的,再就是他根本不知道FLASH和内存的区别。<BR><BR>      在手机中,使用内存状态 看到的是用户可用的FLASH空间大小,而不是内存的大小<BR>使用任务关系器,你看到的才是真正的内存的使用率。<BR><BR>      例如,你在手机上打开一个大的PDF文件,无论你如何加多大的SD卡,系统都是会报内存不足的。<BR><BR>      mot在内存上的所指上,是明显在误导大家<BR><BR>      其实看硬件的构架,最好最简单的方式是拆机,看看使用芯片的型号,就非常清楚了<BR><BR>      <U><B><FONT color=#ff0000>E680</FONT></B></U>拆机<BR>      <a href="http://tech.sina.com.cn/mobile/n/2004-10-15/1354441450.shtml" target="_blank" ><FONT color=#000000>http://tech.sina.com.cn/mobile/n/2004-10-15/1354441450.shtml</FONT></A><BR><BR>      可惜由于mot的狡猾,以及为了起屏蔽作用,把使用的芯片都盖起来了,看不到了。<BR><BR>      不过我们还是通过软件来看 :) 执行telnet<BR>      先来分析FLASH的大小<BR>      # df<BR>      Filesystem           1k-blocks      Used Available Use% Mounted on<BR>      rootfs                   55500     55500         0 100% /<BR>      /dev/root                55500     55500         0 100% / //根文件系统,只读<BR>      /dev/tffsa               16208     16208         0 100% /usr/language //多语言系统文件,只读<BR>      /dev/roflash2              408       408         0 100% /usr/setup //配置信息,只读,以上3部分对于手机用户是不可见的<BR>      /dev/mtdblock2            5312      1972      3340  38% /ezxlocal //本机自带程序使用空间,可写,很多程序保存的信息就在本目录<BR>      /dev/tffsb1              49034     10500     38534  22% /diska //用户空间,可写,做U盘看到的就是本目录<BR>      /dev/mmca1              993920    136496    857424  14% /mmc/mmca1 //SD卡,可写<BR><BR>      TFFS:The Transaction Flash FileSystem<BR>      MTD:Memory Technology Device<BR>      这2种都常见的构架在FLASH上的系统<BR><BR>      # cat /proc/mtd<BR>      dev:    size   erasesize  name<BR>      mtd0: 00020000 00008000 "Bootloader" //系统的bootloader<BR>      mtd1: 000e0000 00020000 "Kernel" //linux kenel保存地址<BR>      mtd2: 00580000 00020000 "VFM_Filesystem" //被mount成/ezxlocal<BR>      mtd3: 00020000 00020000 "Logo" //可能被用作logo保存<BR>      #<BR><BR>      # ls /dev/ro* -l<BR>      brwxr-xr-x    1 root     root      62,   0 Jul 28 03:14 /dev/roflash<BR>      brwxr-xr-x    1 root     root      62,   1 Jan  1  1970 /dev/roflash1<BR>      brwxr-xr-x    1 root     root      62,   2 Jan  1  1970 /dev/roflash2<BR><BR>      # mount<BR>      rootfs on / type rootfs (rw)<BR>      /dev/root on / type cramfs (rw)<BR>      none on /ram type ramfs (rw)<BR>      proc on /ram/proc type proc (rw)<BR>      /dev/tffsa on /usr/language type cramfs (rw)<BR>      /dev/roflash2 on /usr/setup type cramfs (rw)<BR>      none on /dev/pts type devpts (rw)<BR>      /dev/mtdblock2 on /ezxlocal type vfm (rw,noatime)<BR>      /dev/tffsb1 on /diska type vfat (rw,noatime)<BR>      /dev/mmca1 on /mmc/mmca1 type vfat (rw,noatime)<BR><BR>      从以上信息可以看到E680I的FLASH分区有4种<BR>      1、mtd 有4个分区,只mount上了一个<BR>      2、roflash 有2个分区,只mount上了一个<BR>      3、tffs 有2个分区,都mount上了<BR>      4、rootfs cramfs 1个分区,直接mount成了只读的根目录<BR><BR>      那么E680I的FLASH大小总共是多少呢,很简单,把所有的FLASH分区加起来就可以了<BR>      MTD 0x580000+0x20000+0xe0000+0x20000=0x680000=6.5M  这儿是16进制,换算成10进制就是6.5M<BR>      tffs 16208K+49034K=15M+48M=63M 这儿单位是10进制的K,所以换算成M则需要/1024<BR>      romflash 408K+romflash1(未知大小)= 估计应该是1M<BR>      rootfs 55500=54.2M<BR>      全部加起来 大概 124.7,所以估计应该是128M Flash空间<BR><BR>      如果使用的是PXA262,则CPU上就自带256Mx16bit的FLASH=64MB Flash,那么要达到128M ,则需要外挂一块64M FLASH。如果使用的是PXA270,则是直接外挂了一块128M FLASH<BR><BR>      既然都要用外挂的FLASH,要我肯定会采用PXA270,这样以后芯片还可以升级成更高主频的,不知道MOT的选择如何。<BR><BR>      INTEL的PXA CPU很有意思,通过采用的不同主频的CPU和背在背上不同的FLASH芯片来构成各种规格的PXA CPU,就是说PXA262是2颗芯片,1颗312Mhz的CPU和他背上焊接着1颗64M的FLASH。<BR><BR>      分析内存大小<BR>      # cat /proc/meminfo<BR>        total:    used:    free:  shared: buffers:  cached:<BR>      Mem:  47722496 46727168   995328        0  1085440 25358336<BR>      Swap:        0        0        0<BR>      MemTotal:        46604 kB<BR>      MemFree:           972 kB<BR>      MemShared:           0 kB<BR>      Buffers:          1060 kB<BR>      Cached:          24764 kB<BR>      SwapCached:          0 kB<BR>      Active:          23052 kB<BR>      Inactive:        16764 kB<BR>      HighTotal:           0 kB<BR>      HighFree:            0 kB<BR>      LowTotal:        46604 kB<BR>      LowFree:           972 kB<BR>      SwapTotal:           0 kB<BR>      SwapFree:            0 kB<BR>      Committed_AS:    60948 kB<BR><BR>      看来总共可用供使用的内存大为46604,大概45.5M左右,对比任务关系器,估计可以用的大概27M左右,很小了,大的文件都打不开 :(。不过自然界中是不存在48M的内存的,2、8、16、32、64、128、都是成倍的关系,如果是64M的内存,不知道MOT把其他内存做何用处了???<BR>      /ram和/tmp倒是要用一定内存<BR><BR>      再来分析CPU的型号<BR>      # cat /proc/cpuinfo<BR>      Processor       : Intel XScale-Bulverde rev 7 (v5l)<BR>      BogoMIPS        : 291.63<BR>      Features        : swp half thumb fastmult edsp<BR>      CPU implementor : 0x69<BR>      CPU architecture: 5TE<BR>      CPU variant     : 0x0<BR>      CPU part        : 0x411<BR>      CPU revision    : 7<BR>      Cache type      : undefined 5<BR>      Cache clean     : undefined 5<BR>      Cache lockdown  : undefined 5<BR>      Cache unified   : harvard<BR>      I size          : 32768<BR>      I assoc         : 32<BR>      I line length   : 32<BR>      I sets          : 32<BR>      D size          : 32768<BR>      D assoc         : 32<BR>      D line length   : 32<BR>      D sets          : 32<BR><BR>      Hardware        : Motorola Ezx Platform<BR>      Revision        : 0000<BR>      Serial          : 0000000000000000<BR><BR>      总的来说: CPU是INTEL xscale PXA270,硬盘是128M 用户可用50M 硬盘支持扩展到2G,内存64M 系统可用45.5M 用户可用27M<BR><BR>      更正:问过INTEL的芯片代理,据他们报料说MOTO的方案用的是PXA271,CPU自带32M Flash和32M sdram。那E680I应该用是CPU(自带32M flash + 32M sdram)+64Mflash(外挂) +外挂一片sdram(16M或32M 可能多半是16M)=96M flash + 48M SDRAM<BR><BR>      比原来推测的少了32M flash,原因是rootfs应该使用了压缩,所以按一般文件50%的压缩比来看,也是可以解释的过去的。<BR><BR>      以上都是猜测,如果有时间,应该写个模块,读一下CPU的寄存器,那就真的是清楚了 :)<BR>      顺便提一下,linux对虚拟内存支持可以用一下方式鉴别<BR>      ps aux | grep kswapd<BR>      看看是否有kswapd进程,如果有则可以支持虚拟内存,用swapon命令来启动虚拟内存<BR><BR>      测试了一下用SD卡扩展虚拟内存,可惜 bensonwu 提供的swap文件是12M的,使用我用picsel看较大的PDF文件还是内存不够,还想扩得更大。自己用dd做了一个64M的swap文件,swapon居然不认识,晕。没有办法,还是用bensonwu 提供的吧,cp .swapfile .swapfile1,swapon .swapfile1,我想用2个swap文件达到扩24M的目的。打开PDF文件,还是内存不够,看看swap文件的使用率,<BR><BR>      # swapon -s<BR>      Filename                        Type            Size    Used    Priority<BR>      /mmc/mmca1/.swapfile            file            12280   7660    1<BR>      /mmc/mmca1/.swapfile1           file            12280   12276   2<BR><BR>      还没有满嘛,通过任务管理器看,唉,接近93%了<BR><BR>      这样就给我们一个明确的提示,手机原有内存45.5M,可扩展的虚拟内存7660+12276=19936K=19.5M 。这样说明系统软件认定的最大内存空间为45.5+19.5=64M,这也就验证了我上面的观点,E680i用的是64M的内存,只是由于一部分内存用作他用,用户只能用45.5M,而他的软件则没有想到我们会自己把虚拟内存打开,所以他还是按硬件配置的64M来做管理内存,导致其实有更大的虚拟内存也用不了。<BR><BR>      在这种情况下,那一部分内存用作他用的空间即使利用起来,也和使用虚拟内存一样,总量只能达到64M,好处只是这19.5M的速度要比虚拟内存要快很多很多。<BR><BR>      如果管理内存配置是做在文件中,这个限制应该很容易去掉,如果他直接做死在程序中,那就基本上没有改的可能了。<BR><BR>      本来手机的内存也是够大的,主要是怪picsel太傻,看PDF,你本来就是一页一页看,为什么要把所有页都load到内存中。在台式机上可以这样做,移植到手机上,就不能这样了,还当是台式机有海量内存呀。
发表于 2009-5-20 20:15:28 | 显示全部楼层
呵呵 大家好奇嘛 来观看下~~~~  


















〖厦门空间生活网〗 你我的厦门家园,版主申请进行中,申请QQ:842062626(加入请注明:申请版主)
快速回复 返回顶部 返回列表