OpenJTAG除錯S3C2440裸板程式

2021-08-19 19:02:39 字數 1927 閱讀 7687

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

0x02 開啟opengui

如何用openjtag連線開發板,這裡跳過,開啟電源,先開啟connect,再開啟telnet

0x03 命令列進行除錯

詳細指令如下:

poll 查詢目標板當前狀態

halt 中斷目標板的執行

resume [address] 恢復目標板的執行,如果指定了 address,則從 address 處開始執行

step [address] 單步執行,如果指定了 address,則從 address 處開始執行

reset 復位目標板

bp [hw] 在位址 addr 處設定斷點,指令長度為 length,hw 表示硬體斷點

rbp 刪除位址 addr 處的斷點記憶體訪問指令(memory access commands)

mdw ['phys'] [count] 顯示從(物理)位址 addr 開始的 count(預設是 1)個字(4 位元組)

mdh ['phys'] [count] 顯示從(物理)位址addr 開始的count(預設是1)個半字(2位元組)

mdb ['phys'] [count] 顯示從(物理)位址 addr 開始的 count(預設是 1)個位元組

mww ['phys'] 向(物理)位址 addr 寫入乙個字,值為 value

mwh ['phys'] 向(物理)位址 addr 寫入乙個半字,值為 value

mwb ['phys'] 向(物理)位址 addr 寫入乙個位元組,值為 value

load_image [『bin』|『ihex』|『elf』]

將檔案載入位址為 address 的記憶體,格式有『bin』、『ihex』、『elf』

dump_image

將記憶體從位址 address 開始的 size 位元組資料讀出,儲存到檔案中

verify_image [『bin』|『ihex』|『elf』]

將檔案與記憶體 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 獲得虛擬位址對應的實體地址

使用JLink燒寫bin檔案到S3c2440

我自己有乙個mini2440的板子,我學習了bootloader這一節,想做一下實驗。網上有不少的文章講如何使用jlink燒程式到mini2440,我總結了一下,主要的步聚如下 3 使用u boot命令將自身寫到nandflash或norflah。首先要安裝jlink驅動,然後就是正確的連線,最後是...

S3C2450 Bootloader除錯總結

s3c2450的整個bootloader包括四個部分 1 eboot.whimory 2 nbl1.irom sd 3 nbl1.lsb 4 nbl2 實現功能 生成三個有用的檔案 block0img.nb0,eboot.nb0 eboot.bin,以及irom sd eboot.nb0。其中前兩個...

IAR除錯S3C6410的筆記(一)

最近公司的專案需要用到s3c6410。經過多方斟酌,最後選定飛凌的核心板 不是廣告,只是因為它引出的管教比較多,而且有定位孔。最近飛凌和友善因為flash問題打的火熱,挺有意思 悲催的是keil只支援到arm9,iar沒有現成的工程例程。沒辦法,只能用飛凌給的rvds2.2來除錯裸機了 什麼rvds...