找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
楼主: 旺财

[Treo650] 对TREO650上ROM、RAM的真正理解?

[复制链接]
发表于 2007-3-12 12:38 | 显示全部楼层
涨见识了............顶一下!
发表于 2007-3-12 13:02 | 显示全部楼层
晕……
/ J0 m9 q/ o. q5 I, B+ s我一直都没研究这个东东……5 D8 A! i. U" K) X
ROM?
5 J! z8 j0 T" l$ a  nRAM?/ [) O0 ?1 u; |5 r
DBCACHE?
& @( c( P' V5 ]! C5 AROM 和 RAM我不管了,DBCACHE 写它们有什么区别?它的大小如何看得出?我现在用RESETDOCTOT,里面的CACHE管理看到只有8M多,正常么?
发表于 2007-3-12 13:09 | 显示全部楼层
在我浮浅的认识就是:
6 }' j% ~, @. N0 S) U5 u; h总内存:ROM+RAM=326 c: N* w# T1 B; I8 z* l% t- M0 ^
除掉不可改变的ROM外,余下的就是RAM,可供用户使用。而DBCACHE呢,就相当于电脑的内存,运行程序时调用的一些临时文件。嗯……或许也相当于电脑内存的缓存区:
% U" d/ i8 ]9 o! O7 M$ E' Y
& n% c$ J0 h) U* L3 A4 V不搞研发,研究太深是浪费。:P
发表于 2007-3-16 01:14 | 显示全部楼层
palm 内存管理是平坦模式的,如果palm系统分用户态和内核态的话,一个程序的错误就不会影响到整个系统的稳定了。
2 R# ^" C. y, A2 R. [& `- h8 }    至于拷贝内存来运行程序,不光是palm,其他的系统,如linux,windows mobile都是需要将flash上的程序拷贝到内存来执行的,包括pc(程序是不可能直接在磁盘上运行的,当然有人可能会说,虚拟页表映射会使可执行文件不需要拷贝就可以加载,但是实际上缺页管理程序自动将需要执行的代码加载到物理内存去了)。各个不同的系统对内存的管理办法不一样,对于有页表管理的系统来说(linux,wm等),每个程序享用独立的虚拟地址空间(32位机为4G),一个应用的任何操作对于内存的操作都需要经过系统的内存管理单元的管理,它的任何破坏其他应用或者系统的操作都会被及时终止,因此在这种系统上的应用使非常安全的,即使使质量非常低劣的应用程序也不会导致整个系统的崩溃(除非它有意绕过内存管理)。! C5 B( ^$ W, j4 g0 @2 L  r
    而对于palm(palm我不是很熟,但是从它的表现来看的话,它的内存模式是平坦的),非法的操作可能使它占用的别的程序运行的空间,改写了别人的数据或者指令,导致程序崩溃,稍有不慎,可能改变系统运行的空间,导致系统崩溃,所幸它能够及时重启,所以palm的不稳定是与生俱来的,增大dbcache只是缓解了这个症状。
' K3 _2 m9 I9 [$ Y2 L4 e8 k8 {    这让我想起了win98和win2000,用过window98的人都知道98非常不稳定,稍有不慎就会引起死机,而后来的windows2000以及后续的windows版本都没有这种情况,原因是一样的,98的内核是基于dos实模式的(平坦的),而2000以后的版本以及linux都是基于保护模式的,除非plam版本增加了保护模式,否则它的稳定性是不可能和linux,wm相提并论的。4 O1 n1 O& X6 _' g* f- u# ?
    NVFS是个好东西,毕竟它在试图解决掉电不丢数据的问题,相比之下ppc2002就非常的土,为了不影响换电池,居然还引入一个叫做备份电池的东东,真是让人无法忍受。楼主的分析我觉得很有道理,只是不知道NVFS将内存数据flush到flash的频度是多少,如果过于频繁,我们就不得不面临flash寿命缩短的问题了。5 X  a2 U8 e4 _3 v8 F, W
# V8 E! G( s5 |* y6 W
[ 本帖最后由 scat 于 2007-3-16 01:23 编辑 ]
发表于 2007-3-20 17:45 | 显示全部楼层

一篇好文(转贴)

澄清关于650是否应该把程序装在卡里以节省ram空间的误区
' m9 W* y" H0 q3 C8 J) jantelope 2006-10-26 17:06:40  p2 Z; d% X/ x+ v: a
    在650论坛里经常会看到有争论程序到底应该装ram里还是装卡里.支持装卡里的一派总是说650的ram太小了.只有24M.装一些程序就只剩10来M 了.太多的程序会影响系统运行速度.所以能装卡里就装卡里.因此还引出了众多的工具如powerrun,zlink,TealAlias等等专门用来把 ram里的软件弄到卡上去以腾出ram空间., R# A% n* K& e+ v
事实真的如此吗?
$ L; R# F! D! v, L5 b. f    其实这是一种根深蒂固的误解!误解的来源就是ppc和smartphone.也就是微软的windowsmobile的概念.在早期的ppc里面.运行内存和存储内存是共用一个存储器的.所以在系统里都有一个设置.可以自己选择把空间主要用来进行存储还是运行.所以装多了软件以后就会带来运行空间的下降导致系统效率降低.这个观点在没玩过palm机的玩家心里造成了根深蒂固的观点.那就是程序装多了影响速度!但是这个理论到了650上就完全不成立了.7 l" }' Q/ M  S. F
    650第一次采用了所谓的NVFS.也就是掉电后不损失数据的文件系统.因此而引出了一个新的概念dbcache.这样就使palm的文件解构跟pc上的结构很相似.存储空间和运行空间完全分开了.这和palm以前的文件结构是完全不同的.下图是来自freetong的一张650的文件系统结构说明图.
( @$ T6 y8 `3 q4 F# {
/ R  H+ E- Y- i! F6 `6 v
    左侧NANDFLASH为掉电不掉数据的部分.右侧DRAM为掉电即丢失的部分.compressed rom就是系统rom的存放位置.user data就是我们所安装在ram里的程序存放位置.650的启动过程是这样的.系统重起后从rom里解压出系统文件到uncompressed rom里作为系统基本文件启动.然后从user data里把要常驻系统的程序复制到dbcache里运行.这样系统就完成了初始化.如果再运行其他程序的话就继续从userdata里调入dbcache里来运行.至于dynamicheap则是运算寄存器.和文件无关.5 a; o) c+ _, j& l
    由此可以看到.在ram里装程序的多少完全不会影响到系统的运行效率.只有常驻内存的程序多少才会影响系统效率.无论你是把程序装在ram里还是卡上.它都要通过dbcache来运行.因此尽量增大dbcache的空间才是正确的做法.
" T0 v- R6 a& {. J* f    那如何来增大dbcache的空间呢?事实上.dbcache的空间一般很容易被rom所占用.主要原因就是因为650的官方rom做的不太合理.有些无用的东西都塞在里面.所以系统启动时解压到uncompressed rom里后还放不下.于是就塞进了dbcache里.导致dbcache空间急剧减少.也导致了系统运行速度降低和不稳定的发生.所以要加快系统速度和提高稳定性.最可行的办法就是自己刷入一个新的精简rom.让系统rom文件解压后不占用dbcache空间,这样才能真正让系统运作如飞.
    另:其实系统不稳定的一个原因也是来自这个dbcache.因为它是一种全新的结构.很多plam上的程序对它的支持不是太好.导致系统在自动对dbcache进行清理的时候发生错误而重新启动.这个问题就不是我等所能解决的了.唯一的办法就是尽可能的使用650专用版的程序.或者使用rlock把程序彻底锁定在dbcache里以策安全.

4 z' ]# j5 k8 x  V* D; Q1 g; G; [: L" g* G" i/ O
! K( \" y, ~) B, Q
发表于 2007-3-20 18:06 | 显示全部楼层
坐着沙发学习一下:
发表于 2007-3-21 01:45 | 显示全部楼层
多大的ROM才不会占Dbcahe啊?那16MB没装满能不能当DBcache?也就是说有没有人DBcache达到10MB以上的?8 D7 g  w" ^$ w  D7 z3 w2 l- e
% J+ _; |6 E! B& N" v
这样看来最好的策略是:
8 b6 w# v, W7 Z" s* J/ D1、rom能减到多小就减到多小。
+ K; |& h/ `& L" r- {0 i3 T2、程序全装到ram,只留1MB空间就不少了。* ~" r4 d5 J" q& D3 i- e$ ?3 a
3、要用哪个程序就给锁住。这样就如果根本就不用没锁住的程序的话,绝不会出现故障。
% F8 Q1 U/ x! F1 G+ }) n2 e  w7 M* u7 c% o# t0 {
以上推论大家一起来讨论下!
发表于 2007-3-21 02:35 | 显示全部楼层
同样的内容重复发了4-5次罗...
- X5 `( a$ q% G4 t6 d! e( M; r
4 i# K  T0 U: ]$ K  C& r/ L/ x快些合并了,免得将来找不到
9 x; H1 @- t! M1 j# ^1 Y' p6 d( l6 f" c5 }3 K: H: [" C
不要认为自己原来的理解的概念就是完全正确的和不可更改的...其实从定义上讲,DBCACHE只是RAM的一部分而已..而且这一部分被系统直接控制了...' p! L; v6 N2 A) _0 \: e0 D: f3 a

# j" }. ^; T  h# ^1 S. l; h我在17楼里讲了自己的一些理解,希望对其他的朋友有帮助
: T1 p8 L4 U) \" T, [2 E1 z: c5 G6 {# m6 r
除了DBCACHE以外,大家一般说的RAM留的太小了肯定是不行的,因为数据在DBCACHE里用完后要写回来,这个时候对空余还是  有一些要求的.
发表于 2007-3-21 09:46 | 显示全部楼层
发表于 2008-1-11 01:09 | 显示全部楼层
这个问题困扰我太久太久了,从还没买treo至今一直是我的首要困惑,今天终于解决了
发表于 2009-5-23 15:58 | 显示全部楼层
把硬件芯片型号找出来就好理解了!
回复 支持 反对

使用道具 举报

发表于 2010-11-19 10:40 | 显示全部楼层
好帖子,加深下认识。。。
回复 支持 反对

使用道具 举报

发表于 2010-11-22 16:52 | 显示全部楼层
看完了总结了以下一点,不知对否" V7 {, @  C3 }4 @
也就是说DRAM里的内容就相当于PC机的内存,包括解压后的rom ,dbcache,dynamic heap
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2024-9-27 22:17 , Processed in 0.310467 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表