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...