基于AM335x的U-Boot/SPL 的CCS 調(diào)試
XDS560v2和XDS100v2在PC機(jī)上的驅(qū)動(dòng)(Windows,Linux)都已經(jīng)包含在CCS中了,所以安裝了最新版的CCS,就會(huì)安裝相應(yīng)的驅(qū)動(dòng)。
2.2 集成開發(fā)環(huán)境
TI有自己的集成開發(fā)環(huán)境(IDE)CCS.目前最新的版本是基于Eclipse IDE架構(gòu)的,界面新穎方便。
下載地址 http://processors.wiki.ti.com/index.php/Download_CCS。
CCS有Windows版本和Linux 版本,后面會(huì)在介紹調(diào)試過程中具體介紹兩者的差異。
2.3 開發(fā)板
目前,針對(duì)不同的應(yīng)用,TI發(fā)布了基于AM335x的多個(gè)開發(fā)板。其中BeagleBone,Starter Kit和ICE上配置了基于FT2232的xds100v2。而GPEVM和IDK上引出了CTI JTAG接口。
這里選擇GP EVM和 Spectrum DigitalXDS560v2 作為調(diào)試平臺(tái)。
3. CCS 調(diào)試Uboot/SPL的具體步驟
下面正式開始CCS的調(diào)試。調(diào)試的過程主要分為導(dǎo)入U(xiǎn)-Boot/SPL 工程, CCS 連接AM335x,代碼調(diào)試等幾個(gè)部分。
3.1 導(dǎo)入CCS代碼
在CCS中, Menu File -》 Import … 選擇 Makefile 方式導(dǎo)入,如下圖所示:
在ezsdk中,U-Boot/SPL所對(duì)應(yīng)的Makefile的具體路徑如下:
/home/sitara/ti-sdk-am335x-evm-05.05.00.00/board-support/U-Boot-2011.09-psp04.06.00.08
如前面所提到,U-Boot 和SPL的源碼在同一個(gè)文件夾的,通過不同的Makefile管理不同的編譯宏來區(qū)分的。這里導(dǎo)入的是U-Boot的代碼對(duì)應(yīng)的Makefile,會(huì)相應(yīng)的導(dǎo)入U(xiǎn)-Boot對(duì)應(yīng)的預(yù)編譯選項(xiàng),因?yàn)槠浒怂械拇a。而對(duì)于SPL,也會(huì)相應(yīng)的一起帶入,只是在CCS中看到的代碼的宏定義有些不對(duì),但這個(gè)不影響調(diào)試。
3.2 CCS 連接 AM335x.
主要分成仿真器的連接,target連接和Debug配置等幾部分:
3.2.1 [url=]仿真器的連接[/url]
對(duì)于 AM335x GP EVM選用Spectrum DigitalXDS560v2 的20 pin的接口板,連在baseboard的J2口上即可,注意pin腳的順序,不要把JTAG 接口插反了。
對(duì)于beaglebone,StarterKit,ICE等,這些板子已經(jīng)把XDS100v2 仿真器集成到板子上了,所以直接用usb線連到PC機(jī)上即可。
A. CCS的配置
CCS的配置主要包括Target的配置和連接兩部分。
a. Target 配置
Target的配置包含兩個(gè)部分,一個(gè)是仿真器(XDS560v2),另一個(gè)就是SOC(AM335x)。具體操作如下:
i. View -》 Target Configurations
ii. 點(diǎn)右鍵選擇New Target Configuration.
iii. 新建一個(gè)叫做AM335_EVM的target.
iv. Connection中選擇 Spectrum Digital XDS560V2 STM USB Emulator.
v. 對(duì)于XDS100v2 , 可以選擇 Texas InstrumentsXDS100v2 USB Emulator.
vi. 在Board or Device 中選擇AM335x.
vii. 點(diǎn)擊Save 保存。
viii. 點(diǎn)擊Test Connection 看是否能夠正常連接。
配置target成功后,會(huì)看到如下界面
3.2.2 Target 連接
A. 右鍵選中Target Configurations中已配置好的target,AM335x_EVM.ccxml, 在右鍵菜單中選擇Launch SelectedConfiguration,連接成功后,可以得到下圖
此時(shí),PC 和仿真器以及仿真器和SOC的JTAG連接成功,但是ARM core還沒有連上。從圖中可以看到,有多個(gè)core的配置選項(xiàng),由于U-Boot/SPL,Linux 運(yùn)行在ARM coretex-A8 core上,這里只關(guān)注ARM core。
B. 在Debug窗口中,右鍵點(diǎn)擊CortxA8 core, 選擇Connect Target. 連接成功后,如下圖所示:
此時(shí),已經(jīng)成功連上AM335x的Cortex-A8 core了。
3.2.3 Debug配置
這里的debug配置,是對(duì)emulator連上core后行為的設(shè)置。 可以通過鼠標(biāo)右鍵點(diǎn)擊properties,得到以下界面:
在該頁配置中,在調(diào)試過程需要調(diào)整的就是Auto RunOptions,可以根據(jù)需要設(shè)置,當(dāng)加載了image后,core自動(dòng)運(yùn)行到指定的symbol,并且被JTAG接口所停住
調(diào)試U-Boot/SPL的方式有兩種,主要涉及如何加載image:一種是把image通過JTAG下載到片上RAM或者DDR中,然后導(dǎo)入 symbol,重置 PC指針到image的入口處,進(jìn)行調(diào)試;另一種,把image燒到SD卡或者其他啟動(dòng)存儲(chǔ)器上,啟動(dòng)板子,通過JTAG停住core的PC指針,導(dǎo)入 symbol,重置 PC指針到image的入口處,進(jìn)行調(diào)試。
下面會(huì)在具體步驟中說明這兩種方式如何操作:
A. 下載SPL image到AM335x中。
如果AM335x是從SD卡方式啟動(dòng),此時(shí) SPL image已經(jīng)被ROM code成功讀到片上 RAM中,就不需要加載 SPLimage了。
如果選擇SPL image通過CCS下載,鼠標(biāo)左鍵選擇CortxA8core , 然后在CCS菜單中, Tools -》 Load Memory, 選擇編譯好的SPL image U-Boot-spl.bin,如下圖所示:
選擇加載的地址。由于加載的U-Boot-spl.bin是RAW data,所以需要指定loadaddress,這個(gè)地址就是SPL的入口地址
對(duì)于AM335x,SPL的入口地址是0x402F0400,對(duì)應(yīng)的宏定義為CONFIG_SPL_TEXT_BASE, 該宏定義在include/configs/am335x_evm.h中。通過編譯出的map文件U-Boot-spl.map也可以查到,是 __startsymbol對(duì)應(yīng)的地址。
設(shè)定加載image內(nèi)型。 由于所有的代碼都是運(yùn)行在ARM(32bit)模式下。所以Type-size也要設(shè)成32bit。設(shè)置界面如下:
評(píng)論