MCU單晶片韌體設計

2015年3月6日 星期五

ARM Development Suite (ADS)使用



利用ARM Development Suite (ADS)了解ARM 組合語言


安裝ADS (ver 1.2) 後, 可以進入AXD,在options下 "Configure Target"為 ARMUL, 就可以設定ARM Emulator 環境, 開始去學習ARM 組語與了解ARM 架構。








 arm bootloader

按F8 可以Step In單步執行, 看見程式執行時ARM Register r0~r15及CPSR的變化, 並可看到不同運作模式下 FIQ, IRQ,SVC等的Register值變化。也可以看記憶體的變化。


反組譯


該如何從Assembly 跳到C

ARM 初始化程序 ,即一開始設定Exception Vector 並設定好對應的處理函式 (Exception Handler), 初始化 DRAM (即設定DRAM Controller), 指定ARM Stack Pointer (r13) 於DRAM Address, 以進入C 程式

在進入C之前, 尚須了解一個object code的結構,如 Code Section (.text), RW section, ZI  section(.bss)等。接著了解Linker的功能及Linker script 的意義及包含 Load Address (LMA)及Run address (VMA)的不同。一個程式的啓動順序, 包含copy from Load address to Run address), 配置程式執行記憶體空間 及初始化 .bss 區塊為零。最後執行Branch 指令跳到 C 函式, 此函式即為C的進入點。



待續...




沒有留言 :

張貼留言