色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度了解ARM架構基礎知識

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-04-17 10:40 ? 次閱讀

單片機轉到ARM,主要需要學習ARM的架構,ARM相比單片機多了一些外設和總線。在僅僅是裸奔的情況下,如果熟悉了ARM架構,那么我認為使用任何ARM架構的芯片和用單片機將沒有區別。ARM架構之所以更復雜,當然是為了跑更快以及更好地支持片上系統,所以在某種程度上來說對片上系統不是很了解的話那對于ARM架構的理解也不會那么深。

通用寄存器

R13通常被用作棧指針,進入異常模式時,可以將需要使用的寄存器保存在R13所指的棧中;當退出異常吹程序時,將保存在R13所指的棧中的寄存器值彈出。

R14又被稱為連接寄存器(LinkRegister,LR),即PC的返回值。

R15又被記作PC。ARM指令是字對齊的,PC的值的第0位和第1位總為0。也就是說是32位對齊。

就Cortex-M3來說,擁有R0-R15的寄存器組。其中R13作為堆棧指針SP。SP有兩個,分別為R13(MSP)和R13(PSP)即主堆棧指針(MSP)和進程堆棧指針(PSP),但在同一時刻只能有一個可以看到,這也就是所謂的“banked”寄存器。這些寄存器都是32位的。

ARM的各個模式

ARM有以下7種模式:

用戶模式(User,usr) 正常程序執行的模式

快速中斷模式(FIQ,fiq) 用于高速數據傳輸和通道處理

外部中斷模式(IRQ,irq) 用于通常的中斷處理

特權模式(Supervisor,svc) 供操作系統使用的一種保護模式

數據訪問中止模式(Abort,abt) 用于虛擬存儲及存儲保護

未定義指令中止模式(Undefined,und) 用于支持通過軟件方針硬件的協處理器

系統模式(System,sys) 用于運行特權級的操作系統任務

其中除了用戶模式之外都稱之為特權模式(privileged modes),而在privileged modes中除了系統模式其它都稱為異常模式,即exception mode。起初關于異常這個詞我的理解有些偏差,我認為異常模式就是這個系統出錯了,而實際上不是。exception mode的意思是例外,意思是“這模式什么時候會發生不好說……”,比如說來了個外部中斷也會進入異常模式,但是此時系統是運行完好的。

其中SVC用于在系統剛啟動的啟動文件BOOT程序中,跳轉到kernel之前必須為SVC,SVC具有最高權限,可以對任何寄存器進行操作。在裸機程序中我們有時候會一直處于SVC模式下。

關于什么時候會進入用戶模式或者系統模式,以下是我的猜測,比如進入linux kernel之后會設置成sys模式,比如任務調度等等都會在sys模式中,而執行用戶編寫的應用程序時,系統是處于usr模式中。以上猜測需要在linux中找出證據驗證。

其中FIQ,IRQ為中斷模式,有中斷發生時會進入FIQ模式或者IRQ模式,至于到底是進入哪個模式是由開發者設定的。理論上FIQ模式的響應速度比IRQ模式要快。

其中abt模式通常發生于在訪問地址沒有對齊時的情況,此時會跳轉到abt所屬的中斷向量地址中去。und模式應該是取到指令之后發現指令不能用,,此時會跳轉到abt所屬的中斷向量地址中去。以上兩種模式應該是開發過程中出現BUG才會進入的,也是一種調試手段,在版本發行之前應該消除這些錯誤(我猜= =)。

啟動文件

這一部分只要了解一下協處理器CP15的相關作用以及ARM或者THUMB匯編再看一下網上的例程以及解釋應該不難理解。

在啟動文件中我們可以做任何事情,但是通常我們可以做這些:改變程序大小端排序,關閉看門狗,屏蔽中斷,設置各個時鐘,設置從SLEEP或者IDLE啟動時的程序,初始化SDRAM,設置各模式指向的堆棧,設置好中斷向量表,判斷是從NOR還是NAND FLASH啟動,將文件拷到SDRAM中,運行Main。

以上也說明了為什么需要一個匯編寫的啟動文件,設置各個模式下的SP指針以及初始化中斷向量的跳轉(ARM的中斷較多設置也較靈活)也只有匯編干比較合適了。甚至在SOC(片上系統)中每個任務都有自己的堆棧,所以改變堆棧指針的那一部分程序也是放在匯編里做的。總之了解啟動文件是一個非常好的切入點。

MMU相關地址基本概念

關于MMU,因為多種存儲設備的物理地址不同以及不連貫性,將其地址安放在合理的連續虛擬地址上是很必要的,所以MMU出現了。MMU即將不同的地址放在合適的虛擬地址中,以便調度。比如要跑LINUX必須要有MMU的支持才行。

ARM920T中有三種類型的地址:

虛擬地址(VA),變換后的虛擬地址(MVA),物理地址(PA)。

以下是一個當一個指令被請求時地址所做操作的例子:

1、 指令VA(IVA)被ARM920T發出

2、 它被ProcID(當前進程所在的進程空間塊的編號)轉換成指令MVA(IMVA),指令CACHE(ICACHE)和MMU看到的就是IMVA。

3、 如果在IMMU上的保護模塊確認IMVA不會被中斷,并且IMVA標簽也在ICACHE中,指令數據會讀出并返回到ARM920T內核中。

4、 如果IMVA tag并不在ICACHE中,那么IMMU會產生出一個指令PA(IPA)。地址會給AMBA總線接口以獲取外部數據。

那么VA是如何被PID轉換為MVA的呢?

這有關于CP15中的13,FCSE PID register

R13是fast context switch extension(FCSE 快速上下文切換擴展)processidentifier(PID 進程標識符)寄存器,此寄存器復位時為0。

讀R13會得到FCSE PID的值,寫R13會更新FCSE PID的值到[31:25]中,位[24:0]應該是零。

如何使用FCSE PID:

920T內核發出的地址都是0-32MB的范圍,4GB的逆序空間被分成了1238個進程空間塊,每個進程空間塊大小為32MB。每個進程空間塊中可以包含一個進程。系統128個進程空間塊的編號0-127,編號為I的進程空間塊中的進程實際使用的虛擬地址空間為(I*0x02000000)到(I*0x02000000+0x01FFFFFF)。

所以VA通常高7位都為0時 MVA = VA | (PID << 25)

當VA高7位不為0時 MVA = VA,這種VA是本進程用于訪問別的進程中的數據和指令的虛擬地址,注意這時被訪問的進程標識符不能為0。

注意:當FCSE_PID為0時,即當前復位,則當前920T和CACHES及MMU之間是平面映射的關系(很巧妙:))。

TLB是什么?

TLB即translate look-aside buffer,快表就是存儲幾個常用的頁表,以提高系統運行的速度。在更新頁表之前要使其無效,其操作的寄存器為R8,R8為只寫寄存器,如果讀它則會造成不可估計的后果。

AP賦值表:

而DOMAIN的賦值則是在C3中的,32bit共有16個域,每個域分兩個bit,這兩個bit控制當前域的權限。而以上四個bit是為了選擇0-15個域的其中一個。

關于C、B賦值:

以上有關于兩種寫緩存,寫通以及寫回。寫回法是指CPU在執行寫操作時,被寫的數據只寫入cache,不寫入主存,僅當需要替換時,才把已經修改的cache塊寫回到主存中。寫通法是指CPU在執行寫操作時,必須把數據同時寫入cache和主存。

時鐘以及總線概念

FCLK, HCLK, andPCLK

FCLK is used byARM920T.

HCLK is used forAHB bus, which is used by the ARM920T, the memory controller, the interruptcontroller, the LCD controller, the DMA and USB host block.

PCLK is used forAPB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMCinterface,ADC, UART, GPIO, RTC and SPI.

What is AHB/APB?

InternalAdvanced Microcontroller Bus Architecture(AMBA)是一種總線標準,以下兩項都符合此標準。

AHB(AdvancedHigh performance Bus),主要用于系統高性能、高時速速率模塊間通信

APB(AdvancedPeripheral Bus),主要用于慢速片上外設與ARM核的通訊。

AHB私有外設總線,只用于CM3內部的AHB外設,它們是:NVIC,FPB, DWT和ITM。

APB私有外設總線,既用于CM3內部的APB設備,也用于外部設備(這里的“外部”是對內核而言)。CM3允許器件制造商再添加一些片上APB外設到APB私有總線上,它們通過APB接口來訪問。

四種耗電模式:

NORMAL,SLOW,IDLE,SLEEP

先配置主PLL MPLL給CPU用。在上電復位的時候PLL是不穩定的,所以在PLLCON在被軟件配置之前Fin直接是跳過MPll給FCLK,所以不配置PLLCON也是可以正常工作。即使工作在正常狀態下,也可以對MPLLCON進行配置,配置之后等待PLL Lock-time過后內部各模塊的CLK才可以被正常供應。

DMA

閱讀芯片手冊即可。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634668
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9084

    瀏覽量

    367390
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120232

原文標題:從單片機轉ARM,ARM架構基礎知識小結

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ARM架構基礎知識

    ARM處理器使用精簡指令集(RISC),ARM(Advanced RISC Machines)ARM是一家公司的簡稱,其次ARM指一系列處理器的統稱,同時
    發表于 09-15 11:51 ?5594次閱讀

    ARM基礎知識

    ARM基礎知識
    發表于 01-25 02:23

    ARM架構基礎知識小結

    ARM架構的芯片和用單片機將沒有區別。ARM架構之所以更復雜,當然是為了跑更快以及更好地支持片上系統,所以在某種程度上來說對片上系統不是很了解
    發表于 05-12 17:06

    ARM架構基礎知識小結

    更復雜,當然是為了跑更快以及更好地支持片上系統,所以在某種程度上來說對片上系統不是很了解的話那對于ARM架構的理解也不會那么深。ARM的歷史版本AR
    發表于 05-22 10:50

    ARM架構基礎知識小結

    從單片機轉到ARM ―― ARM架構基礎知識小結
    發表于 12-29 06:16

    【HarmonyOS基礎知識】HarmonyOS系統架構

    這個視頻帶大家揭秘HarmonyOS基礎知識之HarmonyOS系統架構,一起來看看?
    發表于 01-19 18:32

    示波器基礎知識

    第1章 示波器基礎知識本章的內容整理自網絡,主要講解示波器的基礎知識。如果初學的話非常有必要對這部分知識有一個了解。因為示波器是硬件調試必不可少的設備。1.1 什么是示波器1.2 示波
    發表于 08-09 07:21

    ARM匯編基礎知識點匯總,錯過肯定后悔

    ARM匯編基礎知識點匯總,錯過肯定后悔
    發表于 11-29 07:13

    ARM架構基礎知識點匯總

    之所以更復雜,當然是為了跑更快以及更好地支持片上系統,所以在某種程度上來說對片上系統不是很了解的話那對于ARM架構的理解也不會那么深。ARM架構
    發表于 12-13 06:26

    arm內核基礎知識介紹

    arm內核基礎知識介紹,有需要的朋友下來看看。
    發表于 01-08 14:44 ?12次下載

    淺談ARM處理器基礎知識

    淺談ARM處理器基礎知識
    發表于 01-14 12:31 ?16次下載

    ARM架構基礎知識點匯總

    本文首先介紹了ARM架構圖及各個模式,其次介紹了通用寄存器、MMU相關地址基本概念、ARM920T中有三種類型的地址等,最后闡述了ARM處理器的
    的頭像 發表于 04-26 10:46 ?1.7w次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>架構</b>的<b class='flag-5'>基礎知識</b>點匯總

    ARM架構基礎知識小結

    從單片機轉到ARM,主要需要學習ARM架構ARM相比單片機多了一些外設和總線。
    的頭像 發表于 06-11 15:40 ?4600次閱讀

    了解FPGA和CPLD架構基礎知識資料下載

    電子發燒友網為你提供了解FPGA和CPLD架構基礎知識資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-14 08:41 ?13次下載
    <b class='flag-5'>了解</b>FPGA和CPLD<b class='flag-5'>架構</b>的<b class='flag-5'>基礎知識</b>資料下載

    架構模式的基礎知識

    ????作為軟件工程師,為什么至少要學習基本的架構模式? ????我相信有很多人回答了這個問題,但我會給你一些考慮的理由。 ????首先,如果您了解架構模式的基礎知識,那么您就更容易遵
    的頭像 發表于 06-13 16:13 ?734次閱讀
    <b class='flag-5'>架構</b>模式的<b class='flag-5'>基礎知識</b>
    主站蜘蛛池模板: 超碰久久国产vs| 亚洲精品久久久久中文字幕二区| 久久夜色精品国产亚州AV卜 | 热九九99香蕉精品品| 快穿之H啪肉| 久久天堂网| 久久免费看少妇高潮A片2012| 花蝴蝶高清影视视频在线播放| 国产在线精彩亚洲| 国产精品麻豆a啊在线观看| 国产成人亚洲精品午夜国产馆| 纯肉无码AV在线看免费看| 成人亚洲精品| 古代荡女丫鬟高H辣文纯肉| 高h乱一受多攻男男| 国产不卡一卡2卡三卡4卡网站| 国产成人AV永久免费观看| 动漫美女被到爽了流| 国产扒开美女双腿屁股流白浆| 国产精品97久久AV色婷婷| 国产精品69人妻无码久久| 国产精品色吧国产精品| 国产露脸无码A区久久| 国产中文字幕在线| 久久高清一级毛片| 啦啦啦影院视频在线看高清...| 美女扒开屁股让男人桶| 欧美 日韩 亚洲 在线| 日本精油按摩| 小寡妇好紧进去了好大看视频| 亚洲高清国产拍精品5g| 一区二一二| 99精品国产高清自在线看超| a免费视频| 国产精品久久毛片A片软件爽爽 | 91popny蜜桃臀| www.精品久久| 国产精品99久久久久久AV蜜臀| 韩国女人高潮嗷嗷叫视频| 久久精品亚洲AV中文2区金莲| 男人插曲视频大全免费网站|