Pemrograman dalam sistem

Pemrograman dalam sistem, sering kali disebut pemrograman serial dalam sirkuit (ICSP), adalah kemampuan beberapa perangkat logika yang dapat diprogram, mikrokontroler, dan perangkat tertanam lainnya untuk diprogram saat dipasang dalam sistem yang lengkap, daripada memerlukan chip diprogram sebelum menginstalnya ke dalam sistem. Ini juga memungkinkan pembaruan firmware dikirimkan ke memori on-chip mikrokontroler dan prosesor terkait tanpa memerlukan sirkuit pemrograman khusus pada papan sirkuit, dan menyederhanakan pekerjaan desain. Tidak ada standar untuk protokol pemrograman dalam sistem untuk pemrograman perangkat mikrokontroler. Hampir semua produsen mikrokontroler mendukung fitur ini, tetapi semua telah menerapkan protokol mereka sendiri, yang seringkali berbeda bahkan untuk perangkat yang berbeda dari pabrikan yang sama. Secara umum, protokol modern mencoba menjaga jumlah pin yang digunakan tetap rendah, biasanya hingga 2 pin. Beberapa antarmuka ISP berhasil mencapai hal yang sama hanya dengan satu pin, yang lain menggunakan hingga 4 untuk mengimplementasikan antarmuka JTAG. Keuntungan utama dari pemrograman dalam sistem adalah memungkinkan produsen perangkat elektronik untuk mengintegrasikan pemrograman dan pengujian ke dalam satu fase produksi, dan menghemat uang, daripada memerlukan tahap pemrograman terpisah sebelum merakit sistem. Hal ini memungkinkan produsen untuk memprogram chip di jalur produksi sistem mereka sendiri alih-alih membeli chip yang telah diprogram sebelumnya dari produsen atau distributor, sehingga memungkinkan untuk menerapkan perubahan kode atau desain di tengah proses produksi. Keuntungan lainnya adalah produksi selalu dapat menggunakan firmware terbaru, dan fitur baru serta perbaikan bug dapat diimplementasikan dan dimasukkan ke dalam produksi tanpa penundaan yang terjadi saat menggunakan mikrokontroler yang telah diprogram sebelumnya. Mikrokontroler biasanya disolder langsung ke papan sirkuit tercetak dan biasanya tidak memiliki sirkuit atau ruang untuk kabel pemrograman eksternal yang besar ke komputer lain. Biasanya, chip yang mendukung ISP memiliki sirkuit internal untuk menghasilkan tegangan pemrograman yang diperlukan dari tegangan suplai normal sistem, dan berkomunikasi dengan pemrogram melalui protokol serial. Sebagian besar perangkat logika yang dapat diprogram menggunakan varian protokol JTAG untuk ISP, untuk memfasilitasi integrasi yang lebih mudah dengan prosedur pengujian otomatis. Perangkat lain biasanya menggunakan protokol atau protokol berpemilik yang ditentukan oleh standar yang lebih lama. Dalam sistem yang cukup kompleks untuk memerlukan logika lem yang cukup besar, perancang dapat menerapkan subsistem pemrograman yang dikendalikan JTAG untuk perangkat non-JTAG seperti memori flash dan mikrokontroler, yang memungkinkan seluruh pemrograman dan prosedur pengujian diselesaikan di bawah kendali satu protokol.