Yazılım araçları: cc2538-bsl, UniFlash ve Python arasında seçim yapmak

Kerem Aydın·9 Temmuz 2026·⏱4 dk

UART ROM Bootloader (BSL) üzerinden yazılım yüklemek için çoğunlukla cc2538-bsl tercih edilir; JTAG/SWD üzerinden yazılım yüklemek, başarısız bir yazılım işleminden sonra kurtarma yapmak ve “toplu silme” (mass erase) gerçekleştirmek için TI UniFlash (GUI veya CLI dslite) kullanılır; bu yardımcı programların üzerine “tek tıklama” modu eklemek için ise Python sarmalayıcıları geliştirilir.

İçindekiler

Aracı nasıl seçersiniz

Şu durumlarda cc2538-bsl seçin:

  • UART erişiminiz varsa (USB‑UART/sanal COM);
  • test ortamında veya sahada hızlıca sil → yaz → doğrula işlemi yapmanız gerekiyorsa;
  • platformlar arası CLI tabanlı yazılım yükleme önemliyse.

Şu durumlarda TI UniFlash seçin:

  • Yazılımı hata ayıklayıcı (JTAG/SWD) üzerinden yüklüyorsanız;
  • günlük kayıtları ve tekrarlanabilirliği olan kararlı bir “resmi” süreç gerekiyorsa;
  • BSL erişilemediğinde kurtarma yapılması gerekiyorsa.

Şu ihtiyaçlarınız varsa Python betikleri seçin:

  • Doğru portu/cihazı otomatik olarak bulmak;
  • “doğru dosya” ve “doğru kart” kontrolünü yapmak;
  • Yazılım yükleme işlemini seri halinde çalıştırmak (test ortamı, üretim, CI).

Yaklaşımların karşılaştırılması (özet)

GörevDaha uygun olanNeden
UART üzerinden ROM BSL ile yazılım yüklemecc2538-bslBasit CLI, hızlı, güncellemeler için kullanışlı
“Başarısız” imajdan sonra kurtarmaUniFlash + JTAG/SWDBSL açılmadığında hata ayıklayıcı genellikle tek çıkış yoludur
Kontrollerle birlikte “tek tuşla” çalıştırmaPython + (cc2538-bsl/UniFlash)Port, sürüm, doğrulama kontrolü ve günlük kaydı

cc2538-bsl: hızlı başlangıç ve komutlar

İlk yazılım yüklemeden önce şunları kontrol edin:

  • UART seviyeleri 3.3V olmalıdır (RX/TX hatlarında 5V olması, dengesiz bağlantının sık görülen nedenidir).
  • Cihaz gerçekten BSL moduna giriyor mu (düğmeler/pinler karta bağlı olarak değişir).
  • Dosya formatı: genellikle .hex (Intel HEX) veya .bin.

Ekip içinde standartlaştırılması gereken temel komut — sil, yaz, doğrula:

python3 cc2538-bsl.py -p PORT -e -w -v firmware.hex

Yalnızca silme işlemi (“temiz” bir yazılım öncesinde faydalıdır):

python3 cc2538-bsl.py -p PORT -e

“BSL’yi kaybetme” riski. Bazı cihazlarda geçerli bir imaj yazıldıktan sonra, önceden planlanmış bir “arka kapı” (backdoor)/giriş koşulu olmadan ROM BSL’ye erişim mümkün olmayabilir. En azından acil durum silme işlemleri için JTAG/SWD erişimini planlayın.

Her zaman -v (doğrulama) seçeneğini etkinleştirin ve çıktı günlüğünü kaydedin. Bu, “yazılım yüklendi ama çalışmıyor” sorunlarının çözümünü büyük ölçünde hızlandırır.

TI UniFlash: ne zaman gerekir ve CLI neler sunar

UniFlash, yazılım yükleme işlemi hata ayıklayıcı üzerinden yapıldığında ve şu ihtiyaçlar olduğunda kullanışlıdır:

  • “Toplu silme” (mass erase) ve başarısız denemelerden sonra kurtarma;
  • Tekrarlanabilir işlemler (tüm ekip için aynı ayarlar);
  • CLI dslite aracılığıyla toplu çalıştırma (manuel GUI yerine).

CLI’nin pratik anlamı:

  • Yapılandırmayı/parametreleri sürecin bir parçası olarak saklayın;
  • Yazılım yükleme işlemini tek bir komutla başlatın;
  • Teknik destek ve üretim için öngörülebilir bir günlük kaydı elde edin.

dslite için belirli anahtarlar aileye, arayüze (JTAG/SWD) ve kullanılan hata ayıklayıcıya bağlı olarak değişir, ancak genel yaklaşım aynıdır: hedefi seç → imajı seç → sil/yaz → doğrula → yeniden başlat.

Python betikleri: manuel adımlar olmadan otomasyon

Tipik güvenilir iş akışı (hemen karşılığını veren minimum düzey):

  1. Cihazı bulun (VID/PID, USB‑UART seri numarası, port adı ile).
  2. Girdileri doğrulayın: yazılım dosyasının ilgili kart/çip/bellek için uygun olup olmadığını kontrol edin.
  3. Cihazı yazılım moduna alın (düğme/pinler veya kart destekliyorsa UART kontrol hatları).
  4. subprocess aracılığıyla cc2538-bsl veya dslite çalıştırın.
  5. Sonucu kontrol edin: çıkış kodu, verify varlığı, mümkünse uygulamadan sürüm/CRC bilgisi.
  6. Günlük kaydını ve meta verileri kaydedin (zaman, port, dosya sürümü, cihaz seri numarası).

En maliyetli hataları önleyen küçük korumalar:

  • “Beyaz liste” cihazları (yanlış COM portuna yazılım yüklememek için);
  • verify işlemi yapılmadıysa yazılım yüklemeyi engelleme;
  • Ürününüz bunları flash bellekte saklıyorsa, önemli alanların/ayaların yedeğini alma.

Sık karşılaşılan hatalar

  • Yanlış port: Yazılım aracı “cihazı görmüyor” veya başka bir yere yazıyor.
  • COM/tty izinleri yok: Porta erişim hatası (özellikle Linux’ta).
  • 5V UART veya zayıf topraklama: Bağlantı var, ancak yazma/doğrulama işlemi başarısız oluyor.
  • Yanlış BSL modu: Yanlış düğme/pin sırası, cihaz önyükleyiciye girmiyor.
  • “Yazılım yüklendi ama başlamıyor”: İmaj kartınız/frekansınız/devre düzeniniz için değil, reset/güç kesip bağlama gerekiyor.
  • Yazılım sonrası BSL erişilemez: Arka kapı/giriş koşulları planlanmamış — silme işlemi için JTAG/SWD gerekiyor.

SSS

Sadece cc2538-bsl ile yetinmek mümkün mü?
Evet, eğer ROM BSL’ye erişimi garantili şekilde koruyorsanız. Pratikte, “kilitlenme” durumunda JTAG/SWD üzerinden kurtarma planına sahip olmak yine de faydalıdır.

Üretim için hangisi daha iyi: UniFlash mı yoksa cc2538-bsl mi?
Hata ayıklayıcı mevcutsa ve günlük kayıtlarıyla birlikte katı tekrarlanabilirlik gerekiyorsa, genellikle UniFlash/dslite tercih edilir. Üretim UART üzerinden yazılım yüklüyorsa ve basitlik önemliyse, kontrollerle birlikte cc2538-bsl + Python betiğiniz kullanılır.

Minimum “güvenli standart” yazılım yükleme süreci nedir?
(1) sil → yaz → doğrula, (2) port seçimi için sabit kural, (3) uygunsuz dosya ile yazılım yüklemeyi engelleme, (4) acil durum kurtarma imkanı (en azından bir test ortamında JTAG/SWD üzerinden).