Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Debugging Mikroprosesor: 1980–2016 – Sejarah Komprehensif

Sejak dawn desain elektronik, bug tidak dapat dihindari, dan debugging telah menjadi disiplin ilmu penting untuk membuahkan kesalahan dan menentukan mana yang akan menang—dan seberapa menyeluruh.

Teknologi debugging telah berkembang sepesat desain yang didukungnya. Dari pendekatan stimulus–response–observe sederhana hingga alat, peralatan, dan metodologi canggih saat ini, bidang ini tumbuh seiring dengan sistem yang semakin kompleks. Pada 2017, era baru dimulai dengan perkenalan debug over functional I/O, yang menjanjikan efisiensi dan kemampuan yang lebih besar.

Setelah dekade inovasi global, saya terlibat dalam debugging sejak 1984. Untuk menghargai pergeseran paradigma yang kita alami sekarang, berguna untuk meninjau tonggak sejarah yang membentuk industri.

1970-an–1980-an
Desain sistem pada saat itu berbeda secara signifikan dari saat ini. Papan biasa terdiri dari CPU, (EP)ROM, RAM, dan IC periferal seperti PIC, UART, DMA controller, timer, dan perangkat I/O, masing-masing diimplementasikan pada chip terpisah.

Debugging Mikroprosesor: 1980–2016 – Sejarah Komprehensif
Papan komputer tunggal (SBC) tahun 1980-an
(Sumber: https://oldcomputers.net/ampro-little-board.html)

Pengembang menulis kode dalam assembly atau C, mengkompilasi, melakukan linking, dan menghasilkan file HEX untuk citra ROM. Proses melibatkan menghapus EPROM secara manual dengan UV eraser, memprogramnya melalui antarmuka serial atau parallel, dan memasang kembali chip pada papan. Jika program tidak berperilaku seperti yang diharapkan, beberapa teknik debugging tersedia.

Code Inspection: Pendekatan paling dasar, yang masih digunakan banyak orang, melibatkan menjalani kode secara mental atau dengan editor teks, keterampilan yang tetap berharga saat alat tidak tersedia atau terlalu mahal.

LEDs: Metode klasik menggunakan LED papan atau indikator lain untuk menyalin status program. Dengan menyisipkan toggle LED pada titik kunci, pengembang dapat secara visual melacak alur eksekusi. Saat pin I/O tambahan dan logic analyzer tersedia, pelacakan status real-time menjadi mungkin.

On-target Monitor: Papan dengan port serial dan memori yang cukup dapat menempatkan program monitor kecil. Dengan melompat ke monitor ini, pengembang dapat menjalani assembly, memeriksa register dan memori melalui perintah RS-232 seperti s (step) atau m 83C4,16 (display memori).

In-Circuit Emulator (ICE): Bagi yang mampu membelinya, ICE adalah debugger terbaik. Digantikan CPU dengan rangkaian emulasi yang dapat mengamati dan mengontrol sinyal internal. Meskipun besar dan mahal—sering kali berdolar ribuan—ICE menyediakan breakpoint lanjutan, trace, dan kemampuan untuk menukar EPROM dengan emulasi RAM, menghilangkan kebutuhan untuk menghapus dan mem-flash ulang selama pengembangan.

Debugging Mikroprosesor: 1980–2016 – Sejarah Komprehensif
Motorola Exorciser ICE
(Sumber: https://www.exorciser.net/personal/exorciser/Original%20Files/exorciser.jpg)
Debugging Mikroprosesor: 1980–2016 – Sejarah Komprehensif
Intel MDS ICE
(Sumber: https://www.computinghistory.org.uk/userdata/images/large/PRODPIC-731.jpg)

1982–1990
Tiga perubahan kunci muncul untuk pengembang embedded:

Akses OCD biasanya menggunakan antarmuka proprietary seperti Background Debug Mode (BDM) atau JTAG yang lebih umum, yang tradisional digunakan untuk uji produksi. Sementara beberapa alat dapat mengakses memori saat CPU berjalan, yang lain tidak dapat, mengakibatkan variasi di seluruh implementasi.

1990–2000
Trace eksternal menjadi tidak praktis karena kecepatan clock tinggi dan cache internal. Sebaliknya, produsen memperkenalkan data trace core terkompresi—menangkap perubahan program counter non-sekuensial saja dan mengompresinya untuk transportasi off-chip. Ini memungkinkan debugger untuk merekonstruksi jalur eksekusi menggunakan pengetahuan tentang program yang berjalan. Arsitektur kunci termasuk PowerPC IBM, ColdFire Motorola, dan inti ARM 7TDMI.

2000–2010
Dataset trace terkompresi memungkinkan buffer trace on-chip seperti Embedded Trace Buffer (ETB) ARM, yang dapat diakses melalui JTAG. Ukuran buffer dapat dikonfigurasi, menyeimbangkan area silikon dengan kinerja trace. SoC multi-core memperkenalkan tantangan baru: rantai scan JTAG hilang saat core mati. Arsitektur CoreSight ARM menyelesaikan ini dengan menyediakan port akses debug JTAC tunggal yang dapat mencapai semua komponen CoreSight yang di-memori, termasuk beberapa core yang dapat power cycle secara independen.

2010–Sekarang
Dengan munculnya core 64-bit dan penggunaan yang luas Linux/Android, debug on-device gaining traksi. Driver kernel sekarang mengekspos komponen CoreSight, memungkinkan capture trace on-target melalui subsistem perf. Embedded Logic Analyzer (ELA) ARM membawa kembali kekayaan ICE awal, menawarkan breakpoint kompleks, trigger, dan akses sinyal internal SoC—semua dalam silikon.

Setelah 40 tahun inovasi tanpa henti, bidang ini berdiri di ambang bab baru: debugging dan tracing melalui functional I/O yang ada. Pergeseran ini menjanjikan solusi yang lebih ringkas yang mengurangi waktu dan biaya pengembangan sambil meningkatkan kemampuan, melanjutkan perang panjang terhadap bug.

Tertanam

  1. Evolusi SPICE: Dari Akar CANCER hingga Simulasi Rangkaian Modern
  2. Dasar-Dasar Pemrograman Mikroprosesor
  3. Komentar C++: Praktik Terbaik untuk Kode yang Mudah Dibaca dan Dipelihara
  4. Cadence Meluncurkan Program Partner Cloud Passport untuk Mempercepat Migrasi Cloud untuk Desain Chip
  5. Memahami Struktur Program C: Panduan untuk Pemula
  6. Makino: Perintis Mesin Milling NC Pertama di Jepang dan Machining Center
  7. Gene Haas: Membangun Warisan CNC dan Kekaisaran Motorsports
  8. Mazak Corporation: Dari Pendirian 1919 hingga Pemimpin Mesin Gerinda Global
  9. Memahami Struktur Program C#: Komponen Inti dan Contoh
  10. Dasar-Dasar Pemrograman CNC: Tutorial Langkah demi Langkah & Contoh Kode