《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > S3C44B0的初始化程序的理解
S3C44B0的初始化程序的理解
摘要: S3C44B0的初始化程序的理解,S3C44B0的初始化程序就是初始化各個關鍵的寄存器,建立中斷向量,然后轉移到主函數去執行程序。不過S3C44B0不支持地址映射,所以程序不COPY到RAM種執行。S3C44B0初始化對我們廣大初學者來說,比較難理解的是中斷的處
Abstract:
Key words :

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

  HandleADC # 4

  HandleRTC # 4

  HandleUTXD1 # 4

  HandleUTXD0 # 4

  HandleSIO # 4

  HandleIIC # 4

  HandleURXD1 # 4

  HandleURXD0 # 4

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

  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狀態。這些都是偽操作

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

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

  MACRO 宏 偽操作

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

  $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

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

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

  使用中斷向量表只能是IRQ方式,當使用中斷向量表的時候,中斷發生時由44B0的中斷控制器自動跳轉到

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

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

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

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

  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

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

  這段我個人的理解為這些是連接器生成的于輸出段相關的符號,是在沒有使用SCATTER文件的情況可以調用。這段指出了在ROM和RAM種的數據的地址,這些地址應該是連接器生成的,不過為什么能調用

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

  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個中斷源,所以需要程序處理以確定調用那個中斷程序

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

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

  值為0X04,ldr r9,=I_ISPR

  ldr r9,[r9] 兩條指令后,r9的內容為0X4 ,

  movs r9,r9,lsr #1 r9內容右移一位

  bcs %F1 判斷是否把置位是否轉移到C位,

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

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

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

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品伦子伦免费视频| 黑人一区二区| 久久视频在线视频| 性色av一区二区三区在线观看| 夜色激情一区二区| 亚洲精选一区| 亚洲精品国久久99热| 亚洲高清免费视频| 亚洲第一福利视频| 亚洲成人中文| 久久精品人人做人人爽电影蜜月| 午夜精品在线| 午夜在线观看免费一区| 亚洲一区二区三区免费观看| 一本色道久久综合| 亚洲视频免费在线| 亚洲午夜精品福利| 亚洲欧美日韩在线不卡| 亚洲欧美日韩精品久久久| 亚洲免费网站| 欧美一级日韩一级| 欧美一区二区三区在线看| 久久gogo国模裸体人体| 久久精品国产免费看久久精品| 欧美亚洲综合在线| 亚洲国产精品成人综合色在线婷婷| 久久精品官网| 亚洲日本视频| 亚洲午夜精品国产| 欧美一区在线看| 久久精品国产免费看久久精品| 久久久久久亚洲精品杨幂换脸| 久久躁日日躁aaaaxxxx| 免费视频一区| 欧美日韩黄色一区二区| 欧美午夜宅男影院在线观看| 国产精品永久入口久久久| 国产综合网站| 亚洲国产综合91精品麻豆| 亚洲国产一区二区三区在线播 | 亚洲天堂第二页| 亚洲免费在线观看| 久久蜜臀精品av| 欧美—级高清免费播放| 国产精品福利影院| 韩国欧美一区| 亚洲精品男同| 亚洲免费在线观看| 亚洲国产日韩一区| 亚洲自拍偷拍麻豆| 久久久久9999亚洲精品| 欧美久久久久| 国产在线观看一区| 亚洲精品视频一区| 香蕉久久精品日日躁夜夜躁| 亚洲精品九九| 小嫩嫩精品导航| 欧美sm重口味系列视频在线观看| 欧美视频亚洲视频| 国内伊人久久久久久网站视频| 亚洲精品日本| 欧美一区二区三区久久精品 | 一区二区黄色| 久久久91精品国产一区二区精品| 欧美精品一区二区三| 国产欧美精品va在线观看| 亚洲国产毛片完整版| 亚洲免费视频在线观看| 亚洲精品之草原avav久久| 香港久久久电影| 欧美激情二区三区| 国产日韩在线一区| 亚洲美女在线一区| 亚洲黄色免费| 欧美一区在线看| 欧美裸体一区二区三区| 国产日韩在线看片| 亚洲最新中文字幕| 亚洲激情网站| 久久国产精品99国产| 欧美sm极限捆绑bd| 亚洲综合色婷婷| 欧美黑人国产人伦爽爽爽| 国产日韩一区二区三区在线播放| 亚洲精品网站在线播放gif| 久久国产视频网| 亚洲欧美在线视频观看| 欧美激情精品久久久久久大尺度| 国产在线视频欧美| 亚洲一区二区三区成人在线视频精品 | 欧美亚州一区二区三区| 亚洲国产天堂久久综合| 欧美亚洲免费电影| 亚洲欧美卡通另类91av| 欧美精品一区二区三区在线看午夜| 国产午夜精品一区二区三区视频| 在线中文字幕日韩| 99精品国产一区二区青青牛奶| 久久这里有精品视频| 国产美女精品视频免费观看| 99视频在线观看一区三区| 亚洲精品视频免费观看| 久久一区二区视频| 国产综合色精品一区二区三区| 亚洲欧美成人| 亚洲欧美第一页| 欧美午夜一区二区| av不卡在线看| 中日韩高清电影网| 欧美乱大交xxxxx| 亚洲经典在线看| 日韩一级大片| 欧美女同视频| 亚洲精品一区在线观看香蕉| 亚洲精品少妇| 欧美精品v日韩精品v国产精品 | 国产在线精品一区二区夜色| 亚洲欧美在线视频观看| 午夜精品久久久久久久99水蜜桃| 欧美亚一区二区| 制服丝袜激情欧洲亚洲| 亚洲一区二区三区乱码aⅴ| 欧美日韩妖精视频| av成人国产| 午夜激情亚洲| 国产精品视区| 午夜精品久久久久久久| 午夜一区在线| 国产精品自拍在线| 欧美影院成年免费版| 久久九九免费视频| 一区二区在线视频播放| 亚洲国产高清自拍| 牛牛精品成人免费视频| 亚洲黄色视屏| 一区二区三区四区蜜桃| 欧美午夜精品久久久久久久| 亚洲色图自拍| 欧美一级大片在线观看| 国产亚洲日本欧美韩国| 久久精品国产免费| 欧美国产日韩视频| 亚洲精品视频二区| 亚洲欧美另类国产| 国际精品欧美精品| 亚洲精品欧洲精品| 欧美小视频在线| 校园激情久久| 久久综合狠狠综合久久综青草 | 欧美在线观看视频在线| 韩国三级电影一区二区| 亚洲欧洲日本国产| 欧美日韩伦理在线| 亚洲在线一区二区三区| 久久视频这里只有精品| 亚洲人成免费| 亚洲欧美另类国产| 狠狠色狠狠色综合人人| 日韩午夜av在线| 国产精品一级| 亚洲国内高清视频| 欧美日韩免费精品| 午夜精品理论片| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美理论在线| 亚洲综合激情| 麻豆精品精华液| 一区二区免费在线视频| 久久精品国产亚洲aⅴ| 亚洲日本中文字幕| 午夜激情综合网| 在线精品一区| 亚洲欧美国产视频| 在线观看欧美成人| 午夜免费电影一区在线观看| 一区二区视频免费完整版观看| 亚洲午夜视频在线| 黄色国产精品| 中文av一区特黄| 黄色成人在线网址| 亚洲欧美日本伦理| 亚洲成色999久久网站| 午夜国产精品视频免费体验区| 在线观看一区视频| 先锋影院在线亚洲| 亚洲三级影院| 久久久91精品国产一区二区三区 | 亚洲欧美一区二区三区极速播放| 伊人久久久大香线蕉综合直播| 亚洲免费影视| 亚洲日本成人女熟在线观看| 久久精品理论片| av成人免费在线| 女仆av观看一区| 欧美一级播放| 欧美午夜精品久久久久免费视| 亚洲国产婷婷香蕉久久久久久| 国产精品嫩草影院av蜜臀| 亚洲精品视频中文字幕| 好吊色欧美一区二区三区四区|