chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>淺談uClinux內(nèi)核在ARM開(kāi)發(fā)板中的移植

淺談uClinux內(nèi)核在ARM開(kāi)發(fā)板中的移植

2017-10-27 | rar | 0.5 MB | 次下載 | 1積分

資料介紹

 1.Bootloader
  1.1Bootloader概述
  Boot Loader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序。通過(guò)這段程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。因此,正確建立uClinux的移植的前提條件是具備一個(gè)與uClinux配套、易于使用的Bootloader。
  ARMSYS開(kāi)發(fā)板提供了這樣一個(gè)uClinux專用的Bootloader,該Bootloader程序燒錄在系統(tǒng)的地址0x0處,每次上電即運(yùn)行,能夠正確完成硬件系統(tǒng)的初始化和uClinux的引導(dǎo)。
  理論上,uClinux引導(dǎo)時(shí)并非一定需要一個(gè)獨(dú)立于內(nèi)核的Bootloader。然而,將Bootloader與內(nèi)核分開(kāi)設(shè)計(jì)能夠使軟件架構(gòu)更加清晰,也有助于靈活地支持多種引導(dǎo)方式,實(shí)現(xiàn)一些有用的輔助功能。
  ARMSYS提供的Bootloader的主要任務(wù)可以概括如下:
  1.硬件初始化;
  2.從主機(jī)下載新的內(nèi)核映像和文件系統(tǒng)映像;
  3.燒寫(xiě)NorFlash和Nandflash;
  4.加載uClinux 內(nèi)核映像并啟動(dòng)運(yùn)行;
  5.提供串行超級(jí)終端上的人機(jī)操作界面。
  1.2存儲(chǔ)空間分布
  Bootloader采用默認(rèn)的存儲(chǔ)空間分布地址來(lái)加載uClinux內(nèi)核、文件系統(tǒng),并按照正確引導(dǎo)uClinux的運(yùn)行。在ARMSYS的Bootloader中,默認(rèn)的存儲(chǔ)空間分布如下表:
  內(nèi)容 起始地址
  存儲(chǔ)介質(zhì)
  Bootloader程序空間 0x00000000
  Flash
  壓縮內(nèi)核映像 0x00010000
  Flash
  ROM文件系統(tǒng)映像 0x000e0000
  Flash
  內(nèi)核運(yùn)行地址 0x0c008000
  SDRAM
  壓縮內(nèi)核解壓地址 0x0c100000
  SDRAM
  文件系統(tǒng)加載 0x0c700000 SDRAM
  這個(gè)存儲(chǔ)空間的分配方式也不是固定不變的,可以通過(guò)修改Bootloader中的相關(guān)代碼來(lái)改變。
  1.3Bootloader的工作
  完整的Bootloader引導(dǎo)流程可描述如下:
  硬件初始化階段一
  ◎ 硬件初始化
  ◎ 復(fù)制二級(jí)中斷異常矢量表
  ◎ 初始化各種處理器模式
  ◎ 復(fù)制RO和RW,清零ZI
 ?。ㄌD(zhuǎn)到C代碼入口函數(shù))
  硬件初始化階段二
  ◎ 初始化本階段使用到的硬件設(shè)備;
  ◎ 建立人機(jī)界面
  ◎
  實(shí)現(xiàn)映像文件的下載和燒錄工具
  ◎ 實(shí)現(xiàn)映像文件的加載和運(yùn)行工具
  下面對(duì)上述各步驟進(jìn)行逐一說(shuō)明,并對(duì)與uClinux相關(guān)的內(nèi)容詳細(xì)加以說(shuō)明。
  1.3.1 硬件初始化
  板子上電或復(fù)位后,程序從位于地址0x0的Reset Exception
  Vector處開(kāi)始執(zhí)行,因此需要在這里放置Bootloader的第一條指令:b
  ResetHandler,跳轉(zhuǎn)到標(biāo)號(hào)為ResetHandler處進(jìn)行第一階段的硬件初始化,主要內(nèi)容為:關(guān)Watchdog
  Timer,關(guān)中斷,初始化PLL和時(shí)鐘,初始化存儲(chǔ)器控制器。比較重要的是PLL的輸出頻率要計(jì)算正確,ARMSYS中把它設(shè)置為64MHz;這實(shí)際上就是處理器的工作主頻,這個(gè)時(shí)間參數(shù)在第二階段計(jì)算SDRAM的刷新計(jì)數(shù)值和UART的波特率等參數(shù)時(shí)還要用到。
  1.3.2建立二級(jí)異常中斷矢量表
  異常中斷矢量表(Exception Vector Table)是Bootloader與uClinux內(nèi)核發(fā)生聯(lián)系關(guān)鍵的地方之一。即使uClinux內(nèi)核已經(jīng)得到處理器的控制權(quán)運(yùn)行,一旦發(fā)生中斷,處理器還是會(huì)自動(dòng)跳轉(zhuǎn)到從0x0地址開(kāi)始的第一級(jí)異常中斷矢量表中的某個(gè)表項(xiàng)(依據(jù)于中斷類(lèi)型)處讀取指令運(yùn)行。
  在編寫(xiě) Bootloader時(shí),地址0x0處的一級(jí)異常中斷矢量表只需簡(jiǎn)單地包含向二級(jí)異常中斷矢量表的跳轉(zhuǎn)指令就可以。這樣,就能夠正確地將發(fā)生的事件交給uClinux的中斷處理程序來(lái)處理。對(duì)于uClinux內(nèi)核,它在RAM空間中基地址為0xc000000處建立了自己的二級(jí)異常中斷矢量表,因此,
  Bootloader的第一級(jí)異常中斷矢量表如下所示:
  b ResetHandler ;Reset Handler
  ldr
  pc,=0x0c000004 ;Undefined Instruction Handler
  ldr pc,=0x0c000008 ;Software
  Interrupt Handler
  ldr pc,=0x0c00000c ;Prefetch Abort Handler
  ldr
  pc,=0x0c000010 ;Data Abort Handler
  b 。
  ldr pc,=0x0c000018 ;IRQ
  Handler
  ldr pc,=0x0c00001c ;FIQ Handler
  LTORG
  如果在Bootloader執(zhí)行的全過(guò)程中都不必響應(yīng)中斷,那么上面的設(shè)置已能滿足要求。但在我們的
  ARMSYS上提供了USB下載器,需要用到中斷,那么Bootloader必須在同樣的地址(0xc000000)處配置自己的二級(jí)異常中斷矢量表,以便同uClinux兼容。這張表事先存放在Flash Memory里,引導(dǎo)過(guò)程中由Bootloader將其復(fù)制到RAM地址0x0C000000:
  存放矢量表:
  ;IRQ ==the program put this phrase to 0xc000000
  ExceptionHanlderBegin
  b 。
  ldr pc, MyHandleUndef ; HandlerUndef
  ldr
  pc, MyHandleSWI ; HandlerSWI
  ldr pc, MyHandlePabort ; HandlerPabort
  ldr
  pc, MyHandleDabort ; HandlerDAbort
  b 。 ; HandlerReserved
  ldr pc,
  MyHandleIRQ ; HandlerIRQ
  ldr pc, MyHandleFIQ ; HandlerFIQ
  MyHandleUndef DCD HandleUndef ;reserve a word(32bit)
  MyHandleSWI DCD
  HandleSWI
  MyHandlePabort DCD HandlePabort
  MyHandleDabort DCD
  HandleDabort
  MyHandleIRQ DCD HandleIRQ
  MyHandleFIQ DCD HandleFIQ
  ExceptionHanlderEnd
  建立二級(jí)矢量表:
  ;****************************************************
  ;* Setup IRQ handler
  *
  ;****************************************************
  ldr
  r0,=(_IRQ_BASEADDRESS + 0x100)
  ldr r2,=_IRQ_BASEADDRESS
  add r3,r0,
  #0x100
  0
  CMP r0, r3
  STRCC r2, [r0], #4;cc:Carry clear;save R2 to R0
  address, R0 =R0+ 4。
  BCC %B0
  ldr r1,=_IRQ_BASEADDRESS
  ldr r0,=ExceptionHanlderBegin ;if there isn‘t
  ’subs pc,lr,#4‘ at 0x18, 0x1c
  ldr r3,=ExceptionHanlderEnd
  0
  CMP r0, r3
  ;put the vector table at _IRQ_BASEADDRESS(0xc000000)
  LDRCC r2, [r0],
  #4
  STRCC r2, [r1], #4
  BCC %B0
  ldr r1,=DIsrIRQ;put the IRQ judge program at
  _IRQ_BASEADDRESS+0x80(0xc000080)
  ldr r0,=IsrIRQ ;if there isn’t ‘subs
  pc,lr,#4’ at 0x18, 0x1c
  ldr r3,=IsrIRQEnd
  0
  CMP r0, r3
  LDRCC r2,
  [r0], #4
  STRCC r2, [r1], #4
  BCC %B0
  ldr r1, =MyHandleIRQ ;MyHandleIRQ point to DIsrIRQ
  ldr r0,
  =ExceptionHanlderBegin
  ldr r4, =_IRQ_BASEADDRESS;
  sub r0, r1, r0
  add
  r0, r0,r4
  ldr r1, =DIsrIRQ
  str r1, [r0]
  定義Handlexxx:
  ^ (_IRQ_BASEADDRESS)
  HandleReset # 4
  HandleUndef # 4
  HandleSWI #
  4
  HandlePabort # 4
  HandleDabort # 4
  HandleReserved # 4
  HandleIRQ #
  4
  HandleFIQ # 4
  ^ (_IRQ_BASEADDRESS+0x80)
  DIsrIRQ # 4
  ;IntVectorTable
  ^
 ?。╛IRQ_BASEADDRESS+0x100)
  HandleADC # 4
  HandleRTC # 4
  HandleUTXD1 #
  4
  HandleUTXD0 # 4
  HandleSIO # 4
  HandleIIC # 4
  HandleURXD1 #
  4
  HandleURXD0 # 4
  HandleTIMER5 # 4
  HandleTIMER4 # 4
  HandleTIMER3 #
  4
  HandleTIMER2 # 4
  HandleTIMER1 # 4
  HandleTIMER0 # 4
  HandleUERR01 #
  4
  HandleWDT # 4
  HandleBDMA1 # 4
  HandleBDMA0 # 4
  HandleZDMA1 #
  4
  HandleZDMA0 # 4
  HandleTICK # 4
  HandleEINT4567 # 4
  HandleEINT3 #
  4
  HandleEINT2 # 4
  HandleEINT1 # 4
  HandleEINT0 # 4
  將異常中斷矢量重構(gòu)到SDRAM,這樣的好處就是可以在其它的功能程序內(nèi)對(duì)中斷處理程序的地址任意賦值
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1PC3103 低功耗電流模式PWM控制器技術(shù)手冊(cè)
  2. 1.23 MB   |  3次下載  |  免費(fèi)
  3. 2L7805CV TO-220三端穩(wěn)壓IC規(guī)格書(shū)
  4. 0.71 MB   |  1次下載  |  免費(fèi)
  5. 3LoRa2021 全頻段無(wú)線通訊模塊規(guī)格書(shū)
  6. 814.22 KB  |  1次下載  |  免費(fèi)
  7. 4L7812CV TO-220三端穩(wěn)壓IC規(guī)格書(shū)
  8. 1.35 MB   |  次下載  |  免費(fèi)
  9. 5L7815CV TO-220三端穩(wěn)壓IC規(guī)格書(shū)
  10. 1.48 MB   |  次下載  |  免費(fèi)
  11. 6N-12電子傾斜儀指南
  12. 0.24 MB   |  次下載  |  10 積分
  13. 7基于CP500S掃描測(cè)頭的三坐標(biāo)測(cè)量系統(tǒng):復(fù)雜曲面零件解決方案
  14. 0.35 MB   |  次下載  |  免費(fèi)
  15. 8STM32H747xI/G 英文數(shù)據(jù)手冊(cè)
  16. 5.09 MB   |  次下載  |  免費(fèi)

本月

  1. 1PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
  2. 1.83 MB   |  18次下載  |  4 積分
  3. 2電源測(cè)試報(bào)告-基于 國(guó)民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
  4. 6.47 MB  |  17次下載  |  免費(fèi)
  5. 3世平基于靈動(dòng)微 SPIN560C 的低壓無(wú)刷電機(jī)應(yīng)用方案
  6. 10.93 MB  |  11次下載  |  免費(fèi)
  7. 4900MHz全雙工無(wú)線發(fā)射器參考設(shè)計(jì)原理圖資料
  8. 0.40 MB   |  6次下載  |  免費(fèi)
  9. 5PWM控制器的控制方法
  10. 0.39 MB   |  3次下載  |  4 積分
  11. 6900MHz全雙工無(wú)線發(fā)射器參考設(shè)計(jì)
  12. 0.15 MB   |  3次下載  |  1 積分
  13. 7美的電磁爐TM-S1-20B PN8124F+CHK S009資料圖
  14. 0.28 MB   |  3次下載  |  10 積分
  15. 8FS313B USB 的 PD和QC 快充協(xié)議電壓誘騙控制器規(guī)格書(shū)
  16. 2.61 MB   |  3次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935134次下載  |  10 積分
  3. 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191424次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183352次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73819次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分