QEMU ile Gömülü Linux Sistemlerinin Öykünmesi

QEMU ile Gömülü Linux Sistemlerinin Öykünmesi

 

1. Giriş

Gömülü yazılım geliştirme, geliştirme kartları, harici modül aygıtları vb. gibi yerleşik donanım aygıtlarına dayanır, ancak hata ayıklama işinin çevre birimleriyle hiçbir ilgisi yoksa, donanım satın almadan QEMU kullanılarak yalnızca çekirdek hata ayıklaması simüle edilebilir.

Linux ve Windows ana bilgisayarları ve öykünülmüş PowerPC, ARM, MIPS ve SPARC hedefleri için kullanılabilir. QEMU, ana bilgisayar ve hedef işlemci arasında minimum bir çeviri katmanı sağlama yaklaşımını benimser. Ana işlemci, öykünücüyü çalıştıran işlemcidir ve öykünmekte olan şey hedef işlemcidir.

Aşağıda, QEMU geliştirme ortamını kurma sürecine ayrıntılı bir giriş yer almaktadır.

 

2. Çevre

2.1 Kullanılan ortam

*Ubuntu-18.04.1

VEYA:

* Bilgisayar: Windows10

* Sanal Makine:VirtualBox-5.18

* Sanal İşletim Sistemi:Ubuntu-18.04.1

* Simüle edilmiş geliştirme kartı: vexpres

2.2 Ortamı kurarken kullanılan araçlar

* qemu-4.2.0

* linux-4.14.172 (Linux Çekirdeği)

* u-boot-2017.05

* meşgul kutusu-1.31.1

* arm-linux-gnueabi-gcc

İlgili tüm dosyaları /home/joe/qemu içine koyun

3. Çapraz derleme araçlarını kurun

# sudo apt kurulumu gcc-arm-linux-gnueabi

 

Kurulumun başarılı olup olmadığını kontrol edin

$ arm-linux-gnueabi-gcc -v

Yerleşik incelemeleri kullanma.

COLLECT_GCC=arm-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabi/7/lto-wrapper

Hedef: arm-linux-gnueabi

Şunlarla yapılandırılmıştır: ../src/configure -v –with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04′–with-bugurl=file:///usr

İplik modeli: posix

gcc sürüm 7.5.0(Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)

 

4. Linux çekirdeğini yapılandırın ve derleyin

4.1 Linux Çekirdeğini İndirin

Gerekli çekirdek sürümünü www.kernel.org adresinden indirin.

Burada nispeten en son uzun vadeli desteklenen çekirdek sürümü linux-4.4.157'yi indiriyorum

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.157.tar.xz  /qemu dizinine

4.2 Linux çekirdeğinin sıkıştırmasını açın

# tar xvJf linux-4.4.157.tar.xz

4.3 Linux Çekirdeği Derleme

// Çekirdek kaynak dosya dizinini girin

# cd linux-4.4.157

yap CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig

yap CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm menuconfig

menuconfig'i çalıştırmak ncurses paketinin eksik olduğunu gösteriyorsa, yüklemek için aşağıdaki komutu çalıştırmanız yeterlidir)

$ sudo apt-get install libncurses5-dev

Menü konfigürasyonuna girin ve aşağıdaki ayarları yapın

Çapraz alet zinciriyle derleme

Başarılı bir derlemeden sonra, dizinin altında bir çekirdek görüntü dosyası oluşturun

arch/arm/boot, zImage ve dtb, rahat kullanım için ayrı bir klasöre kopyalanabilir

 

5. QEMU Araçlarını Kurun

5.1 QEMU'yu kurun

* wget https://download.qemu.org/qemu-4.2.0.tar.xz

* tar xvJf qemu-4.2.0.tar.xz

* cd qemu-4.2.0

5.2 QEMU'yu yapılandırmadan önce bağımlı paketleri kurun

# uygun kurulum zlib1g-dev
# uygun kurulum libglib2.0-0 libglib2.0-dev
# uygun kurulum libsdl1.2-dev
# uygun kurulum libpixman-1-dev libfdt-dev

Derlemeden sonra dosyaların dağınık olmasını önlemek için, derleme için ara hedef yolu olarak oluşturucu dizini oluşturun.

QEMU'yu yapılandırın, derleyin ve kurun.

5.3 QEMU'yu kol mimarisi altındaki tüm kartları destekleyecek şekilde yapılandırın

# ../configure –target-list=arm-softmmu –audio-drv-list=

Aşağıdaki istem görüntülendiğinde pixman eksikse,

kurmak için sudo apt-get install libpixman-1-dev kullanın.

5.4 QEMU sürümünü görüntüleyin

5.5 QEMU tarafından desteklenen geliştirme kartlarını görüntüleyin

5.6 QEMU'yu Çalıştır

# qemu-sistem-kol -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append “console=ttyAMA0”

TD:

$pwd

/ev/joe/qemu

# qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-.4.157/arch/arm/boot/zImage -dtb linux-4.4.157/arch/arm/boot/dts/vexpress-v2p-ca9. dtb -nographic - "console=ttyAMA0" ekle

qemu'yu daha iyi test etmek ve başlatmak için start.sh başlangıç ​​komut dosyasını oluşturabilir ve komut dosyasına chmod +x start.sh'yi çalıştırma izni verebilirsiniz.

 

#! / Bin / bash

 

qemu-sistem-kolu \

-M vexpress-a9 \

-m 512M \

-kernel /home/joe/jemu/linux-4.4.157/arch/arm/boot/zImage \

-dtb /home/joe/jemu/linux-4.4.157/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \

-nografik \

- "console=ttyAMA0" ekleyin

 

6. Bir kök dosya sistemi oluşturun

Basit bir kök dosya sistemi oluşturmak için meşgul kutusunu kullanın.

6.1 Meşgul kutusu aracını indirin

https://busybox.net/downloads/ adresinden meşgul kutusunu indirin

# wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2

# tar xjvf meşgul kutusu-1.31.1.tar.bz2

# cd meşgul kutusu-1.31.1

# defconfig yap

# yap CROSS_COMPILE=arm-linux-gnueabi-

# make install CROSS_COMPILE=arm-linux-gnueabi-

Kurulumun başarılı olduğunu gösteren aşağıdaki bilgiler istenir.

Kurulum tamamlandıktan sonra, oluşturulan hedef dosya varsayılan olarak ./_install dizinine geçer.

 

6.2 Kök dosya sistemi oluştur

6.2.1 meşgul kutusunu derleyin ve kurun

#mkdir rootfs

# sudo cp -r _install/* rootfs/

6.2.2 Kök dosya sistemine glibc kitaplığı ekleyin, yükleyici ve dinamik kitaplık ekleyin

# sudo cp -r _install/* rootfs/

# sudo cp -p /usr/arm-linux-gnueabi/lib/* rootfs/lib/

6.2.3 4 tty terminal aygıtı oluşturun (c, karakter aygıtı anlamına gelir, 4 ana aygıt numarasıdır ve 1~4 ikincil aygıt numaralarıdır)

 

6.3 SD kart dosya sistemi görüntüsü yap

6.3.1 Boş bir SD kart görüntüsü oluşturun

# dd if=/dev/zero of=rootfs.ext3 bs=1M sayı=32

6.3.2 SD kartı exts dosya sistemi olarak biçimlendirin

# mkfs.ext3 rootfs.ext3

6.3.3 Kök dosyaları SD karta yazın

# sudo mount -t ext3 rootfs.ext3 /mnt -o döngüsü

# sudo cp -rf rootfs/* /mnt/

# sudo umount /mnt

 

7. Doğrula

7.1 Qemu'yu Başlat

Test etmek için aşağıdaki komutu çalıştırın, derlenmiş çekirdeğin başarıyla çalışıp çalışmadığını kontrol edin

# sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel ~/qemu/zImage –dtb ~/qemu/vexpress-v2p-ca9.dtb -nographic -append “console=ttyAMA0”

Veya Komut Dosyasını kullanarak:

 

Yukarıdaki testte, çekirdek, kök dosya sisteminden yoksun olduğumuzu öne sürerek panik bildirecektir.

Yukarıdaki sorun, x86 ortamında oluşturulan meşgul kutusu aracından kaynaklanmaktadır.

Meşgul kutusunu kurarken make install kullandık, bu yüzden kullanmalısınız

yap ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install

 

Derleme aracı, kol platformu tarafından kullanılan meşgul kutusu aracını oluşturur.

# dosya rootfs/bin/meşgul kutusu

rootfs/bin/busybox: ELF 32-bit LSB yürütülebilir, ARM, EABI5 sürüm 1 (SYSV), dinamik olarak bağlantılı, yorumlayıcı /lib/ld-, GNU/Linux 3.2.0 için, BuildID[sha1]=cbcd33b8d6c946cb19408a5e8e714de554c87f52, strippedcXNUMXfXNUMX,

 

7.2 Tekrar doğrulayın

Şimdi, Qemu Linux çekirdeğini başlattı ve dosya sistemini başarıyla kurdu ve seri terminal aracılığıyla basit işlevlerle sistemle etkileşime girebilir. Yazdırma işleminde /etc/init.d/rcS dosyasını çalıştıramama sorunu, sadece /etc/init.d/rcS dosyasını eklemeniz yeterlidir. Dosyanın içeriği bir bilgi istemi ifadesi olabilir.

 

7.3 QEMU'dan Çık

qemu'dan çıkmanın iki yolu

* Başka bir terminal girişinde: tüm qemu-sistem-kolunu öldür

* Qemu girişinde: Ctrl+ A; X

QEMU: Sonlandırılmış

 

8. Linux çekirdeğini u-boot ile başlatın

Gömülü sistem genellikle şunları içerir: u-boot, kernel, rootfs ve appfs. Aşağıdaki şekilde gösterilen ARM geliştirme panosunda bu parçaların konumsal ilişkisi

 

Önyükleyici Önyükleme Parametreleri çekirdek Kökler Uygulamalar

 

Rootfs, panoda veya PC'de çalışabilir

 

8.1 U-önyüklemeyi hazırlayın

8.1.1 u-boot'u indirin

http://ftp.denx.de/pub/u-boot/, kullandığımız: u-boot-2021.01.tar.bz2

# tar -jxvf u-boot-2018.09.tar.bz2

8.1.2 U-önyüklemeyi derleme

# vim Make dosyası

CROSS_COMPILE = arm-linux-gnueabi-

# vim yapılandırma.mk

ARCH = kol

# vexpress_ca9x4_defconfig yap, hata

İhtiyaç: sudo apt install bizon

sudo apt kurulum esnekliği

sonra: # make -j4 hatası

İhtiyaç: dışa aktar CROSS_COMPILE=arm-linux-gnueabi-

ARCH'yi dışa aktar = kol

tekrar: # vexpress_ca9x4_defconfig yap

# make -j4

 

 8.1.3 Test edin, u-boot'u başlatın

$ sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot-2021.01/u-boot –nographic

 

8.2 Çekirdek yapılandırma derlemesi

Çekirdek görüntüsünü başlatmak için u-boot'u kullanın:

Çekirdeği uImage formatında derlemeniz gerekiyor,

uImage'ın yükleme adresini bellekte belirtmeniz gerekiyor

Çekirdeği derlerken belirtin: LOADADDR=? uResim -j4

 

# cd /home/joe/qemu/linux-4.4.157

# LOADADDR yap=0x60003000 uImage -j4

 

U-boot derlemesi tamamlandıktan sonra, tool klasörü altında bir mkimage dosyası oluşturulacaktır, bu dosyayı cross derleyici dizini altındaki bin klasörüne kopyalayın.

$ cd qemu/linux-4.4.157

Hata:

$ sudo apt u-boot araçlarını kurun

uImage'ı edinin

9. QEMU ağ işlevi ayarları

Qemu sanal makinesi u-boot'ta başladığında, uImage'ın belleğe yüklenmesi gerekir ve uImage, TFTP sunucusu aracılığıyla bellekte belirtilen adrese indirilebilir.

9.1 Ana bilgisayar çekirdeğinin tun/tap modülünü destekleyip desteklemediğini kontrol edin

// Köprülü ağın bağlı olduğu iki aracı kurun

# sudo apt install uml-utilities köprü-utils

Tun cihaz dosyası oluştur: /dev/net/tun (genellikle otomatik olarak oluşturulur)

/etc/network/interfaces'i değiştirin (ağı yapılandırın, etkili olması için yeniden başlatın)

# sudo vim /etc/ağ/arayüzler

auto loiface lo inet loopbackauto enp0s3 // sanal ağın adı cardauto br0iface br0 inet dhcpbridge_ports enp0s3

 

9.2 Yeniden Başlatma

# yeniden başlatma

Ardından Qemu'nun ağ ortamını kontrol edin

Sanal ağ bağlantı noktası br0, Qemu sanal makinesi ile Linux ana bilgisayarı arasındaki iletişim için ağ bağlantı noktasıdır.

 

10. TFTP sunucusunu kurun

Qemu simülasyon geliştirme kartı için uImage'ı başlatırken uImage'ı belleğe indirmek için bir TFTP sunucusu oluşturun

 

10.1 tftp aracını yükleyin

 

$ apt-get kurulumu tftp-hpa tftpd-hpa xinetd

 

10.2 Yapılandırma dosyasını değiştirin ve TFTP sunucu dizinini ayarlayın

# sudo vim /etc/default/tftpd-hpa

......

TFTP_DIRECTORY=”/home/joe/tftpboot”

......

10.3 Linux ana bilgisayarında bir tftp dizini oluşturun

# mkdir /home/joe/tftpboot

# chmod 777 /ev/joe/tftpboot

 

10.4 tftp hizmetini yeniden başlatın

# sudo /etc/init.d/tftpd-hpa yeniden başlatma

 

10.5 u-boot'ta çekirdek başlatma parametrelerini ayarlama

uImage ve cexpress-v2p-ca9.dtb'yi tftpboot'a kopyalayın

Doğrulamak için Qemu'yu başlatın

 

$ sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot-2021.01/u-boot –nographic -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -sd rootfs. ext3

 

Şimdi, rootfs dizini, bir yansıtma dosyasına dönüştürülebilen basit bir kök dosya sistemidir ve yansıtma dosyası, geliştirme panosuna yazılabilir veya Linux çekirdeği, Qemu'da u-boot ile başlatılabilir ve üzerine monte edilebilir. ayna dosyası Ayrıca NFS ağ dosya sistemi aracılığıyla önyüklemeye ayarlanabilir.

 

11. NFS dosya sistemini bağlayın

11.1 NFS hizmetini kurun ve yapılandırın

ASLA Kurma

$ sudo apt nfs-kernel-server'ı kurun

 

11.1.2 Yapılandırma

$ sudo mkdir /home/joe/qemu/rootfs

$ sudo chown kimse: nogroup /home/joe/qemu/rootfs

$ sudo chmod 777 /home/joe/qemu/rootfs

$ sudo nano /etc/export

Ekle: /home/joe/qemu/rootfs *(rw,sync,no_root_squash)

 

nfs sunucusunu yeniden başlatın:

$ sudo /etc/init.d/nfs-kernel-server yeniden başlatma

Veya: $systemctl nfs-kernel-server'ı yeniden başlatın

 

NFS paylaşılan dizininin oluşturulup oluşturulmadığını kontrol edin

$ sudo showmount –e

NFS ağ dosya sistemini kullanırken, Linux ana bilgisayarının sistem güvenlik duvarını kapatması gerekir, aksi takdirde sistem çalışırken anormallikler meydana gelir.

 

Sonuç

Umarım, bu blogun yardımıyla QEMU hakkında daha çok şey biliyorsunuzdur. Yukarıda gösterilen tüm teknikler, programımıza yapılan çeşitli gönderimlerde kullanılmıştır. QEMU ile öykünmenin tek ve sabit bir yolu yoktur. Farklı teknikleri keşfedin ve sizin için neyin işe yaradığını görün. Bilgiye kendinizi alıştırın ve beklenmedik şekillerde size nasıl yardımcı olabileceğine şaşıracaksınız.

Lichee Pi'nin Tanıtımı

Lichee Pi'nin Tanıtımı

LicheePi, son yıllarda popüler olan düşük maliyetli Allwinner V3S platformunda çalışan hassas, tek kartlı bir bilgisayardır. Yeni başlayanlar için Linux öğrenmek veya ürün geliştirme için kullanılabilir. zengin çevre birimleri (LCD, ETH, UART, SPI, I2C, PWM, SDIO…) ve güçlü performans sunar.

 

       

        Liçi Sıfır Liçi Nano

 

 

 

       

                                 Liçi Pi Sıfır Liçi Pi Nano 

 

 

Özellikler

LICHEE PI SIFIR

LICHEE PI NANO

SoC Tüm Kazanan V3S Tüm Kazanan F1C100S
işlemci ARM Cortex-A7 ARM9
Çalışma Frekansı 1.2GHz 408MHz
RAM 64MB DDR2 32MB DDR2
Depolama SPI Flaş/Mikro SD SPI Flaş/Mikro SD

ekran

 

* Evrensel 40P RGB LCD FPC:

* Desteklenen çözünürlükler: 272×480, 480×800,1024×600

* Yerleşik RTP çipi, dokunmatik ekranı destekler

* Evrensel 40P RGB LCD FPC:

* Desteklenen çözünürlükler: 272×480, 480×800,1024×600

* Yerleşik RTP çipi, dokunmatik ekranı destekler

arayüzey

 

*SDIO x2
*SPIx1
*I2Cx2
*UARTx3
* 100M Eter x1 (EPHY dahil)
* OTG USB x1
* MIPI CSI x1
* PWMx2
* LRADCx1
* Hoparlörx2 + Mikrofon x1
*SDIO x1
*SPIx2
* İKİZ x3
*UART x3
* OTG USB x1
* TV çıkışı* PWM x2
* LRADCx1
* Hoparlörx2 + Mikrofon x1

Elektriksel Bilgiler

 

Mikro USB 5V, 2.54mm pinler 3.3V~5V güç kaynağı; 1.27 mm damga deliği güç kaynağı.

1GHz linux BOŞTA çalışma 90~100mA; cpu-yanma çalışması ~180mA

Depolama Sıcaklığı -40~125

Çalışma Sıcaklığı -20~70

Mikro USB 5V, 2.54mm pinler 3.3V~5V güç kaynağı; 1.27 mm damga deliği güç kaynağı.

408MHz linux BOŞTA çalışma 90~54mA; ekran çalışma akımı ile ~250mA

Depolama Sıcaklığı -40~125

Çalışma Sıcaklığı -20~70

 

Linux stres testini çalıştırırken sıcaklık, vücut sıcaklığından sadece biraz daha yüksektir.

 

Lichee Pi, Linux, RT-Tread, Xboot veya işletim sistemi yok gibi birçok işletim sistemini destekler.

Çoğu MCU gibi, Lichee Pi de GPIO, UART, PWM, ADC, I2C, SPI ve daha fazlası gibi birkaç düşük hızlı arayüze bağlanabilir. Ayrıca RGB LCD, EPHY, MIPI CSI, OTG USB ve daha fazlası gibi diğer yüksek hızlı çevre birimlerini çalıştırabilir. Lichee Pi, bir kulaklık veya mikrofona doğrudan bağlantı sağlayan entegre bir codec bileşenine sahiptir.

 

Ekran Konektörü:

Evrensel 40P LCD, ekran ve etkileşim için çok uygun olan bir led arka ışık ve dört telli hatlar, elektrik dirençli dokunmatik ile birlikte gelir. A13 ayrıca dört telli dirençli dokunma işlevini destekler, iki noktalı dokunma algılaması yapabilir.

 

Bu arayüz, arayüz ile uyumludur. DOĞU EKRAN bir üretim ve ürünler geliştirmeye adamıştır.

 

RGB'den VGA'ya:

 

RGB'den HDMI'ya:

 

RGB'den GPIO'ya:

 

RGB'den DVP'ye CSI:

 

Lichee Pi Linki:

http://dl.sipeed.com/
wiki:maixpy.sipeed.com
Blog:blog.sipeed.com
Telgraf grubu: https://t.me/sipeed

Orient Display Gömülü Projesine Giriş

Orient Display Gömülü Projesine Giriş

Orient Display, dünyanın önde gelen ekranlarından biridir LCD ekran üreticileri 1996 yılı aşkın Ar-Ge ve üretim tecrübesine sahip yöneticiler tarafından 25 yılında kurulmuştur. Ekranın yanı sıra, Orient Display ayrıca ARM mimarisini içeren gömülü teknolojilere odaklandı ve gömülü ürünlerde zengin deneyim biriktirdi.

Şimdi Orient Display Teknik Hizmetleri donanım, yazılım ve danışmanlığı içeriyor.

 

nen donanım ekibi tasarım fikir ve gereksinimlerinize göre en kısa sürede prototipler yapın. Kısa bir geliştirme döngüsünde yüksek güvenilirlik gereksinimlerinizi karşılamak için uygun maliyetli veya karmaşık yüksek performanslı bir kart tasarımında uzmanız.

- Şematik dizayn

– PCB Düzeni

– Sanayi Ürün Özelleştirme

 

nen Yazılım ekibi Linux tabanlı konusunda uzmanlaşmış ARM® tasarımlarıPowerPC ve x86 işlemci, birkaç isim. Gömülü sistemlerde Linux, Android ve WinCE için eksiksiz bir çözüm sağlayıcı olarak ürünlerinizin sistemle ilgili sorunlarını uçtan uca çözebiliriz.

– Sistem taşıma, optimizasyon ve uyarlama

– Geliştirmeyi teşvik edin

– Çekirdek Terziliği

– LINUX KERNEL'i ARM, PPC veya x86 Board'a taşıma

– APP geliştirme (uygulama, Linux QT, Linux C/++))

 

nen FAE takım ayrıca ürünleriniz veya yarı bitmiş ürünleriniz için eksiksiz bir teknoloji yelpazesi sunar.

– Ürünlerimizin yazılım ve donanım kaynakları hakkında danışmanlık hizmeti veriyoruz;

– Ürünlerimizin yazılım ve donanım kılavuzlarının kullanımı sırasında karşılaşılan sorunları çözeriz;

– OEM ve ODM satış sonrası teknik destek;

– Veri bakımı ve güncellemesi;

– Orient Display ürünleri tarafımızca desteklenmektedir. En Düşük Fiyat Garantisi.

 

Geliştirme Sırası

 

1. Sistem Gereksinim Analizi

* Tasarım görevleri, hedefler, özellikler

– Müşterilerimiz tarafından sağlanan bu

* İşlevsel ve işlevsel olmayan gereksinim

– Sistem performansı, maliyet, güç tüketimi, hacim, ağırlık ve diğer faktörleri dahil edin

 

2. Mimari Tasarım

İyi bir mimari, tasarımın başarısının anahtarıdır. Bu adımda, genellikle aşağıdakileri yapmak gerekir:

  • Ana çipi seçin:

— ARM Cortex A, R veya M veya PowerPc veya ColdFire

  • RTOS'u belirleyin:

— Linux, uClinux, Vxworks, freeRTOS, WinCE

  • Ekranı Seçin:

- TFT Paneli, Güneş Işığında Okunabilir TFT, LCD Cam Paneller, Grafik LCD,  OLED ekran, dokunmatik Paneller, Gömülü LCD ekran or Özel yapım ekran by Yön Ekranı

  • Programlama dili:

— c/c++, piton, Java

  • Geliştirme araçları:

u-boot, meşgul kutusu, QT, Ubuntu, stm32CubeIde, görsel stüdyo, android stüdyosu, keil uVision, RT-Tread stüdyosu

 

3. Donanım ve Yazılım Ortak Tasarımı

Ürün geliştirme döngüsünü kısaltmak için:

donanım:  Projeye genellikle oryantasyon ekranı gibi değerlendirme kurulundan başlarız. AIY-A002M, AIY-A003M ve AIY-A005M. Daha sonra projeye uyacak şekilde özelleştirilmiş tahta, ihtiyaç duymayan parçaları atın.

Yazılım Geliştirme Sırası:

  • Genellikle u-boot'u Bootloader olarak seçeriz, 1) işlemciyi bilinen duruma başlat 2) belleği başlat 3) kesintiyi başlat 4) saati başlat 5) çekirdeği çalışan adrese yükle
  • Çekirdeği Yapılandırın:

1) çekirdek sistemini yapılandırın: *bellek yönetimi, *dosya sistemleri, *aygıt sürücüsü, *ağ yığını, *I/O Sistemleri

2) G/Ç aygıt sürücüsü *char aygıt sürücüsü, *blok aygıt sürücüsü, *net aygıt sürücüsü yazın

  • Uygulamaları Seçin:

*Bir kullanıcı kitaplığı seçin *Kullanıcı uygulaması oluşturun *Başlatma işlemini yapılandırın *Kök FS'yi oluşturun

 

4. Ssistem Entegrasyonu

Sistemin yazılımını, donanımını ve yürütme aygıtlarını bir araya getirin, birim tasarım sürecinde hataları ayıklayın, bulun ve iyileştirin.

 

5. Sistem Testi

Spesifikasyonda verilen fonksiyonel gereksinimleri karşılayıp karşılamadığını görmek için tasarlanan sistemi test edin. Gömülü sistem geliştirme modelinin en büyük özelliği, kapsamlı yazılım ve donanım geliştirmesidir.

 

Sonuç olarak

Orient Display, konseptten üretime kadar gömülü bir ekran modülü oluşturmak için deneyim ve yeteneklere sahip, yetenekli uzmanlardan oluşan harika bir ekibe sahiptir.

Herhangi bir sorunuz varsa, lütfen şu adresten mühendislerimizle iletişime geçin: tech@orientdisplay.com.

ARM İşlemciler nasıl seçilir

ARM İşlemciler nasıl seçilir

Giriş

en geniş yelpazesi mikroişlemci neredeyse tüm uygulama pazarları için çekirdekler. Keşfetmek ARM. Neredeyse tüm uygulama pazarları, işlemciler için performans, güç ve maliyet gereksinimleri çok önemlidir. Sistem performansı büyük ölçüde donanımına bağlıdır; bu makale, ARM İşlemcisi ile ilgili bir çalışma boyunca size rehberlik edecek ve karar vermenizde çok yardımcı olacaktır.

 

ARM'ye Kısa Bir Giriş

Şekil 1. ARM İşlemcileri Yol Haritası

 

2003'ten önce, ARM7(ARMv4 Mimarisi), ARM9(ARMv5 Mimarisi), ARM11(ARMv6 Mimarisi) dahil olmak üzere klasik ARM İşlemcileri vardır. ARM7'nin MMU'su (bellek yönetim birimi) yoktur, Linux ve WinCE gibi çok kullanıcılı çok işlemli sistemleri çalıştıramaz. Sadece ucOS ve ucLinux gibi MMU'ya ihtiyaç duymayan sistemleri çalıştırabilir. ARM9 ve ARM11, Linux çalıştırabilen MMU'lu gömülü CPU'lardır.

2003 yılından sonra ARMv7 mimarisine gelindiğinde Cortex adını almış ve üç seriye bölünmüştür: Cortex-A, Cortex-R ve Cortex-M.

  • korteks-A — yoğun performans gerektiren sistemler için uygulama işlemci çekirdekleri
  • korteks-R – gerçek zamanlı uygulamalar için yüksek performanslı çekirdekler
  • korteks-M – çok çeşitli gömülü uygulamalar için mikrodenetleyici çekirdekleri

Basitçe söylemek gerekirse, korteks-A serisi, yüksek bilgi işlem gereksinimleri olan, zengin işletim sistemleri çalıştıran ve etkileşimli medya ve grafik deneyimi sağlayan uygulamalar için uygundur. korteks-R güvenilirlik, yüksek kullanılabilirlik, hata toleransı, bakım kolaylığı ve gerçek zamanlı yanıt gerektiren durumlar için uygundur. korteks-M seriler, maliyete ve güce duyarlı MCU'lara ve son uygulamalara yöneliktir.

 

Cortex-A'ya Karşı Cortex-R'ye Karşı Cortex-M

korteks-A

Cortex-A işlemci kategorisi, Linux ve Android cihazlara ayrılmıştır. Akıllı saatler ve tabletlerden başlayarak ağ ekipmanlarıyla devam eden tüm cihazlar Cortex-A işlemciler tarafından desteklenebilir.

  • Cortex-A işlemciler (A5, A7, A8, A9, A12, A15 ve A17) ARMv7-A mimarisine dayanmaktadır
  • A işlemciler için ortak özellikler seti, bir medya işleme motoru (NEON), güvenlik amaçlı bir araç (Trustzone) ve desteklenen çeşitli komut setlerini (ARM, Thumb, DSP vb.)
  • Cortex-A işlemcilerin ana özellikleri, kullanıcılara mümkün olan en iyi hizmeti sunmak için yakından bir araya getirilen en yüksek performans ve mükemmel güç verimliliğidir.

Cortex-A işlemcinin ana özellikleri:

Cortex-A5: Cortex A5, Cortex A serisinin en küçük ve en düşük güçlü üyesidir, ancak yine de çok çekirdekli performans gösterebilir, A9 ve A15 işlemcilerle uyumludur.

Cortex-A7: A7'nin güç tüketimi neredeyse A5 ile aynı, ancak A7'nin sağladığı performans A20'ten %5 daha yüksek ve Cortex-A15 ve Cortex-A17 ile tam mimari uyumlu. Cortex-A7, maliyete duyarlı akıllı telefon ve tablet uygulamaları için ideal bir seçimdir.

Contrex-A15: Cortex-A15, bu serinin en yüksek performanslı üyesidir ve A9'dan iki kat daha fazla performans sağlar. A15, uygulamasını ileri teknoloji cihazlarda, düşük güçlü sunucularda ve kablosuz altyapıda bulur. Bu, veri yönetimi ve sanal ortam çözümleri için ilk işlemci desteğidir.

Contrex-A17: Cortex-A17, A60'dan %9 daha yüksek performans gösterir. Ana amaç, birinci sınıf cihazların ihtiyaçlarını karşılamaktır.

Contrex-A50: En yeni seri olan Contrex-A50, ARMv8 mimarisi üzerine inşa edilmiştir ve Arch64-bit için enerji açısından verimli bir sistem desteğini beraberinde getirir. 64-bit'e geçişin açık bir nedeni, Cortex-A4 ve Cortex-A15'de zaten elde edilen 7 GB'den fazla fiziksel belleğin desteklenmesidir.

 

korteks-R

Cortex-R işlemciler, sabit disk denetleyicileri, ağ ekipmanı medya oynatıcıları ve diğer benzer cihazlar gibi yüksek performanslı gerçek zamanlı uygulamaları hedefler. Ayrıca, hava yastıkları, fren sistemleri ve motor yönetimi gibi otomotiv endüstrisi için de büyük destek sağlar.

Korteks-R4:  Cortex-R4, otomotiv uygulamaları için çok uygundur. 600 MHz'e kadar saat hızına sahip olabilir, çift çıkışlı, ön getirmeli ve düşük gecikmeli kesme sistemine sahip 8 aşamalı bir boru hattına sahiptir ve bu da onu güvenlik açısından kritik sistemler için ideal kılar.

Korteks-R5: Cortex-R5, R4'ün sunduğu özellikleri genişletir ve artan verimlilik, güvenilirlik ekler ve hata yönetimini geliştirir. Çift çekirdekli uygulama, gerçek zamanlı yanıtlarla çok güçlü, esnek sistemler oluşturmayı mümkün kılar.

Korteks-R7: Cortex-R7, performansı önemli ölçüde artırır. 11 aşamalı bir işlem hattına sahiptirler ve hem sıra dışı yürütme hem de üst düzey şube tahmini sağlarlar. Araçlar, adım adım, simetrik ve asimetrik çoklu işleme için uygulanabilir. Genel kesme denetleyicisi, belirtilmesi gereken bir diğer önemli özelliktir.

 

korteks-M

Cortex-M, MCU pazarını hedeflemek için özel olarak tasarlanmıştır. Cortex-M serisi, ARMv7-M mimarisi (Cortex-M3 ve Cortex-M4 için kullanılır) üzerine inşa edilmiştir ve daha küçük Cortex-M0+, ARMv6-M mimarisi üzerine inşa edilmiştir. Pek çok satıcı tarafından sağlanan endüstri standardı bir çekirdek olan 32-bit için 8051 neyse, Cortex-M'nin 8-bit dünyası için haline geldiğini söylemek güvenlidir. Cortex-M serisi, örneğin bir FPGA'da yumuşak bir çekirdek olarak uygulanabilir, ancak bunların entegre bellekler, saatler ve çevre birimleri ile MCU olarak uygulandığını bulmak çok daha yaygındır. Bazıları enerji verimliliği, bazıları yüksek performans için optimize edilmiştir ve bazıları da akıllı ölçüm gibi belirli bir pazar segmentine uyarlanmıştır.

Özellikle maliyete duyarlı veya 8 bitten 32 bit'e geçiş yapan uygulamalar için Cortex-M serisinin en küçük üyesi en iyi seçim olabilir.

Korteks-M0: Cortex-M0+, Thumb-2 komut setini kullanır ve 2 aşamalı bir ardışık düzene sahiptir. Önemli özellikler, tek döngülü GPIO veriyolu ve mikro izleme arabelleğidir.

Korteks-M3&M4:  Cortex-M3 ve Cortex-M4 çok benzer çekirdeklerdir. Her biri 3 aşamalı bir ardışık düzen, birden fazla 32 bit veri yolu, 200 MHz'e kadar saat hızları ve çok verimli hata ayıklama seçenekleri sunar. Önemli fark, Cortex-M4 çekirdeğinin DSP yeteneğidir. Cortex-M3 ve Cortex-M4, aynı mimariyi ve komut setini paylaşır (Thumb-2). Uygulamanız kayan nokta matematiği gerektiriyorsa, bunu Cortex-M4'te Cortex-M3'te yapacağınızdan çok daha hızlı yapacaksınız. Bununla birlikte, Cortex-M4'ün DSP veya FPU özelliklerini kullanmayan bir uygulama için Cortex-M3'te aynı düzeyde performans ve güç tüketimi göreceksiniz. Başka bir deyişle, DSP işlevine ihtiyacınız varsa, bir Cortex-M4 ile gidin. Aksi takdirde Cortex-M3 işi yapacak.

 

Sonuç

Şekil 2. Kortekse genel bakış

 

ARM işlemciler, farklı amaçlar için çeşitli yetenekler sunar. Biraz düşünce ve araştırma ile uygulama ihtiyaçlarınıza uygun doğru işlemciyi bulabileceksiniz. ister üst düzey bir tablet için, ister ultra düşük maliyetli kablosuz sensör düğümü için.

Cortex çekirdeğinin doğru seçimini yapmak ve fikri gerçeğe dönüştürmek bir meydan okumadır. Ancak deneyimli profesyonellerden oluşan bir ekip, tüm sorunlarla ilgilenebilir ve herhangi bir karmaşıklıktaki kavramları uygulayabilir.

Orient Display, uzun yıllardır ARM işlemci ile ilgili teknolojilere odaklanmıştır ve ARM mimarisi ürünlerinin geliştirilmesi ve uygulanması konusunda zengin deneyime sahiptir. Pazarın genel ihtiyaçlarını karşılayan geliştirme platformlarını ve çekirdek kartını sürekli olarak piyasaya sürerken, müşterilerin bireysel proje ihtiyaçlarına da hitap etmektedir. Özelleştirilmiş hizmetler sağlayın.

Donanım ekibimiz, tasarım fikir ve ihtiyaçlarınıza göre en kısa sürede prototip üretebilmektedir. Yazılım ekibimiz, kesme sürücüsü katmanının tüm işlevlerini özelleştirmenize yardımcı olabilir.

Bize ulaşın ve ilk fikirden nihai ürüne kadar planlarınızı yapmanıza yardımcı olacağız.

Raspberry Pi ile Grafik LCD Ekranlar Nasıl Kullanılır?

Grafik LCD'yi Raspberry PI'ye nasıl bağlayabilirim?

Makale şunu gösteriyor: 128×64 nasıl bağlanır grafik LCD ekran a Ahududu Pi.

Kullanılan LCD, ST128 LCD denetleyicili bir 64×7565'tür. Doğrudan Raspberry Pi 3.3V rayından çalıştırılabilir. Veri için 5 GPIO pini gerektirir.

Şematik, CS (Chip Select), RST(Reset) ve A0 (Register Select) herhangi bir 3 GPIO pinine bağlanabilir. Bu örnekte, 8,24 ve 25 varsayılan değerlerdir. ST7565 Python sınıfını somutlaştırırken parametre olarak farklı değerler belirtilebilir. GLCD üzerindeki SCLK (Seri Saat), Pi'nin seri saati olan GPIO 11'e gider. GLCD üzerindeki SID (Seri Giriş Verisi), MOSI olan Pi üzerindeki GPIO 10'a gider. SID ve SCLK için GPIO 10 ve 11 kullanılmalıdır. Vdd, PI üzerindeki bir 3.3V pinine bağlanır ve topraklar da bağlanır.

LCD'nin bir RGB arka ışığı vardır. LED pinleri GPIO'nun 16,20 ve 21'lerine gidebilir. Pi'den rengi kontrol etmek için, ST7565 sınıfını başlatırken RGB pinlerini belirterek. LED arızasını önlemek için akımı sınırlamak için dirençler seri olarak yerleştirilmelidir. Farklı direnç değerleri kullanılarak LED parlaklığı değiştirilebilir. Akımı 20mA civarında ayarlamak en iyisi olacaktır, elbette farklı değerler farklı renk karışımlarına neden olacaktır. Saf beyaz bir rengi karıştırmak çok zordur. Lütfen direnç değerini dikkatlice hesaplayın, 40mA'da, LED parlaklığı zamanla keskin bir şekilde azalacaktır, 60mA'ya yakın akımla, LED bozulabilir ve kalıcı olarak hasar görebilir.

Grafik LCD nasıl programlanır?

Ekran 128 piksel yatay ve 64 piksel dikeydir. LCD 8 yatay sayfaya bölünebilir. 3'ten 0'a ve 7'den 4'e kadar numaralandırılmıştır. Her sayfa 128 sütun ve 8 satır piksel içerir. Pikselleri adreslemek, sayfa ve sütun numarasını belirtmek ve aynı anda 8 dikey pikseli doldurmak için bir bayt göndermek.

Ekranda SPI var (Seri çevre arayüzü) Pi'ye bağlanmak için. SPI, 3 satır MOSI, MISO ve Clock gerektirir. Pi efendi, GLCD ise köledir. Bu örnekte, Sadece GLCD'ye yazılıyor ve hazır değil, bu yüzden MOSI ve Clock hatlarına bağlantı gerekiyor. MOSI, Pi'den GLCD'ye çıkıştır ve Saat, zamanlamayı senkronize eder.

  1. Raspberry Pi'de SPI'yi etkinleştirin ilk
  2. Raspi-config menüsünden Advanced Options'ı ve ardından SPI'yi seçin. Ardından “SPI arayüzünün etkinleştirilmesini istiyorum” için Evet'i seçin. Tamam'a basın, Yeniden Başlatın. “Varsayılan olarak yüklenecek SPI çekirdek modülü” için Evet'i seçin. SPI'yi etkinleştirdikten sonra Pi'yi yeniden başlatın. Ardından Ismod kullanarak SPI'yi test edinPi sürümüne bağlı olarak SPI_bcm2708 veya spi_bcm2835 döndürmelidir. Python SPI kitaplığı, apt-get install ile kurulabilen python2.7 dev gerektirir:
  3. The Python SPI kitaplığı denir py-spidev. git:GLCD kullanılarak kurulabilir Pi için Python kitaplığı GitHub sitesinden indirilebilir.
  4. Ana ST7565 kitaplığı (st7565.py) çizim, metin ve bitmap'leri ve X-GLCD yazı tiplerini yüklemek için bir yazı tipi modülünü (xglcd_font.py) işler. Noktalar, çizgiler, dikdörtgenler, daireler, elipsler ve normal çokgenler oluşturmak için kullanılan temel çizim komutları şunlardır: Daha fazla ayrıntı için lütfen aşağıdaki referansa bakın veya mühendislerimizle iletişime geçin.

STM32CubeIDE kullanarak STM071G32RB Board tabanlı projelere başlama

STM32CubeIDE kullanarak STM071G32RB Board tabanlı projelere başlama

Check out bizim Kontrol Paneli!

32-bit ARM tabanlı bir mikro denetleyiciye başlamak her zaman biraz göz korkutucudur. Çok fazla sayıda kullanılabilir mikrodenetleyici, platform, geliştirme kartı, araç ve yazılım bulunmaktadır. Bu not, bir LED projesine nasıl başlayacağınızı adım adım açıklamaktadır.

Başlarken: Geliştirme Kurulu STM32G071RB hakkında

Özellikler:

  • Çekirdek: Arm® 32-bit Cortex®-M0+ CPU, 64 MHz'e kadar frekans
  • 128 Kbyte'a kadar Flash bellek, 36 Kbyte'a kadar SRAM
  • Esnek haritalamaya sahip 7 kanallı DMA denetleyicisi
  • 12 bit, 0.4 µs ADC (en fazla 16 harici kanal)
  • İki adet 12 bit DAC, düşük güçlü örnekle ve tut
  • İki I2C, Dört USART, bir düşük güçlü UART, iki SPI

 

Başlarken: STM32CubeIDE'yi yükleyin

Sen indirebilirsiniz STM32CubeIDE st.com adresinden. Bedava. Aşağıdaki STM32CubeIDE'yi kurun STM32CubeIDE kurulum kılavuzu.

 

İlk projeniz: LED yanıp sönüyor

Kod yazmaya başlamadan önce bir proje oluşturmamız gerekiyor. Bu, diğer çoğu IDE'ye benzer – projeler, tüm ayarlarınızı, kodlarınızı ve tanımlarınızı, tümü aynı uygulamadan yönetilen tek bir koleksiyonda bir araya getirmek için kullanılır.

 

 

ADIM 1: Yeni bir proje başlatın, Başlamak için sol üstteki simgeden (Veya Dosya > Yeni > STM32 Projesi menüsünün altında).

 

Adım 2: Proje adı: G0_LED, ardından Bitir Düğmesine tıklayın.

LED4'ün STM32G071 tarafından kontrol edildiği ve bağlantı noktasının PA5 olduğu şematik diyagramdan.

Adım 3: Sistem Çekirdeği > SYS'den Seri Kablo'yu seçin, PA5'i GPIO_OUTPUT olarak ayarlayın.

Aşağıdaki gibi LED_GREEN olarak PA5 için kurulum kullanım etiketi:

 

Adım 4: Ardından kod oluşturun.

 

Bu işlevselliğin geliştirildiği CubeIDE, bir Src dizini altında çalışmak için C dosyaları üretir ve bir HAL'ı (Donanım Soyutlama Katmanı) bir Kapsayıcılar dizinine koyar. Görünüşe göre CubeIDE aynı şekilde çalışıyor. Proje görünümünün sağındaki klasörleri genişletin ve sizin için çalışmak için ne oluşturduğunu görün.

 

 

Adım 5: Şimdi biraz da kendi C kodumuzu ekleyelim! Sonsuz Döngü alanından sonra, 3. bölümdeki LED'i değiştirmek için aşağıdaki gibi kod ekleyeceğiz:

 

 

Projenin derlenmesi ve panoya indirilmesi

STM32CubeIDE aslında işimizi derlemeyi ve STM32 çipine almayı oldukça kolaylaştırıyor. İlk adım, derlenmiş .elf'i (kodumuzun ikili versiyonu) üretmektir. .elf'i oluşturmak için bir yapı yapmamız gerekiyor. Bu, araç çubuğundaki oluştur düğmesine basmak kadar kolaydır.

Şimdi, ekranın alt kısmındaki konsolda yapı bilgileri sunulmaktadır.

Şimdi yapmak istediğimiz bu derlenmiş ikiliyi STM32 mikrodenetleyicisine göndermek.

Geliştirme kitini takalım:

Kırmızı güç LED'i (mavi anahtarın solunda) ve daha büyük iletişim LED'i (USB kablosuyla) yanar. STM32CubeIDE içinde, çalıştır düğmesini seçin.

Bu, Çalıştır iletişim kutusunu açacaktır (bunu ilk kez çalıştırdığımız için). Şimdi seçtiğimiz ayarlar, daha sonra yeniden kullanabileceğimiz veya düzenleyebileceğimiz bir çalıştırma konfigürasyonu olarak kaydedilecek.

Basitçe Uygula'ya ve ardından Tamam'a basın ve indirme devam edecektir. Konsol şimdi bazı ilginç metinlerle doldurulacak:

LED her 500 ms'de bir yanar ve kapanır. her şeyi ayarladın.

STM32, Arduino'ya Karşı

STM32, Arduino'ya Karşı

Check out bizim Kontrol Paneli!

 

Arduino

Arduino daha yaratıcı, belirli donanımların çalışmasını zayıflatıyor, işlevleri ve sözdizimi çok basit ve çok “aptal”.

Arduino'nun ana kontrolünün çoğu AVR mikro denetleyicisidir. Arduino'nun avantajı, yazılım geliştirmenin zorluğunu azaltan yüksek kod kapsülleme ve daha az cümleye sahip olmasıdır.

Arduino'yu başlatmak nispeten kolaydır, biraz donanım ve C++ anladığınız sürece geliştirebilirsiniz.

Arduino'nun işlevlerinin çoğu iyi oluşturulmuş kitaplıklara sahiptir, bu nedenle kullanımı çok basittir, ancak biraz daha karmaşık işlevlerin kontrol edilebilirliği zayıftır. 

 

STM32

STM32, mühendislik uygulamalarına daha fazla önem veriyor. Aslında, fabrikada sıcaklık kontrolörleri, sıradan motor kontrolörleri, düşük kaliteli PLC'ler ve bazı sivil oyuncaklar, oyun kontrolörleri, kablolu klavyeler ve fareler ve diğer çevre birimleri vb. Gibi birçok basit araç vardır.

STM32, temel olarak belirli profesyonel bilgi gerektiren profesyonel geliştiriciler için ürünler olarak kullanılır, ancak aynı zamanda işlevleri gerçekleştirmek için kod yazmak nispeten karmaşıktır. Örneğin, seri bağlantı noktası basit bir dize çıktısı verir. Arduino için yeni bir projeden başlayabilir ve 10 satır kod ile gerçekleştirilebilir. Ancak, Keil gibi STM32 geliştirme araçlarını kullanırsanız, yüzlerce satır veya daha fazla kod gerektirebilir.

Açık kaynak açısından: STM32 ile yapılan şeyler açık kaynak isterseniz açık kaynak olabilir, açık kaynak istemiyorsanız hiçbir şey yayınlayamazsınız.

 

Sonuç

 

İşte seçim için bazı öneriler:

Üniversite seviyesinin altında, programlama dilleri konusunda derin bir anlayışa sahip olmayan sıradan bir öğrenciyseniz, Arduino ile başlamanız önerilir. C becerileri zayıfsa ve STM32 ile ortaya çıkarsa, yakında pes etme fikrine sahip olacaksınız.

Sadece istihdam için okuyorsanız, kesinlikle STM32 mikrodenetleyici.

Sadece eğlence için öğreniyorsanız ve elektronikte büyük değilseniz ve kendinize güvenmiyorsanız, Arduino önerilir.

İyi programlama becerileriniz varsa, STM32 önerilir. Bunu yaptıktan sonra Arduino açık kaynak topluluğu tarafından yapılanlara göz atabilir, STM32 ile kolayca halledebilirsiniz.

Tabii ki, eğer yeteneğiniz varsa, her ikisiyle de iletişim kurabilirsiniz. Genel olarak, Arduino'nun temel özelliklerine bir haftadan kısa sürede hakim olabilirsiniz. Gelecekte ihtiyacınız olursa, Arduino kodunu STM32 gibi MCU platformlarına ücretsiz olarak nakledebilirsiniz.

Aslında, ikisi aslında biraz farklı yönlere yöneliktir. Arduino, genel elektronik meraklılarının ve DIY'in tercihidir, STM32 ise gerçek ürünlerin geliştirilmesi ve üretimi için sıklıkla kullanılır.