mini2440 + jlink 第一步

使用硬件:FriendlyArm mini2440 開發板一個,J-Link v7 一個。
工做平臺:可運行 virtual box 版 winxp 的 FC13。
linux

這個 J-Link 有很大的欺騙性,其表面塑料殼上有 www.100ask.net 和 OpenJTAG 字樣,這讓我一直試圖以 OpenJTAG 的方式操縱它。但賣家給個人清單上確實代表「一個J-LINK全功能仿真器V7帶USB轉串口功能」,唉,這個殼子實在是讓人無力吐槽了。Anyway,若是你在linux 下 lsusb 看到相似:
Bus 002 Device 005: ID 1366:0101 SEGGER J-Link ARM
別再懷疑了,你手裏的是 J-Link。若是你用 OpenOCD,interface 用 jlink 吧。
windows

s3c2440A 啓動模式有2個,你們所熟知的從 nand 和從 nor 啓動:機械點說,是從nand 或 nor 拷貝前4k數據到片內ram,而後把 pc 寄存器瞄準片內ram開始工做cpu。所以不管哪一種啓動模式nand和nor都是能夠訪問的,區別只在片內ram的地址空間。nand模式下是0x0,nor模式下是0x40000000。
以前看了韋東山的《嵌入式Linux應用開發徹底手冊》,這本書自己仍是不錯的,只惋惜書中標配的 s3c2440A 開發板不是我手頭這個,這意味着外圍電路接法會有不一樣,例如個人 mini2440 有6個按鍵且全接在GPG上,在作key_led 這個實驗時就不能照搬代碼了。啓動模式會影響 .text 段和 sp 指針位置,關於這個後面還會說到。
.net

用 OpenOCD 在 Linux 上玩 J-Link 一直不順利,這讓我不得不先使用  windows。若是你和我同樣使用的虛擬機,在其設備菜單上把SEGGER J-Link勾上就夠了。安裝 Setup_JLinkARM_V402.exe會獲得 J-Link Commander 和 J-Link GDB Server還有其餘幾個程序,但我目前只用了這兩個。
1. 連好 J-Link,記着你用的啓動模式,開發板上電。
2. 打開 J-Link Commander,若是正常或顯示一下板子信息,具體看相關文檔。
3. 默認會處在 halt 狀態,若是不放心輸入 'h' 按回車;halt後能夠用'regs'看當前各寄存器狀態。
4. loadbin foo.bar 0x0/0x40000000,這裏選0x0仍是0x40000000取決於你怎麼啓動的板子,顯然nand用0x0,nor用0x40000000,由於如今只有這點片內ram可用。
5. 輸入'g'回車。
J-Link 不是徹底穩定,若是有時程序跑飛了,可能和你的芯片設置以及 jtag 速率有關係,通常重複上述3~5就夠了。中途能夠'h'和'regs'查看寄存器狀態,看看是否是還在你掌控中。指針


另外還能夠用 J-Link GDB Server配合Linux上的 arm-linux-gdb 進行調試。
1. 連好 J-Link,記着你用的啓動模式,開發板上電。
2. 打開 J-Link GDB Server,若是正常會顯示 Jtag/Target 狀態等信息,也就是會有1個紅燈加3個綠燈。
3. 在Linux裏打開arm-linux-gdb foo,這個foo就是用arm-linux-gcc 編譯出來的待測程序了。在編譯的時候就已經指定好連接路徑了(用-T),必定要和當前的啓動模式配套(這裏耗時很多,淚奔...)。
4. gdb 中輸入 target remote WINDOWS-IP:2331,若是沒有防火牆攔着你到WINDOWS-IP的路徑,J-Link GDB Server最後一盞綠燈將亮起。
5. 下來就是在 gdb 裏輸入 load 和 c了,load將用編譯時指定的加載路徑載入二進制碼,c將退出halt狀態開啓cpu。在gdb裏若是想看寄存器狀態,先ctrl+c在 i  r 就行了。
調試


這些成功以後又想試試踢開 winxp,改用 OpenOCD做 gdb server,注意到啓動模式和J-Link 不徹底穩定這兩個因素後,一切也都比較順利了。用了 OpenOCD 0.7.0(當前最新的 release),配合 mini2440.cfg 和 jlink.cfg。編譯的時候別忘了把 --enable-jlink 帶上。
server

相關文章
相關標籤/搜索