คำถามติดแท็ก bootloader

bootloader เป็นโปรแกรมยูทิลิตี้ที่ใช้โหลดโปรแกรมแอปพลิเคชันลงในหน่วยความจำ

3
ตัวโหลดบูตคืออะไรและฉันจะพัฒนาได้อย่างไร
ฉันได้พบกับโปรเจคหลายตัวที่ใช้คอนโทรลเลอร์ไมโครคอนโทรลเลอร์ AVR กับ bootloader (เช่น Arduino) แต่ฉันไม่เข้าใจแนวคิดที่ดีนัก ฉันจะสร้าง bootloader (สำหรับไมโครคอนโทรลเลอร์ใด ๆ ) ได้อย่างไร หลังจากเขียน bootloader ของฉันแล้วมันถูกโปรแกรมไปยังไมโครคอนโทรลเลอร์ (เช่นโปรแกรม. hex ใด ๆ ที่เผาไหม้บนแฟลชรอมของ AVR หรือวิธีอื่น ๆ )?

8
เหตุใดเราจึงต้องใช้ bootloader แยกจากแอปพลิเคชันโปรแกรมของเราในไมโครคอนโทรลเลอร์
เหตุใดเราจึงต้องการโปรแกรมแยกต่างหากในหน่วยความจำแฟลชโปรแกรมเดียวกันของไมโครคอนโทรลเลอร์โดยเฉพาะอย่างยิ่ง STM32F103 ซึ่งเรียกว่า bootloader มีอะไรพิเศษเกี่ยวกับมันเพื่อแยกมันออกจากโปรแกรมแอปพลิเคชันหลัก? โดยทั่วไปแล้ว bootloader ของระบบที่ใช้ไมโครโปรเซสเซอร์ (พูดว่า PowerPC MPC8270) ทำหน้าที่เหมือนกับของไมโครคอนโทรลเลอร์ (พูดกับ ARM STM32F103) หรือพวกเขากำลังทำงานที่แตกต่างกันโดยพื้นฐานและทั้งคู่ก็เรียกว่า 'bootloader' ?

6
โทรศัพท์มือถือเป็นไมโครคอนโทรลเลอร์
ฉันมีโทรศัพท์มือถือวางอยู่สองอันหนึ่งในนั้นคือโทรศัพท์นี้: http://www.gsmarena.com/sony_ericsson_elm-3057.php เป็นไปได้ที่จะล้างหน่วยความจำแฟลชและแทนที่ด้วย bootloader แล้วอัปโหลดภาพร่าง arduino หรือ pic32 sketches (C # / C ++) ฉันได้ความคิดนี้เพราะเป็นแพลตฟอร์มราคาถูกมากสำหรับการพัฒนาโครงการฮาร์ดแวร์ (คุณจะได้รับหน้าจอปุ่มเสียง I / O อินเทอร์เน็ต ฯลฯ คุณจะได้รับทุกสิ่งในราคาที่ถูกมากเมื่อเทียบกับสิ่งที่คุณได้รับจากการซื้อแต่ละส่วนแยกต่างหาก) เป็นไปได้ไหมที่จะลบหน่วยความจำแฟลชและติดตั้งบูตโหลดเดอร์ลงในโทรศัพท์เพื่อใช้เป็นคอมพิวเตอร์ฝังตัว

4
การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานทำงานอย่างไร
อุปกรณ์ฝังตัวทั้งหมดมีตัวเลือก "รีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน" ซึ่งอนุญาตให้ผู้ใช้รีเซ็ตอุปกรณ์ของเขาหากมีสิ่งผิดปกติ ฉันกำลังพัฒนาเฟิร์มแวร์บนบอร์ด STM32 เฟิร์มแวร์มีบูตโหลดเดอร์ที่อนุญาตให้อัปเกรดแอปพลิเคชันผ่าน UART (โดยการส่งไฟล์ไบนารีที่มีภาพใหม่) และฉันต้องการเพิ่มคุณสมบัติอื่น: รีเซ็ตเป็นค่าจากโรงงาน เมื่อผู้ใช้เลือกตัวเลือกนี้บอร์ดจะโหลดภาพต้นฉบับ การรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานคืออะไร มันเกี่ยวกับการโหลดไฟล์ไบนารี่ทั้งหมดลงในหน่วยความจำอีกครั้งหรือเพียงแค่เรียกใช้ฟังก์ชันที่เริ่มต้นตัวแปรที่แก้ไขโดยผู้ใช้ปลายทางหรือไม่ วิธีปฏิบัติที่ดีที่สุดในการทำเช่นนั้นคืออะไร? จะเก็บ FW ดั้งเดิมไว้ที่ไหน มันอยู่ในแฟลชภายในหรือภายนอก?

2
ฉันจะใช้ SMD Arduino เพื่อตั้งโปรแกรม DIP ATmega328 ได้อย่างไร
ฉันมี Arduino ซึ่งมีไมโครคอนโทรลเลอร์ติดตั้งบนพื้นผิว (SMD): ฉันรู้วิธีใช้ DIP arduino เป็นโปรแกรมเมอร์สำหรับ DIP ATmega328 เป็นเรื่องง่าย - คุณเพียงแค่ใส่ไมโครคอนโทรลเลอร์ของคุณในที่ยึด อย่างไรก็ตามด้วย Arduino ที่ติดตั้งบนพื้นผิวก็ไม่มีความชัดเจน Desoldering ตัวควบคุมขนาดเล็กเป็นวิธีหนึ่ง แต่นั่นเป็นสิ่งที่เลวร้ายและเป็นอันตราย ฉันสามารถใช้ Arduino นี้เป็นโปรแกรมเมอร์สำหรับ DIP ATmega328 โดยไม่ทำลายบอร์ดได้หรือไม่? ถ้าเป็นเช่นนั้นได้อย่างไร

2
ไม่สามารถให้ bootloader ทำงานบน PCB แบบกำหนดเองด้วย AT32UC3L
ฉันเพิ่งออกแบบ PCB สำหรับลูกค้าเมื่อเร็ว ๆ นี้ทุกอย่างใช้ได้ดีกับฮาร์ดแวร์และซอฟต์แวร์ ตอนนี้เรากำลังเผชิญหน้ากับความจำเป็นในการอัพเดทโปรแกรมภายในไมโครคอนโทรลเลอร์ แต่เนื่องจาก PCB เหล่านี้ติดตั้งในสถานที่ต่าง ๆ ทั่วโลกจึงเป็นการดีที่จะติดตั้ง bootloader และใช้ UART เดียวกันกับที่ใช้งานโดยแอปพลิเคชัน คำอธิบายคณะกรรมการ AT32UC3L032 UART หนึ่งอันใช้ในการสื่อสารระหว่างบอร์ดกับพีซี คู่ของ I / Os สำหรับแอปพลิเคชัน ไฟสถานะคู่ PINS และการกำหนดค่าที่เกี่ยวข้อง PA01 # Used for entering ISP with high level PA20 # Used for application and ISP UART PA21 # Used for application and …

1
รายละเอียด Arduino Bootloader
ใครช่วยอธิบายวิธีการที่bootloader ของ Arduinoทำงานได้หรือไม่? ฉันไม่ได้มองหาคำตอบระดับสูงที่นี่ฉันอ่านรหัสและได้รับส่วนสำคัญของมัน ฉันได้อ่านข้อความอื่น ๆ ของโพสต์นี้ด้วย(ฉันยังเป็นหนึ่งในผู้ตอบคำถามด้วย) มีการโต้ตอบโปรโตคอลจำนวนมากที่เกิดขึ้นระหว่าง Arduino IDE และรหัส bootloader ซึ่งส่งผลให้มีคำแนะนำในการประกอบแบบอินไลน์จำนวนมากซึ่งจะทำการตั้งโปรแกรมแฟลชเองด้วยโปรแกรมที่ส่งผ่านอินเตอร์เฟสแบบอนุกรม สิ่งที่ฉันไม่ชัดเจนในบรรทัด 270: void (*app_start)(void) = 0x0000; ... ซึ่งฉันจำได้ว่าเป็นการประกาศและการเริ่มต้นเป็น NULL ของตัวชี้ฟังก์ชั่น มีการเรียก app_start ในลำดับต่อไปในตำแหน่งที่ bootloader มีวัตถุประสงค์เพื่อมอบหมายให้เรียกใช้งานโค้ดที่ผู้ใช้โหลด แน่นอนว่าapp_startต้องมีค่าที่ไม่ใช่ค่า NULL ในบางจุดเพื่อให้ทุกคนมารวมกัน ฉันไม่เห็นว่าในรหัส bootloader ... มันเชื่อมโยงอย่างน่าอัศจรรย์โดยโปรแกรมที่โหลดโดย bootloader หรือไม่ ฉันสันนิษฐานว่า main ของ bootloader เป็นจุดเข้าสู่ซอฟต์แวร์หลังจากรีเซ็ตชิป ห่อใน 70 หรือมากกว่านั้นสายการประกอบจะต้องเป็นแหวนถอดรหัสลับที่บอกโปรแกรมหลักที่ app_start เป็นจริง? หรืออาจเป็นเพราะความรู้โดยนัยที่นำมาใช้โดย Arduino IDE? …

2
การเขียนโปรแกรม PIC ผ่าน FPGA
ฉันต้องการทราบว่ามีวิธีการเขียนโปรแกรม PIC เป็นครั้งแรก (เขียนเป็น Flash) ผ่านการ์ด FPGA หรือไม่ PIC ถูกบัดกรีไปยัง FPGA แล้วและฉันไม่สามารถลบได้ ไม่มี bootloader อยู่บน PIC ดังนั้นฉันต้องตั้งโปรแกรมในโหมด USART / SPI / I2C ด้วย bootloader เพื่อให้สามารถรับข้อมูลจาก FPGA ฉันรู้ว่าปกติฉันต้องปลดล็อคมันเชื่อมต่อกับโปรแกรมเมอร์ฮาร์ดแวร์เช่น PICKit และตั้งโปรแกรมด้วยซอฟต์แวร์บนคอมพิวเตอร์เช่น MPLAB แต่ฉันไม่สามารถจ่ายได้ ฉันสามารถสร้าง bootloader ด้วย MPLAB ซึ่งเป็นไฟล์. hex แต่ฉันจะถ่ายโอนไปยัง FPGA แล้วไปยัง PIC ผ่านทางหมุด FPGA ได้อย่างไร PIC ที่ใช้คือ Microchip PIC12F1822


2
เครื่องมือหรือวิธีการที่ดีในการทำความเข้าใจโครงสร้างของ bootloader?
ฉันเพิ่งค้นพบสาเหตุของข้อผิดพลาดที่น่ารังเกียจที่ฉันทำงานกับ Atmel AT91SAM9G20 SBC ที่ใช้U-bootซึ่งเป็น bootloader โอเพนซอร์ซ หลักของปัญหาคือ U-boot คาดหวังว่าฮาร์ดแวร์จะได้รับการกำหนดค่าแตกต่างจากที่ฉันสร้างขึ้นดังนั้นอุปกรณ์ลงทะเบียนบางตัวจึงถูกตั้งค่าผิดพลาด ตอนนี้ฉันพบปัญหาแล้วฉันต้องบิด U-boot เพื่อกำหนดค่าการลงทะเบียนอย่างถูกต้อง ฉันสามารถทำสิ่งนี้สุ่มสี่สุ่มห้าได้โดยการเพิ่มโค้ดสองสามบรรทัดในตอนท้ายของโปรแกรม สิ่งนี้นำมาสู่คำถามของฉัน: ฉันจะทราบได้อย่างไรว่า U-boot ทำงานได้อย่างมีประสิทธิภาพมากกว่าการเริ่มต้นที่ main () และอ่านเส้นทางโค้ดที่เป็นไปได้ทั้งหมดในไฟล์ทั้งหมดหรือไม่ ฉันลอง grepping ในไฟล์และดูรหัสใกล้ตัวระบุที่เกี่ยวข้อง สิ่งนี้พิสูจน์แล้วว่าไม่มีประสิทธิภาพ ดูเหมือนว่ารหัสส่วนใหญ่เป็นไดรเวอร์สำหรับระบบย่อยที่ฉันไม่สนใจ ฉันเข้าใจจริง ๆ แล้วว่า bootloader ทำงานได้ค่อนข้างดีในตอนนี้ แต่ฉันหวังว่าจะมีวิธีที่ดีกว่าวิธีที่ไร้เดียงสาของฉัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.