關於PIC 編譯錯誤 Error - section \'.***.o\' can not fit the section 的解決方案

關於PIC 編譯錯誤 Error - section \'.***.o\' can not fit the section  的解決方案

出處:http://www.pic16.com/bbs/TopicOther.asp?t=5&BoardID=10&id=33539

    默認情況下, MPLAB C18 假定對象不跨越存儲區邊界。可以創建長度大於 256 字節
的對象,但要遵循下面的步驟來創建一個多存儲區對象:


1. 必須使用#pragma idata或#pragma udata僞指令將對象分配到自己的段中。
    #pragma udata buffer_scn
    static char buffer[0x180];
    #pragma udata


2. 對對象的訪問必須通過指針來進行。
    char * buf_ptr = &buffer[0];
    ...
    // examples of use
    buf_ptr[5] = 10;
    if (buf_ptr[275] > 127)
    ...


3. 必須在鏈接描述文件中創建一個跨越多個存儲區的新區域。
修改前的鏈接描述文件:
    DATABANK NAME=gpr2 START=0x200 END=0x2FF
    DATABANK NAME=gpr3 START=0x300 END=0x3FF
修改後的鏈接描述文件:
    DATABANK NAME=big  START=0x200 END=0x37F PROTECTED
    DATABANK NAME=gpr3 START=0x380 END=0x3FF


4. 必須將對象所在的段(步驟 1 中創建)分配到這個新區域(步驟3 中創建)。添
加一條 SECTION 僞指令到鏈接描述文件。
SECTION NAME=buffer_scn RAM=big

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章