国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

超詳細的ARM架構(gòu)適配介紹!

這篇具有很好參考價值的文章主要介紹了超詳細的ARM架構(gòu)適配介紹!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

超詳細的ARM架構(gòu)適配介紹! - 掘金

本文主要介紹云聯(lián)壹云平臺如何適配ARM,并運行在ARM CPU架構(gòu)的機器上。

背景介紹

1、平臺服務(wù)運行架構(gòu)

云聯(lián)壹云平臺采用容器化,分布式的架構(gòu)運行在 Kubernetes(K8s)之上。下面是平臺服務(wù)運行的架構(gòu)圖:

超詳細的ARM架構(gòu)適配介紹!

在多個節(jié)點之上,我們會構(gòu)建Kubernetes的集群 ,它是一個容器管理的平臺。

在Kubernetes的平臺之上,后端服務(wù)都是容器化的,是以容器的方式去分布式運行。

通過K8s去做調(diào)度的管理,然后將服務(wù)自動地打散到多個節(jié)點上運行,總結(jié)兩點是服務(wù)容器化,并依靠K8s來提供容器分布式運行的環(huán)境。

另外,底層的節(jié)點是有類型的,控制層面的服務(wù)運行在控制節(jié)點,平臺內(nèi)置了一個私有云,提供了完整的私有云功能。

若要使用私用云這個功能,則還需要一些計算節(jié)點,計算節(jié)點上會跑虛擬化相關(guān)的軟件,提供私有云虛擬化的功能,總結(jié)來說就是計算節(jié)點運行私有云的虛擬機。

2、CPU架構(gòu)簡介

大家熟悉的服務(wù)器或者臺式機都是X86架構(gòu)的CPU,X86架構(gòu)的CPU特點是性能高,并且軟件的兼容性很好。

大家平常工作中使用的大部分是英特爾等提供的X86架構(gòu)的CPU,對于英特爾和AMD大家都不陌生,這兩家廠商專門生產(chǎn)X86架構(gòu)CPU。

另外X86 64位這種架構(gòu)的CPU存在別名,例如x86_64或者amd64都代表X86架構(gòu)的64位CPU。

超詳細的ARM架構(gòu)適配介紹!

與X86不同的是還有另一種稱為ARM的架構(gòu),這是本文的主題,那么ARM架構(gòu)的CPU和X86架構(gòu)的CPU相比有何不同?

它的制造成本更低,ARM架構(gòu)的芯片的功耗也很低,代表性的廠商和使用者是蘋果和華為。

蘋果將生產(chǎn)的ARM芯片用到筆記本或IMAC上,ARM架構(gòu)的CPU越來越普及。

國內(nèi)的華為會生產(chǎn)基于ARM架構(gòu)的服務(wù)器,64位ARM架構(gòu)CPU也有別名,例如arm64、aarch64,這兩種叫法表達同一個意思。

3、為什么適配ARM

因為ARM的CPU普及是大環(huán)境下的發(fā)展趨勢,例如在國際上,蘋果將ARM架構(gòu)的CPU投入到筆記本和臺式機上,在國產(chǎn)化方面,國內(nèi)有鯤鵬和飛騰CPU,國產(chǎn)的基于ARM架構(gòu)的服務(wù)器,現(xiàn)在市場上主流的是鯤鵬和飛騰。?在國產(chǎn)化上,使用ARM架構(gòu)也是一個趨勢。

另外是適配了ARM架構(gòu)能夠提升產(chǎn)品的競爭力,競爭力體現(xiàn)在能夠支持管理基于ARM64位和X86_64架構(gòu)的虛擬化混合部署。

超詳細的ARM架構(gòu)適配介紹!

這種混合部署的意思是可以同時把服務(wù)運行在ARM和X86的服務(wù)器上,同時運行各自的虛擬化,可以通過我們平臺統(tǒng)一部署和管理。

如何適配ARM64?

超詳細的ARM架構(gòu)適配介紹!

1、需要解決的關(guān)鍵問題

第一個方面是怎樣把服務(wù)運行在64位的ARM架構(gòu)上?

還有一方面是因為我們內(nèi)置了一個私有云,上層的私有云業(yè)務(wù)如何支持64位的ARM架構(gòu)?

通過架構(gòu)圖可以了解到服務(wù)是容器化運行在K8s之上的,再由K8s幫我們將服務(wù)分布式地運行在各個節(jié)點上,所以第一步是要部署異構(gòu)CPU架構(gòu)的K8s集群,異構(gòu)CPU架構(gòu)的意思是K8s集群要運行在X86和ARM架構(gòu)的機器上。

具體而言就是要選擇一個支持ARM架構(gòu)的Linux的發(fā)行版。

K8s節(jié)點上的操作系統(tǒng)是Linux,首先要選擇支持ARM架構(gòu)的Linux操作系統(tǒng),操作系統(tǒng)同時能夠安裝K8s必要的軟件(比如docker-ce、kubelet等)

當我們把K8s集群給部署起來之后,就要將不同架構(gòu)的容器鏡像統(tǒng)一制作出來。

統(tǒng)一容器鏡像的意思是一個容器鏡像中要包含X86和ARM架構(gòu),相當于同一個鏡像名稱中有兩種架構(gòu)的鏡像。

第二個大的方面是上層私有云業(yè)務(wù)怎樣支持ARM64。

主要是分為兩個問題,第一個問題是要支持ARM的虛擬機鏡像,同時上層的私有云業(yè)務(wù)能夠標記宿主機,宿主機就是運行虛擬機的服務(wù)器。

要能夠標記這種宿主機是什么架構(gòu),同時要在這個宿主機上運行ARM的虛擬化軟件。

平臺使用的虛擬化軟件基于qemu/kvm,網(wǎng)絡(luò)方面依賴openvswitch組件,要求這些組件也要能夠在ARM架構(gòu)上運行。

這就是要介紹的一些關(guān)鍵問題,解決好這些關(guān)鍵問題,不管是底層的業(yè)務(wù)還是上層的私有云業(yè)務(wù),都能在ARM上運行。

2、Linux發(fā)行版選擇

我們選擇的發(fā)行版是Debian 10(開源)和統(tǒng)信UOS(國產(chǎn)系統(tǒng))。

超詳細的ARM架構(gòu)適配介紹!

選擇這兩個發(fā)行版的第一個原因是客戶業(yè)務(wù)上要求在ARM64服務(wù)器上運行“統(tǒng)信UOS”。

要適配的話也是首先適配國產(chǎn)統(tǒng)信UOS,在適配過程中,UOS中的內(nèi)核和打包工具與Debian基本一致。

適配UOS之后,發(fā)現(xiàn)其工作基本相同,所以又選擇了Debian 10(開源)進行適配。

如此無論是對于開源用戶還是其他客戶,如果不選擇UOS,也可以選擇Debian 10的發(fā)型版運行此平臺,Debian系列對ARM64位的支持很好,

Debian發(fā)行版的官方軟件倉庫中已經(jīng)制作好了很多ARM64的包,如果要安裝docker和K8s的軟件包,Debian中已經(jīng)做好,直接下載安裝即可。

為什么不在ARM架構(gòu)上面再選擇CentOS7發(fā)行版?

原因在于CentOS7官方即將停止維護,所以選擇了Debian系列的發(fā)行版。

3、統(tǒng)信UOS適配認證

對統(tǒng)信UOS適配過后,經(jīng)過其官方測試,為我們頒發(fā)了認證證書。

超詳細的ARM架構(gòu)適配介紹!

4、統(tǒng)一軟件依賴—包管理工具

選擇好發(fā)行版后?怎樣統(tǒng)一安裝這些軟件?

我們能夠使用不同發(fā)行版的包管理工具去安裝相同的軟件,例如在X86的CentOS上安裝docker和K8s這些包時調(diào)用yum,在Debian上調(diào)用apt install 等同樣的包名即可。

超詳細的ARM架構(gòu)適配介紹!

上游的軟件倉庫中已經(jīng)把包做好,只需直接安裝,軟件直接下載即可使用。

在底層軟件方面,ARM和X86的管理,只要發(fā)行版是主流的,驗證Debian和X86的包沒有區(qū)別,已經(jīng)將底層的包安裝部署好。

5、部署kubernetes集群

另外一個話題是部署kubernetes集群,如何在ARM上部署K8s集群?

超詳細的ARM架構(gòu)適配介紹!

首先,我們寫了名稱為ocboot的部署工具,它的底層原理是調(diào)用ansible實現(xiàn)部署ARM64+X86_64的多節(jié)點Kubernetes,這個截圖的意思是通過這個工具部署過后的混布的就是異構(gòu)的K8s集群的節(jié)點的資源。

從截圖中可以發(fā)現(xiàn),第一個節(jié)點是centos-x86-64,發(fā)行版名稱是centos7,內(nèi)核是3.10,K8s會通過打標簽的方式標記這個節(jié)點,它是amd64。

amd64代表它是X86架構(gòu)的一個節(jié)點,另外一個節(jié)點是uos-arm64,它的發(fā)行版是uos,內(nèi)核是4.19.0-arm64的內(nèi)核。K8s會通過打標簽標記它是ARM64的一個節(jié)點,這就代表是一個同時基于X86和ARM64的節(jié)點構(gòu)建的K8s集群。

使用K8s集群的好處是K8s 集群提供了不同CPU架構(gòu)節(jié)點的統(tǒng)一管理,通過一個API能夠把所有架構(gòu)的節(jié)點拿到,能夠基于這些節(jié)點提供容器服務(wù)的運行。 6、服務(wù)統(tǒng)一鏡像運行 部署好K8s集群之后如何運行云聯(lián)壹云的服務(wù)?

超詳細的ARM架構(gòu)適配介紹!

例如K8s中有daemonset的資源,這種資源表示在每一個K8s節(jié)點上都會運行pod容器。

它要求在這個資源中寫好服務(wù)容器鏡像的地址,即紅框中所標記的。

只要按照這樣的格式寫,寫好之后創(chuàng)建到k8s集群中,K8s就會將提供的鏡像以容器化的方式運行到各個節(jié)點上。

從圖中可以了解到,在centos?X86的節(jié)點上和UOS ARM架構(gòu)的節(jié)點上都同時運行host的服務(wù),這是如何做到的呢?

這就要求統(tǒng)一服務(wù)的進項,要在host:v3.6.10的鏡像中包含兩種架構(gòu)的鏡像格式,它的底層同時將X86和ARM的格式捆綁到一起,在實際運行過程中,在不同的架構(gòu)的節(jié)點上,docker會根據(jù)當前節(jié)點的架構(gòu)拉取鏡像中不同架構(gòu)的格式的鏡像運行。

7、私有云業(yè)務(wù)如何支持ARM64?

  • 宿主機 列表

超詳細的ARM架構(gòu)適配介紹!

在運行虛擬機的宿主機上去標記宿主機的架構(gòu)類別,云平臺的前端界面可以看到,給宿主機列表上面加了CPU架構(gòu)的屬性,ARM架構(gòu)服務(wù)器的宿主機,會給它一個稱為aarch64的CPU架構(gòu)來標記,X86則會標記x86_64的CPU架構(gòu)屬性 。

若要運行虛擬機,則需要先提供虛擬機的鏡像,我們在虛擬機的鏡像中也使用了CPU架構(gòu)的屬性來標記虛擬機鏡像是X86架構(gòu)還是ARM 64位的架構(gòu)。

超詳細的ARM架構(gòu)適配介紹!

提供宿主機和虛擬鏡像過后,即可創(chuàng)建虛擬機,在創(chuàng)建虛擬機的表單中,會讓用戶去選擇是要創(chuàng)建ARM架構(gòu)的虛擬機還是X86架構(gòu)的虛擬機。

超詳細的ARM架構(gòu)適配介紹!

創(chuàng)建好虛擬機過后,平臺負責將這些虛擬機根據(jù)所提供的CPU架構(gòu)調(diào)入到不同架構(gòu)的宿主機上,這是一個在平臺同時創(chuàng)建的X86和ARM的虛擬機列表界面。

超詳細的ARM架構(gòu)適配介紹!

在此列表中通過CPU架構(gòu)的字段了解虛擬機的架構(gòu)類型,這就是在私有云這個業(yè)務(wù)做的改造并支持ARM64位架構(gòu)。

技術(shù)細節(jié) 如何制作統(tǒng)一的容器鏡像(支持X86_64和ARM64)?

  • docker?buildx方案

docker原生支持的多架構(gòu)鏡像制作方案

點擊進入官方介紹

  • 使用交叉編譯然后打包

分別編譯打包出x86_64和arm64的容器鏡像,然后捆綁到一起。

1、統(tǒng)一容器鏡像—docker?buildx

  • 編寫適用buildx的?Dockerfile

超詳細的ARM架構(gòu)適配介紹!

docker通過讀取file中的語句,制作出鏡像,Dockerfile先基于一個稱golang:alpine的鏡像,把它作為一個build容器。

同時,其中會傳兩個參數(shù),分別是TARGETPLATFORM 和BUILDPLATFORM。

TARGETPLATFORM的意思是制作出的鏡像架構(gòu),BUILDPLATFORM 是當前制作鏡像機器的架構(gòu) ,這里RUN的命令會讀取這兩個環(huán)境變量,然后將他們的值打到名稱為log的文件中。

第二步,F(xiàn)ROM alpine 的語句是找到alpine這個鏡像,基于這個容器鏡像將build容器中的log文件拷貝出來。

使用buildx 同時制作x86_64和arm64架構(gòu)的鏡像。

超詳細的ARM架構(gòu)適配介紹!

-t的意思是build出的鏡像的名稱,push代表要push到docker鏡像倉庫中,platform參數(shù)代表制作出來的鏡像同時代表兩個架構(gòu),分別是x86 64位架構(gòu)和arm64位架構(gòu)。

運行此命令,docker buildx就會基于dockerfile的步驟,同時拉取ARM架構(gòu)和X86架構(gòu)的基礎(chǔ)鏡像。

超詳細的ARM架構(gòu)適配介紹!

基于基礎(chǔ)鏡像運行里面相同的語句,例如紅色標記的地方,它同時運行兩個架構(gòu)的指令,相當于同時拉取了amd64和arm64的alpine 鏡像。

去build時,同一條build語句也在amd64和arm64這兩個架構(gòu)上運行。

通過build出的結(jié)果即可發(fā)現(xiàn)RUN的這個命令,是在X86架構(gòu)的機器上制作的鏡像build出的結(jié)果,例如第一條是build出了arm64的鏡像,第二條是build出X86 64位的鏡像。

build完鏡像過后,把它push到鏡像倉庫中,即可通過docker manifest 這個命令去查詢這個鏡像里面的一些元數(shù)據(jù),查看剛才制作的鏡像,manifest 中有兩種格式,第一種格式是amd64,表示X86_64架構(gòu),第二種格式是ARM64,是能夠運行在ARM上的鏡像,這些都是buildx做好的,我們只需要寫dockerfile。

超詳細的ARM架構(gòu)適配介紹!

它默認幫我們制作出來一個多架構(gòu)的容器鏡像。

buildx 如何在 x86_64的機器上制作arm64的鏡像?

通過binfmt_misc模擬arm64硬件的用戶空間,然后調(diào)用qemu的用戶態(tài)模式編譯程序。

超詳細的ARM架構(gòu)適配介紹!

最終結(jié)果是調(diào)用buildx的命令過后,編譯進程后,會運行qemu-aarch64 工具,相當于模擬出arm64的硬件環(huán)境,然后調(diào)用ARM的工具做編譯,截圖中,后端服務(wù)都是用Golang編寫,都需要做編譯。

2、統(tǒng)一容器鏡像-交叉編譯

交叉編譯:直接在x86_64開發(fā)機上編譯arm64二進制。

超詳細的ARM架構(gòu)適配介紹!

圖中的Go代碼,其中寫了main的函數(shù),在X86的機器上直接編譯,調(diào)go build工具,然后把它編譯成一個叫做t_x86_64的二進制可執(zhí)行文件。

然后在操作系統(tǒng)上調(diào)用file去看可執(zhí)行文件的內(nèi)容,通過信息可知這是一個64位的可執(zhí)行文件,并且是x86-64架構(gòu)。

Go中的交叉變異很簡單,指定GOARCH的環(huán)境變量,然后把它設(shè)置為arm64,然后再運行相同的go ?build的命令,即可使用交叉編譯,編譯出ARM可執(zhí)行的文件。?

編譯出來之后,再去看t_arm64的二進制文件,即可發(fā)現(xiàn)它也是64位的執(zhí)行文件,但其架構(gòu)為ARM,此即為交叉編譯的簡單的示例。?相當于在X86的開發(fā)機上使用交叉編譯工具編譯出ARM執(zhí)行文件。

3、如何將不同架構(gòu)鏡像打包

將交叉編譯后的x86_64和arm64容器鏡像組合到一起。

超詳細的ARM架構(gòu)適配介紹!

例如已經(jīng)有名稱為service:v1_x86_64的容器鏡像和service:v1_arm64的鏡像,如何將其組合為service:v1 = service:v1_x86_64 + service:v1_arm64 的容器鏡像?

首先創(chuàng)建 service:v1 的 manifest 鏡像,然后將x86_64的鏡像和arm64的鏡像捆綁到一起,然后調(diào)用docker manifest標記鏡像 service:v1_arm64 的架構(gòu)為 arm64 ,標記鏡像 service:v1_x86_64 的架構(gòu)為 amd64 ,再調(diào)用docker push將service:v1 鏡像上傳到鏡像倉庫即可,如此制作出來的一個鏡像中即可包含兩個架構(gòu)。

4、buildx與交叉編譯打包對比

超詳細的ARM架構(gòu)適配介紹!

如果使用buildx+binfmt_misc的方式,速度很慢,在本地x86機器上運行,復雜度很低。

如有ARM服務(wù)器,可以通知buildx ssh到遠程的ARM機器,會把編譯arm的部分交給遠端的ARM機器,速度很快,環(huán)境要求為本地x86+遠端arm64機器,因為一般不會給每個開發(fā)人員提供ARM服務(wù)器,所以未采用此種方式。

最后是交叉編譯+manifest打包的方式,速度很快,因為編譯器中做了交叉編譯的優(yōu)化,能夠直接編譯出ARM架構(gòu)的二進制,此種方式只依賴本地的開發(fā)環(huán)境,此種方式復雜度較高。

現(xiàn)階段使用的方式是同時使用buildx + binfmt_misc和交叉編譯 + manifest 打包的方式。

前端不需要編譯的服務(wù):使用buildx + binfmt_misc后端編譯型的服務(wù):使用交叉編譯然后打包

5、私有云管理—虛擬化軟件

私有云上層業(yè)務(wù)支持X86和ARM虛擬化混合管理,要做混布支持,首先要讓虛擬化軟件能夠運行在ARM架構(gòu)上,主要運行虛擬機的軟件是通過名稱為qemu的虛擬化軟件工具,通過交叉編譯的方式運行在ARM架構(gòu)上。

超詳細的ARM架構(gòu)適配介紹!

在做編譯之前,只需要配置好目標的架構(gòu)是aarch64即可。

qemu在實際生產(chǎn)使用中要結(jié)合KVM虛擬化加速工具,debian 10 4.19.0 aarch64 內(nèi)核原生支持。

openvswitch 網(wǎng)絡(luò)虛擬交換機可以直接在debian 中安裝使用。

6、私有云管理—業(yè)務(wù)支持

例如在宿主機的資源中加上屬性,標記宿主機是ARM架構(gòu)還是X86架構(gòu),還有在平臺虛擬機鏡像中加上架構(gòu)的屬性,同時調(diào)度器的服務(wù)也要做改造,保證用戶創(chuàng)建一臺ARM架構(gòu)的虛擬機,能夠調(diào)度到ARM的宿主機上。

超詳細的ARM架構(gòu)適配介紹!

大家可以根據(jù)圖中列出的 PR詳細地址了解業(yè)務(wù)支持詳情。

GitHub:?github.com/yunionio/cl…

官網(wǎng)地址:www.yunion.cn/

作者:云聯(lián)壹云
鏈接:https://juejin.cn/post/7055624332524912677
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。文章來源地址http://www.zghlxwxcb.cn/news/detail-492033.html

到了這里,關(guān)于超詳細的ARM架構(gòu)適配介紹!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【ARM CoreLink 系列 4 -- NIC-400 控制器詳細介紹】

    請閱讀 【ARM AMBA 總線 文章專欄導讀】

    2024年02月05日
    瀏覽(48)
  • 【ARM Coresight OpenOCD 系列 2 -- OpenOCD 腳本語法詳細介紹】

    請閱讀 【ARM Coresight SoC-400/SoC-600 專欄導讀】 介紹之前我們先了解下什么是 SWJ-DP , SWJ-DP (Serial Wire JTAG Debug Port) 是 ARM CoreSight 架構(gòu)中的一個重要部分,它提供了一個調(diào)試端口,允許調(diào)試工具通過 JTAG 或 SWD (Serial Wire Debug) 接口訪問目標設(shè)備。 SWJ-DP 有以下主要特性: 可以通過

    2024年02月19日
    瀏覽(22)
  • 【ARM 嵌入式 編譯系列 3.4 -- libgcc.a 詳細介紹】

    【ARM 嵌入式 編譯系列 3.4 -- libgcc.a 詳細介紹】

    請閱讀 【嵌入式開發(fā)學習必備專欄 之 ARM GCC 編譯專欄】 libgcc 是GCC的一部分。C語言不僅僅是由編譯器構(gòu)成,還包括了一個標準庫。編譯器在 GCC包里 ,標準庫則位于 GNU C庫里 ,即glibc包里。C編譯器(cc1)肯定是要依賴 glibc庫才能正常運行。 但是編譯器本身還使用了一個內(nèi)部

    2024年01月20日
    瀏覽(23)
  • 【ARM AMBA5 CHI 2 -- CHI 鏈路層詳細介紹 】

    請閱讀 【ARM AMBA 總線 文章專欄導讀】

    2024年02月05日
    瀏覽(21)
  • 【ARM AMBA AXI 入門 15 -- AXI-Lite 詳細介紹】

    【ARM AMBA AXI 入門 15 -- AXI-Lite 詳細介紹】

    請閱讀 【ARM AMBA AXI 總線 文章專欄導讀】 AMBA AXI4 規(guī)范中包含三種不同的協(xié)議接口,分別是: AXI4-Full AXI4-Lite AXI4-Stream 上圖中的 AXI FULL 和 AIX-Lite 我們都把它們叫做 Memory map, memory map的協(xié)議是可以尋址的,它是有地址的,它每次的訪問都是針對內(nèi)存中的一個

    2024年02月04日
    瀏覽(26)
  • 【ARM Coresight 系列文章 15.2 – components power domain 詳細介紹】

    請閱讀 【ARM Coresight SoC-400/SoC-600 專欄導讀】

    2024年02月08日
    瀏覽(25)
  • (三)基于arm64/aarch64架構(gòu)的Debian Linux中mysql5.7+詳細安裝過程

    (三)基于arm64/aarch64架構(gòu)的Debian Linux中mysql5.7+詳細安裝過程

    (一)移動端安卓手機改造成linux服務(wù)器Linux中安裝軟件踩坑歷險記 (二)Debian Linux系統(tǒng)中安裝oracle JDK1.8詳細過程(arm64/aarch64架構(gòu)下) 在上一篇文章中,主要分享了 改造后的安卓手機Linux系統(tǒng)中 JDK1.8的安裝與環(huán)境變量配置等內(nèi)容。本文就 基于arm/aarch64指令集架構(gòu)的Linux系統(tǒng)中 mysql5

    2024年01月21日
    瀏覽(25)
  • 【ARM Coresight Debug 系列 16 -- Linux 斷點 BRK 中斷使用詳細介紹】

    【ARM Coresight Debug 系列 16 -- Linux 斷點 BRK 中斷使用詳細介紹】

    請閱讀 【ARM Coresight SoC-400/SoC-600 專欄導讀】 ARMv8 架構(gòu)的 BRK 指令是用于生成一個軟件斷點的。當處理器執(zhí)行到 BRK 指令時,會觸發(fā)一個斷點異常。 BRK 指令的格式如下: 其中 imm 是一個 16 位的立即數(shù),它可以在斷點異常發(fā)生時將立即數(shù)保存到 ESR.ISS 域中,從可以用來區(qū)分不同

    2024年02月03日
    瀏覽(69)
  • 【ARM Coresight 系列文章19.2 -- Cortex-A720 AMU 詳細介紹】

    請閱讀 【ARM Coresight SoC-400/SoC-600 專欄導讀】 A-Prolifile 構(gòu)架中的 Performance Monitoring Unit(PMU)和Activity Monitoring Unit(AMU)都具有性能計數(shù)器。AMU和PMU可以計數(shù)的事件類似,那么AMU和PMU有什么不同呢? AMU和PMU的區(qū)別在于: AMU和PMU用作不同用途 AMU和PMU有不同的編程模式 PMU的用途是性

    2024年02月19日
    瀏覽(30)
  • 【ARM AMBA5 CHI 入門 12.1 -- CHI 鏈路層詳細介紹 】

    請閱讀 【ARM AMBA 總線 文章專欄導讀】

    2024年02月08日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包