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

Riwayat debug mikroprosesor, 1980–2016

Sejak awal desain elektronik, di mana ada desain, ada bug. Tapi di mana mereka memiliki bug, pasti ada debug, terlibat dalam pertandingan gulat epik dengan kesalahan, bug, dan kesalahan untuk menentukan mana yang akan menang — dan seberapa teliti.

Dalam banyak hal, evolusi teknologi debug sama menariknya dengan aspek desain apa pun; tapi jarang mendapat sorotan. Debug telah berevolusi dari pendekatan stimulus-respon-observe sederhana menjadi alat, peralatan, dan metodologi canggih yang dirancang untuk menangani desain yang semakin kompleks. Sekarang, di tahun 2017, kita berada di awal era baru dan menarik dengan diperkenalkannya debug melalui I/O fungsional.

Ini adalah puncak dari kerja keras dan penemuan selama beberapa dekade dari seluruh dunia. Saya telah terlibat dalam debug sejak tahun 1984, jadi untuk benar-benar menghargai perubahan paradigma yang kita alami sekarang dalam debug, ada baiknya untuk melihat kembali inovasi yang telah terjadi selama bertahun-tahun.

1970-an-1980-an
Desain sistem sangat berbeda pada periode ini dibandingkan dengan keadaan saat ini. Sistem tipikal akan terdiri dari CPU, (EP)ROM, RAM, dan beberapa periferal (PIC, UART, DMA, TIMER, IO…), masing-masing diimplementasikan dalam IC-nya sendiri.


Komputer papan tunggal (SBC) 1980-an
(Sumber:http://oldcomputers.net/ampro-little-board.html)

Alur pengembangan yang khas adalah menulis kode Anda dalam ASM atau C dan membuatnya dikompilasi, ditautkan, dan ditempatkan sehingga Anda mendapatkan file HEX untuk gambar ROM. Anda kemudian akan mengeluarkan EEPROM lama dari soket pada papan target, menempatkannya di Penghapus EEPROM UV, dan meledakkannya dengan sinar UV selama 20 menit.


Penghapus EPROM
(Sumber:https://lightweightmiata.com/arcade/area51/area5114.jpg)

Anda kemudian menempatkan EEPROM ke dalam pemrogram EEPROM dan mengunduh file HEX dari komputer Anda (biasanya melalui antarmuka serial atau paralel) untuk memprogramnya.


Pemrogram EPROM
(Sumber:http://www.dataman.com/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/mempro.jpg)

Terakhir, Anda memasang kembali EPROM ke papan target dan menyalakannya untuk melihat apakah program Anda berhasil. Jika program Anda tidak berfungsi seperti yang diharapkan, maka Anda memiliki beberapa opsi yang tersedia untuk men-debug kode Anda sebagai berikut:

Pemeriksaan Kode: Dalam hal ini, Anda akan berjalan melalui kode Anda menatap lama dan keras mencari kesalahan. Teknik ini masih digunakan sampai sekarang oleh mereka yang melihat penggunaan alat debugging apa pun sebagai kegagalan keterampilan pemrograman! Alasan lain Anda melakukan ini adalah jika teknik berikut tidak tersedia untuk Anda karena batasan perangkat keras atau karena biaya.

LED: Teknik ini juga masih digunakan sampai sekarang. Jika Anda memiliki LED, atau indikator lain pada sistem target, Anda dapat menentukan jalur melalui kode Anda dengan memodifikasi kode untuk memberi sinyal keadaan di tempat-tempat penting dalam kode. Anda kemudian dapat melihat LED untuk melihat kemajuan (atau sering kali kurang kemajuan) melalui kode Anda, sehingga membantu Anda menentukan di mana harus memfokuskan perhatian Anda. (Lihat juga Saat hidup gagal menyediakan antarmuka debug, kedipkan LED RGB .) Jika Anda memiliki beberapa IO digital cadangan dan cukup beruntung untuk memiliki akses ke penganalisis logika, Anda dapat secara efektif melacak jalur Anda melalui kode secara real time dengan menelusuri status (lokasi) keluaran oleh program Anda.

Pada monitor target: Untuk papan target yang memiliki port serial (RS232) dan EPROM/RAM gratis yang cukup untuk menyertakan program monitor, Anda dapat menelusuri kode Anda di tingkat perakitan dan menampilkan konten register dan lokasi memori. Program monitor secara efektif merupakan debugger tingkat rendah yang Anda sertakan dalam kode Anda sendiri. Di suatu tempat di program Anda, Anda akan masuk ke program monitor dan mulai men-debug. Port serial digunakan untuk berinteraksi dengan program monitor dan pengguna akan mengeluarkan perintah seperti "s" untuk langkah instruksi dan "m 83C4,16" untuk menampilkan isi dari 16 lokasi memori mulai dari alamat 0x83C4, misalnya. Setelah kode bekerja seperti yang diharapkan, program akhir biasanya akan dibuat tanpa monitor.

Emulator Dalam Sirkuit: Bagi mereka yang mampu membelinya, In-Circuit Emulator (ICE) adalah alat debug terbaik. Dalam beberapa hal, alat ini menyediakan lebih banyak fungsionalitas daripada alat debug canggih yang disediakan pengembang saat ini! ICE akan menggantikan CPU di sistem target dengan elektronik yang meniru CPU. Alat ICE ini berukuran besar (jauh lebih besar dari PC desktop) dan sangat mahal — kita berbicara ribuan dolar. Di era ini, ICE biasanya dirancang oleh produsen CPU atau salah satu perusahaan alat utama saat itu (Tektronix, HP/Agilent, Microtek, dll.) dan akan berisi versi 'bond-out' dari CPU di bawah emulasi. . CPU bond-out benar-benar memiliki sinyal internal ekstra yang dibawa ke pin pada perangkat sehingga emulator dapat mengontrol CPU dan mendapatkan visibilitas ekstra ke dalam operasi internalnya. Emulator dapat melihat operasi yang dilakukan oleh CPU dan akan menyediakan breakpoint kompleks dan fungsionalitas penelusuran yang akan membuat iri banyak pengembang saat ini. Dimungkinkan juga untuk mengganti area memori sesuai target (biasanya EPROM) dengan RAM emulasi yang terdapat dalam ICE. Ini memungkinkan Anda mengunduh kode ke dalam emulasi RAM — tidak perlu lagi menghapus dan menghapus EPROM selama pengembangan — selamat!


Motorola Exorciser ICE
(Sumber:http://www.exorciser.net/personal/exorciser/Original%20Files/exorciser.jpg)

Intel MDS ICE
(Sumber:http://www.computinghistory.org.uk/userdata/images/large/PRODPIC-731.jpg)

1982-1990
Selama tahun 1980-an, tiga perubahan utama berkembang untuk pengembang tertanam. Yang pertama adalah IC yang lebih terintegrasi mulai muncul yang berisi kombinasi CPU, PIC, UART, DMA — semua termasuk dalam satu perangkat. Contohnya adalah Intel 80186/80188, yang merupakan evolusi dari CPU 8086/8088 (PC IBM asli), Zilog Z180, yang merupakan evolusi dari Z80 (Sinclair Spectrum), dan keluarga CPU32 Motorola (mis. 68302), yang merupakan evolusi dari 68000 (Apple Lisa).

Yang kedua adalah ICE menjadi lebih mudah diakses oleh pengembang. Beberapa perusahaan telah mulai memproduksi alat ICE dengan biaya yang jauh lebih rendah daripada sistem produsen CPU. Banyak dari perusahaan ini tidak menggunakan chip bond-out. Meskipun hal ini menyebabkan sedikit penurunan pada fungsionalitas yang tersedia, hal ini secara signifikan berkontribusi pada peningkatan ketersediaan produk ICE berbiaya lebih rendah. ICE untuk 80186 sekarang dapat diambil dengan harga kurang dari $10.000.

Yang ketiga adalah bahwa kecepatan clock CPU yang terus meningkat mulai menimbulkan masalah bagi teknologi ICE. Ini menempatkan tantangan signifikan pada sistem kabel yang digunakan ICE, dan mulai menyebabkan masalah dengan teknologi kontrol emulasi, yang tidak dapat beroperasi pada kecepatan tinggi ini tanpa menjadi sangat mahal (lagi). Produsen CPU juga menjadi lebih enggan untuk membuat versi bond-out dari CPU karena koneksi on-chip ekstra mengganggu operasi chip. Solusi untuk masalah ini adalah untuk membangun sirkuit kontrol debug CPU on-chip. Hal ini memungkinkan satu langkah, akses memori dan register, dan teknologi breakpoint untuk beroperasi pada kecepatan CPU penuh, tetapi saat ini tidak menyediakan pelacakan, yang masih memerlukan akses ke pin antarmuka bus eksternal perangkat.

Jejak ini juga kurang berfungsi karena untuk banyak akses periferal internal, bus eksternal tidak digunakan. Oleh karena itu, hanya akses eksternal yang sepenuhnya terlihat dan akses periferal internal yang gelap. Akses ke teknologi on-chip debug (OCD) baik melalui teknologi antarmuka berpemilik — biasanya disebut sebagai BDM (Mode Debug Latar Belakang) — atau melalui antarmuka JTAG standar, yang lebih tradisional digunakan untuk uji produksi daripada debug. Antarmuka ini memungkinkan perusahaan membuat alat debug berbiaya rendah untuk mengontrol eksekusi CPU tanpa batasan kecepatan clock. Fitur sedikit bervariasi antara implementasi; misalnya, beberapa mengizinkan alat debug untuk mengakses memori saat CPU sedang dieksekusi, sementara yang lain tidak.

1990-2000
Jejak eksternal hampir punah. Peningkatan kecepatan clock CPU, ditambah dengan pengenalan cache CPU internal, membuat pelacakan eksternal sangat tidak berguna. Namun, untuk mendiagnosis cacat program yang lebih kompleks, masih ada persyaratan untuk dapat merekam jalur eksekusi CPU. Tantangannya adalah bagaimana melakukan ini menggunakan logika on-chip (sehingga dapat beroperasi pada kecepatan CPU penuh) tetapi untuk mengangkut data jejak dari chip pada laju jam yang layak menggunakan pin sesedikit mungkin. Solusinya adalah mengubah jalur eksekusi CPU menjadi kumpulan data terkompresi, yang dapat dipindahkan dari chip dan ditangkap oleh alat debug. Alat ini kemudian dapat menggunakan kumpulan data untuk merekonstruksi jalur eksekusi. Disadari bahwa jika alat debug memiliki akses ke program yang dijalankan, kompresi bisa hilang. Misalnya, jika hanya perubahan penghitung program non-sekuensial yang dihasilkan, alat debug dapat "mengisi celah" menggunakan pengetahuan tentang program yang sedang dieksekusi. PowerPC IBM, CPU ColdFire Motorola, core berbasis 7TDMI ARM, dan lainnya semua menerapkan sistem pelacakan berdasarkan konsep ini.

2000-2010
Dengan diperkenalkannya kumpulan data jejak inti terkompresi, menjadi layak untuk memilih antara mengangkut kumpulan data dari chip dan/atau menggunakan buffer jejak dalam-chip yang relatif kecil untuk menyimpan data. Pada awal 2000-an, berbagai vendor berupaya meningkatkan kinerja penelusuran; ARM, misalnya, merancang Buffer Jejak Tertanam (ETB), yang dapat diakses melalui JTAG dan ukurannya dapat dikonfigurasi untuk menyimpan data jejak. Ini memecahkan masalah karena harus menyediakan port trace off-chip berkecepatan relatif tinggi (meskipun masih jauh dari kecepatan clock inti) dengan mengorbankan penggunaan area silikon di SoC.

Pada pertengahan 2000-an, desainer CPU tertanam mulai menerapkan sistem multi-core. Desain menggunakan ARM IP memanfaatkan teknologi JTAG, dengan setiap inti muncul dalam rantai pemindaian JTAG serial. Ini tidak menjadi masalah sampai manajemen daya inti diterapkan, yang mengakibatkan inti kehilangan keberadaannya di rantai pemindaian serial JTAG saat dimatikan. JTAG tidak mendukung perangkat yang muncul dan menghilang dari rantai pemindaian serial, sehingga hal ini menyebabkan komplikasi untuk perkakas debug dan perancang SoC. Untuk mengatasinya, ARM membuat arsitektur debug baru yang disebut CoreSight. Ini memungkinkan satu port akses debug berbasis JTAG (satu perangkat pada rantai pemindaian JTAG) untuk menyediakan akses ke banyak komponen CoreSight yang dipetakan memori, termasuk semua inti ARM dalam sistem. Sekarang, perangkat yang sesuai dengan CoreSight dapat dimatikan tanpa memengaruhi rantai pemindaian JTAG (Anda dapat membaca lebih lanjut tentang teknologi CoreSight di whitepaper baru ini). Teknologi ini masih digunakan di sistem berbasis ARM IP yang lebih modern — dan jauh lebih rumit — yang dirancang saat ini.

2010-
Seiring dengan peningkatan kemampuan prosesor tertanam — terutama dengan munculnya inti 64-bit — menjadi lebih layak untuk mendukung debug perangkat. Sebelumnya, sistem debug tipikal menggunakan alat debug pada workstation bertenaga tinggi yang memanfaatkan koneksi JTAG/BDM ke sistem target untuk mengontrol eksekusi/jejak. Karena Linux/Android digunakan secara luas, kernel ditambah dengan driver perangkat untuk mengakses komponen CoreSight on-chip. Dengan memanfaatkan subsistem kinerja, penangkapan dan analisis jejak sesuai target sekarang dimungkinkan.

Dengan diperkenalkannya ARM Embedded Logic Analyzer (ELA), sekarang dimungkinkan untuk kembali ke masa ICE dan memiliki akses ke breakpoint, pemicu, dan pelacakan on-chip yang kompleks dengan akses ke sinyal SoC internal — sama seperti yang lama chip bond-out yang digunakan pada awal 1980-an.

Saat ini, setelah 40 tahun berinovasi, kami berada di puncak era baru dalam debug, era di mana para insinyur dapat melakukan debug dan melacak melalui I/O fungsional, sehingga menghemat waktu dan uang. Dorongan untuk melakukan debug pada antarmuka perangkat yang ada tidak hanya akan memberikan solusi yang lebih ramping, tetapi juga akan membantu meningkatkan kemampuan debug dan penelusuran ke tingkat berikutnya. Maka dimulailah babak baru dalam sejarah panjang dan menarik kami dalam perang melawan serangga.


Tertanam

  1. Sejarah SPICE
  2. Pemrograman Mikroprosesor
  3. Komentar C++
  4. Cadence mengumumkan Program Mitra Paspor Cloud
  5. C - Struktur Program
  6. Sejarah Makino
  7. Sejarah Haas
  8. Sejarah Mazak
  9. C# - Struktur Program
  10. Dasar-Dasar Pemrograman CNC – Tutorial dengan Contoh Kode Program