烧写f2812 flash的困惑续

yepengju   2006-12-13 13:41 楼主
   非常感谢两位高手的指点,使我明白了很多。
   但俺还有不明白之处需要向两位高手请教。比如,EEWORLD给的例子程序中的flash.cmd文件一般为:
MEMORY
{
PAGE 0 :
   OTP         : origin = 0x3D7800, length = 0x000800
   FLASHJ      : origin = 0x3D8000, length = 0x002000
   FLASHI      : origin = 0x3DA000, length = 0x002000
   FLASHH      : origin = 0x3DC000, length = 0x004000
   FLASHG      : origin = 0x3E0000, length = 0x004000
   FLASHF      : origin = 0x3E4000, length = 0x004000
   FLASHE      : origin = 0x3E8000, length = 0x004000
   FLASHD      : origin = 0x3EC000, length = 0x004000
   FLASHC      : origin = 0x3F0000, length = 0x004000
   FLASHB      : origin = 0x3F4000, length = 0x002000
   FLASHA      : origin = 0x3F6000, length = 0x001FF0
   BEGIN       : origin = 0x3F7FF6, length = 0x000002
   PASSWDS     : origin = 0x3F7FF8, length = 0x000008
   ROM         : origin = 0x3FF000, length = 0x000FC0
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E
         
PAGE 1 :
   /* SARAM                     */     
   RAMM0M1    : origin = 0x000000, length = 0x000800

   /* Peripheral Frame 0:   */
   DEV_EMU    : origin = 0x000880, length = 0x000180
   FLASH_REGS : origin = 0x000A80, length = 0x000060
   CSM        : origin = 0x000AE0, length = 0x000010
   XINTF      : origin = 0x000B20, length = 0x000020
   CPU_TIMER0 : origin = 0x000C00, length = 0x000008
   CPU_TIMER1 : origin = 0x000C08, length = 0x000008                 
   CPU_TIMER2 : origin = 0x000C10, length = 0x000008                 
   PIE_CTRL   : origin = 0x000CE0, length = 0x000020
   PIE_VECT   : origin = 0x000D00, length = 0x000100
   .
   .
   .
   上述文件中PAGE 0 (程序存储器)定义的PASSWDS存储空间为存放锁flash的密码空间,
而PAGE 1 (数据存储器)中定义的CSM存储空间为设置锁和解锁flash的钥匙(也既是烧写
插件中的key0~key7)。
    俺的不明白之处在于如果我定义把程序代码存放在 FLASHA 存储空间,但由于代码很大,可能会超出
FLASHA 存储空间,由于代码连续存放,它会不会跑到 PASSWDS 存储空间而覆盖掉PASSWDS,这样的话
不就相当于对flash加密上锁吗?而这密码自己也不知使啥,所以锁死flash。
    对于CSM存储空间也一样,要是把代码放在与CSM 存储空间相邻的存储空间,会不会因代码过大而覆盖
掉CSM 存储空间,这样的话也不相当于给flash加密了吗?
    俺是真的不明白,上次稀里糊涂的给锁死了一块芯片,害得花了几百,现在不太明白还是不敢烧写
flash,连动都不敢动。
    请高手指点指点啊,不胜感谢!!!

回复评论 (2)

呵呵,如果程序能到达PASSWORD(0x3f7ff8),那么它必然经过0x3f7ff6........它可是个跳转点!
点赞  2006-12-16 02:53
可以避开这个区域看看
点赞  2006-12-16 08:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复