ฉันทำทั้งสองอย่างดังนั้นนี่คือมุมมองของฉัน
ฉันคิดว่าทักษะที่สำคัญที่สุดในการฝังตัวคือความสามารถในการดีบักของคุณ ความคิดที่ต้องการนั้นแตกต่างกันมากซึ่งอาจผิดพลาดได้และคุณต้องเปิดกว้างในการพิจารณาวิธีต่าง ๆ ทั้งหมดที่คุณพยายามทำผิดไป
นี่คือปัญหาที่ใหญ่ที่สุดเดียวสำหรับนักพัฒนาที่ฝังตัวใหม่ คนที่ใช้พีซีมักจะเข้มงวดกว่าเดิมเพราะพวกเขาคุ้นเคยกับมันมาก พวกเขามักจะเสียเวลาค้นหาเครื่องมือเพื่อทำสิ่งต่าง ๆ แทน (คำใบ้: มีไม่มาก) มีการตบหัวเข้าไปในกำแพงหลายครั้งหลายครั้งไม่รู้ว่าจะทำอะไร หากคุณรู้สึกว่าตัวเองติดอยู่ให้ถอยออกมาและคิดว่าคุณสามารถระบุได้ว่าอะไรที่ผิดพลาด อย่างเป็นระบบผ่านการ จำกัด รายการปัญหาที่อาจเกิดขึ้นของคุณให้แคบลงจนกระทั่งคุณเข้าใจได้ เป็นไปตามโดยตรงจากกระบวนการนี้ที่คุณควร จำกัด ขอบเขตของปัญหาโดยไม่เปลี่ยนแปลงมากเกินไปในครั้งเดียว
คนฝังตัวที่มีประสบการณ์มักจะทำการดีบั๊กเพื่อให้ได้รับ ... คนส่วนใหญ่ที่ไม่สามารถทำได้ดีไม่นาน (หรือทำงานใน บริษัท ขนาดใหญ่ที่ยอมรับ "เฟิร์มแวร์ยาก" เป็นคำตอบว่าทำไมคุณสมบัติบางอย่าง สายปี)
คุณกำลังทำงานกับโค้ดที่ทำงานบนระบบภายนอกกับระบบการพัฒนาของคุณโดยมีองศาการมองเห็นที่แตกต่างกันในเป้าหมายของคุณจากแพลตฟอร์มหนึ่งไปอีกแพลตฟอร์มหนึ่ง หากอยู่ภายใต้การควบคุมของคุณให้กดเพื่อขอความช่วยเหลือในการพัฒนาเพื่อช่วยเพิ่มการมองเห็นนี้ในระบบเป้าหมายของคุณ ใช้พอร์ตอนุกรม debug, บิตการดีบักเอาต์พุต, แสงกะพริบที่มีชื่อเสียง, ฯลฯ อย่างน้อยที่สุดเรียนรู้วิธีการใช้ออสซิลโลสโคปและใช้ pin I / O กับขอบเขต 'เพื่อดูว่าฟังก์ชันบางอย่างเข้า / ออก, ไฟ ISRs ฯลฯ ฉันได้เฝ้าดูผู้คนต่อสู้กันนานเกินความจำเป็นอย่างแท้จริงเพียงเพราะพวกเขาไม่เคยใส่ใจที่จะตั้งค่า / เรียนรู้วิธีใช้ลิงก์ดีบักเกอร์ JTAG ที่เหมาะสม
มันสำคัญมากที่คุณต้องตระหนักว่าทรัพยากรใดที่คุณมีเมื่อเทียบกับพีซี อ่านเอกสารข้อมูลอย่างละเอียด พิจารณาทรัพยากร 'ต้นทุน' ของสิ่งที่คุณพยายามทำ เรียนรู้เทคนิคการดีบักเชิงทรัพยากรเช่นการเติมพื้นที่สแต็กด้วยค่าเวทย์มนตร์เพื่อติดตามการใช้สแต็ก
ในขณะที่ต้องใช้ทักษะการดีบักในระดับหนึ่งสำหรับพีซีและซอฟต์แวร์ฝังตัวมันมีความสำคัญยิ่งกว่ากับการฝังตัว