CARME · Tam sistem emülasyonu
Önizleme

Firmware'iniz kart gelmeden çalışsın. Hatta silikon gelmeden.

CARME, Cortex-M0'lı bir sensör düğümünden 16 çekirdekli bir Linux sunucusuna kadar kartları ve SoC'leri bütünüyle emüle eder ve derlemenizin ürettiği ikili dosyayı hiç değiştirmeden çalıştırır. Gömülü ekipler donanımı beklemeden geliştirir, hata ayıklar ve test eder. Silikon ekipleri istedikleri bloğu RTL olarak koyar; sürücü, işletim sistemi ve donanım tape-out'tan çok önce buluşur.

carme · soc0running
A53A53A53A53UARTDMAETHI2CAESRTLGPIOCANUSB
uart0
*** Booting Zephyr OS ***
250+
kart ve SoC: Arm, RISC-V, SPARC, Power, x86, Xtensa ve MSP430
650+
yazmaç düzeyinde birebir çevre birimi modeli, UART'lardan PCIe ve UFS'ye
Tek zaman çizgisi
CPU'lar, çevre birimleri, ağlar ve RTL, her çalıştırmada aynı
0 kart
masanızda ya da CI çiftliğinizde gereken kart sayısı
shell
# NUCLEO-H753ZI üzerinde bir Zephyr imajı, konsol USART3'te
$ carme boards/nucleo_h753zi.cmboard --firmware build/zephyr/zephyr.elf --uart usart3
# aynı kart, kripto bloğu SystemVerilog RTL'i ile
$ carme boards/nucleo_h753zi.cmboard --firmware build/zephyr/zephyr.elf \
--rtl crypto0=-f rtl/aes_gcm.f --waves aes.fst --coverage cov/
# her commit'te, her kartta, her test
$ carme-test tests/ -j 32 --junit results.xml
İki ekip, tek sistem

Parçanın seçildiği günden ürünün çıktığı güne.

  • Başlangıç

    Gömülü geliştiricilerKartın geldiği gün değil, seçildiği gün

    Silikon ekipleriSilikonun döndüğü gün değil, RTL'in başladığı gün

  • Çalıştırma

    Gömülü geliştiricilerZephyr, FreeRTOS, Linux ya da bare-metal imajınız 250+ kartta

    Silikon ekipleriBoot ROM'unuz, sürücüleriniz ve işletim sisteminiz kendi SoC'nizde, blok blok RTL ile

  • Hata ayıklama

    Gömülü geliştiricilerHer çekirdekte GDB ve IDE'niz; prob yok, zamanı istediğiniz an durdurun

    Silikon ekipleriFirmware satırları ve RTL dalga biçimleri tek zaman ekseninde

  • Test

    Gömülü geliştiricilerHer commit her kartta; donanım rafı yok

    Silikon ekipleriUyaran olarak firmware, her çalıştırmadan RTL kapsamı

  • Teslim

    Gömülü geliştiricilerDonanımın ilk gününde test edilmiş firmware

    Silikon ekipleriMüşterilerinizin numuneden önce kullandığı sanal geliştirme kiti

CARME neyi çalıştırır

Teslim ettiğiniz ikili dosya, sistemin tamamında.

01

Teslim ettiğiniz ikili dosya

ELF, ham ikili, Intel HEX ya da S-record; araç zinciriniz nasıl yazıyorsa öyle. Özel derleme yok, saplama yok, simülasyon HAL'iyle değiştirilmiş HAL yok. Linux, Zephyr, FreeRTOS, NuttX, Tock, seL4, bare metal: kartta açılıyorsa CARME'de de açılır.

02

Tek bir CPU değil, sistemin tamamı

Bir makine; CPU'lar, veri yolları, bellek ve yonga üzerindeki her çevre biriminden oluşur ve veri sayfasında yazdığı gibi bağlanır. Farklı parçalar birlikte çalışır: Linux çalıştıran Cortex-A53 kümesi, RTOS çalıştıran Cortex-R5F, gücü yöneten M çekirdeği.

03

Herhangi bir modelin yerine RTL'iniz

İstediğiniz çevre birimini, hızlandırıcıyı ya da CPU'yu SystemVerilog, Verilog veya VHDL karşılığıyla değiştirin. Lumina Sim onu emüle edilen sistemle adım adım, 4 durumlu çalıştırır; firmware farkı anlamaz.

04

Birçok makine, tek ağ

Kartları Ethernet, CAN, BLE, 802.15.4, LoRa ve UART üzerinden bağlayın. Bir ağ geçidi, yirmi sensör düğümü ve buluta giden bağlantı tek emülasyonda, tek saatle çalışır; böylece bir mesh ya da araç ağı her çalıştırmada aynı davranır.

05

Her seferinde deterministik

Aynı girdiler aynı komut akışını, aynı anlarda aynı kesmeleri ve aynı çıktıyı verir. CI'da bir kez görülen bir hata, yeniden oynatabileceğiniz, geriye doğru adımlayabileceğiniz ve düzeltebileceğiniz bir hatadır.

06

İstediğinizde karttan hızlı

Çevrilmiş yürütme, mikrodenetleyici firmware'inin çoğunu gerçek zamandan hızlı çalıştırır. Zamanı durdurabilir, yavaşlatabilir ya da ana makinenin izin verdiği kadar hızlandırabilirsiniz; bir checkpoint ile yüz test tek bir açılışın sonundan başlar.

Döngüde RTL

Her blok model ya da RTL olabilir. Firmware farkı anlamaz.

Sürücüyü modelde tam hızda geliştirin. Bloğun RTL'i derlendiğinde tek bir seçenekle onu devreye alın ve aynı testleri çalıştırın. Lumina Sim yalnızca o bloğu çevrim çevrim çalıştırır; sistemin geri kalanı emülasyon hızında kalır.

crypto0 · aes_gcmrunning
CPU
AXI4
crypto0ModelRTL
def on_write_CTRL(p, v):
    if p.CTRL.START:
        p.DATA = aes_gcm(p.KEY, p.IN)
        p.STATUS.DONE = 1
        p.irq.done.pulse()
uart0: aes-gcm 1000 blocks OK
Birçok makine, tek saat

Bir ağ geçidi ve düğümleri, tek emülasyonda.

Her düğüm kendi firmware'ini çalıştırır ve her çalıştırma aynı şekilde ilerler. Paket kaybını, menzili ve paraziti siz belirleyin; bir mesh ağındaki zamanlama hatası, yeniden oynatıp düzeltebileceğiniz bir hataya dönüşür.

ble_mesh.cmsystem · 1 gateway · 6 düğümrunning
gatewaynRF52840node1node2node3node4node5node6
BLE802.15.4CANETHt = 0 ms
Her şeyi görün

Kartın size veremeyeceği hata ayıklama.

  • Hata ayıklayın:GDB ya da IDE'nizle, tüm çekirdeklerde aynı anda, prob olmadan. Koda, veriye, çevre birimi yazmaçlarına ve veri yolu işlemlerine breakpoint koyun.

  • İzleyin:her komutu, bellek erişimini, kesmeyi ve veri yolu aktarımını .cmtrace dosyasına yazın ve RTL dalga biçimlerinin yanında açın.

  • Kapsamı ölçün:firmware'in satır kapsamı çalıştırmanın kendisinden gelir; enstrümantasyon da yeniden derleme de gerekmez.

  • Profil çıkarın:çevrimlerin nereye gittiğini fonksiyon ve çekirdek bazında görün.

  • Hata enjekte edin:bit çevirin, paket düşürün, saati bozun, gücü kesin ve firmware'in toparlandığını doğrulayın.

  • Kaydedin ve geri yükleyin:sistemin tamamını .cmsnap olarak kaydedin ve istediğiniz yerden devam edin.

Ekipler ve yapay zekâ ajanları için

Her işlemin bir komutu, bir Python çağrısı ve bir soket API'si var.

Betikler ve testler düz Python'dur. Ajanlar bir kartı açabilir, imaj yükleyebilir, breakpoint koyabilir, yazmaçları okuyabilir ve olanı raporlayabilir; bir insanın elde ettiği determinizmle.

Sonuçlar, pipeline'ınızın zaten okuduğu JUnit XML, kapsam raporları ve izler olarak çıkar.

carme-test tests/ -j 32running
  • runtest_beacon_seen_by_gateway
  • ···test_node_survives_brownout
  • ···test_aes_gcm_vectors
  • ···test_ota_power_cut
  • ···test_linux_boot_from_snap
  • ···test_can_bus_off_recovery
  • ···test_watchdog_reset
0 geçti · 0 kaldı · 0.00sresults.xml
Okunabilir dosyalar

Deponuzda düz YAML ve Python.

  • .cmboard

    İçeriğiBir kart: SoC'si, belleği, harici aygıtları, pinleri, firmware'i

    BiçimYAML

  • .cmsoc

    İçeriğiBir SoC: çekirdekler, veri yolları, bellek haritası, çevre birimleri, kesmeler

    BiçimYAML

  • .cmperiph

    İçeriğiBir çevre birimi: yazmaçlar, alanlar, kesmeler ve modeli ya da RTL'i

    BiçimYAML

  • .cmsystem

    İçeriğiBirden çok makine ve aralarındaki bağlantılar

    BiçimYAML

  • .cmscript

    İçeriğiBir çalıştırma: ne yükleneceği, nerede durulacağı, neyin kontrol edileceği

    BiçimPython

  • .cmtest

    İçeriğipytest tarzı testler

    BiçimPython

  • .cmsnap

    İçeriğiKaydedilmiş sistem durumu

    Biçimİkili, sürümlü

  • .cmtrace

    İçeriğiYürütme ya da veri yolu izi

    Biçimİkili, belgelenmiş

Durum

CARME'de neler var.

  • Arm Cortex-M, Cortex-R, Cortex-A (32 ve 64 bit)Önizleme
  • RISC-V RV32 ve RV64, vektör, özel komutlarÖnizleme
  • SPARC, Power, x86, x86-64, Xtensa, MSP430Önizleme
  • Lumina Sim ile RTL eş simülasyonu (SystemVerilog, Verilog, VHDL)Önizleme
  • Çok düğümlü sistemler: Ethernet, CAN, BLE, 802.15.4, UARTÖnizleme
  • GDB sunucusu, izleme, kapsam, profil, hata enjeksiyonuÖnizleme
  • Kaydetme ve geri yükleme, checkpoint'lerÖnizleme
  • Python betikleri ve testleri, soket API'siÖnizleme
  • Linux x86-64Önizleme
Sorular

Sık sorulan sorular.

Firmware'imi değiştirmem ya da yeniden derlemem gerekir mi?

Hayır. CARME, karta yüklediğiniz ELF dosyasının aynısını yükler. Çevre birimleri yazmaç düzeyinde modellendiği için üretici HAL'leri, RTOS sürücüleri ve Linux sürücüleri olduğu gibi çalışır.

Çevre birimi modelleri ne kadar doğru?

Her model, üreticinin başvuru kılavuzundaki yazmaç haritasını ve davranışı izler ve onu kullanan gerçek firmware ile test edilir: üretici SDK örnekleri, Zephyr ve Linux sürücüleri. Modelden fazlasına ihtiyacınız olduğunda bloğun RTL'ini çalıştırın.

Çevrim doğruluğunda mı?

CARME komut düzeyinde doğru ve deterministiktir; firmware geliştirme ve CI'ın ihtiyacı budur ve hızlıdır. Zamanlamanın saat kenarında önemli olduğu yerde o bloğu RTL olarak koyun: Lumina Sim onu aynı emülasyonda çevrim çevrim çalıştırır.

Kartım listede yok. Yine de CARME'yi kullanabilir miyim?

Evet. Çoğu kart bilinen bir SoC ile harici parçalardan oluşur: birkaç düzine satırlık bir .cmboard yazın. Yeni bir SoC, çevre birimi kütüphanesinden kurulan bir .cmsoc dosyasıdır. Özel bir SoC'yi hizmet ekibimiz sizinle birlikte kurar ve bakımını yapar.

Bir çevre birimini kendim modelleyebilir miyim?

Evet. Yazmaçları bir .cmperiph dosyasında tanımlayın ve davranışı Python ile yazın ya da RTL'inize yönlendirin. İkisi de CARME yeniden derlenmeden yüklenir.

Hangi platformlarda çalışır?

Linux x86-64.

Firmware'inizi önce CARME'de çalıştırın.

Teslim ettiğiniz bir kartı, derlediğiniz bir imajı ve önemli bir testi getirin. Onu sizinle birlikte CARME'de ve donanımda yan yana çalıştıralım.

Gizlilik ayarları

Bu sitenin neleri kullanabileceğini seçin. Kararınızı her sayfanın altındaki Gizlilik ayarları bağlantısından dilediğiniz zaman değiştirebilirsiniz.

Sitenin çalışması için gerekenler ve burada yaptığınız seçimin kaydı. Kayıt tarayıcınızda tutulur; çerez kullanılmaz.

Her zaman açık

Ziyaretleri saymamıza ve hangi sayfaların işe yaradığını görmemize olanak tanır; reklam ya da siteler arası takip içermez. Şu anda hiçbir analitik aracı kullanmıyoruz, yani seçiminiz ne olursa olsun hiçbir şey yüklenmez.

Çerez politikası · Gizlilik politikası