Keil C編譯器的變數儲存分配

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   資料   

  • 問題:以下是我編譯工程後出現的錯誤:

      *** ERROR L107: ADDRESS SPACE OVERFLOW
           SPACE:   DATA   
           SEGMENT: _DATA_GROUP_
           LENGTH:  0020H
        Program Size: data=134.3 xdata=226 code=3544

 

  • 問題描述:Data資料區段的地址空間溢出,從描述可以知道編譯器儲存了三塊資訊: 134位元組的資料區段,226位元組的擴充資料區段和3544位元組的程式碼片段。

                   當前我所使用的晶片是STC的STC15W408AS。

  • 問題原因:查詢STC15W408AS的資料手冊不難知道,其儲存空間包括256位元組的idata和256位元組的xdata(內部擴充,非外部擴充)。4k以上的flash用以儲存代碼。

                        而256byte的idata又可以劃分為:1.低128byte的idata為傳統的8051ram區

                                                                     2.高128byte的idata為8052擴充的ram區

                                                            

         低128byte又可劃分為工作寄存器區,可位定址區,使用者ram區和堆棧區。

                                                                   

                        Keil C編譯器一般情況下優先將變數儲存在位址範圍為30H-7FH的使用者ram區。但是當工程中主函數在進行函數調用時,會將當前所使用

                        的變數暫存到堆棧區以在函數返回的時候正常恢複程式的上下文。如果需要暫存的資料量太大,會導致30H到7FH段的儲存空間不夠用。

  • 解決方案:C51編譯器支援Linker Location Controls來實現絕對儲存位置的指定,這樣可以人為指定變數的儲存位置。編譯器根據關鍵字將變數劃分到指定的

                       儲存位置。方法見MDK的help手冊。

struct alarm_st  {  unsigned int alarm_number;  unsigned char enable flag;  unsigned int time_delay;  unsigned char status; };xdata struct alarm_st alarm_control;

                       xdata指定該變數儲存在內部擴充ram區,idata指定該變數儲存在內部ram的高128byte區。這樣可以保證堆棧區有足夠的空間來實現程式內容相關的切換。

                                                                  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.