สรุปความรู้พื้นฐานเกี่ยวกับระบบฝังตัวภาษาการเขียนโปรแกรมเครื่องมือที่มีประสิทธิภาพและเนื้อหาอื่น ๆ
เมื่อเร็ว ๆ นี้ฉันได้ยินเพื่อนพูดอะไรที่ดีมาก:
iPhone เป็นแขนที่ฝังอยู่บน OS และ Cuda สามารถเข้าใจได้ว่าเป็นตัวที่แตกต่างกัน
จากมุมมองนี้คุณจะกลายเป็นวิศวกรฝังตัวที่ยอดเยี่ยมได้อย่างไรโดยการแยกวิทยาศาสตร์คอมพิวเตอร์ออกจากฝังตัวและเพียงแค่เรียกเทคโนโลยีเช่นไมโครคอนโทรลเลอร์, แขน, FPGAs ฯลฯ และเรียนรู้ด้านเทคนิคแคบเท่านั้น?
เอกสารทางเทคนิคและบันทึกการศึกษา:
พื้นฐานระบบฝังตัว:
การเรียนรู้ของเครื่อง:
ภาษาการเขียนโปรแกรม:
การก่อสร้างสิ่งแวดล้อมและเครื่องมือ:
พื้นฐานทางทฤษฎี:
คลังสินค้านี้จะอัปเดตความรู้ที่เกี่ยวข้องกับฟิลด์ฝังตัวเป็นเวลานาน โดยการสรุปและปรับแต่งความรู้ที่คุณมีคุณสามารถเรียนรู้ทักษะที่มีประโยชน์มากขึ้นอย่างต่อเนื่อง
เมื่อเร็ว ๆ นี้ฉันมีมุมมองใหม่เกี่ยวกับการวางตำแหน่งของวิศวกรที่ฝังตัว
บัณฑิตสาขาวิชาอิเล็กทรอนิกส์เริ่มเรียนรู้จากระดับเครื่องจักรเช่นไมโครคอนโทรลเลอร์และหลักการไมโครคอมพิวเตอร์แล้วไปที่ระดับภาษาเช่นภาษา C และ Python จากนั้นเรียนรู้โครงสร้างข้อมูลและอัลกอริทึม เส้นทางนี้ดูดีมากและเหมาะสำหรับการเริ่มต้น แต่มีปัญหาร้ายแรงในเส้นทางนี้
ปัญหาที่พบในงานฝังตัวมักจะครอบคลุมซึ่งหมายความว่าการเริ่มต้นจากระดับภาษาหรือระดับอัลกอริทึมมักจะไม่สามารถแก้ปัญหาได้และบางครั้งก็ต้องลึกลงไปในระดับเครื่อง ดังนั้นคำถามคือมีระดับใดสำหรับระบบฝังตัวทั้งหมดหรือระดับใดสำหรับระบบคอมพิวเตอร์ทั้งหมด? เพื่อให้เข้าใจถึงกรอบระบบความรู้ทั้งหมดและตำแหน่งของคุณคุณต้องมีความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับหลักการองค์ประกอบของคอมพิวเตอร์
หนังสือที่ฉันแนะนำที่นี่คือฉบับที่สามของ "ความเข้าใจเชิงลึกของระบบคอมพิวเตอร์" ที่เขียนโดย Randal E. Bryant และ David R. O'Hallaron หลักสูตรที่สอดคล้องกันที่สามารถพบได้คือหลักสูตร "พื้นฐานของระบบคอมพิวเตอร์" ที่สอนโดยศาสตราจารย์หยวนชุนเฟิงบนแพลตฟอร์ม MOOC ซึ่งช่วยให้เราสร้างความเข้าใจเกี่ยวกับเลเยอร์นามธรรมของระบบคอมพิวเตอร์ทั้งหมดและเพิ่มความสามารถที่ครอบคลุมของเราในการแก้ปัญหาฝังตัว

วิศวกรที่ฝังตัวจะต้องมีความลึกเพียงพอในการสะสมทางเทคนิค
หลังจากการพัฒนาด้านวิศวกรรมเป็นเวลาหลายปีฉันได้ติดต่อกับโปรเซสเซอร์ต่าง ๆ และออกแบบและดำเนินการซีพียู 16 บิตแบบง่าย ๆ ด้วยตัวเอง ฉันค่อยๆตระหนักว่าการใช้ซีพียูบางอย่างไม่ใช่ความรู้ที่สำคัญที่สุด แต่เนื้อหาที่สำคัญกว่าคือหลักการขององค์ประกอบคอมพิวเตอร์และสถาปัตยกรรมคอมพิวเตอร์ (X86 ARM RISC-V) ความเข้าใจอย่างลึกซึ้งเกี่ยวกับความรู้พื้นฐานของคอมพิวเตอร์สามารถช่วยให้เราเข้าใจขนาดเดียวกันเมื่อเรียนรู้ฮาร์ดแวร์คอมพิวเตอร์ใหม่และเราจะไม่พบว่ามันยากเกินไปที่จะเรียนรู้เทคโนโลยีการคำนวณที่แตกต่างกันใหม่เช่น GPU, TPU และ NPU
ภาษาการเขียนโปรแกรมต่าง ๆ เป็นเครื่องมือที่จำเป็นสำหรับวิศวกร แต่ฉันคิดว่าสิ่งที่สำคัญที่สุดไม่ใช่ภาษาการเขียนโปรแกรม แต่แนวคิดการออกแบบภาษาและสถานการณ์ที่ใช้งานได้ มันง่ายมากที่จะเข้าใจสิ่งที่อยู่เบื้องหลังภาษาการเขียนโปรแกรมและเรียนรู้และใช้ภาษาใหม่
ปัญหาเกี่ยวกับระบบการวางตำแหน่งที่รวดเร็วคือความสามารถที่จำเป็นสำหรับวิศวกรที่ฝังตัวทุกคนดังนั้นวิธีการดีบักอย่างมีประสิทธิภาพ? ฉันเคยพูดถึงปัญหานี้กับเพื่อนร่วมงานผู้เชี่ยวชาญที่แท้จริงและเขาพูดว่า: ฉันบอกได้ไหมว่าฉันต้องพึ่งพาการคิดเป็นหลัก? เห็นได้ชัดว่าคำตอบนี้สั้นเกินไป แต่เราต้องยอมรับว่าการดีบักนั้นขึ้นอยู่กับการคิด
เมื่อเร็ว ๆ นี้ฉันอ่านหนังสือที่เรียกว่า "วิธีแก้ปัญหา" ซึ่งทำให้ฉันมีแรงบันดาลใจและทำให้ฉันรู้ว่านี่เป็นปัญหาของการคิด
หากวิศวกรต้องการปรับปรุงความสามารถในการดีบักพวกเขามักจะต้องคิดถึงปัญหานี้: โซลูชันนี้ดูเหมือนจะเป็นไปได้และดูเหมือนจะถูกต้อง แต่พวกเขาจะคิดวิธีแก้ปัญหาดังกล่าวได้อย่างไร การทดลองนี้ดูเหมือนจะเป็นไปได้ซึ่งดูเหมือนจะเป็นความจริง แต่ความจริงข้อนี้ถูกค้นพบอย่างไร? และฉันจะคิดถึงพวกเขาหรือค้นพบตัวเองได้อย่างไร? ในที่ทำงานคุณต้องไม่เพียง แต่พยายามอย่างเต็มที่เพื่อทำความเข้าใจวิธีแก้ปัญหาของข้อบกพร่องต่าง ๆ แต่ยังเข้าใจถึงแรงจูงใจและขั้นตอนของการแก้ปัญหานี้และพยายามอย่างดีที่สุดเพื่ออธิบายแรงจูงใจและขั้นตอนเหล่านี้ให้ผู้อื่น