女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]S3C44B0的初始化程序的理解

S3C44B0初始化程序就是初始化各個關(guān)鍵的寄存器,建立中斷向量,然后轉(zhuǎn)移到主函數(shù)去執(zhí)行程序。不過S3C44B0不支持地址映射,所以程序不COPY到RAM種執(zhí)行。S3C44B0初始化對我們廣大初學(xué)者來說,比較難理解的是中斷的處理和一些少見的操作符號,S3C44B0的中斷子程序地址存放在初始化程序最后就是

  HandleADC # 4

  HandleRTC # 4

  HandleUTXD1 # 4

  HandleUTXD0 # 4

  HandleSIO # 4

  HandleIIC # 4

  HandleURXD1 # 4

  HandleURXD0 # 4

  這一段,它的其實地址是ISR_STARTADDRESS,個人寫中斷程序的時候,子程序地址被編譯器連放在相應(yīng)的位置。初始化完成后,程序轉(zhuǎn)通過BL Main 轉(zhuǎn)到用戶定義的主程序上執(zhí)行。以下是我個人的一些理解,有錯誤的地方希望大家指出來。

  GBLL THUMBCODE

  [ {CONFIG} = 16

  THUMBCODE SETL {TRUE}

  CODE32

  |

  THUMBCODE SETL {FALSE}

  ]

  [ THUMBCODE

  CODE32 ;for start-up code for Thumb mode

  ]

  ×××××××××××××××××××××××

  其中[=IF ,|=ELSE ,]= ENDIF, CODE32 表明一下操作都在ARM狀態(tài)。這些都是偽操作

  這段我理解為設(shè)定THUMCODE的值,然后確定,用戶的程序是在ARM狀態(tài)還是THUM狀態(tài)。不過不管THUMCODE是何值,下面代碼都是ARM狀態(tài)

  這段沒有什么很復(fù)雜的,就是這三個[,|,]操作符讓我迷惑了半天,翻了半天書才找到解釋

  MACRO 宏 偽操作

  $HandlerLabel HANDLER(宏的名稱) $HandleLabel(宏的參數(shù))

  $HandlerLabel

  sub sp,sp,#4 ;decrement sp(to store jump address)

  stmfd sp!,{r0} ;PUSH the work register to stack(lr does't push because it return to original address)

  ldr r0,=$HandleLabel;load the address of HandleXXX to r0

  ldr r0,[r0] ;load the contents(service routine start address) of HandleXXX

  str r0,[sp,#4] ;store the contents(ISR) of HandleXXX to stack

  ldmfd sp!,{r0,pc} ;POP the work register and pc(jump to ISR)

  MEND

  *******************************

  這段當(dāng)初我覺得比較難理解,不過通過看各種程序,對這段有了一個基本的理解。這個宏的作用是把各個中斷程序的地址裝入當(dāng)前的PC,44B0有兩種裝斷模式 一種是沒有中斷向量表,一種是使用中斷向量表的

  使用中斷向量表只能是IRQ方式,當(dāng)使用中斷向量表的時候,中斷發(fā)生時由44B0的中斷控制器自動跳轉(zhuǎn)到

  相應(yīng)的位置。比如在中斷向量表的模式下,一個外部中斷0發(fā)生程序自動跳轉(zhuǎn)到 地址0X20處,0X20地址單元的指令時ldr pc,=HandlerEINT0

  因而程序PC跳到HandlerEINT0處,執(zhí)行這個宏操作,把外部中斷的函數(shù)的地址賦給PC。 44B0里面定義了一個

  #define pISR_EINT0 (*(unsigned *)(_ISR_STARTADDRESS+0x84)) ,_ISR_STARTADDRES是中斷程序地址的起始地址,_ISR_STARTADDRESS+0X84是HandleEINT0的地址

  例如一個外部中斷函數(shù)名void EXINT(),程序里執(zhí)行 pISR_EINT0=(unsigned)EXIT,就把自己的函數(shù)地址賦給了標(biāo)號為HandleEINT0處的內(nèi)存單元

  IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data)

  IMPORT |Image$$RW$$Base| ; Base of RAM to initialise

  IMPORT |Image$$ZI$$Base| ; Base and limit of area

  IMPORT |Image$$ZI$$Limit| ; to zero initialise

  ××××××××××××××××××××××××××××××××××

  這段我個人的理解為這些是連接器生成的于輸出段相關(guān)的符號,是在沒有使用SCATTER文件的情況可以調(diào)用。這段指出了在ROM和RAM種的數(shù)據(jù)的地址,這些地址應(yīng)該是連接器生成的,不過為什么能調(diào)用

  連接器生產(chǎn)的符號,我不大明白其中的原因,還希望各位說說自己的理解

  IsrIRQ ;using I_ISPR register.

  sub sp,sp,#4 ;reserved for PC

  stmfd sp!,{r8-r9}

  ;IMPORTANT CAUTION

  ;if I_ISPC isn't used properly, I_ISPR can be 0 in this routine.

  ldr r9,=I_ISPR

  ldr r9,[r9]

  mov r8,#0x0

  0

  movs r9,r9,lsr #1

  bcs %F1

  add r8,r8,#4

  b %B0

  1

  ldr r9,=HandleADC

  add r9,r9,r8

  ldr r9,[r9]

  str r9,[sp,#8]

  ldmfd sp!,{r8-r9,pc}

  ×××××××××××××××××××××××

  這段是沒有使用裝斷向量模式下如何裝載中斷子程序,因為44B0有30個中斷源,所以需要程序處理以確定調(diào)用那個中斷程序

  0,1是局部標(biāo)號,%B是向后搜索局部標(biāo)號, %F是向前搜索局部標(biāo)號 。都是偽操作

  I_ISPR寄存器各位表明發(fā)生了應(yīng)該調(diào)用那個中斷子程序。只能1位置位,其它位為0,比如說串口1發(fā)送中斷發(fā)生,這時I_ISPR的

  值為0X04,ldr r9,=I_ISPR

  ldr r9,[r9] 兩條指令后,r9的內(nèi)容為0X4 ,

  movs r9,r9,lsr #1 r9內(nèi)容右移一位

  bcs %F1 判斷是否把置位是否轉(zhuǎn)移到C位,

  add r8,r8,#4 如果沒有的R8加4

  如果r9內(nèi)容為0x04 需要右移3次 ,之后r8的內(nèi)容為8 然后HandleADC的地址 加上r8的值 就是串口1發(fā)送中斷的地址,這個地址的內(nèi)容是中斷子程序的地址

  再說明幾個偽操作:^=MAP. #=field

  別的方面我覺得比較容易理解了,就不多講了。
 

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉