一点一滴做好嵌入式2

单片机内外部RAM
        下面主要讲小芯片,即连MCU都算不上的一些小芯片。

         芯片基本都包括其内部的RAM、外部RAM、EEPROM、Flash 等

 Flash 程序存储器,其有擦写寿命,而且小芯片的Flash擦写寿命都不高,所有在程序中

最好不要随意的去擦写。不过有些数据需要掉电不丢失,而操作次数不多的话可以考虑动

态存储在Flash中。
         
        存储大小对于芯片来说是很紧张的一件事情。一个小芯片的存储容量是很有限的。

虽然 比尔盖茨说过:64K is enough for everybody ! 但是这是针对程序存储器而言。

小芯片的内部RAM容量都很小,但是访问速度很快。外部RAM容量相对较大,但是访

问速度慢。 而且芯片寻址在内部的基础上还增加了两位。 也就是说内部指针变量大小

两个 字节的话,外部指针变量大小则要占四个字节(有的芯片是三个字节)。
       
        一般在芯片编程的时候,新手很少去注意变量定义在哪里,指针指向的变量是外部

RAM的还是内部RAM的。因为直接用C编出来实现功能就OK了,哪还管那么多。其实

不然。做程序员就要做一个有洁癖的程序员,追求代码质量。
      
        在处理内外部RAM时,使用很频繁的变量放在内部RAM中,不怎么频繁访问的常

量就放在外部RAM。 当内部RAM快用完了,怎么办呢?直接就用外部RAM吗?但是这

样访问速度就慢了。怎么去解决这个问题,很容易做到。首先将变量定义在外部RAM

中,然后在内部RAM中定义一个指针,该指针指向外部RAM变量。注意指针变量不要

定义在外部RAM中,这样起不到提高访问速度的效果。
      
        现在就剩下最后一个问题了,如何指定变量定义在外部RAM和内部RAM中呢?这

个问题当你拿到芯片手册和该芯片配套编译器说明的时候,你就可以从上面找到。

51单片机大家都很熟悉,它就有伪指令,去指定变量定义在内部RAM还是外部RAM,

还可以直接把变量写入Flash中。芯片编译器会说明这些细节,还有不要过分相信编译

器。

你可能感兴趣的:(嵌入式,RAM,访问速度)