OpenJTAG调试S3C2440裸板程序
0x00 懵逼
? ? 當你寫好的初始化代碼head.S和鏈接腳本uart.lds共同編譯出來的*.bin,燒錄到NandFlash中的時候,發現串口輸出一片空白,這時你的想法是什么,砸電腦還是干點其他有用的事?還是老實的搭建調試環境吧,上篇講過如何調試源碼級的代碼,但若是初始化代碼有問題,譬如sdram拷貝出問題或者鏈接腳本有問題的話,通過openjtag gui調試會比較靠譜。
0x01 燒錄
? ? 先寫一個腳本,利用oflash能快速的進行NANDFLASH燒錄,腳本如下:
oflash 0 1 0 0 0 E:\gongkong\eclipse_projects\uart8266\uart.bin pause? ? 六個參數,分別表示: JTAG類型、CPU類型、Flash類型、讀寫類型、偏移地址、文件。最后雙擊運行。
0x02 打開opengui
? ? 如何用openjtag連接開發板,這里跳過,打開電源,先打開connect,再打開telnet
0x03 命令行進行調試
????
? ?詳細指令如下:
????poll 查詢目標板當前狀態
????halt 中斷目標板的運行
????resume [address] 恢復目標板的運行,如果指定了 address,則從 address 處開始執行
????step [address] 單步執行,如果指定了 address,則從 address 處開始執行
????reset 復位目標板
????bp <addr> <length> [hw] 在地址 addr 處設置斷點,指令長度為 length,hw 表示硬件斷點
????rbp <addr> 刪除地址 addr 處的斷點內存訪問指令(Memory access commands)
????mdw ['phys'] <addr> [count] 顯示從(物理)地址 addr 開始的 count(缺省是 1)個字(4 字節)
????mdh ['phys'] <addr> [count] 顯示從(物理)地址addr 開始的count(缺省是1)個半字(2字節)
????mdb ['phys'] <addr> [count] 顯示從(物理)地址 addr 開始的 count(缺省是 1)個字節
????mww ['phys'] <addr> <value> 向(物理)地址 addr 寫入一個字,值為 value
????mwh ['phys'] <addr> <value> 向(物理)地址 addr 寫入一個半字,值為 value
????mwb ['phys'] <addr> <value> 向(物理)地址 addr 寫入一個字節,值為 value????load_image <file> <address> [‘bin’|‘ihex’|‘elf’]
????將文件<file>載入地址為 address 的內存,格式有‘bin’、‘ihex’、‘elf’
????dump_image <file> <address> <size>
????將內存從地址 address 開始的 size 字節數據讀出,保存到文件<file>中
????verify_image <file> <address> [‘bin’|‘ihex’|‘elf’]
????將文件<file>與內存 address 開始的數據進行比較,格式有‘bin’、‘ihex’、‘elf’????reg 打印寄存器的值
????arm7_9 fast_memory_access ['enable'|'disable']
????使能或禁止“快速的內存訪問”
????arm mcr cpnum op1 CRn op2 CRm value 修改協處理器的寄存器
????比如:arm mcr 15 0 1 0 0 0 關閉 MMU
????arm mrc cpnum op1 CRn op2 CRm 讀出協處理器的寄存器
?????比如:arm mcr 15 0 1 0 0 讀出 cp15 協處理器的寄存器
????arm920t cp15 regnum [value] 修改或讀取 cp15 協處理器的寄存器
????比如 arm920t cp15 2 0 關閉 MMU
????virt2phys virtual_address 獲得虛擬地址對應的物理地址????
總結
以上是生活随笔為你收集整理的OpenJTAG调试S3C2440裸板程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现视频关键帧提取(基于帧间
- 下一篇: 外设驱动库开发笔记13:MLX90614