CC2530儲存空間——Code,cc2530儲存code

來源:互聯網
上載者:User

CC2530儲存空間——Code,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有著256K的Flash,其代碼儲存空間2-2(來自CC2530User‘s Guide)所示,但是51單片機只支援64K的訪問空間。

       於是CC2530便採用Bank映射的方式,地址空間0x0000-0x7FFF,作為ROOT,用於存放啟動代碼等,地址空間0x8000-0xFFFF用於映射不同的Bank(0~7),4(來自IARC/C++ Compiler Reference Guide)所示,需要訪問某個Bank的資料或代碼時,將該Bank映射到地址空間0x8000-0xFFFF。


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

註:

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儲存空間使用

 

        IAR中CC2530的有兩種代碼模式,Near和Banked。其中Banked模式是ZStack使用的模式,ZStack的ROM使用大約在100多KB。其中Near是普通的51單片機模式,只支援64KB的存取範圍。

        在目錄8051\src\lib中有一個iar_banked_code_support.s51檔案用於程式運行時自動切換Bank。


        測試代碼如下:

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

        其中BANK5,BANK4是串連設定檔”lnk51ew_CC2530F256_banked.xcl“定義的segment。運行結果如下:



        串口列印的調試資訊如下:





error code:-2147024882(儲存空間不足,不可以完成此操作)

那麼你修改了 合適的虛擬記憶體沒有, 在“電腦”右鍵 “屬性”===》進階設定=====》進階===》效能 進階。 一般修改為你的記憶體1.5倍就OK了,或者再大一些。 出現代碼錯誤:2147024882,也有可能是軟體出錯問題,建議更新你最近玩什麼遊戲與安裝了什麼軟體,進行升級補丁,更新最高版本。
 
CC2530怎寫延時函數

1.首先CC2530是增強51,代碼空間比較大,我們知道51的16位定址空間只有64K,對256K的CC2530而言,需要用代碼分塊頁機制(code banking)把代碼空間分成8個BANK(每個32K),才能定址所有的代碼空間,函數放在不同的BANK中,切換的過程是需要消耗時間的,這個過程對我們編程是不可見的,由編譯器在編譯的時候添加到程式中。
2.如果程式沒有關閉中斷,中斷也可能打斷延時函數,這樣也可能使延時不正確。
3.以上兩點就是你為什麼用以前51的思路來寫延時函數不準確的原因,如果想要得到比較精確的延時,可以用定時器來做,如果使用了Z-Stack,可以使用的時鐘有T1/3/4。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.