Cortex-M işlemci mimarisi özellikleri

3.1 Programlama modeli

Cortex-M işlemci ailesinin programlama modeli oldukça tutarlıdır. Örneğin, tüm Crotex-M işlemciler R0 - R15, PSR, CONTROL ve PRIMASK'ı destekler. İki özel kayıt - FAULTMASK ve BASEPRI - sadece Cortex-M3, Cortex-M4, Cortex-M7 ve Cortex-M33 tarafından desteklenir; kayan nokta kayıt seti ve FPSCR (kayan nokta durumu ve kontrol kaydı) kaydı Cortex-M4 / M7'dir / M33, isteğe bağlı kayan nokta birimi tarafından kullanılır.

Şekil 5: Programlama modeli

BASEPRI kaydı, programın belirtilen önceliğin veya daha düşük önceliğin kesintilerini ve istisnalarını önlemesine izin verir. Bu, ARMv7-M için çok önemlidir çünkü Cortex-M3, Cortex-M4, Cortex-M7 ve Cortex-M33 çok sayıda öncelik seviyesine sahipken, ARMv6-M ve ARMv8-M Baseline'ın yalnızca sınırlı sayıda 4 önceliği vardır. derece. FAULTMASK genellikle karmaşık hata işleme için kullanılır (bkz.Bölüm 3.4)

Ayrıcalıklı olmayan düzeylerin uygulanması, ARMv6-M işlemciler için isteğe bağlıdır ve ARMv7-M ve ARMv8-M işlemciler için her zaman desteklenmiştir. Cortex-M0 + işlemciler için isteğe bağlıdır, Cortex-M0 ve Cortex-M1 bu işlevi desteklemez. Bu, çeşitli Cortex-M işlemcilerindeki CONTROL kayıtlarının biraz farklı olduğu anlamına gelir. FPU'nun yapılandırması, Şekil 6'da gösterildiği gibi, KONTROL kaydını da etkiler.

Şekil 6: KONTROL kaydı

Programlama modelleri arasındaki diğer bir fark, PSR kaydının (program durum kaydı) ayrıntılarıdır. Tüm Cortex-M işlemcileri için PSR kayıtları, uygulama programı durum kaydı (APSR), yürütme programı durum kaydı (EPSR) ve kesinti programı durum kaydı (IPSR) olarak alt bölümlere ayrılmıştır. ARMv6-M ve ARMv8-M Baseline serisi işlemciler, APSR'nin Q bitini ve EPSR'nin ICI / IT bitini desteklemez. ARMv7E-M serisi (Cortex-M4, Cortex-M7) ve ARMv8-M Mainline (DSP uzantılı Cortex-M33) GE bitlerini destekler. Ek olarak, ARMv6-M serisi işlemci IPSR'nin kesinti sayısı aralığı, Şekil 7'de gösterildiği gibi çok küçüktür.

Şekil 7: PSR farklılıkları

Cortex-M'nin programlama modelinin ARM7TDMI gibi klasik ARM işlemcilerden farklı olduğunu lütfen unutmayın. Kayıt setlerindeki farklılığa ek olarak, klasik ARM işlemcilerdeki "mod" ve "durum" tanımları da Cortex-M'dekilerden farklıdır. Cortex-M'nin yalnızca iki modu vardır: iş parçacığı modu (İş Parçacığı) ve yönetici modu (İşleyici) ve Cortex-M işlemci Başparmak durumunda çalışıyor (ARM talimatları desteklenmiyor).

2.2 İstisna işleme modeli ve yuvalanmış vektör kesinti denetleyicisi NVIC

Tüm Cortex-M işlemciler NVIC modülünü içerir ve aynı istisna işleme modelini kullanır. Anormal bir kesinti meydana gelirse, öncelik seviyesi mevcut çalışma seviyesinden daha yüksekse ve herhangi bir kesinti maskesi kaydı tarafından maskelenmemişse, işlemci kesintiye / istisnaya yanıt verecek ve bazı kayıtları mevcut yığına itecektir. Bu yığın mekanizması altında, kesme işleyicisi sıradan bir C işlevi olarak yazılabilir ve birçok küçük kesme işleyicisi, ek yığın işleme maliyetlerine gerek kalmadan doğrudan çalışmaya anında yanıt verebilir.

Bazı ARMv7-M / ARMv8-M Mainline serisi işlemciler, Şekil 8'de gösterildiği gibi ARMv6-M / ARMv8-M Baseline ürünleri tarafından desteklenmeyen kesintileri ve sistem istisnalarını kullanır. Örneğin, Cortex-M0, M0 + ve M1 için kesinti sayısı 32 veya daha azıyla sınırlıdır, hata ayıklama ve izleme istisnaları yoktur ve hata istisnaları HardFault ile sınırlıdır (hata işlemeyle ilgili ayrıntılar için lütfen Bölüm 3.4'e bakın). Bunun aksine, Cortex-M23, Cortex-M3, Cortex-M4 ve Cortex-M7 işlemciler 240'a kadar çevresel kesintiyi destekleyebilir. Cortex-M33, 480 kesmeye kadar destekler.

Diğer bir fark, kullanılabilecek öncelik seviyelerinin sayısıdır:

ARMv6-M mimarisi-ARMv6-M, 2 seviyeli sabit (NMI ve HardFault) ve 4 seviyeli programlanabilir (her bir öncelik kaydında iki bit ile temsil edilir) kesme / istisna önceliğini destekler. Bu, çoğu mikro denetleyici uygulaması için yeterlidir.

ARMv7-M mimarisi - ARMv7-M serisi işlemcilerin programlanabilir öncelik seviyeleri aralığı, alan sınırlamalarına göre 8 seviye (3 bit) ila 256 seviye (8 bit) arasında yapılandırılabilir. ARMv7-M işlemcisi ayrıca kesme öncelikli gruplama adı verilen bir işleve sahiptir.Kesme öncelik kaydı ayrıca grup önceliğine ve alt önceliğe bölünebilir, böylece önleyici öncelik davranışı ayrıntılı olarak formüle edilebilir.

ARMv8-M Baseline - ARMv6-M'ye benzer şekilde, M23 ayrıca 2 bitlik öncelik seviyesi kaydına sahiptir. İsteğe bağlı TrustZone güvenlik genişletme bileşeni ile güvenlik yazılımı, güvenli olmayan ortamdaki kesintilerin önceliğini öncelik aralığının alt yarısına dönüştürebilir, bu da güvenlik ortamındaki belirli kesintilerin / istisnaların her zaman güvenli olmayanlardan daha güvenli olmasını sağlar. Ortamdaki öncelik daha yüksektir.

ARMv8-M Mainline-ARMv7-M'ye benzer. 8 ila 256 kesinti öncelik düzeyini destekleyebilir ve öncelik gruplarını kesebilir. Ayrıca ARMv8-M Baseline'ın öncelik ayarlama işlevini de destekler.

Şekil 8: Cortex-M işlemci istisna kesinti türü

Tüm Cortex-M işlemciler, istisna işleme için vektör tablolarına güvenir. Vektör tablosu, istisna işleme fonksiyonunun başlangıç adresini tutar (Şekil 8'de gösterildiği gibi). Vektör tablosunun başlangıç adresi, vektör tablosu ofset kaydı (VTOR) tarafından belirlenir.

· Cortex-M0 +, Cortex-M3 ve Cortex-M4 işlemciler: varsayılan olarak vektör tablosu bellek haritasının başlangıcında bulunur (adres 0x0) Cortex-M0 +, Cortex-M3 ve Cortex-M4: Depolama alanının başlangıç adresi (adres 0x0).

· Cortex-M7, Cortex-M23 ve Cortex-M33 işlemcilerinde: VTOR için varsayılan değer yonga tasarımcıları tarafından tanımlanır Cortex-M23 ve Cortex-M33 işlemciler, Güvenli ve Güvenli olmayan istisnalar / kesintiler için iki ayrı vektör tablosuna sahip olabilir. Cortex-M7, Cortex-M23 ve Cortex-M33: VTOR'un başlangıç değeri çip tasarımcısı tarafından belirlenir. Cortex-M23 ve Cortex-M33 işlemciler, güvenli ve güvenli olmayan istisnalar / kesintiler için iki bağımsız vektör tablosuna sahiptir.

· Cortex-M0 ve Cortex-M1 programlanabilir VTOR uygulamaz ve vektör tablosu başlangıç adresi her zaman 0x00000000'dir.Cortex-M0 ve Cortex-M1 programlanabilir VTOR uygulamaz ve vektör tablosu başlangıç adresi her zaman 0x00000000'dür.

Cortex-M0 + ve Cortex-M23 işlemcilerin VTOR'u isteğe bağlıdır. VTOR uygulanırsa, vektör tablosunun başlangıç adresi VTOR ayarlanarak değiştirilebilir. Bu işlev aşağıdaki durumlarda kullanışlıdır:

· İstisna işleme fonksiyonunun giriş noktasını dinamik olarak değiştirmek için vektör tablosunu SRAM'a yeniden konumlandırın

· Daha hızlı vektör okuması elde etmek için vektör tablosunu SRAM'a yeniden konumlandırın (flash bellek yavaşsa)

· Vektör tablosunu ROM'da (veya Flash'ta) farklı konumlara yeniden konumlandırın, farklı program çalıştırma aşamalarında farklı istisna işleme prosedürleri kullanılabilir

NVIC programlama modelinde farklı Cortex-M işlemcileri arasında ek farklılıklar da vardır. Farklılıklar Tablo 5'te özetlenmiştir:

Tablo 5: NVIC programlama modeli ve özellik farklılıkları

Çoğu durumda, NVIC'nin kesinti denetimi özelliğinin çalışması CMSIS-CORE tarafından sağlanan API'ler aracılığıyla gerçekleştirilir ve bunlar, mikro denetleyici üreticisi tarafından sağlanan aygıt sürücüsü kitaplığında bulunur. Cortex-M3 / M4 / M7 / M23 / M33 işlemciler için, kesme etkinleştirilse bile önceliği değiştirilebilir. ARMv6-M işlemciler dinamik öncelik seviyesi ayarlamasını desteklemez. Kesme öncelik seviyesini değiştirmeniz gerektiğinde, kesmeyi geçici olarak kapatmanız gerekir.

3.3 İşletim sistemi destek özellikleri

Cortex-M işlemci mimarisi, işletim sistemi desteği düşünülerek tasarlanmıştır. İşletim sisteminin özellikleri şunlardır:

Gölge yığını işaretçisi

Sistem servis çağrısı (SVC) ve askıya alınabilir sistem çağrısı (PenSV) istisnaları

İşletim sistemi zamanlaması ve görev yönetimi için periyodik anormal kesintiler oluşturan SysTick-24-bit azalan zamanlayıcı

Cortex-M0 + / M3 / M4 / M7 / M23 / M33, ayrıcalıksız yürütme ve bellek koruma birimini (MPU) destekler

Sistem hizmeti çağrısı (SVC) istisnası, ayrıcalıklı olmayan bir durumda çalışan uygulama görevlerinin ayrıcalıklı işletim sistemi hizmetlerini başlatmasına izin veren SVC talimatı tarafından tetiklenir. Askıya alınabilir sistem çağrısı istisnaları, işletim sisteminde bağlam değiştirme gibi kritik olmayan işlemlerin planlanmasında çok faydalıdır.

Cortex-M1'i çok küçük bir FPGA cihazına sığdırmak için, işletim sistemini desteklemek için kullanılan tüm özellikler Cortex-M1 için isteğe bağlıdır. Cortex-M0, Cortex-M0 + ve Cortex-M23 işlemciler için sistem saati SysTick isteğe bağlıdır.

Genel olarak, tüm Cortex-M işlemcileri işletim sistemlerini destekler. Cortex-M0 +, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23 ve Cortex-M33 üzerinde çalışan uygulamalar ayrıcalıksız bir işletim durumunda çalışabilir ve ayrıca önlemek için isteğe bağlı bellek yönetim birimini (MPU) kullanabilir. Belleğe yasadışı erişim. Bu, sistemin sağlamlığını artırabilir.

3.4 TrustZone Güvenlik Uzantısı

Son yıllarda, Nesnelerin İnterneti (IoT), gömülü sistem geliştiricileri arasında sıcak bir konu haline geldi. IoT sistem ürünleri daha karmaşık hale geldi ve pazara sunma süresi üzerindeki baskı da arttı. Gömülü sistem ürünleri, sistemin güvenliğini sağlamak için daha iyi çözümlere ihtiyaç duyar, ancak aynı zamanda yazılım geliştiricilerin geliştirmesi için uygun olmalıdır. Geleneksel çözüm, yazılımı ayrıcalıklı ve ayrıcalıklı olmayan parçalara bölerek çözülür Ayrıcalıklı yazılım, ayrıcalıklı olmayan uygulamaların güvenlik açısından hassas bilgiler dahil olmak üzere kritik sistem kaynaklarına erişmesini önlemek için MPU kullanır. Bu çözüm bazı IoT sistemleri için çok uygundur, ancak bazı durumlarda yalnızca iki bölümleme katmanı yeterli değildir. Özellikle birçok karmaşık ayrıcalıklı yazılım bileşeni içeren sistemler Ayrıcalıklı koddaki bir kusur, bir bilgisayar korsanının sistemi tamamen kontrol etmesine neden olabilir.

ARMv8-M mimarisi, güvenli ve güvenli olmayan durumların ortogonal bir bölümünü tanıtan TrustZone adlı bir güvenlik uzantısı içerir.

Sıradan uygulama güvenli değil

Yazılım bileşenleri ve güvenlikle ilgili kaynaklar (örneğin, güvenli depolama, kriptografik hızlandırıcılar ve pozitif rastgele sayı oluşturucular (TRNG)) güvenli bir durumdadır.

Şekil 9: Güvenli durum ile güvenli olmayan durumun ayrılması

Güvenli olmayan durumdaki yazılım, yalnızca güvenli olmayan durumdaki depolama alanına ve çevresel aygıtlara erişebilir ve güvenlik yazılımı, iki durumdaki tüm kaynaklara erişebilir.

Bu çözüm ile yazılım geliştiriciler geçmişte güvenli olmayan ortamlarda uygulama geliştirebilirler. Aynı zamanda, güvenli IoT bağlantıları gerçekleştirmek için çip üreticisi tarafından sağlanan güvenli iletişim yazılımı kitaplığını kullanabilirler. Güvenli olmayan ortamda çalışan ayrıcalıklı programda boşluklar olsa bile, TrustZone güvenlik mekanizması bilgisayar korsanlarının tüm cihazı kontrol etmesini engelleyebilir, saldırının etkisini sınırlayabilir ve uzaktan sistem kurtarma gerçekleştirebilir. Buna ek olarak, ARMv8-M mimarisi ayrıca yığın sınırı denetimi ve gelişmiş MPU tasarımı sunarak ek güvenlik önlemlerinin benimsenmesini sağlar.

Güvenlik mimarisinin tanımı da sistem düzeyine genişletilir ve her kesme, güvenli veya güvenli olmayan bir özniteliğe ayarlanabilir. Kesme istisnası işleyicisi, güvenlik bilgilerinin sızmasını önlemek için kayıt verilerini güvenlik ortamında otomatik olarak kaydedecek ve geri yükleyecektir. Bu nedenle, TrustZone güvenlik uzantısı sistemin gerçek zamanlı sistemlerin ihtiyaçlarını desteklemesini sağlar, IoT uygulamaları için sağlam bir güvenlik temeli sağlar ve yazılım geliştiricilerin bu teknolojiye dayalı uygulamalar geliştirmesini kolaylaştırır.

TrustZone modülü, Cortex-M23 ve Cortex-M33 işlemciler için isteğe bağlıdır. ARMv8-M TrustZone hakkında daha fazla bilgi için lütfen Akıllı Bağlantı Dönemi için Yerleşik İşlemcilerin Evrimindeki Sonraki Adımları bulun. Daha fazla TrustZone kaynağı için lütfen community.arm.com web sitesinde "ARMv8-M Topluluğu için TrustZone" bölümüne bakın,

3.5 Hata işleme

ARM işlemcileri ve diğer mimarilerin mikro denetleyicileri arasındaki bir fark, hata işleme yetenekleridir. Bir hata tespit edildiğinde, uygun işlemi gerçekleştirmek için bir hata istisna işleyicisi tetiklenir. Hatayı tetikleyen koşullar şunlar olabilir:

Tanımlanmamış talimat (örneğin, flash bellek hasarlı)

Yasadışı adres alanına erişim (örneğin, yığın işaretçisi çökmesi) veya MPU'dan yasadışı erişim

Yasadışı işlem (örneğin, işlemci, SVC'den daha yüksek önceliğe sahip bir kesmede bir SVC istisnasını tetiklemeye çalıştığında)

Hata işleme mekanizması, gömülü sistemin çeşitli sorunlara daha hızlı yanıt vermesini sağlar. Aksi takdirde, sistem çökerse, bekçi köpeğinin sistemi yeniden başlatması düzenli olarak çok uzun zaman alır.

ARMv6-M mimarisinde, tüm hata olayları HardFault işleyicisini tetikler ve önceliği -1'dir (öncelik, tüm programlanabilir istisnalardan daha yüksek, ancak yalnızca maskelenmemiş kesme NMI'sinden daha düşüktür). Tüm hata olayları kurtarılamaz olarak kabul edilir, genellikle hata raporunu yalnızca HardFault işleyicisinde çalıştırırız ve daha sonra otomatik bir sıfırlamayı tetikleriz.

ARMv8-M Baseline mimarisi, yalnızca bir hata istisnası (HardFault) ile ARMv6-M'ye benzer. Ancak, TrustZone güvenlik uzantısı uygulandığında ARMv8-M Baseline'ın HardFault önceliği -1 veya -3 olabilir.

HardFault'a ek olarak, ARMv7-M ve ARMv8-M Mainline ürünlerinin yapılandırılabilir birkaç hata istisnası vardır:

Memmanage (bellek yönetimi hatası)

· Veri yolu hatası (veri yolu yanlış yanıt verir)

· Kullanım hatası (tanımlanmamış talimat veya diğer yasadışı işlemler)

SecureFault (TrustZone güvenlik uzantısında güvenli ve yasa dışı işlemleri yürütmek için yalnızca ARMv8-M Mainline ürünleri tarafından desteklenir)

Bu istisnaların önceliği programlanarak değiştirilebilir ve ayrı ayrı açılıp kapatılabilir. Gerekirse, önceliklerini HardFault ile aynı seviyeye yükseltmek için FAULTMASK kaydını da kullanabilirler. ARMv7-M ve ARMv8-M Mainline ürünleri ayrıca, hata istisnasını tetikleyen erişim adresini belirlemek için kullanılan ve hata ayıklamayı kolaylaştıran, hata istisna olaylarını ve hata adresi kayıtlarını tetikleme hakkında ipuçları sağlayabilen birkaç hata durumu kaydına sahiptir.

ARMv7-M ve ARMv8-M Mainline ürün alt spesifikasyonlarındaki ek hata işleyiciler, esnek hata işleme yetenekleri sağlar ve hata durumu kaydı, hata olaylarını bulmayı ve hata ayıklamayı kolaylaştırır. Ticari geliştirme kitlerindeki birçok hata ayıklayıcı, hata olaylarını teşhis etmek için yerleşik hata durumu kayıtlarının kullanımına sahiptir. Ek olarak, hata işleyicisi çalışma zamanında bazı onarım işleri yapabilir.

Tablo 6: Hata işleme özelliklerinin karşılaştırma özeti

Dünya Nehir Şarkı Festivali, Chongqing Wanzhou Sings
önceki
Dahe Songhui Show Pitoresk Baili Sanxia için Takdir
Sonraki
Feng Xiaogang, "Fang Hua" nın çekilmesi için boğuldu ve özür diledi. Bahar esintisi iyi haberi yaydığında, tekrar görüşeceğiz.
Ah ah ah ah ah ah ah ah ah!
Yurtdışında bir akademik konferansa ilk kez katılan UC Berkeley öğrencileri, atölyedeki bildiriler neye benziyordu? ICRA 2017
Dahe Songhui'nin Takdiri | Balıkçının Şarkısı
SDN Denetleyici Dağıtımında Güvenilirlik Optimizasyonu Araştırması
Hak kazanan resimli A-hisse IPO eyaletleri: Jiangsu en yüksek sayıya, Fujian ve Anhui en yüksek veto oranına sahip
Gizemli resimler üç kez yayınlandı, Bethesda'nın 14 Mayıs'ta yapacak bir işi olabilir.
Patlamak! Sabah saat 6'da Qingshan Mahallesi'ndeki bir konutta patlama meydana geldi ve çok sayıda evin camları kırıldı
Dahe Songhui Show'un Takdiri The Yellow River Cantata
Film izlemek için paratonerler | Ulusal Gün dosyaları daha sıcak ve daha sıcak, gişe rekorları kıran filmler kalabalığın içinde yayınlanıyor, Jackie Chan bir yüz düşman
Cinsel saldırı geçmişinin tek tıklamayla soruşturulması! Ulusal tanıtımın yanı sıra, netizenler de bu özelliği eklemek istiyor ...
Bilgi için ödeme yapmadan önce bunları bilmeniz gerekir
To Top