jLink V8調試exynos 4412 u-boot的幾點補充


/**
******************************************************************************
* @author    Maoxiao Hu
* @version   V1.0.0
* @date       Dec-2014
******************************************************************************
* < COPYRIGHT 2014 ISE of SHANDONG UNIVERSITY >
*******************************************************************************
**/
 
上接博客 《使用eclipse與jLink V8調試exynos 4412 u-boot》,以下簡稱 《博客1》
 
提前聲明:經過本人親自測試與修改,用JLink是完全可以實現uboot調試的。
 
《博客1》中初步實現了調試環境的搭建,但是經過實驗,出現的問題很多:
1、沒有考慮eMMC中代碼/數據完全被破壞,無法啟動的情況。
2、如果只使用三星提供的BL1燒寫到TF卡上啟動,JLink無法探測到CPU。
3、eclipse自動匹配匯編/源碼錯誤,造成無法識讀。
 
據分析原因或解決方法如下:
1、eMMC中數據/源碼被完全破壞,需要從TF/SD卡啟動,制作方法參考我的另一篇博客 《[小知識]如何在Mac下使用TF/SD 卡制作Exynos 4412 u-boot啟動盤》
2、CPU無法被探測的原因可能是電源管理芯片未給4412的CoreSight所在的IP核供電,JTAG口Vref引腳無參考電壓輸出,JLink探測不到這個參考電壓無法確定CPU的高低電平范圍。
3、board文件夾下只保留samsung子文件夾,cpu文件夾下只保留arm_cortexa9子文件夾,刪除其它架構文件夾即可。
 

一、制作可以連接Jlink調試器的最小啟動盤

為了解決上面第二個問題,我們需要在制作TF卡啟動盤的時候,除了燒寫BL1,還需要燒寫另外一段使能電源管理芯片(PMC)的BL2,但是這個BL2只是使能PMC,無其它任何代碼。
修改start.s開頭部分如下:
NewImage
然后編譯uboot,燒寫BL1和CodeSign4SecureBoot文件夾下生成的checksum_bl2_14k.bin。注意此時一個可以連接JLink調試的TF卡就制作完成了,在以后整個u-boot調試階段這個啟動盤都不需要再動!
 

二、暫時修改代碼基地址

修改board/samsung/smdkc210/config.mk

TEXT_BASE = 0x02023400 

 

同時取消lowlevel_init.S中的check_mem定義

NewImage

原因參看《Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00.pdf》圖3-1。

三、去掉MMU使能函數

mmu_on

四、eclipse里替換以下gdb初始化命令

target remote localhost:2331
monitor sleep 10
monitor halt
monitor sleep 500
load
break _start

補充:如果eclipse中的源碼經過調整顯示仍然錯誤,不用管它,直接看eclipse下方的匯編區,匯編區的源碼顯示是一定正確的。

NewImage

做完以上幾點后,uboot的調試就可以完美進行了,剩下的問題基本都是代碼問題。

仍然存在的問題:

當調試到uboot中時鍾初始化代碼時,JLink會失去連接,估計是時鍾的調整直接影響了CoreSight模塊,JLink被迫與CPU斷開。
所以,時鍾初始化在uboot調試階段,需要直接放到gdb初始化命令中做,待其它部分都調試完成,再轉移uboot代碼當中。
以上腳本會在以后博客中放出(以完成請參看 《JLink V8初始化exynos4412腳本》)。
附:
1、三星 BL1.bin下載 密碼:7jpr
2、制作好的 checksum_bl2_14k.bin下載 密碼:av3y


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM