s3c2416裸跑環境配置


      最近剛剛開始學習ARM-linux,上周買了塊tq2416的板子,給的Linux資料太復雜太深奧不願看,等不及想要把2416跑起來。於是到處找相關裸跑資料,可是用2416的人實在少,網上的資料更少,裸跑的資料幾乎是空白。最后在amobbs上找到一個相關的帖子http://www.amobbs.com/thread-5529091-1-1.html,並通過同事下載了Tifosi_分享的代碼,再通過自己的摸索,終於實現s3c2416的裸跑,這里向Tifosi_及我那位同事淵哥表示感謝!

    調試軟件環境:Keil uVision 4.7,這里需要特別注意,有些版本的Keil支持s3c2416 Device,但是不能通過編譯,例如Keil uVision 4.1,會提示不支持ARM926EJ-S

    調試工具:J-link V8

    目標板:tq2416,當然也可以是其它的板子,前提是引出JTAG引腳,這里一切描述以tq2416為例

    Keil配置:下載安裝好Keil uVision 4.7,創建一個新工程,進入target options對話框對編譯環境設置,這里主要設置的地方是Target選項、Debug選項和Utilities選項

Target選項設置

    這里使用2416的SRAM進行調試,但是我們這里似乎犯了一個錯誤,因為2416的用戶手冊上提供的memory map上明明標識SRAM的起始位置是0x40000000。其實我確實在這里犯了錯誤,而且這個錯誤持續了好幾天才發現。2416最先啟動的代碼是IROM中固化的程序,IROM的地址是0x00000000,它負責將所選啟動源的啟動代碼拷貝到SRAM,然后把SRAM的地址強制映射至0x00000000,至此,IROM消失了,運行的是SRAM中的代碼。自然,0x40000000處不再有SRAM。這塊被成為Steppingstone的SRAM一共64KB空間,上圖所示將其前32KB設置成ROM,相當於程序存儲器,后32KB設置成RAM,即數據存儲器。

Debug選項配置

    這里主要選擇下調試工具(J-LINK),更重要的是添加一個配置腳本文件(如上圖所示.\StartUp\Start.ini文件),這個腳本文件可以通過J-LINK在調試之前使CPU執行命令,這里主要是載入可執行文件以及設置程序執行起始地址,腳本文件內容如下:

1 FUNC void SetupForStart (void) 
2 {    
3     SP = 0x0000f000;
4     PC = 0x00000000;
5 }
6 LOAD .\Object\s3c2416.axf INCREMENTAL
7 SetupForStart();

     接下來設置Utilities選項,參照下圖即可

 Utilities選項配置

      完成上述設置后,保存,即完成了編譯調試環境設置。接下來需要寫一段代碼,以驗證2416能否正常運行,代碼比較簡單,是用匯編寫的計算1+...+100和的小程序。在工程"s3c2416"中,新建一個"s3c2416_Add.s"文件,寫入以下代碼:

 1             AREA    RESET, CODE, READONLY;, ALIGN = 3
 2             ARM
 3             ;PRESERVE8
 4 
 5     ENTRY
 6             
 7             LDR R0,=0x00            ;R0=0
 8             LDR R1,=0x00            ;R1=0
 9             LDR R2,=0x00008000      ;R2=0x00008000
10 ADDER       ADD R0,R0,#0x01         ;R0++
11             ADD R1,R1,R0            ;R1+=R0
12             CMP R0,#100             ;R0==100?LOOP:ADDER
13             BEQ LOOP
14             B    ADDER
15 
16             STR R1,[R2]              ;*(0x00008000)=R1
17 LOOP        B    LOOP                ;while(1);
18             END

      上述代碼的大概思路是:R0為計數器,從1到100;R1為累加器,記錄每次相加的結果;R2是一個指向0x00008000的指針,最終的結果將保存至上述地址;程序開始時先初始化寄存器的值,然后進入循環累加,累加結束后將結果保存至0x00008000處,最終進入一個死循環。保存文件與設置,編譯,無錯誤后便可開始調試。調試前需要保證J-link驅動裝好,並且與開發板上的JTAG口接好。

調試界面

      點擊調試按鈕,進入調試界面,調試開始,可以單步執行,觀察各寄存器的值及程序的執行步驟。程序的邏輯很簡單,對或錯關系不大,最重要的意義在於——終於能夠使s3c2416裸跑了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM