摘要:處理器擁有的寄存器組。主堆棧指針復(fù)位后缺省使用的堆棧指針,用于操作系統(tǒng)內(nèi)核以及異常處理例程包括中斷服務(wù)例程。進(jìn)程堆棧指針由用戶的應(yīng)用程序代碼使用。堆棧指針的最低兩位永遠(yuǎn)是,這意味著堆??偸亲止?jié)對(duì)齊的。
ARM(Advanced RISC Machine),既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類微處理器的通稱,是一款高級(jí)RISC(精簡(jiǎn)指令集)微處理器,還可以認(rèn)為是一種技術(shù)的名字。ARM 公司并不生產(chǎn)芯片也不銷售芯片,它只出售芯片技術(shù)授權(quán)。其合作公司針對(duì)不同需求搭配各類硬件部件,比如 UART、SDI、I2C等,從而設(shè)計(jì)出不同的 SoC 芯片。
基于 ARM 的處理器具有高速度、低功耗、價(jià)格低等優(yōu)點(diǎn)被廣泛應(yīng)用于以下領(lǐng)域:
為通信、消費(fèi)電子、成像設(shè)備等產(chǎn)品,提供可運(yùn)行復(fù)雜操作系統(tǒng)的開放應(yīng)用平臺(tái);
在海量存儲(chǔ)、汽車電子、工業(yè)控制和網(wǎng)絡(luò)應(yīng)用等領(lǐng)域,提供實(shí)時(shí)嵌入式應(yīng)用;
安全系統(tǒng),比如信用卡、SIM 卡等。
ARM 架構(gòu)支持32位的ARM指令集和16位的Thumb指令集(大大減小了代碼的存儲(chǔ)空間)。
處理器系列產(chǎn)品:
ARM Cortex-A系列:頂級(jí)主控,手機(jī)平板AP應(yīng)用處理器
ARM Cortex-R系列:實(shí)時(shí)高性能處理器,硬盤控制器,車載控制產(chǎn)品
ARM Cortex-M系列:通用低端,工業(yè),消費(fèi)電子領(lǐng)域微控制器
Cortex - M3內(nèi)核定義:?jiǎn)纹瑱C(jī)的中央處理單元CPU。
Cortex-M3是ARM公司設(shè)計(jì)的ARMv7架構(gòu)下Cortex系列的首秀,其目的是為了讓32位處理器加入單片機(jī)市場(chǎng),Cortex-M3的特點(diǎn)有:性能強(qiáng)勁、功耗低、實(shí)時(shí)性好、代碼密度得到很大改善、使用更加方便、低成本的整體解決方案、開發(fā)工具眾多:keil、Cube…
二者的關(guān)系:
如圖1-1是基于Cortex-M3內(nèi)核的MCU,Cortex-M3相當(dāng)于一個(gè)小CPU(中央處理器)。MCU就是我們看到的芯片,不同芯片生產(chǎn)廠家在得到Cortex-M3內(nèi)核的使用授權(quán)之后,就可以將Cortex-M3內(nèi)核用在自己的硅片設(shè)計(jì)中,然后每個(gè)廠家加入不同容量或者不同類型的存儲(chǔ)器和一些其他的外設(shè)就變成了不同型號(hào)的MCU。
圖1-1
ARM處理器一直支持兩種形式上相對(duì)獨(dú)立的指令集,它們分別是:
32位的ARM指令集對(duì)應(yīng)處理器狀態(tài): ARM狀態(tài)
16位的Thumb指令集對(duì)應(yīng)處理器狀態(tài):Thumb狀態(tài)
Cortex-M3是一個(gè)32位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路徑是32位的,寄存器是32位的,存儲(chǔ)器接口也是32位的。CM3采用了哈佛結(jié)構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)訪問并行不悖。這樣一來數(shù)據(jù)訪問不再占用指令總線,從而提升了性能。
Cortex-M3處理器擁有R0-R15的寄存器組。其中R13作為堆棧指針SP。SP有兩個(gè),但在同一時(shí)刻只能有一個(gè)可以看到,這也就是所謂的“banked”寄存器。
圖1-2
R0-R12都是32位通用寄存器,用于數(shù)據(jù)操作。大多數(shù)16位 Thumb指令只能訪問R0-R7。32位 Thumb-2 指令可以訪問所有寄存器。R13: 兩個(gè)堆棧指針,Cortex-M3擁有兩個(gè)堆棧指針,然而它們是 banked,因此任一時(shí)刻只能使用其中的一個(gè)。主堆棧指針(MSP):復(fù)位后缺省使用的堆棧指針,用于操作系統(tǒng)內(nèi)核以及異常處理例程(包括中斷服務(wù)例程)。進(jìn)程堆棧指針(PSP):由用戶的應(yīng)用程序代碼使用。堆棧指針的最低兩位永遠(yuǎn)是 0,這意味著堆棧總是4 字節(jié)對(duì)齊的。
R14:連接寄存器,當(dāng)呼叫一個(gè)子程序時(shí),由 R14 存儲(chǔ)返回地址。
R15:程序計(jì)數(shù)寄存器,指向當(dāng)前的程序地址。
Cortex-M3 還在內(nèi)核水平上搭載了若干特殊功能寄存器,包括:
程序狀態(tài)字寄存器組(PSRs)
中斷屏蔽寄存器組(PRIMASK, FAULTMASK, BASEPRI)
控制寄存器(CONTROL)
圖1-3
Cortex-M3 預(yù)先定義好了“粗線條的”存儲(chǔ)器映射。通過把片上外設(shè)的寄存器映射到外設(shè)區(qū),就可以簡(jiǎn)單地以訪問內(nèi)存的方式來訪問這些外設(shè)的寄存器,從而控制外設(shè)的工作。結(jié)果,片上外設(shè)可以使用 C 語言來操作。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/121069.html
摘要:我首先百度簡(jiǎn)單了解了架構(gòu)和架構(gòu)的區(qū)別,以我個(gè)人的理解是架構(gòu)代表之前的復(fù)雜指令集,而架構(gòu)代表著精簡(jiǎn)指令集。而我這次的學(xué)習(xí)的重點(diǎn)并不是圍繞著指令集,而是基于架構(gòu)的開發(fā)板的應(yīng)用上。以上就是我本次學(xué)習(xí)架構(gòu)的筆記和心路歷程。 作為新手第一次接觸RISC-V架構(gòu)時(shí)。我首先百度簡(jiǎn)單了解了ARM架構(gòu)和RIS...
摘要:基于開發(fā)的軟件包導(dǎo)師汪禮超學(xué)員崔林威摘要騰訊物聯(lián)網(wǎng)操作系統(tǒng)是騰訊面向物聯(lián)網(wǎng)領(lǐng)域開發(fā)的實(shí)時(shí)操作系統(tǒng),具有低功耗,低資源占用,模塊化,可裁剪等特性。圖中斷函數(shù)處理進(jìn)行生成工程配置,按如下界面進(jìn)行配置,最后點(diǎn)擊,并點(diǎn)擊。 ...
摘要:嚴(yán)格地說,應(yīng)該是模仿實(shí)驗(yàn)。為什么覺得無從下手,看資料沒有頭緒經(jīng)驗(yàn)總結(jié)看資料需要計(jì)劃耐心和速度這里所謂的資料包括書籍文檔。建議有報(bào)銷條件的同學(xué)自己設(shè)計(jì)一塊板子學(xué)習(xí)。無法報(bào)銷的同學(xué),可以選購(gòu)一款開發(fā)板學(xué)習(xí)。 STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARMCortex...
摘要:一交叉編譯概念什么是交叉編譯交叉編譯是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼。也要樹莓派有時(shí)又是因?yàn)槟康钠脚_(tái)還沒有建立,連操作系統(tǒng)都沒有,根本談不上運(yùn)行什么編譯器。 ...
摘要:實(shí)踐證明,加上穩(wěn)定可靠的外圍電路和抗干擾電源,以為核心的產(chǎn)品能成功應(yīng)用于苛刻的工業(yè)環(huán)境,使開源硬件和開發(fā)平臺(tái)得到更廣泛的應(yīng)用,產(chǎn)品多樣性遠(yuǎn)遠(yuǎn)高于官方開發(fā)板,是學(xué)習(xí)的首選。 說到MicroPython,也許有人會(huì)感到陌生。而說到和它密切相關(guān)的Python,是否會(huì)恍然大悟呢?Python屬于解釋型語言,1989年才開發(fā)完成的Python顯然非常年輕。然而經(jīng)過數(shù)十年的磨礪,如今Python已...
閱讀 1587·2021-10-18 13:35
閱讀 2370·2021-10-09 09:44
閱讀 824·2021-10-08 10:05
閱讀 2723·2021-09-26 09:47
閱讀 3577·2021-09-22 15:22
閱讀 441·2019-08-29 12:24
閱讀 2004·2019-08-29 11:06
閱讀 2862·2019-08-26 12:23