keil編譯問題

2021-09-10 22:09:49 字數 1168 閱讀 5268

問題2:debug限制

「keil cx51編譯器提供三條編譯模式控制命令:small,compact,large,它們對變數儲存器空間的影響如下。

small:所有變數都被定義在8051微控制器的片內ram中,對這種變數的訪問速度最快。另外,堆疊也必須位於片內ram中,而堆疊的長度是很重要的,實際棧長取決與不同函式的巢狀深度。採用small編譯模式與定義變數時指定data儲存器型別具有相同效果。

compact:所有變數被定義在分頁定址的片外xram中,每一頁片外xram的長度為256位元組。這時對變數的訪問是通過暫存器間接定址(movx @r0,movx @r1)進行的,變數的低8位位址由r0和r1確定,變數的高8位位址由p2口確定。採用這種模式時,必須適當改變配置檔案startup.a51中的引數:pdatastart和pdatalen;同時還必須對uvision2的「options選項/bl51 locator 標籤頁/pdata框」中鍵入合適的位址引數,以確保p2口能輸出所需要的高8位位址。採用compact編譯模式與定義變數時指定pdata儲存器型別具有相同效果。

large:所有變數被定義在片外xram中(最大可達64kb),使用資料指標dptr來間接訪問變數(movx @dptr),這種編譯模式對資料訪問的效率最低,而且將增加程式的**長度。採用large編譯模式與定義變數時指定xdata儲存器型別具有相同效果。」

s:註冊時要選 developers kits 版本

待續。。。

KEIL編譯檔案

keil rvmdk編譯後的資訊 program size code 86496 ro data 9064 rw data 1452 zi data 16116 code是 占用的空間 ro data是 read only 唯讀常量的大小,如const型 rw data是 read write 初始...

刪除KEIL編譯資訊

我個人而言,在學習stm32的過程中,利用keil5mdk每次編譯完乙個程式,檔案裡就會生成好多的編譯資訊檔案 本來光核心的 通常只有2m左右,編譯完通常會膨脹到20m 而且學習之後,隨著學習進度,一般是不會再重新學習之前的程式的 僅我個人而言,因為已經學過了,除非很不紮實,不然實在沒必要再去學一次...

keil編譯器很奇怪的問題

問題描述 用keil除錯一段原本可以正常執行的 在其中某處插入一句無意義的語句 可以是不能被執行到的 編譯之後再執行就會出現錯誤。原因猜測 插入的語句雖然不會對程式邏輯造成影響,但是它卻導致了程式最終不能正常執行,那就說明它對編譯結果產生了影響,具體是什麼影響,怎麼看,抓耳撓腮不得其解tt 此問題在...