Arduino Qualcomm Tarafından Satın Alındı

  • Konuyu başlatan Konuyu başlatan frmman
  • Başlama tarihi Başlama tarihi
Kütüphane olayına oldum olası gıcığım.
Bir led için bile kütüphane yapmak kadar saçma birşeymi war.

Led yaktığınız zannedersinizde arkasında ne dolaplar döndürdüğünü bilmeyebilirsiniz.
Kötü niyetlere karşılık Kütüphaneyi baştan sona analiz edecekseniz de oturun kendiniz yazın.
 
Çoğu ticari uygulamada mevcut kütüphanelerin kullanılması gerekli oluyor, yoksa ürün geliştirme süresi çok uzuyor. Ama üst seviye güvenliğin gerekli olduğu durumlarda, eğer kütüphanenin işlevini %100 anlamıyorsan, büyük risk alıyorsun demektir. Sistem çalışıyor gibi görünür, ama saldırgan, kullandığın kütüphanedeki açıkları kullanarak çok büyük zarara sebep olabilir.

İşe eğitim açısından bakarsak, kütüphanelerle programlamayı öğretmek çok sığ bir öğretme şekli olur. Mesela "Arduino'da pin set etmek için digitalWrite kullanılır" diye öğretirsen öğrenciye, bu çok eksik olur. Önce işlemcinin kendi donanımı ile pinlerin nasıl çalıştığını göstereceksin, pinlerin nasıl yapılandırıldığını göstereceksin, pinleri doğrudan MCU registerleri kullanarak set edeceksin, EN SON olarak da "Aksini gerektirecek bir neden yoksa, digitalWrite ile pinleri set edebilirsiniz" diye öğreteceksin.
 
Eskiden bir kaç çeşit mcu vardı. Ama şimdi çok fazla. Aynı seride olanların bile farklı registerleri bulunmakta.
İlk adımların bu tip IDE'ler ile hatta scratch tipli geliştirme ortamlarıyla başlanmasının bence sakıncası yok. Aynı kod, pin isimleri değiştirilerek bir çok mcu tipi ile kullanılmaktadır.
Zaten gömülü sistem geliştiricisi birinin, kullanacağı mcunun içinden geçmesi gerekli. Basit işlemlerde, testlerde hız açısından herşey kullanılabilir.
 
Çoğu ticari uygulamada mevcut kütüphanelerin kullanılması gerekli oluyor, yoksa ürün geliştirme süresi çok uzuyor. Ama üst seviye güvenliğin gerekli olduğu durumlarda, eğer kütüphanenin işlevini %100 anlamıyorsan, büyük risk alıyorsun demektir. Sistem çalışıyor gibi görünür, ama saldırgan, kullandığın kütüphanedeki açıkları kullanarak çok büyük zarara sebep olabilir.

İşe eğitim açısından bakarsak, kütüphanelerle programlamayı öğretmek çok sığ bir öğretme şekli olur. Mesela "Arduino'da pin set etmek için digitalWrite kullanılır" diye öğretirsen öğrenciye, bu çok eksik olur. Önce işlemcinin kendi donanımı ile pinlerin nasıl çalıştığını göstereceksin, pinlerin nasıl yapılandırıldığını göstereceksin, pinleri doğrudan MCU registerleri kullanarak set edeceksin, EN SON olarak da "Aksini gerektirecek bir neden yoksa, digitalWrite ile pinleri set edebilirsiniz" diye öğreteceksin.
Tünel kazma ihalesi açıyorlar. Almanlar, Amerikan ve bizim Temel ile Dursun ihaleye giriyor. Almanlar bizim gelişmiş kazı makinalarımız var. İki taraftan kazmaya başlar Ortada 2mt hata ile buluşuruz diyor.
Amerikan grubu bizim gelişmiş GPS sistemimiz var. Ortada 1mt hata ile buluşuruz diyor.
Temel'e sıra gelince: "ben bi taraftan kazacam, Dursun bi taraftan kazacak. Ortada buluştuk buluştuk. Olmadı 2 tane tüneliniz olur diyor.
Arduino kütüphaneler de bu şekilde.
GSM kütüphanesi var. Evlere şenlik.
Atd05xxxxxx diye arama komutu var. Aradı aradı, aramazsa hata mı vermiş, şebeke mi yok. Hiçbi kontrol yok.
 
UNO R4 WiFi veya o devasa UNO Q ; yaşanacak debug deneyimi, kilitlenme direnci ve değişken izleme stabilitesi açısından STM32 ile birebir aynı seviyededir.

Hatta şunu söyleyebilirim: UNO Q (STM32U5 tabanlı olan), piyasadaki pek çok standart STM32 kartından (örneğin BluePill) çok daha gelişmiş bir debug motoruna sahiptir.

Akabine; UNO R4 WiFi PCB'de yani tasarımsal donanım altyapısında diyelim zaten, hani şu metal kılıflı küçük bir parça; o bir ESP32-S3-MINI..

Bu arada yanlışta anlaşılmak en büyük ürküntüm ama hani doğruda anlaşılmak en büyük sevincim onadan sakın ha imtina etmeyiniz, bu bağlamda dün 10 tane ESP32-S3 Süper Mini WiFi Bluetooth Board (hani çoğu gibi kısmi değil de tüm portları bir şekilde dışarı veren PCB dizaynlılardan) da aldım, o ayrı bir proje ve irdeleme konusu ve bu Debug olayınıda detaylı ele almak mühim, %90 seviyesinde bir Debug mümkündür esp32-S3 vs de dahi ama hani o kadar ve elbette yazılımsal bir sanalite hani mecbur belli noktalarda yani seviyeyi o noktaya çıkarmak için elbette yukarıda bahsi geçenlerin donanım seviyesindeki ünitelerini tasarımında barındırmaz bu yüzden biraz daha iyileştirilerek üst katmanlarda e işte öoğu işi görür ama öyle 100% hani endsütriel bir şey de o %10 büyük bir handikap olabilir o açıdan o şeylerde elbette hani şapılamaz vs ama hani çokda şey şapabilirde yani işe göre donanım seçme mevzusu o zaten başlı başına bir konu..

Gelelim şu iki irdelemeye...

1 UNO R4 WiFi'de ESP32-S3'ün "Fedakarlığı"

O modül, aslında her ne kadar Debug noktasında asla %90 üstüne çıkamadasa ama bu şekil kullanımda bir hayli sağlam bir koruma kalkanı:

Sen Renesas işlemcisini (ana beyni) HardFault ile patlatsan bile, o yandaki ESP32-S3 hala USB üzerinden bilgisayara "Hadi abi, bak bakalım Renesas nerede hata yapmış, ben hattı açık tutuyorum" der ama misal ESP32-S3 (tek başına) kendini patlattığında USB hattını da beraberinde götürür.

2 UNO R4 WiFi'de yardımcı modül ESP32-S3'ü Debug Edebilir misin?

İşte buda enterasan bir durum: Normal şartlarda hayır. Arduino IDE sadece Renesas'ı görmeni sağlar.
Ancak kartın üzerindeki bazı "jumper"ları (lehim noktalarını) birleştirerek veya özel firmware yükleyerek o içerideki ESP32-S3'ü de debug moduna sokabilirsin.

Ama bu bir beyaz "hacker" seviyesinde old school bir faaliyet olur ve standart kullanımlarda da pek gerekmez.

_______________________________________________

AN54LV-U15 veya AN54LQ-U15 neyse elbette o kadar minik ünitelerde prototip bazında çalışma yaparken mecbur AN54LQ-U15 ama onunda önce bir AN54LQ-DB-15 formunuda mecbur alıyorsun ama esasen iş sonra başlıyor ve mecburen de sağlam kusursuz bir DEBUG için nRF54L15 DK da alıyorsun..


İşin aslı şu gümrük vs yapılanamları öncesi 5+5 10 adet E104-BT5005A (nRF52805) ve E104-BT5010A (nRF52810) vsde almıştım ama sonra dedim Receiver için ideal olan AN54LQ-U15 ve 100% DEBUG olmazsa olmaz..

Eeee, dedim şimdi modül bazlı ilerlersek bir çok noktada belki bu SoC'lara hani yazılım gömer ek bir şey kullanmadan BlueTooth ile: artık hani iyice bahsi uzatmadan, versiyonlar ve protokoller ve katmanlar veya SPP mi BLE mi vs kısımları irdelemeleri hengamelerime vs girmeyelim: dedim esp32-super mini ile ben bunların transmitter işini tek kalemde tek bir verici tipi ile çözeyim bakmayayım bunların alt-yapılarına yani neyse ne hani cihazların iletişim protokolleri usb, serial vs hani üzerinde bir BlueTooth yongası veya MCU'ya gömülü bir Bluetooth donanım yapısı olanalrıda işin içine katarak olmayanları tek bir noktada birleştiren bir ünite olsun hani icabında USB Host'da olabilsin, hani icabında OTG üzerinden de handshake şeylerini kotarsın, hani icabında veriyi yenidende işlesin ve misal BLE formuna encapsulation da hasıl olsun vs vs vs gibi şeyleri de tek kalemde bitirmek isteyince e işte ESP32-Super Mini var mı daha built-ini e yok e ama DEBUG hani en güzel şekilde yapılandırılsa bile %90 olabiliyor eee eyvAllah...

Arduino bitmez neden Akademi noktasındaki background ve topluluk ortaklıkları durumlarından yoksa ben de biterim sen de bitersin o da elbet biter ama O bitmez !

Vardı bir iki daha: arkada 3B Yazıcıda çıktı alırken, oluşan bu nefeslenme fırsatıyla aklımda deli sorular itelemesiyle tarayıcı bazlı sörf eyler iken, önüme düşen ilgili gönderilere göz-atarken, tam da şu an irdelediğim onlarca ana konseptten bir kaçının, artık başına kıçına en az bir yerine temas eden, tam iz düşüm bahislere dair çalakalem, eklemem gereken bir iki nacizane savurma daha ama fena yorgunum akşama artık, keyifli hafta sonları cümleten..

Bu işler böyle elbette mecburen hani MicroChip Atmel'i satın alır ama Qualcomm ise Arduino'yu; işin hakikati evet hani, sırf Arduino UNO "Q" demek için, yani reklam bütçesini gel hadi şuraya harcayalım demek için dahi almış olabilirdi de, ama esasen almasa işler çok daha vahimdi.​


Intel 8051, 1980'lerde Harvard mimarisini mikrokontrolcü dünyasında standart hale getiren efsanedir.
AVR (Arduino'nun kalbi olan seri) ise 1990'larda bu mimariyi alıp modernleştirerek çok daha hızlı hale getiren "yeni nesil" bir tasarımdır.

AVR, 8051'in o dönemki hantallığını çözmek için "her saat vuruşunda bir işlem" mantığıyla geliştirildi.
Yani AVR, 8051'in genlerini taşıyan ama çok daha atletik olan bir torun gibidir.

Yani sen ATMEL 328P ile UNO DIP 8Bit alacaksın ve Arduino UNO Q 32 duruma göre 64Bit support seviyesine geleceksin !!!

------------------------------
1
Bir PC'nin güç düğmesine bastığında, dünyanın en modern işlemcisi bile saniyeler içinde 1978 yılına geri döner.
Bu süreci bir binanın temellerinden gökyüzüne yükselmesi gibi düşünebiliriz:
  • Real Mode (Gerçek Mod): İşlemci ilk açıldığında tıpkı bir 8086 gibi davranır. Sadece 1 MB bellek görebilir ve çok kısıtlıdır. Neden mi? Çünkü anakartın üzerindeki o temel yazılım (BIOS), işlemcinin en eski dilini anlar.
  • Vites Yükseltme: Bilgisayar donanımı kontrol ettikten sonra (POST süreci), yavaş yavaş 32-bit "Protected Mode"a geçer. Artık daha fazla bellek kullanabilir ve güvenlik duvarları örmeye başlar.
  • Modern Dev: En son aşamada, eğer 64-bit bir işletim sistemin varsa, işlemci "Long Mode"a geçer. Artık GB'larca RAM'i görebilen, devasa bir güce dönüşmüştür.
2
Gelelim o meşhur 8051 ve Harvard mimarisine. 8051, Windows çalıştırmak için fazla "sadık" ve "basit" bir işlemcidir. Onu çamaşır makinelerinde veya mikrodalga fırınlarda görmemizin sebepleri şunlardır:

  1. Determinizm (Öngörülebilirlik): Bir çamaşır makinesinde düğmeye bastığında, işlemcinin o an "güncelleme yapıyorum" demesini istemezsin. 8051 gibi mikrodenetleyiciler, yapmaları gereken tek işi (suyu ısıt, kazanı döndür) her zaman aynı hızda ve hatasız yaparlar.
  2. Maliyet ve Enerji: Bir Windows işlemcisi yüzlerce Watt güç tüketirken, 8051 pili bitirmek bilmez. Ayrıca çok ucuzdur; bir çamaşır makinesine 1000 dolarlık işlemci takmak mantıklı olmazdı, değil mi?
  3. Harvard Mimarisi Avantajı: Kod ve verinin yolları ayrı olduğu için, 8051 dışarıdan gelen (sensör verisi gibi) bilgilere anında tepki verebilir. Bu, "gerçek zamanlı" kontrol için kritiktir.

Şimdi benim mutfakta bir 6220 FT Bulaşık makinası var tahmin et onun MCU'su nedir !!!
Şimdi sana 64 Bit işlemciden yazıyorum oda duruma göre Realistik ve aynı zamanda duruma göre Bare Metal aradaki köprüde BARA..

Bu iki işlemci (Qualcomm ve STM32) arasındaki "bara", aslında verilerin aktığı yüksek hızlı bir yoldur.
Linux tarafı (Qualcomm) ağır hesaplamaları yaparken, RTOS tarafı (STM32) milisaniyelik hassasiyetle fiziksel dünyayı kontrol eder.

Bir önceki UNO R4 WiFi ise o da belli sahalarda ki gelişmeleri bir kaldırım taşı gibi döşeme kronolojisi ve zemine yayam açısından müthiştir aslında..

Ama gel gelelim bir başka gerçeğe Raspberry Pi Pico ---- Raspberry Pi 5 16GB..

Arduino oraya oynamalı mı oynamamalı mı !

Eğer oynarsa onu hani kim tutabilir !

Ben biterim Sen bitersin Arduino dahi biter ama O bitmez !!!

Computational Thinking ve STEAM+'yı ele aldığın zaman onun sac ayaklarının biri de Arduino ve bir sonraki yansıması dünya çapında, vesilesi artık Qualomm oldu bu şu o olur du da vs ama yine O, geçmiş 15 sene ve gelecek 15 sene bir bütünsellik içinde gözlemlendiğinde, tüm inkar edilemez katkılarıyla ve her an solunan hakikati ile parıl parıl yansımaya devam edecektir !!!


Kod:
; ATmega328P için LED yakma (Assembly)
.org 0x0000          ; Kodun başlangıç adresi (Reset vektörü)
    jmp start        ; Program başladığında 'start' etiketine git

start:
    sbi 0x04, 5      ; DDRB (Data Direction Register B) adresindeki 5. biti 1 yap.
                     ; Bu, 13. pini ÇIKIŞ (OUTPUT) olarak ayarlar. (Adres 0x04 = DDRB)

loop:
    sbi 0x05, 5      ; PORTB (Port B Data Register) adresindeki 5. biti 1 yap.
                     ; Bu, 13. pine güç verir ve LED YANAR. (Adres 0x05 = PORTB)
    rjmp loop        ; Sonsuz döngü: Sürekli LED'i açık tut.

veya

Kod:
.set PINB,     0x03
.set DDRB,     0x04
.set TCCR0B,   0x25
.set TCNT0,    0x26
.set LED_MASK, 0b00100000
.set PS_1024,  0b00000101

setup:
    ldi r16, PS_1024    ; Set r16 with prescaler 1024 value
    out TCCR0B, r16     ; Set the TCCROB to 1024
    ldi r16, LED_MASK   ; Set r16 to the LED bit
    out DDRB, r16       ; Set LED pin to output
    clr r18             ; Clear the saved timer
loop:
    ldi r20, 61         ; Initialize our software counter
check_timer:
    in r17, TCNT0       ; Read the timer
    cp r17, r18         ; Compare with previous value
    mov r18, r17        ; Save current value
    brsh check_timer    ; unless the timer has decreased, repeat
decrement:
    dec r20             ; decrement the software counter
    brne check_timer    ; if not zero, go back to checking the timer
toggle:
    out PINB, r16       ; toggle the LED
    rjmp loop

Zamanlayıcı taşma kesme bayrağını kullanabilirsek, test şu şekilde olur:
Daha basit ve önceki ve mevcut değerleri saklamamıza gerek yok.
Kaydedilen zamanlayıcı:

check_timer:
    sbis TIFR0, TOV0    ; unless the timer has overflowed
    rjmp check_timer    ; check again for overflow
    sbi TIFR0, TOV0     ; otherwise clear the overflow flag

veya simülasyonu ile



Kod:
#define __SFR_OFFSET 0

#include "avr/io.h"

.global main

main:
  sbi   DDRB, 5     ; Set PB5 as output

blink:
  sbi   PINB, 5     ; Toggle PINB
  ldi   r25, hi8(1000)
  ldi   r24, lo8(1000)
  call  delay_ms
  jmp   blink

delay_ms:
  ; Delay about (r25:r24)*ms. Clobbers r30, and r31.
  ; One millisecond is about 16000 cycles at 16MHz.
  ; The inner loop takes 4 cycles, so we repeat it 3000 times
  ldi   r31, hi8(4000)
  ldi   r30, lo8(4000)
1:
  sbiw    r30, 1
  brne    1b
  sbiw    r24, 1
  brne    delay_ms
  ret
 

Ekler

  • image_c9V5YIEqAP.jpg
    image_c9V5YIEqAP.jpg
    112.4 KB · Görüntüleme: 3
Son düzenleme:
UNO R4 WiFi veya o devasa UNO Q ; yaşanacak debug deneyimi, kilitlenme direnci ve değişken izleme stabilitesi açısından STM32 ile birebir aynı seviyededir.

Hatta şunu söyleyebilirim: UNO Q (STM32U5 tabanlı olan), piyasadaki pek çok standart STM32 kartından (örneğin BluePill) çok daha gelişmiş bir debug motoruna sahiptir.

Akabine; UNO R4 WiFi PCB'de yani tasarımsal donanım altyapısında diyelim zaten, hani şu metal kılıflı küçük bir parça; o bir ESP32-S3-MINI..

Bu arada yanlışta anlaşılmak en büyük ürküntüm ama hani doğruda anlaşılmak en büyük sevincim onadan sakın ha imtina etmeyiniz, bu bağlamda dün 10 tane ESP32-S3 Süper Mini WiFi Bluetooth Board (hani çoğu gibi kısmi değil de tüm portları bir şekilde dışarı veren PCB dizaynlılardan) da aldım, o ayrı bir proje ve irdeleme konusu ve bu Debug olayınıda detaylı ele almak mühim, %90 seviyesinde bir Debug mümkündür esp32-S3 vs de dahi ama hani o kadar ve elbette yazılımsal bir sanalite hani mecbur belli noktalarda yani seviyeyi o noktaya çıkarmak için elbette yukarıda bahsi geçenlerin donanım seviyesindeki ünitelerini tasarımında barındırmaz bu yüzden biraz daha iyileştirilerek üst katmanlarda e işte öoğu işi görür ama öyle 100% hani endsütriel bir şey de o %10 büyük bir handikap olabilir o açıdan o şeylerde elbette hani şapılamaz vs ama hani çokda şey şapabilirde yani işe göre donanım seçme mevzusu o zaten başlı başına bir konu..

Gelelim şu iki irdelemeye...

1 UNO R4 WiFi'de ESP32-S3'ün "Fedakarlığı"

O modül, aslında her ne kadar Debug noktasında asla %90 üstüne çıkamadasa ama bu şekil kullanımda bir hayli sağlam bir koruma kalkanı:

Sen Renesas işlemcisini (ana beyni) HardFault ile patlatsan bile, o yandaki ESP32-S3 hala USB üzerinden bilgisayara "Hadi abi, bak bakalım Renesas nerede hata yapmış, ben hattı açık tutuyorum" der ama misal ESP32-S3 (tek başına) kendini patlattığında USB hattını da beraberinde götürür.

2 UNO R4 WiFi'de yardımcı modül ESP32-S3'ü Debug Edebilir misin?

İşte buda enterasan bir durum: Normal şartlarda hayır. Arduino IDE sadece Renesas'ı görmeni sağlar.
Ancak kartın üzerindeki bazı "jumper"ları (lehim noktalarını) birleştirerek veya özel firmware yükleyerek o içerideki ESP32-S3'ü de debug moduna sokabilirsin.

Ama bu bir beyaz "hacker" seviyesinde old school bir faaliyet olur ve standart kullanımlarda da pek gerekmez.

_______________________________________________

AN54LV-U15 veya AN54LQ-U15 neyse elbette o kadar minik ünitelerde prototip bazında çalışma yaparken mecbur AN54LQ-U15 ama onunda önce bir AN54LQ-DB-15 formunuda mecbur alıyorsun ama esasen iş sonra başlıyor ve mecburen de sağlam kusursuz bir DEBUG için nRF54L15 DK da alıyorsun..


İşin aslı şu gümrük vs yapılanamları öncesi 5+5 10 adet E104-BT5005A (nRF52805) ve E104-BT5010A (nRF52810) vsde almıştım ama sonra dedim Receiver için ideal olan AN54LQ-U15 ve 100% DEBUG olmazsa olmaz..

Eeee, dedim şimdi modül bazlı ilerlersek bir çok noktada belki bu SoC'lara hani yazılım gömer ek bir şey kullanmadan BlueTooth ile: artık hani iyice bahsi uzatmadan, versiyonlar ve protokoller ve katmanlar veya SPP mi BLE mi vs kısımları irdelemeleri hengamelerime vs girmeyelim: dedim esp32-super mini ile ben bunların transmitter işini tek kalemde tek bir verici tipi ile çözeyim bakmayayım bunların alt-yapılarına yani neyse ne hani cihazların iletişim protokolleri usb, serial vs hani üzerinde bir BlueTooth yongası veya MCU'ya gömülü bir Bluetooth donanım yapısı olanalrıda işin içine katarak olmayanları tek bir noktada birleştiren bir ünite olsun hani icabında USB Host'da olabilsin, hani icabında OTG üzerinden de handshake şeylerini kotarsın, hani icabında veriyi yenidende işlesin ve misal BLE formuna encapsulation da hasıl olsun vs vs vs gibi şeyleri de tek kalemde bitirmek isteyince e işte ESP32-Super Mini var mı daha built-ini e yok e ama DEBUG hani en güzel şekilde yapılandırılsa bile %90 olabiliyor eee eyvAllah...

Arduino bitmez neden Akademi noktasındaki background ve topluluk ortaklıkları durumlarından yoksa ben de biterim sen de bitersin o da elbet biter ama O bitmez !

Vardı bir iki daha: arkada 3B Yazıcıda çıktı alırken, oluşan bu nefeslenme fırsatıyla aklımda deli sorular itelemesiyle tarayıcı bazlı sörf eyler iken, önüme düşen ilgili gönderilere göz-atarken, tam da şu an irdelediğim onlarca ana konseptten bir kaçının, artık başına kıçına en az bir yerine temas eden, tam iz düşüm bahislere dair çalakalem, eklemem gereken bir iki nacizane savurma daha ama fena yorgunum akşama artık, keyifli hafta sonları cümleten..

Bu işler böyle elbette mecburen hani MicroChip Atmel'i satın alır ama Qualcomm ise Arduino'yu; işin hakikati evet hani, sırf Arduino UNO "Q" demek için, yani reklam bütçesini gel hadi şuraya harcayalım demek için dahi almış olabilirdi de, ama esasen almasa işler çok daha vahimdi.​


Intel 8051, 1980'lerde Harvard mimarisini mikrokontrolcü dünyasında standart hale getiren efsanedir.
AVR (Arduino'nun kalbi olan seri) ise 1990'larda bu mimariyi alıp modernleştirerek çok daha hızlı hale getiren "yeni nesil" bir tasarımdır.

AVR, 8051'in o dönemki hantallığını çözmek için "her saat vuruşunda bir işlem" mantığıyla geliştirildi.
Yani AVR, 8051'in genlerini taşıyan ama çok daha atletik olan bir torun gibidir.

Yani sen ATMEL 328P ile UNO DIP 8Bit alacaksın ve Arduino UNO Q 32 duruma göre 64Bit support seviyesine geleceksin !!!

------------------------------
1
Bir PC'nin güç düğmesine bastığında, dünyanın en modern işlemcisi bile saniyeler içinde 1978 yılına geri döner.
Bu süreci bir binanın temellerinden gökyüzüne yükselmesi gibi düşünebiliriz:
  • Real Mode (Gerçek Mod): İşlemci ilk açıldığında tıpkı bir 8086 gibi davranır. Sadece 1 MB bellek görebilir ve çok kısıtlıdır. Neden mi? Çünkü anakartın üzerindeki o temel yazılım (BIOS), işlemcinin en eski dilini anlar.
  • Vites Yükseltme: Bilgisayar donanımı kontrol ettikten sonra (POST süreci), yavaş yavaş 32-bit "Protected Mode"a geçer. Artık daha fazla bellek kullanabilir ve güvenlik duvarları örmeye başlar.
  • Modern Dev: En son aşamada, eğer 64-bit bir işletim sistemin varsa, işlemci "Long Mode"a geçer. Artık GB'larca RAM'i görebilen, devasa bir güce dönüşmüştür.
2
Gelelim o meşhur 8051 ve Harvard mimarisine. 8051, Windows çalıştırmak için fazla "sadık" ve "basit" bir işlemcidir. Onu çamaşır makinelerinde veya mikrodalga fırınlarda görmemizin sebepleri şunlardır:

  1. Determinizm (Öngörülebilirlik): Bir çamaşır makinesinde düğmeye bastığında, işlemcinin o an "güncelleme yapıyorum" demesini istemezsin. 8051 gibi mikrodenetleyiciler, yapmaları gereken tek işi (suyu ısıt, kazanı döndür) her zaman aynı hızda ve hatasız yaparlar.
  2. Maliyet ve Enerji: Bir Windows işlemcisi yüzlerce Watt güç tüketirken, 8051 pili bitirmek bilmez. Ayrıca çok ucuzdur; bir çamaşır makinesine 1000 dolarlık işlemci takmak mantıklı olmazdı, değil mi?
  3. Harvard Mimarisi Avantajı: Kod ve verinin yolları ayrı olduğu için, 8051 dışarıdan gelen (sensör verisi gibi) bilgilere anında tepki verebilir. Bu, "gerçek zamanlı" kontrol için kritiktir.

Şimdi benim mutfakta bir 6220 FT Bulaşık makinası var tahmin et onun MCU'su nedir !!!
Şimdi sana 64 Bit işlemciden yazıyorum oda duruma göre Realistik ve aynı zamanda duruma göre Bare Metal aradaki köprüde BARA..

Bu iki işlemci (Qualcomm ve STM32) arasındaki "bara", aslında verilerin aktığı yüksek hızlı bir yoldur.
Linux tarafı (Qualcomm) ağır hesaplamaları yaparken, RTOS tarafı (STM32) milisaniyelik hassasiyetle fiziksel dünyayı kontrol eder.

Bir önceki UNO R4 WiFi ise o da belli sahalarda ki gelişmeleri bir kaldırım taşı gibi döşeme kronolojisi ve zemine yayam açısından müthiştir aslında..

Ama gel gelelim bir başka gerçeğe Raspberry Pi Pico ---- Raspberry Pi 5 16GB..

Arduino oraya oynamalı mı oynamamalı mı !

Eğer oynarsa onu hani kim tutabilir !

Ben biterim Sen bitersin Arduino dahi biter ama O bitmez !!!

Computational Thinking ve STEAM+'yı ele aldığın zaman onun sac ayaklarının biri de Arduino ve bir sonraki yansıması dünya çapında, vesilesi artık Qualomm oldu bu şu o olur du da vs ama yine O, geçmiş 15 sene ve gelecek 15 sene bir bütünsellik içinde gözlemlendiğinde, tüm inkar edilemez katkılarıyla ve her an solunan hakikati ile parıl parıl yansımaya devam edecektir !!!


Kod:
; ATmega328P için LED yakma (Assembly)
.org 0x0000          ; Kodun başlangıç adresi (Reset vektörü)
    jmp start        ; Program başladığında 'start' etiketine git

start:
    sbi 0x04, 5      ; DDRB (Data Direction Register B) adresindeki 5. biti 1 yap.
                     ; Bu, 13. pini ÇIKIŞ (OUTPUT) olarak ayarlar. (Adres 0x04 = DDRB)

loop:
    sbi 0x05, 5      ; PORTB (Port B Data Register) adresindeki 5. biti 1 yap.
                     ; Bu, 13. pine güç verir ve LED YANAR. (Adres 0x05 = PORTB)
    rjmp loop        ; Sonsuz döngü: Sürekli LED'i açık tut.

veya

Kod:
.set PINB,     0x03
.set DDRB,     0x04
.set TCCR0B,   0x25
.set TCNT0,    0x26
.set LED_MASK, 0b00100000
.set PS_1024,  0b00000101

setup:
    ldi r16, PS_1024    ; Set r16 with prescaler 1024 value
    out TCCR0B, r16     ; Set the TCCROB to 1024
    ldi r16, LED_MASK   ; Set r16 to the LED bit
    out DDRB, r16       ; Set LED pin to output
    clr r18             ; Clear the saved timer
loop:
    ldi r20, 61         ; Initialize our software counter
check_timer:
    in r17, TCNT0       ; Read the timer
    cp r17, r18         ; Compare with previous value
    mov r18, r17        ; Save current value
    brsh check_timer    ; unless the timer has decreased, repeat
decrement:
    dec r20             ; decrement the software counter
    brne check_timer    ; if not zero, go back to checking the timer
toggle:
    out PINB, r16       ; toggle the LED
    rjmp loop

Zamanlayıcı taşma kesme bayrağını kullanabilirsek, test şu şekilde olur:
Daha basit ve önceki ve mevcut değerleri saklamamıza gerek yok.
Kaydedilen zamanlayıcı:

check_timer:
    sbis TIFR0, TOV0    ; unless the timer has overflowed
    rjmp check_timer    ; check again for overflow
    sbi TIFR0, TOV0     ; otherwise clear the overflow flag

veya simülasyonu ile



Kod:
#define __SFR_OFFSET 0

#include "avr/io.h"

.global main

main:
  sbi   DDRB, 5     ; Set PB5 as output

blink:
  sbi   PINB, 5     ; Toggle PINB
  ldi   r25, hi8(1000)
  ldi   r24, lo8(1000)
  call  delay_ms
  jmp   blink

delay_ms:
  ; Delay about (r25:r24)*ms. Clobbers r30, and r31.
  ; One millisecond is about 16000 cycles at 16MHz.
  ; The inner loop takes 4 cycles, so we repeat it 3000 times
  ldi   r31, hi8(4000)
  ldi   r30, lo8(4000)
1:
  sbiw    r30, 1
  brne    1b
  sbiw    r24, 1
  brne    delay_ms
  ret
Yapay zeka postları mı atıyorsunuz? Bu çok anlamsız, neden blink kodu var bu postta?

Ama gel gelelim bir başka gerçeğe Raspberry Pi Pico ---- Raspberry Pi 5 16GB..

Arduino oraya oynamalı mı oynamamalı mı !

Eğer oynarsa onu hani kim tutabilir !

Ben biterim Sen bitersin Arduino dahi biter ama O bitmez !!!

Modern kara davut uslubu gibi :) . YZ ajanı diyeceğim de post sonradan bir de düzenlenmiş :emindegil1: .
 
Olaya eğitim açısından bakarsak durum nasıl?

Arduino UNO serisinda hardware oldukça basit. İşlemci de nispeten basit. Sadece datasheet ve reference manual kullanarak, işlemci üzerindeki yazılımın tamamını sıfırdan kendin geliştirebilirsin. Kütüphane kullanmak şart değil. Hem hardware öğrenen hem software öğrenen birisi için bunlar çok iyi özellikler.

ESP geliştirme kartlarında durum nasıl? İşlemcinin çok daha kapsamlı olduğunu biliyorum. Sıfırdan kod yazmak, Atmega328p ye göre oldukça zordur. Hardware de daha karmaşık ise, o zaman şöyle bir durum ortaya çıkıyor: Mevcut ekosistemleri kullanarak hızlıca bir çözüm üretebilirsin, ama bu durumda aslında işlemciyi öğrenmiyorsun, adamların bu işlemci için verdiği BSP yi veya başkalarının hazırladığı kütüphaneleri öğreniyorsun.

Biraz ekstrem bir örnek olacak ama, öğrenciye multimetre vereceğine, SMU veriyorsun ve "bunda multimetredeki özelliklerin hepsi var, fazlası da var" diyorsun. Neticede öğrenci işin temelini öğrenmemiş oluyor.

ESP32 için 3 farklı geliştirme imkanı var:
1- ESP-IDF:
Bu üretici Espressif tarafından sunulan framework. Pek çok geliştire aracı ile C, C++ kullanarak geliştirme yapıyorsunuz. Daha fazla teknik bilgi gerektiriyor, ancak çipin tüm özelliklerine erişim sağlıyor.

2- Arduino Framework:
Arduino framework ile uyumlu kod yaklaşımı, derleyici, yükleme araçları vb içeriyor. Arduino yaklaşımının ESP32 çiplerinde çalışmasını sağlıyor. Özetle Arduino IDE, Visual Studio + Platform IO gibi geliştirme ortamlarıyla Arduino için kod geliştirir gibi kod yazıyorsunuz. Pratikte pek çok Arduino kodunu ve kütüphanesini çok küçük değişikliklerle ESP32 ile çalıştırabilmenizi sağlıyor. Kompleks işlerle uğraşmıyorsanız Arduino kart yerine ESP32 takıp dakikalar içinde kodunuzu burada çalışır hale getirebilir, karta yükleyebiilirsiniz. Fark Arduino Uno yerine Arduino Mega takmak gibi bir şey oluyor neredeyse.
Ama bunun yaında çok çekirdekli kodlama, WiFi, Bluetooth vb özellikler mümkün hale geliyor.

3- uPython:
Ben çok hakim değilim. Önceki mesajlarda bilgi vermiş arkadaşlar.


Bu arada ESP-IDF ve Arduino FW kodlarını aynı projede belli ölçülerde karışık da kullanabiliyorsunuz. Hatta Arduino IDE içinde ESP-IDF çağrıları yapabiliyorsunuz. Çünkü ESP32 Arduino Framework aslında ESP-IDF'in Arduino IDE'de çalışmasını sağlayan bir wrapper (Türkçesini bilmiyorum) şeklinde çalışıyor. Alt tarafta yine ESP-IDF var. Ama delay(), digitalWrite() gibi fonksiyonlar tanımlı. setup(), loop() yönetemi tanımlı.
 

Forum istatistikleri

Konular
9,038
Mesajlar
146,130
Üyeler
3,650
Son üye
klax

Son kaynaklar

Back
Top