หน่วย
1. ปัญญาประดิษฐ์เบื้องต้นในวิศวกรรมอิเล็กทรอนิกส์และการสื่อสาร: ขอบเขต การตรวจสอบความถูกต้อง ความรับผิดชอบ และจริยธรรม 2. ปัญญาประดิษฐ์ในการออกแบบวงจรและการสนับสนุนโครงร่าง PCB 3. การประมวลผลสัญญาณ: ตัวกรอง การสุ่มตัวอย่าง และการวิเคราะห์ความถี่ 4. การปรับการสื่อสารแบบดิจิทัลและการกู้คืนข้อผิดพลาด 5. การวิเคราะห์งบประมาณ RF, เสาอากาศและลิงก์ 6. ปัญญาประดิษฐ์ในระบบสมองกลฝังตัวและการพัฒนาเฟิร์มแวร์ 7. โปรโตคอลการสื่อสารและสแต็กเครือข่าย 8. ปัญญาประดิษฐ์ในประสิทธิภาพและการเพิ่มประสิทธิภาพเครือข่าย 9. ปัญญาประดิษฐ์ใน EMC/EMI การทดสอบและการวัดผล 10. ปัญญาประดิษฐ์ในการบำรุงรักษาเชิงคาดการณ์และความสมบูรณ์ของอุปกรณ์ 11. การตรวจสอบมาตรฐานและการวิจัยด้านกฎระเบียบ 12. การวิเคราะห์ข้อมูลสัญญาณและโทรคมนาคมและขอบเขตของ AI ด้วย Python
หน่วย 6 / 12

ปัญญาประดิษฐ์ในระบบสมองกลฝังตัวและการพัฒนาเฟิร์มแวร์

กำไร:

  • ความสามารถในการเร่งความเร็วโครงกระดูกเฟิร์มแวร์ไมโครคอนโทรลเลอร์ ไดรเวอร์ และร่างเครื่องสถานะด้วย AI
  • ความสามารถในการตรวจสอบการขัดจังหวะ เวลา การเฝ้าระวัง และลอจิกพลังงานต่ำด้วยการสนับสนุน AI
  • ความสามารถในการตรวจสอบรหัสเฟิร์มแวร์ที่สร้างโดย AI ผ่านการวิเคราะห์แบบคงที่ การทดสอบฮาร์ดแวร์ และข้อกำหนดด้านความปลอดภัย

ระบบฝังตัวคืออุปกรณ์อิเล็กทรอนิกส์ที่สร้างขึ้นโดยมีไมโครคอนโทรลเลอร์ (คอมพิวเตอร์ขนาดเล็กที่มีโปรเซสเซอร์ หน่วยความจำ และอุปกรณ์ต่อพ่วงอยู่บนชิปตัวเดียว) ซึ่งได้รับการออกแบบมาเพื่อทำงานเฉพาะด้าน เช่น เทอร์โมสตัท โมเด็ม โหนดเซ็นเซอร์ และไดรเวอร์มอเตอร์ เฟิร์มแวร์คือซอฟต์แวร์ที่รันฮาร์ดแวร์ของอุปกรณ์นี้โดยตรง ในหน่วยนี้ คุณจะเห็นวิธีใช้ AI เป็นตัวเร่งความเร็วในการพัฒนาเฟิร์มแวร์ (การเขียนไดรเวอร์ เครื่องสถานะ ลอจิกการขัดจังหวะและกำหนดเวลา การจัดการพลังงานต่ำ) AI มีพลังมากในการเขียนโค้ด แต่ในโลกที่ฝังตัว โค้ดเชื่อมโยงกับฮาร์ดแวร์ เรียลไทม์ และมักมีความปลอดภัย ดังนั้นทุกสายการผลิตที่ AI สร้างขึ้นจะต้องผ่านการวิเคราะห์แบบคงที่ การตรวจสอบการลงทะเบียน/เอกสารข้อมูล และการทดสอบจริงในฮาร์ดแวร์

ตรงไหนเข้มแข็ง ตรงไหนเสี่ยงในเฟิร์มแวร์ AI

AI มีความแข็งแกร่งมากในส่วน "โครงกระดูก" และ "ตาย" ของเฟิร์มแวร์: โครงสร้างของไดรเวอร์ I2C/SPI, เฟรมเวิร์กของเครื่องสถานะ (ตรรกะที่กำหนดสถานะและการเปลี่ยนผ่านของอุปกรณ์), การใช้บัฟเฟอร์วงแหวน, ตัวแยกวิเคราะห์คำสั่ง, โครงกระดูกทดสอบ สามารถอ่านตารางรีจิสเตอร์ในแผ่นข้อมูลที่ซับซ้อนและสร้างโค้ดเริ่มต้นได้ สามารถอธิบายข้อผิดพลาด ตีความคำเตือนของคอมไพเลอร์ได้

สาระสำคัญของระบบสมองกลฝังตัวมีความเสี่ยงในกรณีที่มีความเสี่ยง:

  • ลงทะเบียนที่อยู่และฟิลด์บิต: AI อาจจำแผนที่การลงทะเบียนของชิปผิด แต่ละที่อยู่และบิตต้องได้รับการตรวจสอบจากแผ่นข้อมูล
  • ระยะเวลาและเวลาจริง: การดำเนินการใช้เวลากี่ไมโครวินาที ความถี่ที่เกิดการขัดจังหวะจะขึ้นอยู่กับฮาร์ดแวร์ AI คาดการณ์ คุณวัดได้
  • การเกิดขึ้นพร้อมกัน: หากตัวแปรที่ใช้ร่วมกันระหว่างรูทีนการบริการขัดจังหวะ (ISR) และลูปหลักไม่ได้รับการปกป้องโดยการเข้าถึงแบบระเหยและแบบอะตอมมิก จะเกิดข้อผิดพลาดแบบเงียบๆ ที่ไม่สามารถเกิดซ้ำได้
  • ข้อจำกัดด้านทรัพยากร: สแต็กโอเวอร์โฟลว์ หน่วยความจำรั่ว การหมดเวลาของ Watchdog หมายถึงการหยุดทำงานในระบบฝังตัว

ขัดจังหวะ เวลา และสุนัขเฝ้าบ้าน

การขัดจังหวะคือเมื่อมีเหตุการณ์เกิดขึ้น (ข้อมูลมาถึง ตัวจับเวลาหมดอายุ) โปรเซสเซอร์จะละทิ้งงานหลักและข้ามไปที่รูทีนการบริการ (ISR: Interrupt Service Routine) ISR เป็นโค้ดที่ละเอียดอ่อนที่สุดในระบบสมองกลฝังตัว กฎพื้นฐาน: ISR ควรสั้น (งานยาวเหลืออยู่ที่ลูปหลัก) ไม่ควรมีการดำเนินการบล็อก (รอ พิมพ์) ในนั้น ตัวแปรที่ใช้ร่วมกันควรได้รับการปกป้อง

Watchdog เป็นกลไกความปลอดภัยที่จะรีบูตอุปกรณ์โดยอัตโนมัติหากซอฟต์แวร์ขัดข้อง เฟิร์มแวร์จะ "ฟีด" เป็นประจำ หากไม่เป็นเช่นนั้น ระบบจะถูกรีเซ็ต AI ร่างโครงสร้างเหล่านี้ แต่ต้องตรวจสอบระยะเวลาในการตรวจสอบ ลำดับความสำคัญที่ถูกขัดจังหวะ และงบประมาณการจัดกำหนดการกับโหลดจริงในระบบของคุณ

เคล็ดลับ: เมื่อพิมพ์ ISR ไปยัง AI ให้สั่งอย่างชัดเจนให้ "เก็บ ISR ให้สั้น ไม่มีการบล็อก ทำเครื่องหมายตัวแปรที่แชร์ด้วยการเข้าถึงแบบระเหยและแบบอะตอมมิก มอบหมายงานแบบยาวให้กับลูปหลักด้วยแฟล็ก" จากนั้นตรวจสอบทีละบรรทัดในโค้ดที่สร้างว่ามีการใช้กฎเหล่านี้จริง

พลังงานต่ำและความปลอดภัย

การจัดการพลังงานต่ำเป็นสิ่งสำคัญในอุปกรณ์ที่ใช้พลังงานจากแบตเตอรี่: การทำให้โปรเซสเซอร์เข้าสู่โหมดสลีป การปิดอุปกรณ์ต่อพ่วง การตื่นขึ้นมาพร้อมกับเหตุการณ์สำคัญ AI สเก็ตช์ภาพการเปลี่ยนโหมดสลีปและตรรกะการปลุก แต่การสิ้นเปลืองกระแสไฟตามจริงจะทราบได้โดยการวัดเท่านั้น (มิเตอร์กระแสที่ระดับไมโครแอมแปร์) AI ที่บอกว่า "มันดึง ~2 µA ในโหมดนี้" เป็นการคาดเดา

จากมุมมองด้านความปลอดภัย อุปกรณ์ฝังตัวจะมีการเชื่อมต่อเครือข่ายกันมากขึ้น และช่องโหว่ของเฟิร์มแวร์ (บัฟเฟอร์ล้น อินพุตที่ไม่ได้รับการรับรองความถูกต้อง การเข้ารหัสที่อ่อนแอ อินเทอร์เฟซการแก้ไขจุดบกพร่องแบบเปิด) ถือเป็นความเสี่ยงร้ายแรง AI อาจเตือนคุณถึงหลักการเขียนโค้ดที่ปลอดภัย แต่ความปลอดภัยของโค้ดที่สร้างขึ้นจะได้รับการตรวจสอบโดยเครื่องมือวิเคราะห์แบบคงที่ การตรวจสอบโค้ด และการทดสอบความปลอดภัยเมื่อจำเป็น ในระบบที่มีความสำคัญด้านความปลอดภัย (ทางการแพทย์ ยานยนต์ อุตสาหกรรม) เอาต์พุต AI ไม่ควรแทนที่กระบวนการที่กำหนดโดยการอนุมัติของวิศวกรผู้มีอำนาจและมาตรฐานความปลอดภัยที่เกี่ยวข้อง (เช่น IEC 61508, ISO 26262)

มินิเคสสามอัน

กรณีที่ 1 — ตัวแปรที่ใช้ร่วมกันที่ไม่มีการป้องกัน วิศวกรขอให้ UART รับรหัสจาก AI รหัสเพิ่มตัวนับใน ISR และวงหลักอ่านตัวนับนี้ แต่ตัวนับไม่ระเหยและการอ่านแบบหลายไบต์ไม่ใช่อะตอมมิก อุปกรณ์ทำงานเกือบตลอดเวลา แต่บางครั้งก็อ่านจำนวนข้อมูลผิดและไม่สามารถเกิดข้อผิดพลาดซ้ำได้ การวิเคราะห์แบบคงที่และการตรวจสอบโค้ดพบว่ามีความผันผวน ข้อผิดพลาดจะหายไปเมื่อมีการป้องกันตัวนับ บทเรียน: ข้อผิดพลาดที่เกิดขึ้นพร้อมกันเกิดขึ้นบ่อยครั้งและร้ายกาจในโค้ด AI จำเป็นต้องอ่านและตรวจสอบ

กรณีที่ 2 — บิตรีจิสเตอร์ผิด ผู้ฝึกงานอัปโหลดรหัสเริ่มต้น ADC ที่สร้างโดย AI ADC อ่านค่าที่ไม่คาดคิด เมื่อเปรียบเทียบกับแผ่นข้อมูล ปรากฏว่า AI ได้ตั้งค่าบิตการกำหนดค่าในตำแหน่งที่ไม่ถูกต้อง (แมปสำหรับชิปรุ่นอื่น) เมื่อบิตได้รับการแก้ไขแล้ว ADC จะทำงานได้อย่างถูกต้อง บทเรียน: ตรวจสอบการสะกดการลงทะเบียนแต่ละครั้งกับตัวแปรที่ถูกต้องของแผ่นข้อมูล

กรณีที่ 3 — การใช้งานที่ถูกต้อง วิศวกรถาม AI เกี่ยวกับโครงกระดูกเครื่องจักรของรัฐสำหรับโปรโตคอลเซ็นเซอร์ที่ซับซ้อน อธิบายสถานะ การเปลี่ยนภาพ และการหมดเวลา AI สร้างกรอบงานที่ชัดเจนและอ่านง่าย วิศวกรใช้เฟรมเวิร์กนี้ ตรวจสอบการเข้าถึงรีจิสเตอร์แต่ละครั้งด้วยเอกสารข้อมูล วัดการกำหนดเวลาด้วยออสซิลโลสโคป และทดสอบในฮาร์ดแวร์ การพัฒนาจะเสร็จสิ้นภายในไม่กี่ชั่วโมงแทนที่จะเป็นสองสามวัน บทเรียน: AI เร่งความเร็วโครงกระดูก วิศวกรทำการตรวจสอบ

เทมเพลตพร้อมท์ที่คัดลอกได้

เทมเพลตโครงกระดูกของไดรเวอร์"เขียนโครงร่างของไดรเวอร์ [I2C/SPI/UART] สำหรับ [ชิป/อุปกรณ์ต่อพ่วง]: ฟังก์ชันการเริ่มต้น อ่าน เขียน และจัดการข้อผิดพลาด ปล่อยให้ที่อยู่รีจิสเตอร์และฟิลด์บิตอยู่ใน PLACEHOLDER (เช่น REG_XXX) และจดบันทึก 'เติมและตรวจสอบจากแผ่นข้อมูล' ใช้การหมดเวลาแทนการรอบล็อก ระบุสิ่งที่แต่ละฟังก์ชันสมมติด้วยบรรทัดแสดงความคิดเห็น"

เทมเพลตความปลอดภัย ISR"เขียนแบบร่าง Interrupt Service Routine (ISR) สำหรับเหตุการณ์ต่อไปนี้: [เหตุการณ์] กฎ: ทำให้ ISR สั้น ห้ามบล็อก ทำเครื่องหมายตัวแปรที่แชร์ด้วยการเข้าถึงแบบ vivolatile และแบบอะตอมมิก มอบหมายงานแบบยาวให้กับลูปหลักด้วยแฟล็ก ในตอนท้ายของโค้ด ให้ลงรายการว่ากฎแต่ละข้อนำไปใช้ที่ใด เพื่อให้ฉันสามารถตรวจสอบได้"

เทมเพลตเครื่องสถานะ"เขียนโครงร่างเครื่องสถานะสำหรับโปรโตคอล/กระบวนการต่อไปนี้: [อธิบายสถานะ เหตุการณ์ การเปลี่ยน และการหมดเวลา] ระบุการดำเนินการเข้า/ออกและสาขาข้อผิดพลาด/หมดเวลาสำหรับแต่ละสถานะ ปล่อยให้ค่าเฉพาะของฮาร์ดแวร์ (การลงทะเบียน ระยะเวลา) เป็นตัวยึดตำแหน่ง และโปรดทราบว่าค่าเหล่านี้จำเป็นต้องได้รับการตรวจสอบ"

เทมเพลตการตรวจสอบรหัส "ตรวจสอบโค้ดเฟิร์มแวร์ต่อไปนี้จากมุมมองที่ฝังอยู่และความเสี่ยงในการติดธง: ตัวแปรที่ใช้ร่วมกันที่ไม่มีการป้องกัน (ระเหย/อะตอมมิกซิตี), การดำเนินการแบบยาว/บล็อกใน ISR, ความเสี่ยงของสแต็กล้น, รอโดยไม่มีการหมดเวลา, ข้อผิดพลาดในการลงทะเบียน, ฟีดเฝ้าระวัง แนะนำวิธีที่ฉันควรทดสอบ/ตรวจสอบสำหรับการค้นพบแต่ละครั้ง รหัส: [วาง]"

พรอมต์อ่อน / พรอมต์แข็งแกร่ง

พร้อมท์ที่อ่อนแอ: "เขียนไดรเวอร์ UART ให้ฉัน"

พร้อมท์ที่แข็งแกร่ง: "เขียนเฟรมเวิร์กรับ UART ที่ใช้อินเทอร์รัปต์สำหรับ [ไมโครคอนโทรลเลอร์] ใช้บัฟเฟอร์วงแหวน เก็บ ISR ให้สั้นและเขียนลงในบัฟเฟอร์โดยประมวลผลในลูปหลัก ทำให้ดัชนีที่ใช้ร่วมกันมีความผันผวนและเป็นอะตอมมิก ปล่อยที่อยู่การลงทะเบียนไว้ในตัวยึดตำแหน่ง ทำเครื่องหมายให้ได้รับการยืนยันจากแผ่นข้อมูล ในตอนท้ายของโค้ด ให้ระบุสิ่งที่ฉันต้องทดสอบในแง่ของการทำงานพร้อมกันและเวลา"

พรอมต์ที่อ่อนแอสร้างรหัสที่เป็นฮาร์ดแวร์และคนตาบอดการทำงานพร้อมกัน พรอมต์ที่มีประสิทธิภาพจะกำหนดกฎที่ฝังไว้และพร้อมต์สำหรับรายการการตรวจสอบ

ชั้นการตรวจสอบเฟิร์มแวร์

ชั้น

สิ่งที่จับได้

บทบาทของเอไอ

ตรวจสอบเอกสารข้อมูล

การลงทะเบียน/บิตไม่ถูกต้อง

สร้างตัวยึดตำแหน่งและบันทึกการควบคุม

การวิเคราะห์แบบคงที่ (ลินเตอร์)

ความผันผวน ประเภท ข้อผิดพลาดขอบเขต

รายการกฎและคำอธิบาย

คำเตือนของคอมไพเลอร์

การแปลงโดยนัย มูลค่าที่ไม่ได้ใช้

ความเห็นตักเตือน

การทดสอบในฮาร์ดแวร์

เวลา พฤติกรรมที่แท้จริง

ข้อเสนอแนะสถานการณ์การทดสอบ

ออสซิลโลสโคป/เครื่องวิเคราะห์

ความแม่นยำของสัญญาณและโปรโตคอล

จุดวัดและคลื่นที่คาดหวัง

ข้อควรระวัง: เพียงเพราะว่าเฟิร์มแวร์ "คอมไพล์" และ "ใช้งานได้เกือบตลอดเวลา" ไม่ได้หมายความว่าเฟิร์มแวร์นั้นถูกต้อง ข้อผิดพลาดที่เกิดขึ้นพร้อมกันและกำหนดเวลาเกิดขึ้นภายใต้เงื่อนไขบางประการเท่านั้น นั่นเป็นเหตุผลว่าทำไมการวิเคราะห์แบบคงที่และการทดสอบจริงในฮาร์ดแวร์จึงเป็นสิ่งที่ขาดไม่ได้

ข้อผิดพลาดทั่วไป

  • ไม่ปกป้องตัวแปรที่ใช้ร่วมกัน ข้อมูลระหว่าง ISR และลูปหลักจะต้องมีความผันผวนและเป็นอะตอมมิก
  • ไม่ตรวจสอบที่อยู่/บิตการลงทะเบียนด้วยแผ่นข้อมูล AI อาจแมปตัวแปรที่ไม่ถูกต้อง
  • รักษา ISR ให้ยาวหรือปิดกั้นไว้ภายใน ระบบไม่ตอบสนอง เกิดการขัดจังหวะ
  • สมมติเวลาโดยไม่ต้องวัด เวลาจริงขึ้นอยู่กับฮาร์ดแวร์ ตรวจสอบด้วยออสซิลโลสโคป
  • ทิ้งรหัสความปลอดภัย/ความปลอดภัยที่สำคัญไว้เพื่อการอนุมัติจาก AI วิศวกรที่มีความสามารถและกระบวนการมาตรฐานที่เกี่ยวข้องถือเป็นสิ่งสำคัญ

โดยสรุป

ในหน่วยนี้ คุณใช้ AI เป็นตัวเร่งความเร็วอันทรงพลังในการสร้างโครงกระดูกเฟิร์มแวร์ ไดรเวอร์ เครื่องสถานะ และภาพร่าง ISR แต่ในโลกที่ฝังตัว โค้ดเชื่อมโยงกับฮาร์ดแวร์ เรียลไทม์ และความปลอดภัย: ค่ารีจิสเตอร์/บิตได้รับการตรวจสอบจากแผ่นข้อมูล, ความพร้อมกันได้รับการตรวจสอบจากการวิเคราะห์แบบคงที่, เวลาได้รับการตรวจสอบจากออสซิลโลสโคป, พฤติกรรมได้รับการตรวจสอบจากการทดสอบจริงในฮาร์ดแวร์ AI ส่งโครงกระดูกภายในไม่กี่นาที วิศวกรจะตรวจสอบเฟิร์มแวร์ว่าทำงานอย่างถูกต้อง ปลอดภัย และตรงเวลา ในระบบที่มีความสำคัญด้านความปลอดภัย เอาท์พุต AI ไม่ได้แทนที่กระบวนการของมาตรฐานความปลอดภัยที่เกี่ยวข้องและการอนุมัติของวิศวกรผู้มีความสามารถ

งานสมัคร

เลือกอุปกรณ์ต่อพ่วง (เช่น เซ็นเซอร์ I2C) ด้วยเทมเพลต "โครงกระดูกคนขับ" ให้ถาม AI เกี่ยวกับโครงกระดูกของคนขับที่ทิ้งการลงทะเบียนไว้ในตัวยึดตำแหน่ง จากนั้นสร้างภาพร่าง ISR สำหรับการขัดจังหวะที่พร้อมใช้ข้อมูลจากเซ็นเซอร์นี้ด้วยเทมเพลต "ความปลอดภัย ISR" สุดท้าย สแกนโค้ดที่สร้างขึ้นด้วยเทมเพลต "การตรวจสอบโค้ด" เพื่อดูความเสี่ยงที่ฝังอยู่ และเขียนขั้นตอนการตรวจสอบ/ทดสอบอย่างน้อยสามขั้นตอน

รายการตรวจสอบ

  • [ ] ฉันตรวจสอบที่อยู่และบิตการลงทะเบียนแต่ละรายการจากชุดข้อมูลแผ่นข้อมูลที่ถูกต้อง
  • [ ] ฉันสร้างตัวแปรที่ใช้ร่วมกันระหว่าง ISR และลูปหลักที่มีความผันผวนและอะตอมมิก
  • [ ] ฉันเก็บ ISR ให้สั้น ไม่ได้ทำการบล็อก ส่งมอบงานยาวให้กับลูปหลัก
  • [ ] ฉันวางแผนที่จะทดสอบจังหวะเวลาและพฤติกรรมจริงในฮาร์ดแวร์และออสซิลโลสโคป
  • [ ] ฉันสแกนโค้ดด้วยการวิเคราะห์แบบคงที่และคำเตือนของคอมไพเลอร์
  • [ ] ฉันปล่อยให้ชิ้นส่วนด้านความปลอดภัย/ความปลอดภัยอยู่ภายใต้การอนุมัติของวิศวกรที่มีความสามารถและกระบวนการมาตรฐานที่เกี่ยวข้อง