zoukankan      html  css  js  c++  java
  • CC2530存储空间——Code

    硬件平台:CC2530-F256

    开发环境:IAR 8051(版本号 8.10

    參考:

    1、《CC2530 User's Guide.pdf》(swru191c

    2、《IAR C/C++ Compiler Reference Guide.pdf

    3、《IAR Linker and Library Tools.pdf

     

    一、CC2530代码空间介绍

     

          CC2530-F256有着256KFlash,其代码存储空间如图2-2(来自CC2530User‘s Guide)所看到的,可是51单片机仅仅支持64K的訪问空间。

    CODE Memory Space

           于是CC2530便採用Bank映射的方式,地址空间0x0000-0x7FFF,作为ROOT,用于存放启动代码等,地址空间0x8000-0xFFFF用于映射不同的Bank0~7),如图4(来自IARC/C++ Compiler Reference Guide)所看到的,须要訪问某个Bank的数据或代码时,将该Bank映射到地址空间0x8000-0xFFFF

    Banked code memory layout

            映射不同Bank时,需使用FMAP寄存器。

    Flash Bank Map

    注:

    CC2530 ROM的不同地址:

    物理地址:0x00000~0x3FFFF

    Bank地址

    Bank0:0x00000~0x07FFF

    Bank1:0x18000~0x1FFFF

    Bank2:0x28000~0x2FFFF

    Bank3:0x38000~0x3FFFF

    Bank4:0x48000~0x4FFFF

    Bank5:0x58000~0x5FFFF

    Bank6:0x68000~0x6FFFF

    Bank7:0x78000~0x7FFFF

     

    二、CC2530存储空间使用

     

            IARCC2530的有两种代码模式,NearBanked。当中Banked模式是ZStack使用的模式,ZStackROM使用大约在100KB。当中Near是普通的51单片机模式,仅仅支持64KB的訪问范围。

    Target Set

            在文件夹8051srclib中有一个iar_banked_code_support.s51文件用于程序执行时自己主动切换Bank

    Code Bank Set

            測试代码例如以下:

    __code const char code0_buf[10000]@0x48000 = {0, 1};
    
    #pragma location="BANK4"
    void demo1_code()
    {
    	TRACE("FMAP: %02x
    ", FMAP);
    	TRACE("%02x %02x
    ", code0_buf[0], code0_buf[1]);
    }
    
    __code const char code1_buf[10000]@0x58000 = {2, 3};
    
    #pragma location="BANK5"
    void demo2_code()
    {
    	TRACE("FMAP: %02x
    ", FMAP);
    	TRACE("%02x %02x
    ", code1_buf[0], code1_buf[1]);
    }
    

            当中BANK5BANK4是连接配置文件”lnk51ew_CC2530F256_banked.xcl“定义的segment。执行结果例如以下:

    debug memory


            串口打印的调试信息例如以下:

    Test



  • 相关阅读:
    react 入坑笔记(五)
    练习
    高级指令
    进阶指令
    基础指令
    VMware 备份操作系统
    Ubuntu 用户的切换
    形态学转换
    图像模糊
    域名拆分 tld
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4004032.html
Copyright © 2011-2022 走看看