semaver
New member
Riskinizi ve kendisi için girin! RIS-V ve ESP32-C3 ile
Son bölümlerde ahududu pico hakkında konuştu. Blog kendini Pico'ya ayırmaya devam etmeden önce, bu ekstra yazı ESPressif'in yeni ESP32-C3 mikrodenetleyicisini ele alıyor. Çip açık -mimarlık RIS V'ye dayandığından, makale de tabanlarına girer.
Bizim için, açık kaynak yazılımının yoğun kullanımı uzun zamandır günlük yaşamın bir parçası olmuştur, hem Linux, OpenOffice, farklı IDE, kitapçılar veya Incorporated geliştirme örnekleri. Açık donanım uzun süredir var, ancak çok daha az yaygındır. Açık RIS V mimarisiyle, açık kaynak donanımı birden fazla hız işgal edebilir.
İlk makale başlangıçta RIS-V'yi uygulayan espressif tarafından yeni ESP32-C3 mikrodenetleyicisine ayırmak için RIS-V'nin temellerini sunmaktadır.
Kolun egemenliği
BT topluluğunda herkes, üreticilerin işlemcilerin iç geliştirilmesi için lisans maliyetlerini ödedikten sonra kullanabilecekleri ARC mimarlık sisteminin ailesini bilir. İnşaat sistemleri, mobil cihazlar ve SBC (tek devre bilgisayar) alanında, kol bir süre galip geldi. Ve Apple yakın zamanda çiplerini dizüstü bilgisayarlara ve masaüstü sistemlerine kollarla kurmaya başladı.
ARM iş modelinin dezavantajlarından biri, her şeyden önce küçük üreticilere uygulanan lisans komisyonlarıdır. Son olarak, tüm şirketler uygulamalarına en uygun şekilde uyum sağlayan işlemcileri tasarlayamaz. Serbest RIS-V mimarisi (belirgin: “Risk-Sinki”) ile ciddi rekabet piyasaya sürülebilir.
CISC yerine RIS
Çalışmalarım sırasında RIS (azaltılmış bilgisayar) önemli bir rol oynadı. Sonuç olarak, çalışma hayatımın başlangıcını RIS merkezli güneş iş istasyonu karşısında geçirdim, bu da sparc çipleri vardı. Kural 80:20'ye göre, RIS, diğer şeylerin yanı sıra, kullanılmış makine eğitmeni ile sınırlı olduğu gerçeğiyle, büyük bir kayıt ifadesine sahip olması ve genellikle bir kelime kelimesinin genişliğine sahip talimatları, örneğin 32 bit veya 64 bit ile, işleme bir CPU döngüsünde gerçekleştirilen talimatları kullanır. Bu, bu CPU'ların gelişimini basitleştirir, ancak derleyicilerin yapımı daha karmaşıktır. Aksine, AMD ve Intel gibi CISC-CPU'lar (CISC = karmaşık set bilgisayar) çok güçlü ve karmaşık bir komut oranına sahiptir. Bir başka olumlu “teminat etkisi”: Üreticiler, Intel veya AMD gibi yarı iletken devleri için zor olan enerji açısından çok etkili bir risk altında CPU'lar oluşturabilirler.
Her işlemci ailesinin temel bileşeni, donanım ve yazılım mimarisi arasındaki arayüzü belirttiği için kullanılan komut kümesidir (talimat kümesi). Bu genellikle çok az veya değil, yazılım geliştiricilerini etkiler veya etkiler, çünkü Arduino Core, JVM, CLR veya Python tercümanı gibi donanım soyutlama seviyeleri donanımı iyi gizleyebilir. Bununla birlikte, her donanım için uygun araçlar sağlaması gereken derleyicilerin veya tercümanların geliştiricilerini etkiler. Bu nedenle, işlemciler için tek tip bir komut olsaydı bir avantaj olacaktır. Bu açıkça gerçekçi değil, ama en azından kısmen elde edilebilirdi, bu da RIS-V'ye ulaşacaktı.
RIS-V Nedir
RIS-V, BSD lisansı ile patentli olmayan ve bunun yerine serbestçe kullanılabilir olmayan bir açık kontrol oranı tanımlar. Gelişimi 2010 yılında Berkeley'deki California Üniversitesi'nde başladı. Diğer şeylerin yanı sıra, amaç, özellikle sınıfta paralelleştirmenin verilmesi için mimariyi öğretim amacıyla sağlamaktı. Amerikan DARPA ve Microsoft ve ST Microelectronics gibi şirketler potansiyeli tanıdıklarında, akademik konsept üniversiteler ve endüstri için bir çözüm geliştirdi.
Bunun temel nedeni esnekliktir: RIS-V'den ISA (talimat setinin mimarisi) 32 bit yaratık ve 64 bit işlemcilerinki için kullanılabilir. 128 bit işlemcinin mimarileri de mümkündür, bu da gelecekteki risk güvenliğini garanti eder. Buna ek olarak, aşağıdaki kontrol oranı hipervizör, çıplak metal sistemler için veya Linux gibi işletim sistemleri için ideal bir platform olarak sanallaştırma için çok uygundur.
RIS-V'ye dayanan bir donanım platformu, RIS-V'ye uymayan durumda da böyle olabilecek birkaç işlemci çekirdeği içerir. Bu amaçla, gerekirse, kontrol hızını genişleten ve RIS-V komutunun güç akışına entegre eden kapaklar. Buna ek olarak, tamamlanmış veya çekirdek bir işlevi tanımlayan ve G/Ç işlemeninki gibi özerk görevleri yerine getiren hızlandırıcılar (hızlandırıcılar) vardır.
Bu modüler konsept yardımıyla, donanım fikirleri, yumurtaların mikrodenetleyicisinden sistemlere, birçok çekirdeğe paylaşılan belleğe dayalı büyük ağ düğümleri kümelerine kadar düşünülebilir.
Modülerlik Trump
RIS-V'nin temeli, önceki RIS mimarilerine dayanan tam sayılar için bir komut oranı oluşturmaktadır. Gerçekte, biri 32 bit, diğeri 64 -Bit işlemede uzmanlaştığı dört komut da vardır. Başka bir kontrol kümesi, dahil edilen kontrolörlerde kullanılacak kayıt sayısını azaltırken, 128 -BIT mimarisi için dördüncü destek. Bahsedilen tüm temel kontroller genişletilebilir. Ayrıca değişken uzunluklara sahip kontrollerdir (bkz. RIS-V spesifikasyonlarına bakınız).
Standart uzantılar şunları içerir:
- M: Tam sayıların çarpılması ve bölünmesi
- A: Atom operasyonları
- D: Basit bir hassasiyetle akan virgül sayıları
- D: Çift hassasiyetle akan virgül sayıları
- D: Dört kez hassasiyetle devriye sayıları planlama
- L: ondalık kayar virgül sayıları
- B: Bitlerin manipülasyonu için talimatlar
- J: Dinamik olarak tercüme edilen programlama dilleri için talimatlar
- T: İşlemsel bellek
- V: vektör işlemleri için komutlar
Komut hızına daha yakından bakmak istiyorsanız, örneğin burada bulacaksınız.
Tüm standart uzantıları uygulayan RIS-V işlemcisinin bir çekirdeğinin karmaşıklığı, bu nedenle genel kullanım için bir CPU'nun havadar yüksekliklerine kesinlikle ulaşabilir.
RIS-V'nin heyecan verici bir boyutu daha var. Şimdiye kadar bahsedilen “özel olmayan olmayan” bir mimariye ek olarak, makineden amirden uygulamalara ve kullanıcılara kadar farklı ayrıcalık seviyelerinden oluşan bir yığın tanımlayan “ayrıcalıklı” bir mimari vardır. Geliştiriciler esas olarak bu seviyelerden birinin kodu yazıyor. Makine seviyesindeki kod (Mode M) genellikle güvenilir olarak kabul edilir ve en yüksek ayrıcalıklara sahiptir. Öte yandan, kod süpervizör düzeylerinde daha az ayrıcalıkla gerçekleştirilir. Örneğin, işletim sistemleri burada serbest bırakılır. Yukarıda – yoksa altta söylemeyi mi tercih etmeli miyim?! -“Çok ayrıcalıklı değil” U modunda (u = kullanıcı) deneyim. Talimat setinin mimarisi için RIS-V kılavuzunun Cilt II, ayrıcalıklı mimariyi ele alıyor ve makinenin talimatlarını çeşitli ayrıcalıklarla desteklemek için karşılık gelen uzantılar sunuyor.
Teori ve Uygulama
“Yalnızca” RIS-V “belirli bir şeyi temsil ettiğinden, birisinin uygulama ile ilgileniyorsa soru. Tabii ki, cevap evet, çünkü aksi takdirde bu yazı bunu yapmaz. Örneğin, Western Digital ve Nvidia karşılık gelen uygulamalar geliştirir. RIS-V'ye dayanan pulpino kartı Eth Zurich'ten gelir.
Biraz daha fazla olabilir mi? RIS-V web sitesinde çok sayıda başka ürün ve gelişme mevcuttur. Bundan, RIS-V'nin hem üniversite hem de sanayi sektöründe zaten birçok destekçisi olduğunu görebilirsiniz (listeye bakınız). Venüs simülatörü kullanan RIS-V komut oranı ile pratik yapmak için Visual Studio kodunun bir uzantısı vardır (buraya bakın).
RIS-V dahil edildi
Incorporated Alan şimdi “ev kullanımı” için bazı ürünler sunuyor:
- Espressif tarafından ESP32-C3
- Çeşitli Siifif Kartlar
- M5Stack'ten M5STickV
- Sapeat panoları Maix-Bit, Maixduino, Longan Nano

HiFive kart ayrıca RIS-V'ye dayanan bir mikrodenetleyici içerir
(Resim: Sifir)
Longan Nano, yaklaşık 2.70 Euro fiyatlar için AliExpress aracılığıyla satın alınabilir ve ayrıca Arduino kartlarıyla uyumludur (bkz. SIPEAT web sitesi).
Sonuç olarak, geliştiriciler zaten uygun fiyatlı ve ilginç fiyatlara karşılık gelen ürünler elde edebilirler. Aşağıdakiler: RIS-V artık sadece bir spesifikasyon koleksiyonu değil, bir gerçektir. Keşif başlayabilir.

Birçok şirket ve üniversite zaten RIS-V'yi destekliyor. İşte sadece küçük bir boyun çizgisi.
(Resim: RIS-V International)
Espressif ESP32-C3
Neyse ki, Espressif bana ESP32-C3-Devkitm-1 adlı tavsiyesinin bir ön seri modelini sağladı. Bu burada odaklanmalıdır. ESP32'ye rağmen, ESP32-C3 mikrodenetleyici, ESP8266'nın bir evrimi olarak düşünülmelidir. Daha kesin olarak, ESP8266 ve ESP32 arasında performans ve beceriler açısından konumlandırılmıştır.

Espressif'in ESP32-C3-devkitm-1
(Resim: Espressif)
Ayrıca pazara çok rekabetçi fiyatlarla girmeli ve Bluetooth 5.0 ve 2.4 GHz wifi sayesinde kardeşlerinin son derece iletişimsel olduğunu göstermelidir. 40 nm teknolojisinde üretilen risk işlemcisi tek bir çekirdeğe sahiptir ve 160 MHz'e kadar saat frekansına izin verir. 384 Kbyte Roma'ya ek olarak, 16 kbyte dahil 400 Kbytes Sram önbellek olarak mevcuttur. Kraliyet saatinde ayrıca 8 kbeyt bellek var.
Ayrıca, bir ESP32-C3 aşağıdaki kapıları ve arayüzleri uygular:
- 22 × Programlanabilir Glio
- ADC SAR 2 × 12 bit, maksimum altı kanallı
- Sıcaklık Sensörü 1 ×
- 3 × SPI
- 2 × uart
- 1 × I2C
- 1 × I2S
- İki şanzıman kanalı ve iki alım kanalı ile uzaktan kumanda ünitesi
- Maksimum altı kanalla PWM LED denetleyicisi
- Üç iletim kanalı ve üç resepsiyon kanalı ile DMA denetleyicisi
- Bus Controller 1 × Can (ISO 11898-1 ile uyumlu)
- Üretilen -Güvenlik Donanımı

RIS-V'ye dayalı ESP32-C3 blok diyagramı
Beş enerji seviyesine sahip entegre bir PMU (güç yönetim ünitesi), örneğin mümkün olan en düşük enerji tüketimine sahip derin bir uyku modu için ihtiyaçlarınıza uyum sağlamayı garanti eder. ESP32-C3 hakkında daha fazla ayrıntı keşfetmek istiyorsanız, web'de ilgili bir veri sayfası bulacaksınız.
Programlama Araçları
ESP32-C3 veya ESP32-C3-deveTM-1 kartını denemek için espressif tarafından iyi bir dokümantasyon vardır. İlgilenen geliştiriciler, satır odaklı komutları ESP IDF araçları aracılığıyla (buradan önceki makaleme bakın) veya Eclipse veya Visual Studio kodundaki muhabir eklentisiyle programlayabilirler.
Program örneği
Aşağıdaki örnek, üretilen LED'in yanıp sönmesine yol açar. Program, tek ipliği bir saniyeliğine özellikle tutuklamak için Freertos ürün yazılımının çok işlevli desteğini kullanır. Uygulamanın geri kalanı, üretilen LED için GPIO'yu tanımlar.gpio_set_direction())), al reset()tanımlanmış bir durumda ve sonra alternatif olarak bir gpio_set_level() Önce 0- ve sonra bir sinyal 1. printf()-Cias seri terminaldeki metin sürümlerini garanti eder.
/* Blink Beispiel */
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
/* Genutzt wird der konfigurierte GPIO für die eingebaute LED */
#define BLINK_GPIO CONFIG_BLINK_GPIO
void app_main(void) {
/* GPIO zurücksetzen */
gpio_reset_pin(BLINK_GPIO);
/* GPIO für die LED ist ein Ausgang */
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
while(1) {
/* LED aus */
printf("LED ausgeschalten");
/* das heisst 0 am GPIO ausgeben */
gpio_set_level(BLINK_GPIO, 0);
/* 1 Sekunde Wartezeit des Threads */
vTaskDelay(1000 / portTICK_PERIOD_MS);
/* LED ein */
printf("LED eingeschalten");
/* das heisst 1 am GPIO ausgeben */
gpio_set_level(BLINK_GPIO, 1);
/* 1 Sekunde Wartezeit des Threads */
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
Çözüm
RIS-V, bir başarı öyküsünde gelişmek için büyük bir potansiyele sahiptir. Özellikle tohumlar, açık komuta mimarisi fırsatı ile, aynı zamanda yerleşik üreticiler de saatin lehine kullanıyor. Mimarinin masaüstü veya not defteri üzerinde de geçerli olup olamayacağı görülüyor. Geliştiriciler için hangi donanımın bir sistem sunduğu önemli değil. Bununla birlikte, dolaylı olarak, tek tip bir komut mimarisi büyük bir donanım ve yazılım ekosisteminin avantajına sahip olacaktır. Ve bu nedenle RIS-V'nin daha da gelişmesi heyecan verici.
Bir sonraki bölümde, bu blog tekrar ideal olacak ve Raspberry Pico için projeler olacak.
()