一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

簡(jiǎn)單認(rèn)識(shí)ARM處理器家族

sakobpqhz6 ? 來(lái)源:TrustZone ? 2024-01-02 10:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

就把這當(dāng)作ARM學(xué)習(xí)的開(kāi)篇,雖然最近RiscV被各大媒體推崇,我也持續(xù)看好。

但是我還是覺(jué)得短期內(nèi)很難在高利潤(rùn)的行當(dāng)對(duì)ARM和x86造成威脅,因?yàn)橹噶罴奶攸c(diǎn),以及各個(gè)廠家的各自為戰(zhàn),期待早點(diǎn)出現(xiàn)RiscV的天降猛男。

有個(gè)朋友,說(shuō)他們公司因?yàn)橹撇?,只有V8的授權(quán)。所以開(kāi)源或者自研架構(gòu)又是一條不可避免的道路,不過(guò)無(wú)論如何,對(duì)于我們來(lái)說(shuō),技術(shù)是具有遷移性和相關(guān)性的,所以某種程度上,不用過(guò)于的糾結(jié),開(kāi)始行動(dòng)比較重要,當(dāng)然選擇很重要。

突然發(fā)現(xiàn)我也是廢話大師!

PART ONE-實(shí)現(xiàn)

1.ARM處理器家族

(1)什么是多內(nèi)核

Candidates should be familiar with the available processors from ARM and know which of these may be used in multiprocessor configurations.

需要熟悉ARM的處理器,并且了解其中哪些是用于多處理器配置的。

ARM處理器根據(jù)其設(shè)計(jì)和應(yīng)用場(chǎng)景的不同,有多種不同的系列。其中,Cortex-A系列是用于高計(jì)算要求的領(lǐng)域,如智能手機(jī)、平板電腦、汽車娛樂(lè)系統(tǒng)、數(shù)字電視等,它可以運(yùn)行豐富的操作系統(tǒng)和提供交互媒體和圖形體驗(yàn)。

在Cortex-A系列中,Cortex-A9微體系結(jié)構(gòu)既可用于可伸縮的多核處理器(Cortex-A9 MPCore多核處理器),也可用于更傳統(tǒng)的處理器(Cortex-A9單核處理器)。這兩種類型的處理器都支持16、32或64KB 4路關(guān)聯(lián)的L1高速緩存配置,對(duì)于可選的L2高速緩存控制器,最多支持8MB的L2高速緩存配置。這種高度的靈活性使它們能夠適用于特定的應(yīng)用領(lǐng)域和市場(chǎng)。

Cortex-A系列中的Cortex-A9內(nèi)核可以用于多處理器配置。它既可用于可伸縮的多核處理器(Cortex-A9 MPCore多核處理器),也可用于更傳統(tǒng)的處理器(Cortex-A9單核處理器)。

Cortex-A9 MPCore多核處理器包含兩個(gè)或更多同構(gòu)或異構(gòu)的內(nèi)核,并支持運(yùn)行一個(gè)輕量級(jí)的操作系統(tǒng)以進(jìn)行系統(tǒng)管理。它適合用于高性能、高吞吐量的計(jì)算應(yīng)用,如服務(wù)器、高端智能手機(jī)和平板電腦等。

另外,Cortex-A15和Cortex-A17內(nèi)核也是高性能處理器,可以用于多種配置中。它們具有更強(qiáng)的性能和功效,并支持運(yùn)行復(fù)雜的操作系統(tǒng)和交互媒體和圖形體驗(yàn)。

總之,ARM的Cortex-A系列處理器中的Cortex-A9、Cortex-A15和Cortex-A17內(nèi)核都可以用于多處理器配置,以滿足高性能和高計(jì)算要求的應(yīng)用需求。

另外,Cortex-M系列是通用微處理器,一般不運(yùn)行操作系統(tǒng)或只運(yùn)行實(shí)時(shí)操作系統(tǒng)(RTOS)。

而Cortex-R系列是實(shí)時(shí)微處理器,它們?cè)贑ortex-M的基礎(chǔ)上增強(qiáng)了實(shí)時(shí)性能,主要用于高安全性和高實(shí)時(shí)性的場(chǎng)合。

(2)連接硬件

Candidates should be aware of the concept of coherency hardware, what it does, why it is required and what are the benefits of using it.

需要了解連接硬件的含義,它是做什么的,為什么需要它以及它的優(yōu)勢(shì)是什么。

連接硬件是在多核系統(tǒng)中必須使用的。要理解它是如何工作的以及它是如何影響軟件開(kāi)發(fā)的,需要具備對(duì)多核系統(tǒng)以及緩存知識(shí)的了解。

在多核系統(tǒng)中,硬件連接和通信是一個(gè)關(guān)鍵的考慮因素。為了實(shí)現(xiàn)多個(gè)處理器核心之間的有效通信和數(shù)據(jù)共享,通常需要使用高速緩存一致性協(xié)議,如MESI協(xié)議。這些協(xié)議確保當(dāng)一個(gè)核心修改了共享數(shù)據(jù)時(shí),其他核心能夠立即或最終獲得更新的數(shù)據(jù)。

在多核系統(tǒng)中,每個(gè)核心都有自己的高速緩存(L1或L2),但它們之間需要通過(guò)共享的內(nèi)存區(qū)域進(jìn)行通信。當(dāng)一個(gè)核心訪問(wèn)共享內(nèi)存區(qū)域時(shí),其他核心也需要更新它們的高速緩存以確保一致性。

為了實(shí)現(xiàn)這一目標(biāo),硬件需要維護(hù)一種狀態(tài)機(jī)制,如MESI協(xié)議中的狀態(tài),來(lái)跟蹤每個(gè)高速緩存行的狀態(tài)(例如,修改、獨(dú)占、共享等)。當(dāng)一個(gè)核心修改了共享數(shù)據(jù)時(shí),它會(huì)發(fā)送一個(gè)消息給其他核心,通知它們更新它們的高速緩存行狀態(tài)。

這種通信機(jī)制對(duì)于確保多核系統(tǒng)中的數(shù)據(jù)一致性和正確性至關(guān)重要。它也影響軟件開(kāi)發(fā)的方面,因?yàn)?a target="_blank">開(kāi)發(fā)者需要考慮如何有效地利用多核處理器資源,并確保數(shù)據(jù)的一致性和共享。

為了更有效地開(kāi)發(fā)多核系統(tǒng)軟件,開(kāi)發(fā)者需要了解硬件的連接方式和通信機(jī)制,以便編寫(xiě)高效、可靠的并行代碼。他們還需要了解多核處理器架構(gòu)的特性和限制,以及如何利用硬件特性來(lái)優(yōu)化軟件性能。

多核心系統(tǒng)中的硬件連接和通信對(duì)軟件開(kāi)發(fā)的影響主要體現(xiàn)在以下幾個(gè)方面:

內(nèi)存一致性:在多核心系統(tǒng)中,每個(gè)核心都有自己的高速緩存(L1或L2),但它們之間需要通過(guò)共享的內(nèi)存區(qū)域進(jìn)行通信。為了確保數(shù)據(jù)的一致性,需要使用高速緩存一致性協(xié)議,如MESI協(xié)議。這些協(xié)議確保當(dāng)一個(gè)核心修改了共享數(shù)據(jù)時(shí),其他核心能夠立即或最終獲得更新的數(shù)據(jù)。軟件開(kāi)發(fā)需要考慮如何處理這種內(nèi)存一致性的問(wèn)題,以避免數(shù)據(jù)不一致或競(jìng)態(tài)條件。

通信開(kāi)銷:在多核心系統(tǒng)中,核心之間的通信存在一定的開(kāi)銷。如果大量核心頻繁地進(jìn)行通信,會(huì)影響系統(tǒng)的性能。因此,在軟件開(kāi)發(fā)中,需要盡量避免不必要的核心間通信,或者采用高效的通信機(jī)制來(lái)降低通信開(kāi)銷。

負(fù)載均衡:在多核心系統(tǒng)中,如果負(fù)載分布不均衡,會(huì)導(dǎo)致某些核心空閑而其他核心還在忙碌,從而影響系統(tǒng)性能。軟件開(kāi)發(fā)中需要考慮負(fù)載均衡的問(wèn)題,通過(guò)合理地分配任務(wù)和數(shù)據(jù),使得每個(gè)核心都能得到充分利用。

并行算法編程模型:為了充分利用多核心系統(tǒng)的并行處理能力,需要采用適合并行處理的算法和編程模型。這包括使用線程、進(jìn)程、數(shù)據(jù)并行等編程模式,以及選擇合適的同步原語(yǔ)和通信機(jī)制。

系統(tǒng)集成和測(cè)試:在多核心系統(tǒng)中,由于硬件連接和通信的復(fù)雜性,系統(tǒng)的集成和測(cè)試變得更加困難。軟件開(kāi)發(fā)中需要考慮如何進(jìn)行有效的集成和測(cè)試,以確保系統(tǒng)的正確性和可靠性。

綜上所述,多核心系統(tǒng)中的硬件連接和通信對(duì)軟件開(kāi)發(fā)的影響是多方面的。

為了充分利用多核心系統(tǒng)的優(yōu)勢(shì),開(kāi)發(fā)者需要深入了解硬件的特性和限制,并采用合適的并行處理技術(shù)和編程模型來(lái)優(yōu)化軟件性能。

(3)通用中斷控制器GIC

GIC常用于Cortex-A5多內(nèi)核、Cortex-A9多內(nèi)核以及Cortex-R7多內(nèi)核處理器中,它也可作為可選部件存在于Cortex-A7和Cortex-A15內(nèi)核中。

它提供了一種可擴(kuò)展的中斷處理機(jī)制,使開(kāi)發(fā)者可以根據(jù)需要進(jìn)行配置和使用。

GIC(Generic Interrupt Controller)是ARM Cortex-A系列處理器中使用的通用中斷控制器。它為多核處理器和單核處理器提供中斷管理功能,并支持可擴(kuò)展的中斷處理機(jī)制。

在多核處理器中,GIC允許多個(gè)核心共享中斷信號(hào),并協(xié)調(diào)各個(gè)核心對(duì)共享中斷的處理。通過(guò)GIC,每個(gè)核心可以獨(dú)立地響應(yīng)和分發(fā)中斷,確保中斷處理的并行性和高效性。

此外,GIC還提供了一些可編程的中斷控制功能,如設(shè)置中斷優(yōu)先級(jí)、子優(yōu)先級(jí)、使能/禁用中斷等。這些功能使得開(kāi)發(fā)者能夠靈活地配置和控制中斷處理的行為。

總之,GIC是Cortex-A系列處理器中用于中斷管理的關(guān)鍵組件,它為多核和單核處理器提供了通用和高效的中斷處理機(jī)制。

(4)架構(gòu)版本歸屬

Candidates must be able to identify which ARM processors conform to which Architecture versions. Architectures from ARMv4T onwards are included, with the exception of ARMv7-M and ARMv6-M architectures.

需要能夠識(shí)別具體的ARM的處理器是屬于哪個(gè)處理器架構(gòu)版本的。ARMv4T架構(gòu)之后的都需要了解。

ARMv4T架構(gòu):

ARM7TDMI系列處理器(如ARM710T、ARM720T、ARM740T等)

ARM9TDMI系列處理器(如ARM920T、ARM940T等)

StrongARM系列處理器(Intel公司的產(chǎn)品)

ARMv5TEJ架構(gòu):

ARM7EJ-S系列處理器(基于ARMv5TEJ架構(gòu))

ARMv6架構(gòu):

ARM11系列處理器(如ARM11MPCore、ARM1176、ARM1156、ARM1136等)

XScale系列處理器(Intel公司的產(chǎn)品)

ARMv7架構(gòu):

Cortex-A系列處理器(如Cortex-A5、Cortex-A7、Cortex-A9、Cortex-A15等)

Cortex-R系列處理器(如Cortex-R4、Cortex-R7等)

Cortex-M系列處理器(如Cortex-M3、Cortex-M4等)

ARMv8架構(gòu):

AArch64架構(gòu)(64位指令集)

AArch32架構(gòu)(32位指令集)

Cortex-A50系列處理器(基于ARMv8架構(gòu),支持64位指令集)

Cortex-A53系列處理器(基于ARMv8架構(gòu),支持64位指令集)

Cortex-A57系列處理器(基于ARMv8架構(gòu),支持64位指令集)

Cortex-A72系列處理器(基于ARMv8架構(gòu),支持64位指令集)

ARMv9架構(gòu):

Cortex-X2

Cortex-A710

Cortex-A510

這些是ARM的處理器架構(gòu)版本中比較常見(jiàn)的系列。每個(gè)系列中的處理器型號(hào)可能會(huì)有所不同,但它們都遵循相同的架構(gòu)規(guī)范。希望這些信息對(duì)您有所幫助!

(5)性能

Candidates must be able to distinguish between applications, real-time and microcontroller profiles, be aware of the distinguishing features between them and understand the typical target market/applications of each.

需要能夠區(qū)別ARM Cortex的應(yīng)用、實(shí)時(shí)和微控制器三大系列的區(qū)別,理解它們之間的不同特性以及所針對(duì)的典型目標(biāo)應(yīng)用和市場(chǎng)。

《Cortex-A系列程序員指南》,顧名思義,它只介紹了Cortex-A系列,并沒(méi)有提供很多關(guān)于Cortex-R和Cortex-M系列的知識(shí)。Cortex-A系列處理器主要應(yīng)用于需要MMU內(nèi)存管理單元和緩存工作的操作系統(tǒng)的應(yīng)用場(chǎng)合,要求擁有高性能的處理能力。

Cortex-R系列處理器主要面向?qū)崟r(shí)應(yīng)用,它面向需要硬實(shí)時(shí)反應(yīng)能力的嵌入式系統(tǒng)。這說(shuō)明它的特性要求有快速、確定的中斷響應(yīng),有緊密耦合的存儲(chǔ)器(TCM)位于處理器的局部快速總線上以提供快速響應(yīng)的代碼和數(shù)據(jù),有奇偶校驗(yàn)或者ECC校驗(yàn)機(jī)制來(lái)保證錯(cuò)誤的檢測(cè)和修正。

Cortex-R系列處理器使用內(nèi)存保護(hù)單元MPU代替Cortex-A系列中的內(nèi)存管理單元MMU來(lái)進(jìn)行內(nèi)存的管理和保護(hù)。

Cortex-M系列處理器面向低成本和功耗敏感的微控制器和混合信號(hào)系統(tǒng)。例如一些終端設(shè)備,包括智能電表、人機(jī)交互設(shè)備、自動(dòng)和工業(yè)控制系統(tǒng)、大型家用電器、消費(fèi)類產(chǎn)品和醫(yī)療儀器等。這類領(lǐng)域應(yīng)用的關(guān)鍵是要求微量代碼(更好的代碼密度),易于使用以及節(jié)能。例如,Cortex-M0+內(nèi)核是ARM處理器中能耗最低的內(nèi)核,可達(dá)到mW/MHz。Cortex-M系列處理器僅支持16位和32位的Thumb指令集,通常不含緩存。

之前做過(guò)一段時(shí)間Zigbee的智慧農(nóng)業(yè)項(xiàng)目,買的開(kāi)發(fā)板就是M內(nèi)核。

不過(guò)已經(jīng)三年前了,時(shí)間好快??!

2.指令周期時(shí)序

Candidates should be aware of the effects of pipeline and memory system on instruction execution timing.

需要了解流水線和內(nèi)存系統(tǒng)對(duì)指令執(zhí)行時(shí)間的影響。

了解一些流水線架構(gòu)相關(guān)的基本知識(shí)。

了解ARM7TDMI的三級(jí)流水線(取指、譯碼、執(zhí)行)的含義可以幫助理解流水線對(duì)執(zhí)行周期時(shí)序的影響。

ARM7TDMI技術(shù)參考手冊(cè)給出了這個(gè)流水線,這讓理解流水線的概念變得更容易。

例如,在ARM7TDMI上分支跳轉(zhuǎn)會(huì)導(dǎo)致2個(gè)周期的損失,因?yàn)榉种D(zhuǎn)發(fā)生在流水線的執(zhí)行階段,此時(shí)位于取指和譯碼階段的指令將被沖刷掉,流水線被重新按新的指令流填滿,因此在跳轉(zhuǎn)后的第一條指令執(zhí)行前將產(chǎn)生3個(gè)周期的延遲。

同理,一旦理解了簡(jiǎn)單的流水線,“加載-使用損耗”的概念就很明了了,它用于描述當(dāng)寄存器加載一個(gè)存儲(chǔ)空間的值時(shí)的狀況。

如果接下來(lái)的指令需要使用這個(gè)寄存器的值,那么它需要等待該寄存器完成數(shù)據(jù)的加載(并到達(dá)處理器流水線的相關(guān)級(jí),可能通過(guò)專用通道到達(dá))。

編譯器(或者匯編器)會(huì)避免這種情況發(fā)生,它一般會(huì)試圖把使用加載數(shù)據(jù)的指令從加載指令處分離開(kāi)。

同理,一旦理解了簡(jiǎn)單的流水線,“加載-使用損耗”的概念就很明了了,它用于描述當(dāng)寄存器加載一個(gè)存儲(chǔ)空間的值時(shí)的狀況。

如果接下來(lái)的指令需要使用這個(gè)寄存器的值,那么它需要等待該寄存器完成數(shù)據(jù)的加載(并到達(dá)處理器流水線的相關(guān)級(jí),可能通過(guò)專用通道到達(dá))。

編譯器(或者匯編器)會(huì)避免這種情況發(fā)生,它一般會(huì)試圖把使用加載數(shù)據(jù)的指令從加載指令處分離開(kāi)。

PART TWO-軟件調(diào)試

1.標(biāo)準(zhǔn)調(diào)試手段

(1)軟件斷點(diǎn)和硬件斷點(diǎn)的區(qū)別

Candidates should be aware of the differences and limitations between Hardware and Software breakpoints. They should understand the usage of watchpoint units in configuring these two types of breakpoint.

需要清楚硬件和軟件斷點(diǎn)的區(qū)別以及各自的限制,需要了解在配置這兩種類型的斷點(diǎn)時(shí)觀察點(diǎn)單元的使用。

在較早的處理器(如ARM7TDMI)中,并沒(méi)有配備專用的斷點(diǎn)指令BKPT,而是使用設(shè)置觀察點(diǎn)單元來(lái)查看特定的位模式的,調(diào)試器可以在RAM的代碼空間中設(shè)置無(wú)限量的軟件斷點(diǎn)。

調(diào)試器會(huì)讀取需要放置斷點(diǎn)指令的操作碼,并保存到主機(jī)上。這條指令然后被一個(gè)特定的數(shù)據(jù)位替代(通常對(duì)應(yīng)的是一個(gè)無(wú)效指令)。

通常,這需要處理器的數(shù)據(jù)緩存被清空并且使指令緩存無(wú)效,以確保從處理器數(shù)據(jù)端寫(xiě)入的特定數(shù)據(jù)可以被取指邏輯正確訪問(wèn)。

在較新的處理器上,包括所有的Cortex系列處理器,則采用了BKPT指令來(lái)代替原來(lái)的需要放置斷點(diǎn)的操作碼。

當(dāng)斷點(diǎn)被移除時(shí),原本存儲(chǔ)在主機(jī)上的原操作碼會(huì)被寫(xiě)回。與此對(duì)應(yīng)的是,硬件斷點(diǎn)可以被設(shè)置在任何類型的存儲(chǔ)器上(包括RAM和ROM),但它的數(shù)量則由硬件限制。

在學(xué)習(xí)這部分內(nèi)容時(shí),建議使用真實(shí)的調(diào)試器來(lái)理解它的使用和限制,獲得一些實(shí)際的應(yīng)用經(jīng)驗(yàn),這可以比書(shū)本上的解釋提供更多的有益背景知識(shí)。

軟件斷點(diǎn)和硬件斷點(diǎn)是兩種不同的斷點(diǎn)類型,它們?cè)趯?shí)現(xiàn)方式和適用場(chǎng)景上存在顯著的差異。

硬件斷點(diǎn):

需要目標(biāo)CPU的硬件支持。

斷點(diǎn)的數(shù)目受特定硬件設(shè)計(jì)的限制。例如,ARM7/9內(nèi)核最多支持兩個(gè)硬件斷點(diǎn),而ARM11可以支持到8個(gè)硬件斷點(diǎn)。

硬件斷點(diǎn)可以設(shè)置在任何位置的代碼上,包括ROM和RAM。

由于硬件斷點(diǎn)設(shè)置的靈活性,它是最優(yōu)先選用的斷點(diǎn)資源。

軟件斷點(diǎn):

通過(guò)在代碼中設(shè)置特征值的方式實(shí)現(xiàn)。

當(dāng)需要在某地址代碼處設(shè)置軟件斷點(diǎn)時(shí),仿真器會(huì)先將此處代碼進(jìn)行備份保護(hù),然后將預(yù)先設(shè)定好的斷點(diǎn)特征值(一般為0x0000等不易與代碼混淆的值)寫(xiě)入此地址,覆蓋原來(lái)的代碼數(shù)據(jù)。

當(dāng)程序運(yùn)行到此特征值所在的地址時(shí),仿真器識(shí)別出此處是一個(gè)軟斷點(diǎn),便會(huì)產(chǎn)生中斷。當(dāng)取消斷點(diǎn)時(shí),之前受保護(hù)的代碼信息會(huì)被自動(dòng)恢復(fù)。

由于軟件斷點(diǎn)需要修改相應(yīng)地址的值,所以一般只能設(shè)在RAM上,但是數(shù)量可以不受限制??偟膩?lái)說(shuō),軟件斷點(diǎn)和硬件斷點(diǎn)各有其特點(diǎn)和使用場(chǎng)景。硬件斷點(diǎn)由于其設(shè)置的靈活性,通常是最優(yōu)先選用的斷點(diǎn)資源,但當(dāng)需要大量設(shè)置斷點(diǎn)時(shí),軟件斷點(diǎn)可以作為有效的補(bǔ)充資源。

硬件斷點(diǎn)在實(shí)際應(yīng)用中更為常用。原因主要有以下幾點(diǎn):

硬件斷點(diǎn)通常更快,因?yàn)樗鼈冎苯佑捎布刂?,不需要軟件進(jìn)行干預(yù)。

硬件斷點(diǎn)通常更可靠,因?yàn)樗鼈儾皇苘浖\(yùn)行的影響,比如內(nèi)存管理、進(jìn)程切換等。

硬件斷點(diǎn)通??梢栽O(shè)置更多的斷點(diǎn),因?yàn)樗鼈冎苯佑捎布С?,不像軟件斷點(diǎn)可能會(huì)受到軟件資源的限制。

當(dāng)然,在某些情況下,軟件斷點(diǎn)也可能是更好的選擇。例如,對(duì)于一些沒(méi)有硬件調(diào)試支持的低端設(shè)備,或者在需要精細(xì)控制斷點(diǎn)的位置和數(shù)量時(shí),可能需要使用軟件斷點(diǎn)。

硬件斷點(diǎn)在實(shí)際應(yīng)用中更為常用,但具體選擇哪種斷點(diǎn)類型取決于具體的應(yīng)用場(chǎng)景和需求。

(2)監(jiān)控模式與停止模式調(diào)試

Candidates should be aware of the differences between debugging in each of the two modes and when one would be chosen over the other e.g. choosing monitor mode if interrupts must continue to be serviced while debugging.

需要了解調(diào)試的兩種模式之間的區(qū)別以及何時(shí)選用哪種模式。

例如,需要在調(diào)試過(guò)程中仍舊響應(yīng)中斷時(shí),則應(yīng)選擇監(jiān)測(cè)模式來(lái)調(diào)試。

監(jiān)控模式和停止模式調(diào)試之間的主要區(qū)別在于它們的目的和行為。

監(jiān)控模式調(diào)試主要用于實(shí)時(shí)監(jiān)測(cè)程序的運(yùn)行狀態(tài)和行為。在這種模式下,程序繼續(xù)正常運(yùn)行,同時(shí)允許開(kāi)發(fā)者實(shí)時(shí)觀察變量值、執(zhí)行流程和函數(shù)調(diào)用等信息。監(jiān)控模式調(diào)試適用于需要了解程序?qū)崟r(shí)行為的情況,以便及時(shí)發(fā)現(xiàn)潛在問(wèn)題或異常。它也適用于需要實(shí)時(shí)響應(yīng)用戶輸入或外部事件的情況。

停止模式調(diào)試主要用于暫停程序的執(zhí)行,以便進(jìn)行深入檢查和診斷問(wèn)題。在這種模式下,程序停止執(zhí)行,開(kāi)發(fā)者可以對(duì)程序進(jìn)行單步執(zhí)行、檢查變量值、查看堆棧跟蹤等操作,以便更好地理解程序的狀態(tài)和行為。停止模式調(diào)試適用于需要深入了解程序內(nèi)部狀態(tài)和行為的情況,例如處理復(fù)雜錯(cuò)誤或調(diào)試性能問(wèn)題。

在需要調(diào)試過(guò)程中仍舊響應(yīng)用戶中斷時(shí),監(jiān)控模式調(diào)試可能更為合適。在這種模式下,程序繼續(xù)正常運(yùn)行,同時(shí)允許開(kāi)發(fā)者實(shí)時(shí)觀察和監(jiān)控程序的運(yùn)行狀態(tài)。這樣可以及時(shí)發(fā)現(xiàn)和修復(fù)與中斷相關(guān)的問(wèn)題,并確保程序的正常運(yùn)行。

然而,在某些情況下,可能需要使用停止模式調(diào)試來(lái)更好地診斷問(wèn)題。例如,當(dāng)遇到復(fù)雜的錯(cuò)誤或性能問(wèn)題時(shí),可能需要暫停程序的執(zhí)行,以便進(jìn)行更深入的檢查和分析。在這種情況下,停止模式調(diào)試可以幫助開(kāi)發(fā)者更好地理解程序的狀態(tài)和行為,并找到問(wèn)題的根本原因。

綜上所述,選擇監(jiān)控模式還是停止模式調(diào)試取決于具體的需求和場(chǎng)景。監(jiān)控模式更適合實(shí)時(shí)監(jiān)測(cè)和響應(yīng)用戶輸入或外部事件的情況,而停止模式更適合深入檢查和診斷復(fù)雜問(wèn)題的情況。根據(jù)實(shí)際情況選擇合適的調(diào)試模式將有助于提高開(kāi)發(fā)效率和程序的穩(wěn)定性。

(3)矢量捕捉

Candidates should be aware of the function of this feature, why and when it is typically used.

需要了解矢量捕捉的功能,為什么以及何時(shí)需要使用它。

矢量捕捉是調(diào)試器捕獲處理器異常中斷的方法,早期開(kāi)發(fā)時(shí)在異常中斷服務(wù)句柄被取指之前捕獲到處理器的異常中斷。

許多ARM的處理器都由矢量捕獲硬件來(lái)完成這一任務(wù)。而在另外一些處理器,如ARM7TDMI,調(diào)試器可以采用在異常矢量表的適當(dāng)位置設(shè)置斷點(diǎn)的方法來(lái)進(jìn)行中斷矢量捕獲。

矢量捕捉是一種調(diào)試技術(shù),用于在處理器異常中斷發(fā)生時(shí)捕獲異常信息。它通常用于嵌入式系統(tǒng)開(kāi)發(fā)中,尤其是在調(diào)試和排除異常問(wèn)題時(shí)。

矢量捕捉的主要目的是獲取異常發(fā)生時(shí)的處理器狀態(tài)信息,包括程序計(jì)數(shù)器(PC)、堆棧指針(SP)、寄存器內(nèi)容等。這些信息可以幫助開(kāi)發(fā)人員快速定位異常發(fā)生的具體位置,并理解異常發(fā)生時(shí)處理器的行為。

為什么需要使用矢量捕捉?主要有以下幾個(gè)原因:

快速定位異常:通過(guò)矢量捕捉,開(kāi)發(fā)人員可以獲得異常發(fā)生時(shí)的詳細(xì)信息,從而快速定位異常發(fā)生的具體位置。這有助于縮短調(diào)試時(shí)間,提高開(kāi)發(fā)效率。

深入理解異常行為:矢量捕捉不僅提供了異常發(fā)生時(shí)的處理器狀態(tài),還可以幫助開(kāi)發(fā)人員理解異常的具體行為。這有助于確定異常的根本原因,并為修復(fù)異常提供重要線索。

優(yōu)化異常處理:通過(guò)矢量捕捉,開(kāi)發(fā)人員可以評(píng)估異常處理程序的性能,并對(duì)其進(jìn)行優(yōu)化。例如,通過(guò)分析捕捉到的異常信息,開(kāi)發(fā)人員可以檢查異常處理程序是否正確處理了異常,并對(duì)其進(jìn)行必要的調(diào)整。

何時(shí)需要使用矢量捕捉?以下是一些可能需要使用矢量捕捉的情況:

當(dāng)無(wú)法正常啟動(dòng)程序時(shí):如果程序無(wú)法正常啟動(dòng),可能存在硬件或軟件故障。在這種情況下,使用矢量捕捉可以幫助開(kāi)發(fā)人員快速定位問(wèn)題所在。

當(dāng)程序出現(xiàn)未處理的異常時(shí):在程序運(yùn)行過(guò)程中,如果出現(xiàn)未處理的異常,可能會(huì)導(dǎo)致程序崩潰或數(shù)據(jù)丟失。通過(guò)矢量捕捉,可以捕獲這些異常并進(jìn)行調(diào)試,以修復(fù)問(wèn)題。

當(dāng)需要深入了解程序行為時(shí):有時(shí),開(kāi)發(fā)人員可能需要對(duì)程序的運(yùn)行行為進(jìn)行深入了解。例如,在性能優(yōu)化或調(diào)試復(fù)雜問(wèn)題時(shí),矢量捕捉可以幫助開(kāi)發(fā)人員更好地理解程序的行為。

總之,矢量捕捉是一種非常有用的調(diào)試技術(shù),可以幫助開(kāi)發(fā)人員快速定位異常問(wèn)題、深入理解異常行為并進(jìn)行優(yōu)化處理。在嵌入式系統(tǒng)開(kāi)發(fā)中,特別是在調(diào)試復(fù)雜異常問(wèn)題時(shí),使用矢量捕捉可以提高開(kāi)發(fā)效率和程序的穩(wěn)定性。

(4)判別異常觸發(fā)原因(如DFSR、SPSR、Link鏈接寄存器)

Candidates should understand how to determine the actual cause of an exception by using additional resources, which might include special registers that contain fault status. For example, using the DFSR, DFAR to determine cause of a Data Abort or using the SPSR and LR to locate and retrieve SVC comment field.

DFSR (Data Fault Status Register):當(dāng)數(shù)據(jù)訪問(wèn)發(fā)生異常時(shí),相關(guān)的異常類型和向量會(huì)寫(xiě)入到DFSR寄存器中。例如,當(dāng)發(fā)生數(shù)據(jù)訪問(wèn)權(quán)限違規(guī)、地址無(wú)效或數(shù)據(jù)讀取錯(cuò)誤等情況時(shí),會(huì)觸發(fā)數(shù)據(jù)異常,相關(guān)的信息會(huì)被寫(xiě)入到DFSR中。

SPSR (Saved Program Status Register):在進(jìn)入異常處理時(shí),當(dāng)前程序狀態(tài)寄存器(PSR)會(huì)被保存到SPSR中,以便在異常處理完成后恢復(fù)執(zhí)行。通過(guò)檢查SPSR的狀態(tài),可以了解異常發(fā)生時(shí)的程序狀態(tài)。

Link鏈接寄存器:在某些架構(gòu)中,如ARM,鏈接寄存器用于保存子程序返回地址。當(dāng)一個(gè)子程序開(kāi)始執(zhí)行時(shí),返回地址會(huì)被推入堆棧并存放在鏈接寄存器中。如果發(fā)生異常,這個(gè)地址可以用于從堆棧中恢復(fù)并跳轉(zhuǎn)到正確的返回地址。

為了判斷具體的異常觸發(fā)原因,需要根據(jù)實(shí)際場(chǎng)景和異常的具體表現(xiàn)來(lái)分析。這可能包括檢查程序狀態(tài)寄存器(PSR)、程序計(jì)數(shù)器(PC)、堆棧指針(SP)和其他相關(guān)的系統(tǒng)寄存器的狀態(tài),以及檢查相關(guān)的內(nèi)存和I/O操作等。此外,異常處理程序中的上下文信息和調(diào)用堆棧信息也是重要的線索。

應(yīng)當(dāng)理解如何使用額外的資源來(lái)判別觸發(fā)一個(gè)異常中斷的原因,這些資源通常包括含有錯(cuò)誤狀態(tài)的特殊寄存器,如使用DFSR、DFAR來(lái)判別數(shù)據(jù)中止的原因,采用SPSR以及Link寄存器來(lái)定位并獲取SVC系統(tǒng)調(diào)用的參數(shù)位。

當(dāng)調(diào)試一段軟件時(shí),通常有必要了解為何特定的處理器異常會(huì)發(fā)生。為此ARM處理器提供了一系列的寄存器來(lái)提供有用的信息。

在異常中斷中,當(dāng)前異常模式的鏈接寄存器(LR)會(huì)給出主程序中最靠近觸發(fā)異常的指令的位置。通常觸發(fā)異常的指令的位置是LR寄存器的值減去4或者8。類似地,SPSR寄存器的mode位可以給出在進(jìn)入異常模式之前處理器所處的模式。

對(duì)于特定的模式,還有一些額外的信息。在取指異?;驍?shù)據(jù)中止異常后,CP15寄存器的錯(cuò)誤狀態(tài)寄存器(FSR)和故障地址寄存器(FAR)是值得注意的,它們可以給出異常中止發(fā)生的原因(如一個(gè)外部存儲(chǔ)器錯(cuò)誤或者該地址的轉(zhuǎn)換表項(xiàng)無(wú)效)以及產(chǎn)生異常中止的內(nèi)存訪問(wèn)操作的地址。

注意:ARMv6-M和ARMv7-M架構(gòu)在異常處理模型上與其他的ARM內(nèi)核有所不同。

(5)跟蹤

Candidates should be aware of what Trace is,what on-chip and off-chip components are required to make it work, what it is used for.Also that it is non-intrusive.

需要了解什么是跟蹤,它正常工作需要哪些片上和片外模塊,它是用來(lái)做什么的,以及它是屬于非侵入式的。

通過(guò)跟蹤,開(kāi)發(fā)人員可以了解處理器在運(yùn)行時(shí)執(zhí)行的操作和執(zhí)行的指令。為了實(shí)現(xiàn)跟蹤功能,需要一些片上和片外模塊的支持。

片上模塊包括跟蹤硬件單元和相關(guān)控制邏輯。這些模塊負(fù)責(zé)生成跟蹤數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在內(nèi)部緩沖區(qū)或外部存儲(chǔ)器中,以便后續(xù)分析。片上模塊是非侵入式的,即它們不會(huì)影響處理器的正常功能。

片外模塊包括跟蹤數(shù)據(jù)捕獲單元和外部存儲(chǔ)器。跟蹤數(shù)據(jù)捕獲單元負(fù)責(zé)從片上跟蹤硬件單元獲取跟蹤數(shù)據(jù),并將其轉(zhuǎn)換為可分析的格式。外部存儲(chǔ)器用于存儲(chǔ)跟蹤數(shù)據(jù),以便后續(xù)分析和調(diào)試。

(6)交叉觸發(fā)

ARM交叉觸發(fā)技術(shù)是一種調(diào)試技術(shù),用于在特定事件發(fā)生時(shí)觸發(fā)并記錄處理器的行為。通過(guò)交叉觸發(fā),開(kāi)發(fā)人員可以在調(diào)試過(guò)程中觀察處理器在特定事件發(fā)生時(shí)的行為,例如異常、中斷或特定指令執(zhí)行等。

交叉觸發(fā)機(jī)制通常由硬件和軟件協(xié)同實(shí)現(xiàn)。硬件部分負(fù)責(zé)監(jiān)測(cè)事件的發(fā)生,并在事件發(fā)生時(shí)觸發(fā)跟蹤機(jī)制。跟蹤機(jī)制記錄處理器執(zhí)行的相關(guān)指令和操作,并將數(shù)據(jù)存儲(chǔ)在內(nèi)部緩沖區(qū)或外部存儲(chǔ)器中。軟件部分負(fù)責(zé)讀取跟蹤數(shù)據(jù),并將其轉(zhuǎn)換為可分析的格式,以便開(kāi)發(fā)人員能夠深入了解處理器的行為。

在ARM調(diào)試中,交叉觸發(fā)技術(shù)對(duì)于診斷和解決問(wèn)題非常重要。開(kāi)發(fā)人員可以通過(guò)交叉觸發(fā)機(jī)制觀察處理器在特定事件發(fā)生時(shí)的行為,從而定位問(wèn)題或錯(cuò)誤的根源。這種技術(shù)還可以用于性能分析、代碼覆蓋率分析等場(chǎng)景,幫助開(kāi)發(fā)人員優(yōu)化代碼和改進(jìn)系統(tǒng)性能。

ARM交叉觸發(fā)技術(shù)可以應(yīng)用于多種應(yīng)用場(chǎng)景,以下是其中一些常見(jiàn)的應(yīng)用場(chǎng)景:

異常和中斷調(diào)試:通過(guò)交叉觸發(fā)技術(shù),開(kāi)發(fā)人員可以在異常或中斷發(fā)生時(shí)觀察處理器的行為。這有助于確定異常或中斷發(fā)生的原因,以及處理器在異常或中斷處理過(guò)程中的表現(xiàn)。性能優(yōu)化:交叉觸發(fā)技術(shù)可以幫助開(kāi)發(fā)人員分析處理器在不同工作負(fù)載下的性能表現(xiàn)。通過(guò)觀察處理器在執(zhí)行關(guān)鍵任務(wù)或高負(fù)載情況下的行為,開(kāi)發(fā)人員可以發(fā)現(xiàn)性能瓶頸并優(yōu)化代碼。

代碼覆蓋率分析:交叉觸發(fā)技術(shù)可以用于分析處理器在執(zhí)行不同代碼路徑時(shí)的行為。通過(guò)記錄處理器在特定事件發(fā)生時(shí)的行為,開(kāi)發(fā)人員可以確定代碼覆蓋率,并確定哪些代碼路徑被執(zhí)行和哪些未被執(zhí)行。

系統(tǒng)穩(wěn)定性分析:交叉觸發(fā)技術(shù)可以幫助開(kāi)發(fā)人員分析系統(tǒng)在不同條件下的穩(wěn)定性表現(xiàn)。例如,在系統(tǒng)崩潰或掛起的情況下,開(kāi)發(fā)人員可以通過(guò)交叉觸發(fā)技術(shù)觀察處理器在崩潰或掛起前的行為,以確定問(wèn)題的根源。

安全漏洞分析:交叉觸發(fā)技術(shù)可以用于安全漏洞分析中,幫助開(kāi)發(fā)人員定位和處理安全問(wèn)題。例如,開(kāi)發(fā)人員可以通過(guò)交叉觸發(fā)技術(shù)觀察處理器在執(zhí)行惡意代碼時(shí)的行為,以便發(fā)現(xiàn)和處理安全漏洞。

總的來(lái)說(shuō),ARM交叉觸發(fā)技術(shù)是一種強(qiáng)大的調(diào)試工具,可以幫助開(kāi)發(fā)人員深入了解處理器的行為和性能,并解決潛在的問(wèn)題或錯(cuò)誤。它可以應(yīng)用于多種應(yīng)用場(chǎng)景,包括異常和中斷調(diào)試、性能優(yōu)化、代碼覆蓋率分析、系統(tǒng)穩(wěn)定性分析和安全漏洞分析等。

(7)物理調(diào)試接口

Candidates should be aware of available options for making physical connections to the target for the purpose of run-control debug (e.g. JTAG, SWD)

需要理解在線調(diào)試所需要的連接到物理目標(biāo)系統(tǒng)的物理連接選項(xiàng)(如JTAG、SWD)。

JTAG是一個(gè)廣泛使用的工業(yè)標(biāo)準(zhǔn),它在物理上通常需要至少5個(gè)信號(hào)引腳來(lái)連接主機(jī)計(jì)算機(jī)和ARM目標(biāo)系統(tǒng)板。串行調(diào)試口SWD是一個(gè)擁有類似調(diào)試功能的2腳調(diào)試口,并且它通常只在較新的處理器上才有。

而從處理器抓取跟蹤信息,則需要比控制代碼執(zhí)行大得多的帶寬,因?yàn)槊總€(gè)周期都會(huì)有很多的32位地址和數(shù)據(jù)信息產(chǎn)生,因此專用的跟蹤端口需要更多的引腳。

此外,跟蹤信息也可以存儲(chǔ)在片上的緩沖區(qū)中,采用較少物理引腳的慢速調(diào)試口來(lái)讀取這些跟蹤信息。

(8)調(diào)試訪問(wèn)內(nèi)存

Candidates should be aware of how a debugger uses the processor to access memory and be aware of how memory translation affects this. They should also understand the potential impact of cache maintenance caused by debug operations on the state of the memory system.

需要了解調(diào)試器是如何使用處理器來(lái)訪問(wèn)內(nèi)存的,并且理解內(nèi)存轉(zhuǎn)換如何影響這種訪問(wèn),還需要理解對(duì)內(nèi)存系統(tǒng)狀態(tài)的調(diào)試操作可能帶來(lái)對(duì)緩存內(nèi)容維系的潛在影響。

調(diào)試器通常需要顯示調(diào)試目標(biāo)內(nèi)存(或者外設(shè))的內(nèi)容并進(jìn)行修改,它通常是通過(guò)處理器執(zhí)行加載或者存儲(chǔ)指令來(lái)實(shí)現(xiàn)的,然而有些系統(tǒng)則可以通過(guò)內(nèi)建的調(diào)試系統(tǒng)單元來(lái)直接對(duì)內(nèi)存進(jìn)行寫(xiě)(或讀)操作,不需要處理器本身參與內(nèi)存操作。

一個(gè)良好的調(diào)試器會(huì)減少調(diào)試動(dòng)作對(duì)系統(tǒng)的影響。例如,它通常會(huì)盡量減小調(diào)試時(shí)對(duì)緩存的修改。

如果調(diào)試器在調(diào)試窗口上顯示一塊內(nèi)存區(qū)域的內(nèi)容但調(diào)試器必須使用處理器來(lái)讀取內(nèi)存時(shí),它會(huì)盡量采用非緩存方式來(lái)操作,從而確保之前緩存中的內(nèi)容不會(huì)被沖刷掉。

程序員必須了解(當(dāng)內(nèi)存管理單元MMU被使能時(shí))調(diào)試顯示使用的是虛擬地址而非物理地址,而且緩存中的內(nèi)容可能與外部存儲(chǔ)器的內(nèi)容不一致。

如果內(nèi)存訪問(wèn)是直接通過(guò)片上系統(tǒng)的調(diào)試單元(而非處理器)來(lái)進(jìn)行的,那么訪問(wèn)使用的就是物理地址而非處理器的虛擬地址轉(zhuǎn)換,而且它是直接訪問(wèn)內(nèi)存的(繞過(guò)處理器的緩存)。

(9)半主機(jī)

Candidates should be aware of semi-hosting,understand what its function is and how it can be used during development. They should also be aware of the invasive nature of using this feature and how it may affect timing etc. They should also be aware of the danger of using semi-hosting when no debugger is connected and how to retarget the standard C library.

需要理解半主機(jī)的功能是什么,在開(kāi)發(fā)過(guò)程中應(yīng)如何使用;

需要了解這種機(jī)制的侵入式特性以及它對(duì)時(shí)序等方面的影響;

還需要了解當(dāng)目標(biāo)板沒(méi)有連接調(diào)試器時(shí)使用這一機(jī)制的風(fēng)險(xiǎn),以及它如何重定向到標(biāo)準(zhǔn)C庫(kù)。

半主機(jī)是一種讓ARM目標(biāo)板上的代碼可以使用主機(jī)計(jì)算機(jī)上調(diào)試器提供的部分資源的機(jī)制。

這些資源可以包含鍵盤(pán)輸入、顯示輸出、硬盤(pán)I/O。例如,程序員可以使用這種機(jī)制提供的標(biāo)準(zhǔn)C庫(kù)函數(shù),如printf()和Scanf()來(lái)使用主機(jī)上的終端屏幕和鍵盤(pán)。

開(kāi)發(fā)的硬件通常不包含全功能的輸入/輸出設(shè)備,而半主機(jī)則可以讓主機(jī)提供這些資源。

半主機(jī)是通過(guò)一系列專用的軟件指令產(chǎn)生異常來(lái)實(shí)現(xiàn)的。

應(yīng)用程序使用適當(dāng)?shù)陌胫鳈C(jī)異常調(diào)用——調(diào)試中介來(lái)響應(yīng)異常處理。調(diào)試中介會(huì)提供到主機(jī)所需的通信。

半主機(jī)的接口一般是通過(guò)ARM提供的調(diào)試單元作為中介來(lái)實(shí)現(xiàn)的。ARM的工具使用SVC 0x123456(ARM狀態(tài))或者SVC 0xAB(Thumb狀態(tài))來(lái)表示半主機(jī)調(diào)試函數(shù)。

當(dāng)然,如果脫離了開(kāi)發(fā)環(huán)境,運(yùn)行著調(diào)試器的主機(jī)并不會(huì)連接到目標(biāo)系統(tǒng)上。此時(shí)開(kāi)發(fā)人員有必要將任何使用到半主機(jī)的庫(kù)函數(shù)重定向,如fputc()函數(shù)。

之前調(diào)試一個(gè)小的IoT芯片就是,輕量級(jí)的設(shè)備沒(méi)有系統(tǒng),而是跑的一個(gè)協(xié)議棧。里面的打印都是fput。

這意味著需要使用能夠輸出字符到指定設(shè)備的代碼來(lái)替代使用SVC調(diào)用半主機(jī)的庫(kù)函數(shù)代碼。

2.標(biāo)準(zhǔn)調(diào)試技術(shù)

(1)調(diào)用棧

Candidates must understand what a call stack is and how it may be used in debugging.

需要理解什么是調(diào)用棧以及它在調(diào)試時(shí)應(yīng)如何使用。

應(yīng)用程序代碼主要使用堆棧來(lái)進(jìn)行參數(shù)傳遞、保存局部變量和保存返回地址。

每個(gè)函數(shù)壓入堆棧的數(shù)據(jù)都被組織為一個(gè)“堆棧幀”,當(dāng)調(diào)試器停止處理器時(shí),它可以分析堆棧中的數(shù)據(jù),為程序員提供“調(diào)用棧”,

這是從最頂層函數(shù)調(diào)用到當(dāng)前子函數(shù)之間每一層級(jí)的調(diào)用關(guān)系,它可以在調(diào)試時(shí)讓用戶非常方便地了解整個(gè)調(diào)用路徑,了解為何程序會(huì)運(yùn)行到當(dāng)前的位置。

為了能夠重建調(diào)用棧,調(diào)試器必須能夠確定堆棧的哪些項(xiàng)包含了返回地址的信息。如果編譯的時(shí)候包含的話,這些信息一般會(huì)存在于“調(diào)試器信息”(DWARF調(diào)試表)中,或者從一個(gè)由程序壓入堆棧的“幀指針”鏈表獲得。

當(dāng)然,代碼必須使用幀指針。如果這兩種類型的信息都沒(méi)有,那么這個(gè)調(diào)用棧無(wú)法被重建。

在多線程任務(wù)應(yīng)用中,每個(gè)線程都有自己的堆棧,因此調(diào)用棧的信息也只和它對(duì)應(yīng)的線程相關(guān)。

堆棧幀信息是指在函數(shù)調(diào)用過(guò)程中,由編譯器自動(dòng)在堆棧上分配的數(shù)據(jù)結(jié)構(gòu),用于保存函數(shù)調(diào)用的狀態(tài)和局部變量等信息。在調(diào)用棧中,每個(gè)函數(shù)調(diào)用對(duì)應(yīng)一個(gè)堆棧幀,包含了該函數(shù)執(zhí)行所需的所有信息。

堆棧幀的主要作用是保存局部變量和函數(shù)參數(shù)。當(dāng)函數(shù)被調(diào)用時(shí),其局部變量和參數(shù)被壓入堆棧中,以便在函數(shù)執(zhí)行期間訪問(wèn)。此外,堆棧幀還包含了函數(shù)調(diào)用的返回地址、環(huán)境信息(如寄存器值)等。

在調(diào)試過(guò)程中,通過(guò)分析堆棧幀信息,可以了解函數(shù)調(diào)用的層次結(jié)構(gòu)、當(dāng)前執(zhí)行位置、變量的值等。這有助于理解程序執(zhí)行流程和定位問(wèn)題。

為了能夠重建調(diào)用棧并獲取堆棧幀信息,編譯器需要在編譯時(shí)生成調(diào)試信息(如DWARF調(diào)試表)。這些調(diào)試信息包含了程序結(jié)構(gòu)和變量的元數(shù)據(jù),以及堆棧幀的布局信息。調(diào)試器可以利用這些信息來(lái)解析堆棧幀并重建調(diào)用棧,從而提供給開(kāi)發(fā)人員一個(gè)完整的程序執(zhí)行視圖。

總之,堆棧幀信息是函數(shù)調(diào)用過(guò)程中的重要組成部分,通過(guò)它我們可以深入了解程序執(zhí)行的狀態(tài)和歷史,并利用這些信息進(jìn)行調(diào)試和優(yōu)化。

(2)單步執(zhí)行

Candidates must understand what single stepping is and how it may be used in debugging. They should understand the difference between Step-In and Step-Over when single-stepping.

需要理解什么是單步執(zhí)行以及如何在調(diào)試中應(yīng)用,它需要理解在單步執(zhí)行時(shí)Step-In和Step-Over的區(qū)別。

單步執(zhí)行指的是調(diào)試時(shí)調(diào)試器可以控制執(zhí)行部分代碼,每一次執(zhí)行一條指令。Step-In和Step-Over的區(qū)別可以從函數(shù)調(diào)用中理解。

當(dāng)采用Step-Over來(lái)調(diào)試函數(shù)時(shí),整個(gè)函數(shù)會(huì)作為一步來(lái)執(zhí)行,讓程序員可以直接執(zhí)行整個(gè)函數(shù)而不需要進(jìn)入函數(shù)里面去單步執(zhí)行。Step-In表示進(jìn)入函數(shù)里面去單步執(zhí)行函數(shù)體。

(3)開(kāi)始/停止

Candidates must understand what start/stop debugging is and how it may be used.

需要理解什么是開(kāi)始/停止調(diào)試以及如何使用它。

開(kāi)始的含義就是按下調(diào)試器的“開(kāi)始”按鈕,處理器退出調(diào)試狀態(tài)并重新進(jìn)入正常執(zhí)行狀態(tài)(從當(dāng)前的程序指針處開(kāi)始執(zhí)行),直到程序遇到某個(gè)讓它停止的因素為止,這些因素通常是一個(gè)斷點(diǎn)、觀察點(diǎn)或者捕捉向量事件或者是從外部調(diào)試器及其他系統(tǒng)阻塞所產(chǎn)生的調(diào)試請(qǐng)求。

開(kāi)始/停止的調(diào)試模式與不能停止代碼執(zhí)行的調(diào)試的系統(tǒng)形成鮮明的對(duì)照。在一些嵌入式系統(tǒng)中(如汽車引擎控制系統(tǒng)),在進(jìn)行系統(tǒng)調(diào)試時(shí)是不能簡(jiǎn)單地讓處理器停止執(zhí)行的。

(4)打印printf

Candidates must understand how printf may be used in code instrumentation (they may also be expected to understand what other kinds of instrumentation might typically be used).

需要理解如何在代碼儀器化中使用printf(還需要理解其他可用的儀器化函數(shù))。

這是一個(gè)最基本的調(diào)試技術(shù),通常在所有的處理器架構(gòu)中使用,用于在代碼中插入指令來(lái)輸出一些數(shù)據(jù),例如來(lái)顯示程序的指令流或者某一時(shí)刻一些關(guān)鍵變量的值。

在代碼儀器化中,printf函數(shù)是一種常用的調(diào)試工具,用于輸出數(shù)據(jù)和信息,幫助開(kāi)發(fā)人員了解程序的執(zhí)行狀態(tài)和變量的值。printf函數(shù)類似于其他編程語(yǔ)言中的輸出函數(shù),如C語(yǔ)言中的printf()函數(shù)或Python中的print()函數(shù)。

在代碼中使用printf函數(shù),需要在程序中插入printf語(yǔ)句,并在其中指定要輸出的內(nèi)容。這些內(nèi)容包括各種類型的變量、宏、表達(dá)式等。通過(guò)輸出這些內(nèi)容,可以在調(diào)試過(guò)程中了解程序的執(zhí)行狀態(tài)、變量的值以及其他關(guān)鍵信息。

(5)裸機(jī)代碼和應(yīng)用代碼

Candidates should be aware of the difference in debug options between applications running on OS-based or bare metal system (e.g. Ethernet, GDB server, ICE).

Example: Candidates should know that it is necessary to run a server program on the target system in order to debug an OS-based application.

需要了解基于操作系統(tǒng)的應(yīng)用層軟件調(diào)試和基于裸機(jī)代碼的系統(tǒng)調(diào)試方法的差別(如以太網(wǎng)、GDBServer、ICE)。

例如,需要知道在目標(biāo)板上調(diào)試一個(gè)基于操作系統(tǒng)的應(yīng)用程序必須運(yùn)行一個(gè)調(diào)試服務(wù)程序。

(6)RAM/ROM調(diào)試

Candidates should be aware of the limitations of debugging code running in different types of memory (e.g. breakpoints and image load).

Example: Candidates should know that it is not possible to set an unlimited number of breakpoints when executing code in ROM.More advanced candidates would understand why this is the case.

需要了解在不同類型的存儲(chǔ)空間中進(jìn)行代碼調(diào)試的限制。

例如,應(yīng)該知道調(diào)試在ROM中執(zhí)行的代碼時(shí)是不能設(shè)置無(wú)限量的斷點(diǎn)的,更深入的了解應(yīng)該知道為什么如此。

軟件斷點(diǎn)只能設(shè)置在RAM中,因?yàn)镽AM是可寫(xiě)的空間。調(diào)試ROM中的代碼的另一個(gè)通常的限制是很難修改代碼來(lái)修改錯(cuò)誤的部分。

在存儲(chǔ)空間中進(jìn)行代碼調(diào)試時(shí),確實(shí)存在一些限制,主要與存儲(chǔ)空間的類型和特性有關(guān)。以下是對(duì)您提到的幾種情況的詳細(xì)解釋:

ROM(只讀存儲(chǔ)器)中的代碼調(diào)試:

限制:由于ROM是只讀的,因此在ROM中執(zhí)行的代碼無(wú)法直接修改。這限制了調(diào)試過(guò)程中對(duì)代碼的修改能力,例如設(shè)置斷點(diǎn)。

為什么如此:由于ROM的設(shè)計(jì)目的就是為了保存固定數(shù)據(jù),例如程序代碼,而不是為了在運(yùn)行時(shí)修改。因此,它不具備RAM的寫(xiě)能力,這使得在ROM中執(zhí)行的代碼無(wú)法直接設(shè)置斷點(diǎn)。

軟件斷點(diǎn)與RAM:

限制:軟件斷點(diǎn)只能設(shè)置在RAM中。這是因?yàn)樵赗AM中,數(shù)據(jù)是可以寫(xiě)入的,而ROM或其他類型的存儲(chǔ)器通常是只讀的。

原因:由于RAM是可寫(xiě)的,所以可以在其上設(shè)置斷點(diǎn)。當(dāng)程序執(zhí)行到特定的地址時(shí),斷點(diǎn)會(huì)被觸發(fā),然后程序執(zhí)行會(huì)被暫停,允許開(kāi)發(fā)人員進(jìn)行調(diào)試。如果嘗試在ROM或其他只讀存儲(chǔ)器上設(shè)置斷點(diǎn),硬件或操作系統(tǒng)通常會(huì)拒絕這種操作,因?yàn)檫@違反了只讀存儲(chǔ)器的設(shè)計(jì)目的。

修改ROM中的代碼:

限制:由于ROM的只讀特性,很難直接修改其中的代碼來(lái)修復(fù)錯(cuò)誤。通常需要重新編譯和燒寫(xiě)新的ROM映像。

原因:ROM的設(shè)計(jì)初衷是為了存儲(chǔ)固定、不可更改的數(shù)據(jù)。這意味著一旦ROM被編程(即寫(xiě)入數(shù)據(jù)),其內(nèi)容就不能輕易更改。如果需要更改存儲(chǔ)在ROM中的代碼,通常需要重新編譯應(yīng)用程序,生成新的ROM映像,然后將其燒寫(xiě)到ROM中。這比直接在RAM中調(diào)試和修改代碼要復(fù)雜得多。

總之,了解不同存儲(chǔ)空間中代碼調(diào)試的限制非常重要,因?yàn)樗鼈冇绊懥苏{(diào)試過(guò)程的效率和靈活性。在ROM中調(diào)試代碼通常更加困難,因?yàn)樗鼈兊闹蛔x特性限制了對(duì)代碼的修改能力。而在RAM中調(diào)試則更加靈活,因?yàn)樗强蓪?xiě)的,允許開(kāi)發(fā)人員設(shè)置斷點(diǎn)、修改變量和執(zhí)行其他調(diào)試任務(wù)。

(7)調(diào)試時(shí)序相關(guān)問(wèn)題

Candidates should be aware that certain debug approaches may affect the timing of the code (e.g. halt mode) and be aware of non-invasive alternatives (e.g. trace).

需要了解某些調(diào)試方法可能會(huì)影響代碼的時(shí)序(如暫停模式)并了解其他非侵入式的調(diào)試方法(如跟蹤)。

在調(diào)試過(guò)程中,一些傳統(tǒng)的調(diào)試方法可能會(huì)對(duì)代碼的時(shí)序產(chǎn)生影響,例如在暫停模式下進(jìn)行調(diào)試。這些方法可能會(huì)改變程序的執(zhí)行流程和時(shí)間,從而影響程序的性能和結(jié)果。

為了解決這個(gè)問(wèn)題,一些非侵入式的調(diào)試方法被引入。其中一種常用的方法是跟蹤(Tracing)。

跟蹤是一種監(jiān)視程序執(zhí)行過(guò)程的技術(shù),通過(guò)記錄程序執(zhí)行過(guò)程中的關(guān)鍵事件和數(shù)據(jù),幫助開(kāi)發(fā)人員了解程序的執(zhí)行狀態(tài)和行為。與傳統(tǒng)的調(diào)試方法不同,跟蹤不會(huì)干擾程序的執(zhí)行流程,因此對(duì)代碼的時(shí)序影響較小。

跟蹤可以通過(guò)在程序中插入跟蹤語(yǔ)句或使用專門(mén)的跟蹤工具來(lái)實(shí)現(xiàn)。

跟蹤語(yǔ)句可以在程序的特定位置輸出一些關(guān)鍵信息,例如變量的值、函數(shù)調(diào)用堆棧等。這些信息被記錄下來(lái),并在程序執(zhí)行結(jié)束后進(jìn)行分析。通過(guò)分析這些信息,開(kāi)發(fā)人員可以了解程序的執(zhí)行路徑、變量的值以及其他關(guān)鍵信息。

除了跟蹤之外,還有一些其他的非侵入式調(diào)試方法,例如使用監(jiān)視點(diǎn)(Watchpoints)和斷點(diǎn)(Breakpoints)。

監(jiān)視點(diǎn)可以在程序的特定地址處設(shè)置一個(gè)觸發(fā)條件,當(dāng)變量的值發(fā)生變化時(shí)觸發(fā)。通過(guò)使用監(jiān)視點(diǎn),開(kāi)發(fā)人員可以觀察變量的值變化,并了解程序的行為。斷點(diǎn)可以在程序的特定位置設(shè)置一個(gè)暫停點(diǎn),當(dāng)程序執(zhí)行到該位置時(shí)暫停。通過(guò)使用斷點(diǎn),開(kāi)發(fā)人員可以逐步執(zhí)行程序并觀察變量的值和執(zhí)行流程。

總之,了解某些調(diào)試方法可能會(huì)影響代碼的時(shí)序是重要的。

為了減小影響,開(kāi)發(fā)人員可以選擇使用非侵入式的調(diào)試方法,如跟蹤、監(jiān)視點(diǎn)和斷點(diǎn)等。這些方法可以幫助開(kāi)發(fā)人員了解程序的執(zhí)行狀態(tài)和行為,并發(fā)現(xiàn)潛在的問(wèn)題和優(yōu)化方向。

(8)使用調(diào)試器調(diào)試軟件的影響(系統(tǒng)可能會(huì)被更改狀態(tài))

Candidates should be aware of the implications/impact of debugging (e.g.reading memory locations).

需要了解調(diào)試的含義和影響(如讀取內(nèi)存位置)。

調(diào)試是軟件開(kāi)發(fā)過(guò)程中必不可少的一部分,它有助于發(fā)現(xiàn)和修復(fù)代碼中的錯(cuò)誤和問(wèn)題。然而,使用調(diào)試器進(jìn)行調(diào)試時(shí),確實(shí)可能會(huì)對(duì)軟件的系統(tǒng)狀態(tài)產(chǎn)生影響。以下是一些可能的影響和需要注意的事項(xiàng):

1、系統(tǒng)狀態(tài)更改:在調(diào)試過(guò)程中,開(kāi)發(fā)人員可能會(huì)暫停程序的執(zhí)行、單步執(zhí)行代碼、修改變量的值等。這些操作都可能直接或間接地更改系統(tǒng)的狀態(tài)。例如,修改變量的值可能會(huì)導(dǎo)致程序的行為與正常情況下不同。

2、內(nèi)存讀取和寫(xiě)入:使用調(diào)試器時(shí),開(kāi)發(fā)人員經(jīng)常需要讀取和修改變量的值。這些操作可能涉及到內(nèi)存的讀寫(xiě)。如果操作不當(dāng),可能會(huì)導(dǎo)致內(nèi)存損壞、數(shù)據(jù)丟失或其他未定義的行為。

3、性能影響:在調(diào)試過(guò)程中,程序的執(zhí)行可能會(huì)被暫停、中斷或減速,這可能會(huì)影響程序的性能。如果頻繁地進(jìn)行調(diào)試,可能會(huì)導(dǎo)致程序的性能下降。

4、依賴性問(wèn)題:在調(diào)試過(guò)程中,開(kāi)發(fā)人員可能需要模擬某些外部事件或條件。這些模擬可能會(huì)導(dǎo)致程序的行為與實(shí)際運(yùn)行時(shí)不同,從而引入依賴性問(wèn)題。

5、安全性考慮:在某些情況下,調(diào)試可能會(huì)暴露敏感信息或允許惡意用戶利用調(diào)試器來(lái)操縱程序的行為。因此,在調(diào)試時(shí)需要注意安全性問(wèn)題,并采取適當(dāng)?shù)拇胧﹣?lái)保護(hù)系統(tǒng)的安全。

為了減小調(diào)試對(duì)軟件系統(tǒng)狀態(tài)的影響,開(kāi)發(fā)人員應(yīng)該采取一些最佳實(shí)踐:

1、備份重要數(shù)據(jù):在開(kāi)始調(diào)試之前,建議備份重要的系統(tǒng)數(shù)據(jù)和配置,以防止意外更改導(dǎo)致數(shù)據(jù)丟失或損壞。

2、限制調(diào)試器的權(quán)限:確保調(diào)試器沒(méi)有不必要的權(quán)限,以減少潛在的安全風(fēng)險(xiǎn)。

3、使用斷言和日志記錄:在代碼中添加斷言和日志記錄可以幫助開(kāi)發(fā)人員在調(diào)試過(guò)程中更好地理解程序的狀態(tài)和行為。

4、謹(jǐn)慎使用內(nèi)存操作:盡量避免直接讀寫(xiě)內(nèi)存,特別是當(dāng)程序處于不穩(wěn)定狀態(tài)時(shí)。

5、限制調(diào)試的范圍:盡量只在需要調(diào)試的部分代碼上使用調(diào)試器,而不是在整個(gè)程序上運(yùn)行調(diào)試器。

6、定期測(cè)試和驗(yàn)證:在調(diào)試過(guò)程中,定期測(cè)試和驗(yàn)證程序的正確性和性能可以幫助開(kāi)發(fā)人員及時(shí)發(fā)現(xiàn)潛在的問(wèn)題。

7、遵循良好的編碼實(shí)踐:編寫(xiě)高質(zhì)量的代碼可以減少潛在的錯(cuò)誤和問(wèn)題,從而減少調(diào)試的需要。

總之,雖然調(diào)試是軟件開(kāi)發(fā)中必不可少的部分,但開(kāi)發(fā)人員應(yīng)該意識(shí)到使用調(diào)試器可能對(duì)系統(tǒng)狀態(tài)產(chǎn)生的影響,并采取適當(dāng)?shù)拇胧﹣?lái)減小這些影響。

PART THREE-架構(gòu)

1.指令集

(1)LDREX/STREXCLEX

Candidates should be aware of how these instructions work and how they might be used to implement software synchronization (e.g. mutex). At this level candidates should be able to recognize a simple mutex implementation (in assembler) and be able to explain its operation. They will not be expected to write one.

Example: Candidates should be aware of what a mutex is. More advanced candidates will be aware of the exclusive access instructions which are used to implement mutexes and similar constructs.

需要了解這些指令如何工作,如何用于軟件的同步(如互斥);

應(yīng)該能夠識(shí)別一個(gè)互斥的應(yīng)用(在匯編代碼中)并能解釋它們的作用,但不需要自己編寫(xiě)一個(gè)此類代碼應(yīng)用。

LDREX和STREX是ARM架構(gòu)中的兩條指令,它們被用來(lái)實(shí)現(xiàn)原子操作。原子操作是一種在執(zhí)行過(guò)程中不會(huì)被其他線程或進(jìn)程中斷的操作。

LDREX指令用于讀取內(nèi)存中的值,并標(biāo)記對(duì)該段內(nèi)存的獨(dú)占訪問(wèn)。它會(huì)在讀取寄存器Ry指向的4字節(jié)內(nèi)存值后,將其保存到Rx寄存器中,同時(shí)標(biāo)記對(duì)Ry指向內(nèi)存區(qū)域的獨(dú)占訪問(wèn)。如果執(zhí)行LDREX指令的時(shí)候發(fā)現(xiàn)已經(jīng)被標(biāo)記為獨(dú)占訪問(wèn)了,并不會(huì)對(duì)指令的執(zhí)行產(chǎn)生影響。

STREX指令在更新內(nèi)存數(shù)值時(shí),會(huì)檢查該段內(nèi)存是否已經(jīng)被標(biāo)記為獨(dú)占訪問(wèn),并以此來(lái)決定是否更新內(nèi)存中的值。如果執(zhí)行這條指令的時(shí)候發(fā)現(xiàn)已經(jīng)被標(biāo)記為獨(dú)占訪問(wèn)了,則將寄存器Ry中的值更新到寄存器Rz指向的內(nèi)存,并將寄存器Rx設(shè)置成0。指令執(zhí)行成功后,會(huì)將獨(dú)占訪問(wèn)標(biāo)記位清除。一旦某條STREX指令執(zhí)行成功后,以后再對(duì)同一段內(nèi)存嘗試使用STREX指令更新的時(shí)候,會(huì)發(fā)現(xiàn)獨(dú)占標(biāo)記已經(jīng)被清空了,就不能再更新了,從而實(shí)現(xiàn)獨(dú)占訪問(wèn)的機(jī)制。

這兩條指令常被用來(lái)在并發(fā)編程中實(shí)現(xiàn)線程間的同步,以避免數(shù)據(jù)競(jìng)爭(zhēng)和其他并發(fā)問(wèn)題。

在軟件開(kāi)發(fā)中,同步是一種重要的技術(shù),用于確保多個(gè)線程或進(jìn)程在共享資源時(shí)的正確行為?;コ猓╩utex)是實(shí)現(xiàn)軟件同步的一種常見(jiàn)方法,它允許多個(gè)線程安全地訪問(wèn)共享資源。為了理解互斥的實(shí)現(xiàn),開(kāi)發(fā)人員需要了解底層指令的工作原理

在匯編語(yǔ)言中,有一些特定的指令可以用來(lái)實(shí)現(xiàn)互斥和軟件同步。這些指令通常涉及對(duì)內(nèi)存的讀寫(xiě)操作,以及對(duì)進(jìn)程或線程狀態(tài)的更改。

例如,一個(gè)簡(jiǎn)單的互斥實(shí)現(xiàn)可能使用以下類型的指令:

原子操作指令:這些指令在執(zhí)行過(guò)程中不會(huì)被其他線程或進(jìn)程中斷,因此可以在沒(méi)有鎖的情況下安全地修改共享變量的值。例如,一些CPU提供了CMPXCHG(比較并交換)指令,它可以原子地比較和交換內(nèi)存中的值。

自旋鎖指令:這些指令允許一個(gè)線程持續(xù)檢查一個(gè)條件,直到該條件變?yōu)檎?。這通常用于實(shí)現(xiàn)循環(huán)鎖,其中線程在等待獲取鎖時(shí)會(huì)“自旋”。例如,CMP(比較)和JXX(條件跳轉(zhuǎn))指令可以組合使用來(lái)實(shí)現(xiàn)自旋鎖。

阻塞和喚醒指令:這些指令允許線程阻塞自己(例如,通過(guò)WAIT或PAUSE指令),直到另一個(gè)線程喚醒它(例如,通過(guò)SIGNAL或WAKE指令)。

了解這些底層指令如何工作對(duì)于理解互斥等同步機(jī)制的實(shí)現(xiàn)至關(guān)重要。開(kāi)發(fā)人員需要能夠識(shí)別和理解這些指令在匯編代碼中的應(yīng)用,以便更好地理解軟件的同步行為。

值得注意的是,雖然了解這些底層細(xì)節(jié)對(duì)于深入理解同步機(jī)制是有幫助的,但在實(shí)際開(kāi)發(fā)中通常會(huì)使用更高級(jí)的抽象和工具(如操作系統(tǒng)提供的線程同步原語(yǔ)或高級(jí)語(yǔ)言中的并發(fā)庫(kù)),而不是直接編寫(xiě)匯編代碼來(lái)實(shí)現(xiàn)這些機(jī)制。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19896

    瀏覽量

    235365
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9353

    瀏覽量

    377717
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17113

    瀏覽量

    184410
  • 指令集
    +關(guān)注

    關(guān)注

    0

    文章

    228

    瀏覽量

    23820

原文標(biāo)題:1.指令集

文章出處:【微信號(hào):IC學(xué)習(xí),微信公眾號(hào):IC學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ARM處理器簡(jiǎn)介及RISC設(shè)計(jì)要點(diǎn)

    ARM是一個(gè)32位RISC(精簡(jiǎn)指令集)處理器架構(gòu),ARM處理器則是ARM架構(gòu)下的微處理器。
    的頭像 發(fā)表于 04-01 08:17 ?9612次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>處理器</b>簡(jiǎn)介及RISC設(shè)計(jì)要點(diǎn)

    ARM處理器ARM處理器工作模式

    ARM處理器狀態(tài)ARM處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:第一種為ARM狀態(tài),此時(shí)處理
    發(fā)表于 01-27 11:13

    ARM處理器ARM處理器工作模式

    ARM處理器狀態(tài)ARM處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:第一種為ARM狀態(tài),此時(shí)處理
    發(fā)表于 01-27 14:19

    怎么區(qū)分ARM Cortex系列的處理器

    頻率可以達(dá)到400Mhz。當(dāng)然,性能不是選擇處理器的唯一指標(biāo)。在許多應(yīng)用中,低功耗和成本是關(guān)鍵的選擇指標(biāo)。因此,Cortex-M處理器家族包含各種產(chǎn)品來(lái)滿足不同的需求:不同于老的經(jīng)典ARM
    發(fā)表于 09-13 10:01

    ARM處理器簡(jiǎn)單介紹

    ARM公司開(kāi)發(fā)了很多系列的ARM處理器核,目前最新的系列已經(jīng)是ARM11了,而ARM6核及更早的系列已經(jīng)很罕見(jiàn)了,
    發(fā)表于 07-23 07:08

    什么是ARM處理器 ARM處理器有哪些系列

    包括 幾種內(nèi)存管理單元的變種,包括簡(jiǎn)單的內(nèi)存保護(hù)到復(fù)雜的頁(yè)面層次。ARM處理器系列包括 ARM7 系列、ARM9 系列、
    發(fā)表于 09-24 17:47

    淺談ARM處理器架構(gòu)

    `讓我們先從ARM處理器家族說(shuō)起。一、ARM 處理器家族多年來(lái),
    發(fā)表于 08-18 12:04

    ARM Cortex-M處理器詳解 精選資料分享

    ARM Cortex-M處理器家族現(xiàn)在有8款處理器成員。在本文中,我們會(huì)比較Cortex-M系列處理器之間的產(chǎn)品特性,重點(diǎn)講述如何根據(jù)產(chǎn)品應(yīng)
    發(fā)表于 07-16 07:57

    ARM,ARM處理器是什么意思

    ARM,ARM處理器是什么意思 ARM處理器簡(jiǎn)介 ARM(Advanced RISC Mach
    發(fā)表于 03-26 10:53 ?5487次閱讀

    arm是什么處理器,arm處理器匯總

    ARM處理器是Acorn計(jì)算機(jī)有限公司面向低預(yù)算市場(chǎng)設(shè)計(jì)的第一款RISC微處理器。更早稱作Acorn RISC Machine。ARM處理器
    發(fā)表于 11-10 16:32 ?3398次閱讀

    從Cortex-M到 Cortex-A認(rèn)識(shí)ARM處理器

    從Cortex-M到Cortex-A認(rèn)識(shí)ARM處理器
    的頭像 發(fā)表于 03-08 11:34 ?3890次閱讀

    Cortex-M3是一款ARM處理器內(nèi)核

    Cortex-M3:是一款ARM處理器內(nèi)核,也可以理解為ARM處理器家族之中的一個(gè)成員。ARM
    的頭像 發(fā)表于 06-24 14:44 ?1.2w次閱讀

    arm處理器有哪些中斷源?arm處理器對(duì)異常中斷的響應(yīng)過(guò)程

    arm處理器有哪些中斷源?arm處理器對(duì)異常中斷的響應(yīng)過(guò)程? ARM處理器是一種廣泛使用的嵌入式
    的頭像 發(fā)表于 10-19 16:35 ?1967次閱讀

    簡(jiǎn)單認(rèn)識(shí)安全加密處理器

    安全加密處理器 (Secure Cryptoprocessor) 是一種本身不產(chǎn)生加密數(shù)據(jù)或程序指令,但產(chǎn)生密鑰(Key)的處理器,其應(yīng)用產(chǎn)品有智能卡、ATM、電視機(jī)機(jī)頂盒、軍事系統(tǒng)等。而加密型
    的頭像 發(fā)表于 12-06 09:19 ?1648次閱讀

    簡(jiǎn)單認(rèn)識(shí)高級(jí)處理器

    除了傳統(tǒng)的處理器 (CPU、MPU/MCU、DSP 和 GPU),面向當(dāng)代各種應(yīng)用的高級(jí)處理器(Advanced Processors)層出不窮,例如加速處理單元 (Accelerated
    的頭像 發(fā)表于 12-07 11:31 ?1403次閱讀
    <b class='flag-5'>簡(jiǎn)單</b><b class='flag-5'>認(rèn)識(shí)</b>高級(jí)<b class='flag-5'>處理器</b>