在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S3c2410軟件調(diào)試總結(jié)

            S3c2410軟件調(diào)試總結(jié)

            作者: 時(shí)間:2013-12-05 來源:網(wǎng)絡(luò) 收藏

            硬件平臺(tái)介紹
            我的硬件平臺(tái)主要是 + FPGA(cyclone EP1C6),出于成本的考慮,我買了一塊2410的核心板,然后自己畫了一塊底板,主要的模塊有:

            arm920 CORE RISC CPU
            EP1C6 Altera cyclone series Fpga
            AT89S52 atmel 51
            RTL8019as 10M network device
            Sdram x2 total: 64M byte
            K9F5608 Nand flash 32M byte
            AM29LV160D x2 NOR flash total: 4M byte
            64LV25616 SRAM 512K byte
            UDA1341 IIS Interface
            24C256 EEPROM
            USB Host 1, Dev 1
            SD interface
            UART x2

            ADS下C語(yǔ)言的入口方式和ROM鏡像文件的生成
            這部分介紹下ADS下如何生成可以運(yùn)行的ROM鏡像文件,我們知道當(dāng)程序下載到flash中運(yùn)行的時(shí)候,對(duì)于RW、ZI數(shù)據(jù)就存在著兩個(gè)環(huán)境,一個(gè) load環(huán)境,一個(gè)是exec環(huán)境,有時(shí)候由于速度的需要RO數(shù)據(jù)也要重新加載,那么對(duì)RO數(shù)據(jù)也是有兩個(gè)環(huán)境。編譯器產(chǎn)生ROM鏡像文件時(shí)候,這三塊數(shù)據(jù)的存放依次為RO、RW、ZI,并且地址空間時(shí)連續(xù)的。但是到了運(yùn)行的時(shí)候,RW數(shù)據(jù)必須被拷貝到SDRAM(SRAM)中以支持讀寫,這就是我們所謂的運(yùn)行環(huán)境。那么就要有一段代碼去完成這個(gè)任務(wù),在本章中我們介紹如何生成這段代碼。

            玩過2410的朋友都知道2410初始化代碼中有一段搬運(yùn)RW和ZI初始化的代碼,沒錯(cuò),它確實(shí)能夠在一定程度上完成上面所說的任務(wù),只要我們?cè)谏啥M(jìn)制可執(zhí)行代碼的時(shí)候在編譯器鏈接項(xiàng)的地方填寫正確的RO&RW地址,(比如RO = 0, RW = 0x30000000), 那么將程序下到 NOR flash的零地址并從nor flash啟動(dòng),啟動(dòng)代碼會(huì)將RW&ZI數(shù)據(jù)弄到0x30000000,程序就能跑起來了。

            但是各位有沒有想過,怎么把RO代碼弄到SDRAM中(有時(shí)候這是必須的,比方后面我將提到用nor flash的bootloader燒寫nor flash)?如果直接設(shè)RO=0x30000000,那么這段代碼下載到0地址肯定跑不起來,除非是ROPI,這個(gè)要求就高了。這里我們有必要從介紹 ADS中規(guī)定的C語(yǔ)言入口開始,ADS中從初始化匯編代碼跳到main函數(shù)有兩種方式,main和__main:

            1,在__main入口的模式下,匯編代碼的指令為 b __main, 編譯器在跳轉(zhuǎn)到main之前還要作一系列的工作,這其中就包括對(duì)運(yùn)行環(huán)境的初始化,在ADS COMPILE GUIDE>中提到: copies nonroot(RORW) execution regions from load addr to exec addr, and Zeros ZI region. 借助編譯器,我們就可以定義更為復(fù)雜的運(yùn)行環(huán)境,這里要用到scatter文件(.scf),比如我們要的目標(biāo)運(yùn)行環(huán)境是:將啟動(dòng)代碼以外的所有代碼都拷貝到SDRAM的初始地址中運(yùn)行,比且把RW段設(shè)在0x30800000,那么對(duì)應(yīng)的scf文件如下:

            FLASH 0x0 0x200000
            {
            EXEC1 0x0 0x200000
            {
            2410init.o(Init, +First)
            __main.o(+RO) ; copy code
            * (Region$$Table) ; RO/RW addresses to copy
            * (ZISection$$Table) ; ZI addresses to zero
            }
            EXEC2 0x30000000 0x00800000
            {
            *(+RO)
            }
            SDRAM 0x30800000 0x00800000
            {
            *(+RW,+ZI)
            }
            }
            ;Sections named Region$$Table and ZISection$$Table which contain the addresses of the code/data to be copied.

            當(dāng)然,在這種模式下,有些入口函數(shù)必須自己重定義,比如__user_initial_stackheap,具體參見ADS文檔。

            2, main入口模式即簡(jiǎn)單的跳轉(zhuǎn),這里起始不用“main”這個(gè)名字也無所謂。那么編譯器不會(huì)作任何的初始化,所有運(yùn)行環(huán)境的建立都要* 我們自己,這就是大家看到的那段搬運(yùn)代碼存在的理由。但是它實(shí)現(xiàn)一些簡(jiǎn)單的運(yùn)行環(huán)境是可取的,如果用scf定義的復(fù)雜環(huán)境,雖然我相信是可以做到的,但是可能會(huì)比較麻煩。我還沒深究。

            另外,這里提一下semihost,因?yàn)槲覀冊(cè)诳碅DS的東西的時(shí)候經(jīng)常出現(xiàn)這個(gè)詞,我也一直受其困擾。這里我簡(jiǎn)單說一下自己的見解,semihost 僅僅是一種調(diào)試手段,它的機(jī)理就是利用MULTI_IDE等工具捕捉目標(biāo)環(huán)境運(yùn)行過程中產(chǎn)生的值為0x123456的SWI中斷,然后向上位機(jī)的ADS 軟件發(fā)送對(duì)應(yīng)的調(diào)試信息。對(duì)于我們最后的應(yīng)用代碼來說,都是nonsemihost類型的。如果我們?cè)谡{(diào)試中使用semihost,那么只要在最后重定義 ADS中的一些使用到的庫(kù)函數(shù)(比如fputc),代碼就可以從semihost向nonsemihost的類型轉(zhuǎn)變。不過到目前為止,我還沒體會(huì)到 semihost的威力。


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

            關(guān)鍵詞: S3c2410 軟件調(diào)試

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉