/**
******************************************************************************
* @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啟動盤》。http://www.linuxidc.com/Linux/2015-02/113494.htm
2、CPU無法被探測的原因可能是電源管理芯片未給4412的CoreSight所在的IP核供電,JTAG口Vref引腳無參考電壓輸出,JLink探測不到這個參考電壓無法確定CPU的高低電平范圍。
3、board文件夾下只保留samsung子文件夾,cpu文件夾下只保留arm_cortexa9子文件夾,刪除其它架構文件夾即可。
一、制作可以連接Jlink調試器的最小啟動盤
為了解決上面第二個問題,我們需要在制作TF卡啟動盤的時候,除了燒寫BL1,還需要燒寫另外一段使能電源管理芯片(PMC)的BL2,但是這個BL2只是使能PMC,無其它任何代碼。
修改start.s開頭部分如下:
然後編譯uboot,燒寫BL1和CodeSign4SecureBoot文件夾下生成的checksum_bl2_14k.bin。注意此時一個可以連接JLink調試的TF卡就制作完成了,在以後整個u-boot調試階段這個啟動盤都不需要再動!
二、暫時修改代碼基地址
修改board/samsung/smdkc210/config.mk
TEXT_BASE = 0x02023400
同時取消lowlevel_init.S中的check_mem定義
原因參看《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下方的匯編區,匯編區的源碼顯示是一定正確的。
做完以上幾點後,uboot的調試就可以完美進行了,剩下的問題基本都是代碼問題。
仍然存在的問題:
當調試到uboot中時鐘初始化代碼時,JLink會失去連接,估計是時鐘的調整直接影響了CoreSight模塊,JLink被迫與CPU斷開。
所以,時鐘初始化在uboot調試階段,需要直接放到gdb初始化命令中做,待其它部分都調試完成,再轉移uboot代碼當中。
以上腳本會在以後博客中放出(以完成請參看《JLink V8初始化Exynos4412腳本》)。
附:
1、三星BL1.bin下載 密碼:7jpr
2、制作好的checksum_bl2_14k.bin下載 密碼:av3y
到Linux公社1號FTP服務器下載
------------------------------------------分割線------------------------------------------
FTP地址:ftp://ftp1.linuxidc.com
用戶名:ftp1.linuxidc.com
密碼:www.linuxidc.com
在 2016年LinuxIDC.com\3月\jLink V8調試Exynos 4412 u-boot的幾點補充\
下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm
------------------------------------------分割線------------------------------------------