中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AM335x的U-Boot/SPL 的CCS 調(diào)試

        基于AM335x的U-Boot/SPL 的CCS 調(diào)試

        作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

        在基于Linux的軟件開(kāi)發(fā)流程中,第一步就是U-Boot/SPL(SecondProgram Loader)的移植。在移植中遇到問(wèn)題比較常見(jiàn),而U-Boot/SPL的調(diào)試手段比較簡(jiǎn)陋,不便于迅速找到問(wèn)題。利用仿真器可以單步調(diào)試的特點(diǎn),就可以迅速定位到出問(wèn)題的代碼所在位置,加速移植的調(diào)試過(guò)程。本文主要介紹如何用+emulator調(diào)試基于的U-Boot/SPL。

        本文引用地址:http://www.antipu.com.cn/article/201609/304511.htm

        1. Linux啟動(dòng)過(guò)程以及U-Boot/SPL調(diào)試代碼的準(zhǔn)備

        1.1 [url=]AM335x Linux[/url]的啟動(dòng)過(guò)程

        AM335x Linux的啟動(dòng)主要包括ROM,SPL, U-Boot 和kernel四個(gè)啟動(dòng)步驟:

        A. ROM code

        ROM code是固化在芯片內(nèi)部的代碼,當(dāng)上電時(shí)序正確,而且晶振等芯片啟動(dòng)所需的條件都具備時(shí),AM335x會(huì)從ROM code開(kāi)始運(yùn)行。

        ROM code首先會(huì)讀取sys_boot引腳上的配置,以確定存放SPL的存儲(chǔ)器,或者可以獲取SPL的外設(shè)。

        具體可以參考AM335x technical reference manual中的第26章 Initialization。

        ROM code會(huì)從相應(yīng)的地方讀取/獲取SPL,并運(yùn)行SPL。

        B. SPL

        SPL 和U-Boot 是bootloader的兩個(gè)階段。這里分為兩個(gè)階段的原因是, ROM code中不會(huì)配置DDR,時(shí)鐘等最小系統(tǒng),所以ROM code只能把bootloader加載到片上SRAM中,而片上SRAM對(duì)成本影響很大,所以通常很小,例如在AM335x上只有64K,不足夠放下整個(gè)U-Boot,所以將U-Boot分成兩部分,SPL和U-Boot。

        SPL主要的職責(zé)就是初始化DDR,時(shí)鐘等最小系統(tǒng),以讀取U-Boot,并加載到DDR中。具體來(lái)看,SPL 由ROM code加載到片上SRAM的起始位置,也就是0x402F0400。SPL會(huì)進(jìn)一步對(duì)芯片進(jìn)行配置,主要包括以下幾個(gè)方面以完成其主要職責(zé):

        a. 配置ARM core。 主要包括對(duì)中斷向量表,cache,MMU等的配置。

        b. 配置時(shí)鐘系統(tǒng),主要是PLL等。這個(gè)是配置各個(gè)功能模塊的基礎(chǔ)。

        c. 配置UART,timer等。主要用于輸出必要的調(diào)試信息,或者提供些時(shí)鐘工具。

        d. 配置I2C和PMIC。這個(gè)主要是為了配置電源管理芯片。

        e. 配置DDR。

        f. 配置 U-Boot所在的存儲(chǔ)器或者外設(shè)。

        完成配置后,SPL會(huì)讀取U-Boot,并運(yùn)行U-Boot。

        C. U-Boot

        U-Boot 主要的工作就是正確加載Kernel。和SPL類似,U-Boot也是要加載下一個(gè)階段的image,但是U-Boot提供了更多外設(shè)的支持和更多的調(diào)試工具。所以,U-Boot也要進(jìn)行各個(gè)模塊的配置,上述SPL配置的部分, 除了DDR外,U-Boot也會(huì)根據(jù)需求重新配置(這里重置主要是U-Boot是一個(gè)開(kāi)源工程,其要兼容某些特殊的芯片,從而需要做重載)。此外,U- Boot也會(huì)對(duì)網(wǎng)口,SD卡等根據(jù)需求進(jìn)行配置。

        U-Boot 和SPL的工作流程比有一點(diǎn)是有較大差異的,就是會(huì)對(duì)自身進(jìn)行一次重載。這個(gè)在后面介紹U-Boot調(diào)試的時(shí)候,會(huì)有具體介紹。

        完成配置后,U-Boot 會(huì)從相應(yīng)的存儲(chǔ)器或者外設(shè)讀取Kernel,并傳遞參數(shù)給kernel,運(yùn)行kernel。

        D. Kernel

        Kernel運(yùn)行起來(lái)就代表Linux運(yùn)行起來(lái)了,表明了啟動(dòng)過(guò)程的結(jié)束。

        1.2 U-Boot/SPL 調(diào)試代碼的準(zhǔn)備

        1.2.1下載U-Boot/SPL 代碼

        U-Boot/SPL的代碼在一個(gè)包里面,通過(guò)編譯宏來(lái)分別編譯。目前TI U-Boot/SPL 代碼發(fā)布主要有兩個(gè)渠道,具體如下

        A. 通過(guò)GIT開(kāi)源的方式發(fā)布:

        git://arago-project.org/git/projects/U-Boot-am33x.git

        可以獲取最新的代碼,包含了最新的bug的修復(fù)。

        B. 通過(guò)TI的官網(wǎng)的EZSDK發(fā)布:

        http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/sdk/AM335xSDK/latest/index_FDS.html

        EZSDK是正式發(fā)布的軟件包,經(jīng)過(guò)全面測(cè)試,性能穩(wěn)定,U-Boot/SPL在board-support 目錄中??梢赃x擇EZSDK作為開(kāi)發(fā)的基礎(chǔ)代碼。當(dāng)有問(wèn)題時(shí), 可到GIT上查找最新的代碼是否有bug fix。

        1.2.2 U-Boot/SPL的編譯

        為了便于用進(jìn)行調(diào)試, 在編譯上需要注意兩點(diǎn),其一,是要加入調(diào)試信息,就是為了加入symbol等信息;其二,去掉編譯器的性能優(yōu)化編譯選項(xiàng),這個(gè)主要是因?yàn)?,?yōu)化后的代碼執(zhí)行順序相對(duì)C代碼會(huì)有調(diào)整。

        針對(duì)這兩點(diǎn),在Uboot/SPL中,需要在config.mk中進(jìn)行修改:

        A. 在CFLAG 和 AFLAG中加入調(diào)試編譯選項(xiàng),從而加入調(diào)試信息:

        278ALL_AFLAGS = $(AFLAGS) $(AFLAGS_$(BCURDIR)/$(@F)) $(AFLAGS_$(BCURDIR)) –g

        279ALL_CFLAGS = $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) –g

        B. 去掉 CFLAG中的編譯選項(xiàng), -O2(U-Boot中默認(rèn)是-O2)

        61 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2-fomit-frame-pointer

        編譯過(guò)程可以參考http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide

        1.2.3 可執(zhí)行文件

        經(jīng)過(guò)編譯后,就會(huì)生成可執(zhí)行文件,也就是我們通常所說(shuō)的image,這里會(huì)生成的image主要用AM335xLinux啟動(dòng)的兩個(gè)階段,MLO(SPL)和U-Boot。

        這里,SPL生成的image在am335/U-Boot-am33x/am335x/中,

        A. am335/U-Boot-am33x/MLO 負(fù)責(zé)AM335x啟動(dòng)的第一階段。

        B. U-Boot- 作為帶有調(diào)試信息的image,可以在中用作導(dǎo)入調(diào)試信息。

        C. U-Boot-.bin 包含有調(diào)試信息,是調(diào)試時(shí)需要的image。

        D. U-Boot-spl.map 這個(gè)文件里面存儲(chǔ)了spl的memory map信息,可以找到各函數(shù)入口的地址。

        U-Boot生成的image在U-Boot-am33x/am335x中,具體如下:

        A. U-Boot.img負(fù)責(zé)AM335x啟動(dòng)的第二階段

        B. U-Boot 包含有調(diào)試信息,屬于ELF格式,是調(diào)試時(shí)需要的image。

        C. U-Boot.map這個(gè)文件里面存儲(chǔ)了U-Boot的memory map信息,可以找到各函數(shù)入口的地址

        調(diào)試環(huán)境主要包含3個(gè)部分,仿真器,集成調(diào)試環(huán)境和開(kāi)發(fā)板。下面將逐一介紹:

        2.1 仿真器(emulator)

        目前支持AM335x的仿真器的型號(hào)比較多,有XDS560v2,XDS510,XDS100v2, XDS100v3,等,比較常見(jiàn)的是XDS560v2和XDS100v2。

        XDS560v2,性能好,速度快,具有trace功能,但是價(jià)格偏貴。 XDS100v2價(jià)格比較便宜。 其具備和XDS560v2一樣的基本調(diào)試功能,只是XDS100v2的速度相對(duì)略慢。


        上一頁(yè) 1 2 3 下一頁(yè)

        關(guān)鍵詞: AM335x spl u-boot CCS

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉