www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]先說(shuō)明一下在加電之前的這個(gè)軟硬件情況,這個(gè)三星公司根據(jù)ARM920T軟核生產(chǎn)的這個(gè)s3c2410集成了64M的sdram和64M的nandflash存儲(chǔ)器。Vivi和UCOS都存儲(chǔ)在這個(gè)nandflash中,因?yàn)閚andflash斷電后不會(huì)丟失信息。這個(gè)VIVI是

先說(shuō)明一下在加電之前的這個(gè)軟硬件情況,這個(gè)三星公司根據(jù)ARM920T軟核生產(chǎn)的這個(gè)s3c2410集成了64M的sdram和64M的nandflash存儲(chǔ)器。Vivi和UCOS都存儲(chǔ)在這個(gè)nandflash中,因?yàn)閚andflash斷電后不會(huì)丟失信息。這個(gè)VIVI是三星公公司為ARM系列芯片書(shū)寫(xiě)的bootloader,用于開(kāi)發(fā)階段,做系統(tǒng)的引導(dǎo)程序。

VIVI存放在flash 0x00000000地址開(kāi)始的地方,UCOS存放在flash 0x03f30000地址開(kāi)始的地方。ARM920T開(kāi)機(jī)從flash啟動(dòng),啟動(dòng)時(shí)把flash前4K (即vivi的前4K)COPY到SDRAM(這種啟動(dòng)方式是利用Nandflash啟動(dòng),COPY前4K到sdram中是硬件自動(dòng)實(shí)現(xiàn)的),vivi的前4K 代碼中有用于COPY剩余VIVI的代碼。執(zhí)行完這些代碼之后,VIVI就控制了FLASH的讀取,串口的控制以及用戶(hù)shell接口,當(dāng)然它還有其他一些功能。當(dāng)用戶(hù)執(zhí)行bootucos命令時(shí),VIVI會(huì)把ucos相關(guān)代碼從flash 0x03f30000 COPY到SDRAM0x30008000的地方。當(dāng)然也可以設(shè)置VIVI自動(dòng)引導(dǎo)ucos執(zhí)行。當(dāng)代碼copy完畢后,vivi會(huì)把PC值改成0x30008000去執(zhí)行。

我們先說(shuō)一下為什么我們非要說(shuō)具體的那個(gè)地址那,咱們前面說(shuō)了,編譯好的程序有一個(gè)load地址,一個(gè)真正運(yùn)行的地址,0x30008000這個(gè)地址就是咱們說(shuō)的程序的裝載地址,這個(gè)地址是我們用編譯器指定的地址,也就是通過(guò)在ads工程里后綴名是scf的文件配置的。在這個(gè)文件里我們配置了程序的裝載地址和程序運(yùn)行的地址,我們?yōu)槭裁匆付ㄟ@兩個(gè)地址那?我們整個(gè)工程的程序是最后鏈接時(shí)一次性固定的絕對(duì)地址,也就是說(shuō)最終鏈接出來(lái)的程序地址和真正運(yùn)行的地址是一致的。只不過(guò)我們一般不會(huì)把這些代碼直接放到相應(yīng)的部位去罷了,其中一個(gè)原因就是,我們?yōu)榱嗽诓患与姇r(shí)保存程序會(huì)把程序放到非易失的存儲(chǔ)設(shè)備里去,而我們運(yùn)行時(shí)會(huì)把程序copy到運(yùn)行速度比較快的sdram中去。也就是說(shuō),本來(lái)這些靜態(tài)鏈接的程序的執(zhí)行地址都是固定的了,我們要在這些程序運(yùn)行之前要把這些程序放對(duì)位置。我們必須知道我們的程序裝載到什么地址和真正在什么地址運(yùn)行。這樣我們才能知道那些裝載地址和運(yùn)行地址不一樣的程序段應(yīng)該怎么搬運(yùn)。至于搬運(yùn)的工作,你可以自己手工實(shí)現(xiàn),也可以用ADS提供的庫(kù)函數(shù)實(shí)現(xiàn)。

跳轉(zhuǎn)到這個(gè)0x30008000去執(zhí)行這個(gè)地址處的指令,我們這個(gè)工程編譯出來(lái)后誰(shuí)是第一條指令那?我們平時(shí)寫(xiě)的程序都是從main()函數(shù)開(kāi)始執(zhí)行,但我們這個(gè)嵌入式的開(kāi)發(fā)可不是哦,在分析完啟動(dòng)代碼后你就知道了,在執(zhí)行的所謂的main()函數(shù)之前要做很多工作的。

arm映像文件的入口點(diǎn)有兩種類(lèi)型:一種是映像文件運(yùn)行時(shí)的入口點(diǎn),稱(chēng)為初始入口點(diǎn)(initial entry point),另一種是普通入口點(diǎn)(entry point).
初始入口點(diǎn)是映像文件運(yùn)行時(shí)的入口點(diǎn),每個(gè)映像文件只有一個(gè)唯一的初始入口點(diǎn),它保存在ELF頭文件中。假如映像文件是被操作系統(tǒng)加載的,操作系統(tǒng)是通過(guò)跳轉(zhuǎn)到該初始入口點(diǎn)處來(lái)加載該映像文件。
普通的入口點(diǎn)是在匯編中用ENTRY偽操作定義。他通常用于標(biāo)志該段代碼是通過(guò)異常中斷處理程序進(jìn)入的。這樣連接器刪除無(wú)用的段時(shí)不會(huì)將該段代碼刪除。一個(gè)映像文件中可以定義多個(gè)普通入口點(diǎn)。
應(yīng)該注重的是,初始入口點(diǎn)可以使普通入口點(diǎn),但也可以不是普通入口點(diǎn).

初始入口點(diǎn)必須滿(mǎn)足下面兩個(gè)條件:
1.初始入口點(diǎn)必須位于映像文件的運(yùn)行時(shí)域內(nèi)。
1.1飽含初始入口點(diǎn)的運(yùn)行時(shí)域不能被覆蓋,他的加載地址和運(yùn)行地址必須是相同的。
可以使用連接選項(xiàng)-entry address來(lái)指定映像文件的初始入口點(diǎn)。這時(shí),address指定了映像文件的初始入口點(diǎn)的地址值。對(duì)于地址0x0處為rom的嵌入式應(yīng)用系統(tǒng),可以使用-entry 0x0來(lái)指定映像文件的初始入口點(diǎn)。這樣當(dāng)系統(tǒng)復(fù)位后,自動(dòng)跳轉(zhuǎn)到該入口開(kāi)始執(zhí)行。假如映像文件是被一個(gè)加載器加載的,該映像文件該映像文件必須包含一個(gè)初始化入口點(diǎn)。這種映像文件通常還包含了其他普通入口點(diǎn),這些普通入口點(diǎn)一般為異常中斷處理程序的入口地址。
當(dāng)用戶(hù)沒(méi)有指定-entry address時(shí),連接器根據(jù)下面的規(guī)則決定映像文件的初始入口點(diǎn)。
假如輸入的目標(biāo)文件中只有一個(gè)普通入口點(diǎn),該普通入口點(diǎn)被連接器當(dāng)成映像文件的初始入口點(diǎn)。
假如輸入的目標(biāo)文件中沒(méi)有一個(gè)普通入口點(diǎn),或者其中的普通入口點(diǎn)多于一個(gè),則連接器生成的映像文。

我們編譯好的可執(zhí)行文件時(shí)去除了頭格式的映像文件,我們講的本來(lái)就是操作系統(tǒng),所以這個(gè)程序不是通過(guò)初始入口點(diǎn)執(zhí)行的第一條指令,應(yīng)該是通過(guò)普通入口點(diǎn)來(lái)執(zhí)行的,通常是中斷向量表。也就是程序中用偽指令entry指定的指令段的第一條指令。我們用ADS1.2打開(kāi)ucos的學(xué)習(xí)資料的工程中的第十個(gè)實(shí)驗(yàn)(ucos系統(tǒng)移植實(shí)驗(yàn))。在startup文件夾中有一個(gè)startup.s 的匯編程序,這個(gè)就是ucos的啟動(dòng)代碼了。由ENTRY偽指令指定的第一條指令是b ColdReset,所以第一條指令就是它了。

咱先不管這個(gè)第一條指令的問(wèn)題,我的目的是把我學(xué)習(xí)的UCOS講述給你聽(tīng),但這需要一定的講述規(guī)范,希望我說(shuō)的你能聽(tīng)懂,愿意看下去,我想這樣做:

先從整體描述一下整個(gè)過(guò)程,然后在分階段概括這一階段整個(gè)硬件和軟件系統(tǒng)干了什么?為什么會(huì)有這些順序?為什么要這么干?在這個(gè)過(guò)程中可能思維隨即發(fā)散到任何有關(guān)系的知識(shí)點(diǎn)。最后我將逐一分析源代碼,在分析源代碼時(shí)遇到的問(wèn)題,都將解決,當(dāng)然包括那些精華和美。還可能闡述一下我的理解和方法,以及我對(duì)學(xué)習(xí)的一些認(rèn)識(shí)。我是想按照一定的規(guī)范去寫(xiě)這個(gè)東東,但是我又不想完全按照一種思路去寫(xiě),畢竟我是隨意書(shū)寫(xiě)的。我的整體思路就是針對(duì)硬件和軟件在整個(gè)時(shí)間流里都干了什么?為什么要這么干為主要線(xiàn)路。在這個(gè)線(xiàn)路中涉及到的所有疑問(wèn)和知識(shí)點(diǎn)都將一一展開(kāi)闡述。我盡量做到自然,而不是強(qiáng)加給你一些生硬的概念,因?yàn)槿瞬幌矚g被。被學(xué)習(xí),被干活,被記憶。

理解UCOS最好的方式是閱讀其源代碼,一本很好的參考書(shū)是嵌入式實(shí)時(shí)操作系統(tǒng)ucos-ii,邵貝貝譯

聲明:在寫(xiě)這個(gè)文檔時(shí),我還有很多地方?jīng)]有真正弄明白,所以有些地方可能我也說(shuō)不清楚,但我會(huì)把我的疑問(wèn)寫(xiě)出來(lái),我什么時(shí)候想明白了,我會(huì)把它寫(xiě)出來(lái),如果你知道請(qǐng)你告訴我,我會(huì)很高興的。

在說(shuō)明一下現(xiàn)在的情況:現(xiàn)在ucos的所有代碼(包括啟動(dòng)的bootloader)都被vivi copy到0x30008000的內(nèi)存地址開(kāi)始的地方了,然后PC值改為0x30008000,取出這個(gè)地址放的arm指令就開(kāi)始執(zhí)行這條指令了。前面已經(jīng)分析完整個(gè)工程編譯出來(lái)的可執(zhí)行程序的第一條指令了。

好了,下面開(kāi)始說(shuō)整個(gè)班子以及UCOS的整體啟動(dòng)過(guò)程,只是大概的說(shuō)明流程,至于會(huì)為什么這樣的問(wèn)題等到具體詳解的時(shí)候在具體解釋。

硬件初始化,主要是讓硬件平臺(tái)處于一個(gè)可知的狀態(tài),重要的一點(diǎn)就是初始化C語(yǔ)言運(yùn)行環(huán)境。

UCOS初始化

UCOS運(yùn)行并執(zhí)行應(yīng)用程序

哎 ,這樣看的話(huà),整個(gè)過(guò)程還真挺簡(jiǎn)單的,哈。

下面具體講解硬件初始化階段,這個(gè)就真的比較麻煩了,但沒(méi)關(guān)系,咱們慢慢說(shuō)。

從具體代碼上看,它主要干了這些活:

關(guān)閉看門(mén)狗,(一個(gè)用于開(kāi)發(fā)階段的硬件,到代碼講解時(shí)具體說(shuō)明)

屏蔽中斷掩碼寄存器(現(xiàn)在整個(gè)硬件平臺(tái)的控制權(quán)都在UCOS,在初始化的時(shí)候,我們不希望被打擾,具體原因我們以后說(shuō))

初始化各個(gè)模式堆棧空間(堆??臻g很重要哦)

COPY中斷向量表(關(guān)于為什么要copy,我們?cè)诤竺嬲f(shuō))

初始化c庫(kù)環(huán)境

然后跳轉(zhuǎn)到主應(yīng)用程序(即我們平時(shí)說(shuō)的main()函數(shù))

下面這些代碼是用匯編寫(xiě)的代碼,其中分號(hào)后面的是注釋。

下面就以具體代碼為例,詳細(xì)講解啟動(dòng)代碼。

每個(gè)代碼塊做一個(gè)說(shuō)明,對(duì)于特別重要的代碼,我在代碼后面做詳細(xì)注釋。注釋寫(xiě)在//后面,如果此處有很重要知識(shí)點(diǎn)的話(huà),單獨(dú)起一段進(jìn)行說(shuō)明。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;

;;; Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.

;;;

;;; Startup Code for

;;; S3C2410 : Startup.s

;;;; by threewater 2005.2.22

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

GET 2410addr.s //引入2410addr.s文件里的內(nèi)容,作用像是c語(yǔ)言里的#include一樣。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; Some ARM920 CPSR bit discriptions

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Pre-defined constants

USERMODE EQU 0x10

FIQMODE EQU 0x11

IRQMODE EQU 0x12

SVCMODE EQU 0x13

ABORTMODE EQU 0x17

UNDEFMODE EQU 0x1b

MODEMASK EQU 0x1f

NOINT EQU 0xc0

I_Bit * 0x80

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉