久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4132|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

keil下的s3c2440啟動(dòng)代碼分析(共68頁(yè)pdf)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:406592 發(fā)表于 2018-10-8 16:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
由于片面問(wèn)題,所以可能會(huì)看起來(lái)不太美觀,可以看附件中的內(nèi)容。
        ARM啟動(dòng)代碼相當(dāng)于我們電腦的BIOS, 也就是 ARM啟動(dòng)時(shí)對(duì)處理器的一些初始化及嵌入式系統(tǒng)硬件的一些初始化。由于它直接面對(duì)處理器內(nèi)核和硬件控制器進(jìn)行編程,一般都是用匯編語(yǔ)言。一般包括:中斷向量表,初始化存儲(chǔ)器系統(tǒng),初始化堆棧,初始化有特殊要求的斷口,設(shè)備初始化,變量初始化等。這幾天對(duì)著 RealView MDK-ARM中自帶的啟動(dòng)代碼研究了一下,遇到問(wèn)題又對(duì)著數(shù)據(jù)手冊(cè)和指令表看了一下,總算對(duì)S3C2440A 的硬件有了一個(gè)大致的了解。學(xué)習(xí)嵌入式系統(tǒng)重在系統(tǒng),學(xué)習(xí)ARM只是為學(xué)習(xí)嵌入式系統(tǒng)鋪路,懶貓比較笨可能在上系統(tǒng)之前要裸奔幾天以強(qiáng)化以下對(duì)S3C2440A 內(nèi)部結(jié)構(gòu)的了解。
       把 MDK 自帶的 S3C2440A.S 文件的注釋發(fā)一下,這些是懶貓結(jié)合數(shù)據(jù)手冊(cè)與ARM指令表理解了,可能會(huì)有錯(cuò)誤,放在這里只是引導(dǎo)一下像我一樣還沒(méi)有入門(mén)的兄弟們,希望你們不要害怕ARM害怕嵌入式,老毛他老人家說(shuō)的對(duì),世上無(wú)難事,只怕有心人,ARM指令就那么多,看一遍不會(huì)就多看幾遍,還有一定要學(xué)習(xí)看軟件自帶的幫助文件.
;下面這些參數(shù)是與CPSR狀態(tài)寄存器有關(guān)
;參數(shù)的由來(lái):這里各個(gè)模式的參數(shù)是由寄存器CPSR的模式位設(shè)置M[4:0]得來(lái)
的,
;比如這里的用戶模式,CPSR的 M[4:0]設(shè)置為10000 就是0x10。
;
;Mode_USR  --  用戶模式,正常程序執(zhí)行模式,用于應(yīng)用程序
;Mode_FIQ  --  快速中斷模式,用于高速數(shù)據(jù)傳輸和通道處理。
;Mode_IRQ  --  外部中斷模式,用于通用的中斷處理。
;Mode_SVC  --  管理模式,使用的一種保護(hù)模式。
;Mode_ABT  -- 數(shù)據(jù)訪問(wèn)中止模式,用于虛擬存儲(chǔ)用存儲(chǔ)保護(hù)
;Mode_UND  --  未定義指令中止模式,當(dāng)未定義指令執(zhí)行時(shí)進(jìn)入此模式。
;Mode_SYS  --  系統(tǒng)模式,用于特權(quán)級(jí)的操作系統(tǒng)任務(wù)。
;I_Bit      -- 如果 I位被置1,則外部中斷被禁止(IRQ is disabled)
;F_Bit     --  如果 F 位被置 1,則快速中斷被禁止(FIQ is disabled)

;----------------------------------------------------------------------
Mode_USR         EQU      0x10
Mode_FIQ          EQU      0x11
Mode_IRQ          EQU      0x12
Mode_SVC          EQU      0x13
Mode_ABT         EQU      0x17
Mode_UND         EQU      0x1B
Mode_SYS         EQU      0x1F
  
I_Bit            EQU      0x80             ; when I bit is set, IRQ is disabled
F_Bit            EQU      0x40             ; when F bit is set, FIQ is disabled
  
;-----------------------------棧初始化定義-----------------------------------
;下面這些主要是棧配置,系統(tǒng)的棧空間設(shè)定
;
;UND_Stack_Size  --  未定義模式的棧大小
;SVC_Stack_Size  --  超級(jí)用戶模式的棧大小
;ABT_Stack_Size  -- 數(shù)據(jù)訪問(wèn)終止模式的棧大小
;FIQ_Stack_Size  --  快速中斷模式的棧大小
;IRQ_Stack_Size  --  外部中斷模式的棧大小
;USR_Stack_Size  --  用戶模式的棧大小
;ISR_Stack_Size  --  總堆棧的大小,也就是也有模式下堆棧相加
;
;-----------------------------------------------------------------------
  
UND_Stack_Size   EQU      0x00000000
SVC_Stack_Size    EQU      0x00000008
ABT_Stack_Size   EQU      0x00000000
FIQ_Stack_Size    EQU      0x00000000
IRQ_Stack_Size    EQU      0x00000080
USR_Stack_Size   EQU      0x00000400
  ISR_Stack_Size    EQU      (UND_Stack_Size + SVC_Stack_Size + ABT_St
ack_Size +  \
                          FIQ_Stack_Size + IRQ_Stack_Size)
                                                           
;-----------------------------------------------------------------------
;AREA  --  是一個(gè)偽指令,用于段定義。ARM的匯編程序由段組成,段是相對(duì)
獨(dú)立
;        的指令或數(shù)據(jù)單位,每個(gè)段由AREA 偽指令定義,并定義段的屬性。
;         STACK    --  AREA 指令的一個(gè)參數(shù),定義段名稱(chēng)
;         NOINIT  --  AREA 指令的一個(gè)參數(shù),指定本數(shù)據(jù)段僅僅保留了內(nèi)在單元,而
;        將句初始值寫(xiě)入內(nèi)存單元,也即將內(nèi)存單元值初始化為0
;         READWRITE  -- 指定本段為可讀可寫(xiě),數(shù)據(jù)段默認(rèn)為READWRITE。

;                      READWRITE(讀寫(xiě))、READONLY(只讀)
;ALIGN  --  也是一個(gè)偽指令,指定對(duì)齊方式。ALIGN n  指令的對(duì)齊值有兩種方

;  即 n  或  2^n,這里采用第二種方案即指定后面的指令8 字節(jié)對(duì)齊。
;
;下面這句話的意思是:
;開(kāi)辟一個(gè)堆棧段,段名字為STACK,定義為可讀可寫(xiě),將內(nèi)存單元初始化為0,
;-----------------------------------------------------------------------
  
                 AREA     STACK, NOINIT, READWRITE, ALIGN=3
                                       
;-----------------------------------------------------------------------
;SPACE  -- 偽指令,用于分配一塊內(nèi)存單元,并用0 初始化,與%同義
;其指令格式為:
;     {lable}    SPACE    expr
;lable  --  內(nèi)存起始地址標(biāo)號(hào)    expr  --  所要分配的內(nèi)存字節(jié)數(shù)     
;-----------------------------------------------------------------------
Stack_Mem        SPACE     USR_Stack_Size      ;堆棧內(nèi)存起始地址標(biāo)號(hào)
__initial_sp     SPACE     ISR_Stack_Size      ;匯編代碼的地址標(biāo)號(hào)
  
Stack_Top     ;堆棧段內(nèi)容結(jié)束, 在這里放個(gè)標(biāo)號(hào),用來(lái)獲得堆棧頂部地址
  
Heap_Size        EQU      0x00000000     ;定義堆大小設(shè)置   
                 ;開(kāi)辟一個(gè)名字為HEAP 可讀可寫(xiě),不初始化內(nèi)存單的內(nèi)存單元。
                 AREA     HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base      ;堆的基址
Heap_Mem         SPACE     Heap_Size     ;堆內(nèi)存起始地址標(biāo)號(hào)
__heap_limit     ;堆結(jié)束
  
;----------------------------內(nèi)存初始化定義-----------------------------
;在一些應(yīng)用系統(tǒng)中除了擴(kuò)展Flash,RAM掛接在外部存儲(chǔ)器接口上外,可能還有
其它
;的外設(shè)掛接在外部存儲(chǔ)器接口上,不同外設(shè)的操作時(shí)序什么的都是不一樣的,
所以
;在使用這些外設(shè)之前必須初始化連接這些外設(shè)存儲(chǔ)器接口。這里因?yàn)闆](méi)擴(kuò)展,
所以 ;只定義一個(gè)片上內(nèi)存基地址。
;-----------------------------------------------------------------------
  
IRAM_BASE        EQU      0x40000000     ;片上 SRAM的基地址,即內(nèi)存基地

  
;-------------------------看門(mén)狗初始化定義------------------------------
;看門(mén)狗在防止程序跑飛,進(jìn)入無(wú)限死循環(huán)時(shí)起著重要作用。有些應(yīng)用可能用不

;看門(mén)狗功能,也可能有些應(yīng)用會(huì)用到外部看門(mén)狗。在這個(gè)時(shí)候內(nèi)部看門(mén)狗必須

;止,所以有時(shí)候會(huì)在初始化時(shí)將內(nèi)部看門(mén)狗禁止,當(dāng)以后應(yīng)用用到時(shí)再開(kāi)啟它。  
;看門(mén)狗定時(shí)器包括三個(gè)寄存器:
;WTCON  --  看門(mén)狗控制寄存器,設(shè)定看門(mén)狗定時(shí)器模式
;WTDAT  --  看門(mén)狗數(shù)據(jù)寄存器,用于設(shè)定超時(shí)寬度
;WTCNT  --  看門(mén)狗計(jì)數(shù)寄存器,里面存放的是看門(mén)狗定時(shí)器當(dāng)前值
;
;WT_BASE    --  看門(mén)狗定時(shí)器基地址
;WTCON_OFS  -- 看門(mén)狗控制寄存器偏移地址,相對(duì)于基址
;WTDAT_OFS  --  看門(mén)狗數(shù)據(jù)寄存器偏移地址,相對(duì)于基址
;WTCNT_OFS  --  看門(mén)狗計(jì)數(shù)寄存器偏移地址,相對(duì)于基址
;WT_SETUP    --  看門(mén)狗設(shè)置
;WTCON_Val  --  看門(mén)狗控制寄存器設(shè)置,關(guān)閉看門(mén)狗
;WTDAT_Val  --  看門(mén)狗數(shù)據(jù)寄存器設(shè)置,初始值即為0x8000
;-----------------------------------------------------------------------
  
WT_BASE          EQU      0x53000000       ; Watchdog Timer Base Address
WTCON_OFS      EQU      0x00      ; Watchdog Timer Control Register Offse
t
WTDAT_OFS      EQU       0x04       ; Watchdog Timer Data Register     Offs
et
WTCNT_OFS       EQU      0x08       ; Watchdog Timer Count Register    Offs
et
  
WT_SETUP          EQU      0
WTCON_Val         EQU      0x00000000
WTDAT_Val        EQU      0x00008000
  

完整的pdf格式文檔51黑下載地址(共68頁(yè)):
keil下的s3c2440啟動(dòng)代碼分析.pdf (1.08 MB, 下載次數(shù): 39)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美在线观看 | 国产精品福利在线 | 国产一区二区三区四区 | 欧美一级免费看 | 亚洲成av人片在线观看 | 99精品视频在线观看免费播放 | 天天操网| 自拍偷拍精品 | av在线天堂网 | 午夜小电影 | 国产高清av免费观看 | 日韩中文字幕视频在线 | 欧美一区二区三区在线看 | 精品国产乱码久久久久久蜜柚 | 日日操操 | 国产精品成人久久久久 | 国产成人福利在线观看 | 亚洲一区网站 | 91就要激情| 99pao成人国产永久免费视频 | 欧美午夜精品久久久久免费视 | 97avcc| 国产福利资源 | 日韩一区二区黄色片 | 日韩一区二区av | 国产精品美女久久久久 | 日韩视频―中文字幕 | 91色站 | 日韩av在线不卡 | 欧美精品一区二区三区蜜桃视频 | 国产精品一区二区在线播放 | 久久国产精品视频 | 国产目拍亚洲精品99久久精品 | 久久久久国产一级毛片高清网站 | 激情91| 免费色网址 | 一区二区精品电影 | 午夜久久久 | 日韩精品一区二区三区中文字幕 | 亚洲成人综合在线 | 欧美日韩在线观看一区 |