<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM匯編調(diào)試

          ARM匯編調(diào)試

          作者: 時間:2016-11-20 來源:網(wǎng)絡 收藏
          最近在學習ARM的匯編,但是ARM不像x86,可以很方便的調(diào)試。不過還好有虛擬機,而且還有GDB這樣萬能的調(diào)試器。Google了很久,又結(jié)合自己的實踐,終于成功的調(diào)試了ARM的匯編,在此向?qū)RM嵌入式感興趣的同學分享一下。


          首先說明需要的工具
          1. QEMU這個模擬器不僅可以模擬x86,還可以模擬ARM和MIPS,可謂強大
          2. GDB(源代碼)不用說了,萬能調(diào)試器,但是需要從源代碼編譯
          3. arm-linux交叉工具鏈我用的是自己開發(fā)板配套的3.4版本,不過去www.uclinux.org隨便下載一個就可以(不過貌似uclinux被GFW了……)

          先編譯GDB,設置target為ARM平臺:
          $ ./configure --target=arm-linux
          $ make

          本文引用地址:http://www.ex-cimer.com/article/201611/318852.htm

          $ make install

          注:默認目錄/usr/local/bin/

          OK,開始寫匯編程序,sample代碼很簡單,給3個寄存器賦值,之后死循環(huán)。注意一定要死循環(huán),否則的話會遇到非法指令或者未知指令。

          =======test.S========
          .globl _start
          _start:
          mov r0, #0
          mov r1, #1
          mov r2, #2
          loop:
          b loop
          =======EOF=========

          編譯:
          $ arm-linx-as -o test.o test.S
          鏈接:
          $ arm-linux-ld -o test test.o
          此時可以用objdump查看test的內(nèi)容:
          $ arm-linux-objdump -d test
          接下來就是調(diào)試了,用qemu啟動gdb端口監(jiān)聽:
          $ qemu-arm -g 11111 test
          之后啟動gdb,注意啟動的時候要指明test,不能啟動之后用file指定test(為什么不能不清楚,不過是試驗結(jié)果):
          $ arm-linux-gdb /PATH_TO_TEST 注意這里的gdb不是系統(tǒng)的gdb,而是剛剛編譯好的gdb
          (gdb) target remote localhost:11111 設置目標為本機11111端口
          (gdb) disassemble 反匯編
          (gdb) display /10i $pc-16 這個命令是顯示當前pc附近的10條指令,代替調(diào)試x86程序的list命令
          (gdb) si si,不是s,是單步執(zhí)行指令,如果是s的話就會執(zhí)行到下一個標號處。類似的還有ni
          (gdb) info register 嗯,這個就是查看寄存器的值啦~
          (gdb) x /16 0 這個是查看0x00000000開始的16個字(32 bits per word)的內(nèi)存信息

          差不多就知道這些了,有一個問題是不知道如何設置指令的斷點,以后再試吧……
          如果直接運行程序,直接

          qemu-arm test
          現(xiàn)在可以邊看書邊動手實踐了~QEMU還支持Thumb指令集和Jazelle指令集,應該都可以這樣調(diào)試的



          關(guān)鍵詞: ARM匯編調(diào)

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();