Keuntungan:
- Keupayaan untuk mempercepatkan rangka perisian tegar mikropengawal, pemacu dan keadaan draf mesin dengan AI
- Keupayaan untuk menyemak gangguan, pemasaan, pengawas dan logik kuasa rendah dengan sokongan AI
- Keupayaan untuk mengesahkan kod perisian tegar yang dijana AI melalui analisis statik, ujian pada perkakasan dan keperluan keselamatan
Sistem terbenam ialah peranti elektronik yang dibina di sekeliling mikropengawal (komputer kecil yang menempatkan pemproses, memori dan persisian pada satu cip) yang direka untuk melakukan kerja tertentu: termostat, modem, nod sensor, pemandu motor. Perisian tegar ialah perisian yang menjalankan perkakasan peranti ini secara langsung. Dalam unit ini, anda akan melihat cara menggunakan AI sebagai pemecut dalam pembangunan perisian tegar (tulisan pemacu, mesin keadaan, logik gangguan dan pemasaan, pengurusan kuasa rendah). AI benar-benar berkuasa dalam pengekodan; Tetapi dalam dunia terbenam, kod saling berkaitan dengan perkakasan, masa nyata dan selalunya keselamatan. Jadi setiap baris yang dihasilkan AI mesti melalui analisis statik, daftar/pemeriksaan helaian data, dan ujian sebenar dalam perkakasan.
Di mana kuat, di mana berisiko dalam perisian tegar AI
AI sangat kuat pada bahagian "rangka" dan "mati" perisian tegar: struktur pemacu I2C/SPI, rangka kerja mesin keadaan (logik yang mentakrifkan keadaan dan peralihan peranti), pelaksanaan penimbal cincin, penghurai arahan, rangka ujian. Ia boleh membaca jadual daftar dalam lembaran data yang kompleks dan menjana kod permulaan. Boleh menerangkan ralat, mentafsir amaran pengkompil.
Di mana ia berisiko adalah intipati sistem terbenam:
- Daftar alamat dan medan bit: AI mungkin tersalah ingat peta daftar cip; Setiap alamat dan bit mesti disahkan daripada lembaran data.
- Masa dan masa nyata: Berapa mikrosaat yang diambil oleh operasi, kekerapan gangguan tiba, bergantung pada perkakasan; AI meramalkan, anda mengukur.
- Concurrency: Jika pembolehubah yang dikongsi antara rutin perkhidmatan gangguan (ISR) dan gelung utama tidak dilindungi oleh akses yang tidak menentu dan atom, ralat senyap dan tidak boleh berulang berlaku.
- Had sumber: Limpahan tindanan, kebocoran memori, tamat masa pengawas bermakna ranap dalam terbenam.
Gangguan, masa dan pengawas
Gangguan ialah apabila peristiwa berlaku (data tiba, pemasa tamat tempoh), pemproses meninggalkan tugas utama dan melompat ke rutin perkhidmatan (ISR: Rutin Perkhidmatan Gangguan). ISR ialah kepingan kod yang paling sensitif dalam sistem terbenam. Peraturan asas: ISR harus pendek (kerja panjang ditinggalkan ke gelung utama), tidak sepatutnya ada operasi menyekat (tunggu, cetak) di dalamnya, pembolehubah yang dikongsi harus dilindungi.
Anjing pemantau ialah mekanisme keselamatan yang mengebut semula peranti secara automatik jika perisian ranap; Firmware "menyuap"nya dengan kerap, jika tidak, sistem ditetapkan semula. AI merangka struktur ini, tetapi tempoh pengawas, keutamaan gangguan dan belanjawan penjadualan perlu disahkan terhadap beban sebenar pada sistem anda.
Petua: Apabila mencetak ISR ke AI, arahkan secara eksplisitnya untuk "memastikan ISR pendek, tiada sekatan, tandakan pembolehubah kongsi dengan akses yang tidak menentu dan atom, wakilkan tugas yang panjang kepada gelung utama dengan bendera." Kemudian semak baris demi baris dalam kod yang dihasilkan bahawa peraturan ini sebenarnya digunakan.
Kuasa rendah dan keselamatan
Pengurusan kuasa rendah adalah penting dalam peranti berkuasa bateri: meletakkan pemproses tidur, mematikan peranti, bangun dengan acara. AI melakar peralihan mod tidur dan logik bangun tidur, tetapi penggunaan semasa sebenar hanya diketahui melalui pengukuran (meter semasa pada tahap mikroampere); AI mengatakan "ia menarik ~2 µA dalam mod ini" adalah tekaan.
Dari perspektif keselamatan, peranti terbenam semakin rangkaian dan kelemahan perisian tegar (limpahan penimbal, input tidak disahkan, kriptografi lemah, antara muka nyahpepijat terbuka) adalah risiko yang serius. AI mungkin mengingatkan anda tentang prinsip pengekodan yang selamat, tetapi keselamatan kod yang dihasilkan disahkan oleh alat analisis statik, semakan kod dan ujian keselamatan apabila perlu. Dalam sistem kritikal keselamatan (perubatan, automotif, perindustrian) output AI tidak boleh menggantikan proses yang diperlukan oleh kelulusan jurutera yang kompeten dan standard keselamatan yang berkaitan (cth. IEC 61508, ISO 26262).
tiga kes mini
Kes 1 — Pembolehubah kongsi tidak dilindungi. Seorang jurutera meminta kod penerimaan UART daripada AI. Kod menambah pembilang dalam ISR dan gelung utama membaca pembilang ini; tetapi kaunter tidak meruap dan bacaan multibait bukan atom. Peranti berfungsi pada kebanyakan masa, tetapi kadangkala ia salah membaca kiraan data dan ralat tidak boleh diulang. Analisis statik dan semakan kod tangkapan hilang tidak menentu; Ralat hilang apabila kaunter dilindungi. Pengajaran: ralat konkurensi adalah kerap dan berbahaya dalam kod AI; Ia adalah perlu untuk membaca dan mengesahkan.
Kes 2 — Bit daftar yang salah. Seorang pelatih memuat naik kod permulaan ADC yang dijana oleh AI; ADC membaca nilai yang tidak dijangka. Membandingkannya dengan lembaran data, nampaknya AI telah menetapkan bit konfigurasi di lokasi yang salah (peta untuk varian cip yang berbeza). Setelah bit diperbetulkan, ADC berfungsi dengan betul. Pelajaran: sahkan setiap ejaan daftar terhadap varian lembaran data yang betul.
Kes 3 — Penggunaan yang betul. Seorang jurutera meminta AI untuk rangka mesin keadaan untuk protokol sensor yang kompleks; menerangkan keadaan, peralihan dan cawangan tamat masa. AI menghasilkan rangka kerja yang bersih dan boleh dibaca. Jurutera mengambil rangka kerja ini, mengesahkan setiap akses daftar dengan lembaran data, mengukur pemasaan dengan osiloskop dan mengujinya dalam perkakasan. Pembangunan selesai dalam beberapa jam dan bukannya beberapa hari. Pengajaran: AI mempercepatkan rangka; Jurutera melakukan pengesahan.
Templat gesaan yang boleh disalin
TEMPLAT RANGKA PEMANDU"Tulis rangka pemacu [I2C/SPI/UART] untuk [cip/periferal]: fungsi pemula, baca, tulis, pengendalian ralat. Biarkan alamat daftar dan medan bit dalam PLACEHOLDER (cth. REG_XXX) dan catatkan 'isi dan sahkan ia daripada lembaran data. Tetapkan fungsi tunggu untuk setiap helaian masa. barisan."
TEMPLAT KESELAMATAN ISR"Tulis draf rutin perkhidmatan gangguan (ISR) untuk acara berikut: [peristiwa]. Peraturan: Pastikan ISR pendek, jangan sekat, tandakan pembolehubah kongsi dengan akses vivolatile dan atom, wakilkan kerja panjang ke gelung utama dengan bendera. Pada penghujung kod, senaraikan tempat setiap peraturan ini terpakai supaya saya boleh mengesahkan."
TEMPLAT MESIN NEGERI"Tulis rangka mesin keadaan untuk protokol/proses berikut: [huraikan keadaan, peristiwa, peralihan dan tamat masa]. Tentukan tindakan masuk/keluar dan ralat/tamat masa untuk setiap keadaan. Biarkan nilai khusus perkakasan (daftar, tempoh) sebagai ruang letak dan ambil perhatian bahawa ia perlu disahkan."
TEMPLAT ULASAN KOD "Periksa kod perisian tegar berikut daripada perspektif terbenam dan tandakan risiko: pembolehubah kongsi yang tidak dilindungi (meruap/keatomisasi), operasi panjang/menyekat dalam ISR, risiko limpahan tindanan, tunggu tanpa tamat masa, ralat daftar, suapan pengawas. Cadangkan cara saya harus menguji/mengesahkan untuk setiap penemuan. Kod: [tampal]."
Gesaan lemah / Gesaan kuat
PROMPT LEMAH: "Tulis saya pemandu UART."
PROMPT KUAT: "Tulis rangka kerja pemacu terima UART berasaskan gangguan untuk [mikropengawal]. Gunakan penimbal cincin; pastikan ISR pendek dan tulis sahaja pada penimbal, pemprosesan dalam gelung utama. Jadikan indeks dikongsi tidak menentu dan atom. Biarkan alamat daftar dalam ruang letak, tandainya untuk disahkan daripada lembaran data. Pada penghujung kod, senaraikan syarat yang saya perlukan untuk masa yang sama."
Gesaan yang lemah menghasilkan kod perkakasan dan buta serentak; Gesaan yang berkuasa mengenakan peraturan dan gesaan terbenam untuk senarai pengesahan.
Lapisan pengesahan perisian tegar
lapisan
apa yang ditangkap
Peranan AI
Semakan lembaran data
Daftar/bit salah
Menghasilkan pemegang tempat dan nota kawalan
Analisis statik (linter)
tidak menentu, jenis, ralat sempadan
Senarai peraturan dan penjelasan
Amaran pengkompil
Penukaran tersirat, nilai yang tidak digunakan
Komen amaran
Pengujian dalam perkakasan
Masa, tingkah laku sebenar
Cadangan senario ujian
Osiloskop/penganalisis
Ketepatan isyarat dan protokol
Titik pengukuran dan gelombang jangkaan
Awas: Hanya kerana perisian tegar "menghimpun" dan "berfungsi pada kebanyakan masa" tidak bermakna ia betul. Ralat konkurensi dan masa hanya berlaku dalam keadaan tertentu; Itulah sebabnya analisis statik dan ujian sebenar dalam perkakasan sangat diperlukan.
Kesilapan biasa
- Tidak melindungi pembolehubah yang dikongsi. Data antara ISR dan gelung utama mestilah tidak menentu dan atom.
- Tidak mengesahkan alamat/bit daftar dengan lembaran data. AI mungkin memetakan varian yang salah.
- Memastikan ISR panjang atau menyekat di dalamnya. Sistem tidak dapat bertindak balas, gangguan terlepas.
- Mengandaikan pemasaan tanpa mengukur. Masa sebenar bergantung pada perkakasan; disahkan dengan osiloskop.
- Meninggalkan kod keselamatan/kritikal keselamatan untuk kelulusan AI. Seorang jurutera yang cekap dan proses standard yang berkaitan adalah penting.
Secara ringkasnya
Dalam unit ini anda menggunakan AI sebagai pemecut yang berkuasa dalam menjana rangka perisian tegar, pemandu, mesin keadaan dan lakaran ISR. Tetapi dalam dunia terbenam, kod saling berkaitan dengan perkakasan, masa nyata dan keselamatan: nilai daftar/bit disahkan daripada lembaran data, konkurensi disahkan daripada analisis statik, pemasaan disahkan daripada osiloskop, tingkah laku disahkan daripada ujian sebenar dalam perkakasan. AI menghantar rangka dalam beberapa minit; Jurutera mengesahkan perisian tegar berfungsi dengan betul, selamat dan tepat pada masanya. Dalam sistem kritikal keselamatan, output AI tidak menggantikan proses standard keselamatan yang berkaitan dan kelulusan jurutera yang kompeten.
Tugasan permohonan
Pilih peranti persisian (cth. sensor I2C). Dengan templat "rangka pemandu", minta AI untuk rangka pemandu yang meninggalkan daftar dalam ruang letak. Kemudian hasilkan lakaran ISR untuk gangguan sedia data daripada sensor ini dengan templat "keselamatan ISR". Akhir sekali, imbas kod yang dihasilkan dengan templat "Semakan kod" untuk risiko terbenam dan tulis sekurang-kurangnya tiga langkah pengesahan/ujian.
senarai semak
- [ ] Saya mengesahkan setiap alamat daftar dan bit daripada varian lembaran data yang betul.
- [ ] Saya membuat pembolehubah yang dikongsi antara ISR dan gelung utama tidak menentu dan atom.
- [ ] Saya menyimpan ISR pendek, tidak meletakkan penyekatan, menyerahkan kerja panjang ke gelung utama.
- [ ] Saya merancang untuk menguji masa dan tingkah laku sebenar dalam perkakasan dan dengan osiloskop.
- [ ] Saya mengimbas kod dengan analisis statik dan amaran pengkompil.
- [ ] Saya menyerahkan bahagian keselamatan/kritikal keselamatan kepada kelulusan jurutera yang cekap dan proses standard yang berkaitan.