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

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

16
C ++ เหมาะสำหรับระบบฝังตัวหรือไม่
คำถามทั่วไปที่นี่และที่อื่น ๆ C ++ เหมาะสำหรับระบบฝังตัวหรือไม่ ไมโครคอนโทรลเลอร์? RTOSes? เครื่องปิ้งขนมปัง? พีซีแบบฝัง? OOP มีประโยชน์กับไมโครคอนโทรลเลอร์หรือไม่ C ++ ลบโปรแกรมเมอร์ที่อยู่ห่างจากฮาร์ดแวร์มากเกินไปหรือไม่ C ++ ของ Arduino ควร (ที่ไม่มีการจัดการหน่วยความจำแบบไดนามิก, แม่แบบ, ข้อยกเว้น) ควรได้รับการพิจารณาว่าเป็น "C ++ จริง" หรือไม่? (หวังว่าวิกินี้จะใช้เป็นสถานที่บรรจุสงครามศักดิ์สิทธิ์ที่มีศักยภาพนี้)

9
RTOS สำหรับระบบฝังตัว
ฉันได้เห็นบทความมากมายที่บอกฉันว่าฉันควรใช้ RTOS สำหรับการจัดการเวลาและการจัดการทรัพยากร เวลาของฉันไม่ได้รับอนุญาตให้ทำการวิจัยของฉันเองดังนั้นฉันจึงไปหาชิปเพื่อขอคำแนะนำ ฉันใช้ไมโครคอนโทรลเลอร์ทรัพยากรต่ำ (MSP430, PIC) และกำลังมองหา RTOS ที่ฉันสามารถใช้ได้ ตรงประเด็น: ต้นทุนทรัพยากรของระบบ ข้อดีของระบบ ข้อเสียของระบบ เคล็ดลับการใช้งาน สถานการณ์ที่ RTOS ควร / ไม่ควรใช้ ฉันไม่ได้ใช้ระบบเช่น arduino โครงการที่ฉันทำงานด้วยไม่สามารถรองรับค่าใช้จ่ายของระบบดังกล่าวได้

9
การใช้สารระเหยในการพัฒนา C แบบฝัง
ฉันได้อ่านบทความและคำตอบของการแลกเปลี่ยนกองซ้อนเกี่ยวกับการใช้volatileคำสำคัญเพื่อป้องกันไม่ให้คอมไพเลอร์จากการใช้การเพิ่มประสิทธิภาพใด ๆ บนวัตถุที่สามารถเปลี่ยนแปลงในวิธีที่ไม่สามารถกำหนดโดยคอมไพเลอร์ หากฉันกำลังอ่านจาก ADC (เรียกว่าตัวแปรadcValue) และฉันประกาศว่าตัวแปรนี้เป็นโกลบอลฉันควรใช้คำหลักvolatileในกรณีนี้หรือไม่? โดยไม่ต้องใช้volatileคำสำคัญ // Includes #include "adcDriver.h" // Global variables uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } การใช้volatileคำสำคัญ // Includes #include "adcDriver.h" // Global variables volatile uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } ฉันถามคำถามนี้เพราะเมื่อทำการดีบั๊กฉันไม่เห็นความแตกต่างระหว่างทั้งสองวิธีแม้ว่าแนวทางปฏิบัติที่ดีที่สุดจะบอกว่าในกรณีของฉัน (ตัวแปรทั่วโลกที่เปลี่ยนแปลงโดยตรงจากฮาร์ดแวร์) …

4
เหตุใดไฟ LED ในการออกแบบที่ฝังตัวส่วนใหญ่จึงกลับด้าน
ฉันสังเกตเห็นว่าในบอร์ดการประเมินทั้งหมดของฉันที่ฉันมีถึงจุดนี้ในเวลา ไฟ LED ทั้งหมดเชื่อมต่อกันในระดับที่ต่ำไปยังพอร์ตไมโครคอนโทรลเลอร์ ฉันเข้าใจว่าจากมุมมองด้านความปลอดภัยจะดีกว่าถ้ามี RESET ที่ต่ำและเช่นนั้น แต่ทำไมไฟ LED?
36 led  embedded 

6
การเขียนโปรแกรมแบบฝังสำหรับผู้เริ่มต้น: Arduino หรือ Raspberry Pi? [ปิด]
ฉันเป็นนักเรียนวิทยาศาสตร์คอมพิวเตอร์และฉันกระตือรือร้นที่จะขยายความรู้ของฉันเกี่ยวกับการเขียนโปรแกรมฝังตัวและวิศวกรรมไฟฟ้า ฉันได้อ่านที่นี่ว่าการใช้เครื่องมือเช่นไมโครคอนโทรลเลอร์ Arduino เป็นวิธีที่ดีในการเริ่มต้น ฉันเป็นโปรแกรมเมอร์ Java และ Python เป็นหลัก แต่มีประสบการณ์บางอย่างใน C ++ นอกจากนี้ฉันได้เล่นกับ ArchLinux โครงการเล็ก ๆ ที่ฉันอยากทำคือควบคุมหลอดไฟบางส่วนผ่าน Wi-Fi ผ่าน Arduino / Pi ของฉัน จากสิ่งที่ฉันอ่านทั้ง Pi และ Arduino นั้นมีไว้สำหรับนักเรียน แต่ฉันไม่สามารถคิดได้ว่าจะเหมาะกับใครบางคนเช่นฉันที่ต้องการเข้าใจว่าคอมพิวเตอร์ทำงานอย่างไรในระดับต่ำ ในฐานะผู้เริ่มต้นฉันจะพบกับคำถามมากมายดังนั้นชุมชนขนาดใหญ่และเป็นประโยชน์ (ซึ่งฉันได้ยิน Pi) เป็นข้อดีที่ยิ่งใหญ่ ดังนั้นอันไหนที่เหมาะสำหรับผู้เริ่มต้นการเรียนรู้ด้วยตนเอง: Arduino หรือ Raspberry Pi ขอบคุณล่วงหน้า. แก้ไข: จากคำตอบที่ดีมากของคุณและยังเหล่านี้worthwile บทความฉันมาถึงต่อไปนี้ สรุปผลการวิจัย ฉันเลือก Arduino เป็นจุดเริ่มต้นในการเขียนโปรแกรมแบบฝังเนื่องจากเป็นระบบที่ง่ายกว่า Pi และให้ฉันทำงานใกล้ชิดกับโลหะได้ง่ายขึ้น มีค่ามากขึ้น: ฉันอาจศึกษาAVRหรือไมโครคอนโทรลเลอร์mbedในภายหลังเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับรายละเอียดในระดับต่ำของการคำนวณ …

5
JTAG คืออะไร
ฉันค่อนข้างใหม่สำหรับระบบฝังตัวและฉันก็ยังเห็นคำนี้ใช้อยู่ตลอดเวลา แต่ฉันก็ไม่เข้าใจว่ามันคืออะไร การค้นหาออนไลน์อย่างรวดเร็วให้หน้าวิกิพีเดียนี้: https://en.wikipedia.org/wiki/Joint_Test_Action_Groupซึ่งอธิบายว่าเป็นโปรโตคอลบางอย่างสำหรับการดีบัก แต่ในบริบทอื่น ๆ มันใช้เหมือนจะสามารถเขียนโปรแกรมหน่วยความจำของชิปเช่นโปรแกรมเมอร์ มันคืออะไร?
30 embedded  jtag 

9
จะเกิดอะไรขึ้นเมื่อโปรแกรมฝังตัวเสร็จสิ้น
จะเกิดอะไรขึ้นในตัวประมวลผลแบบฝังตัวเมื่อการดำเนินการมาถึงreturnคำสั่งสุดท้ายนั้นทุกอย่างก็ค้างเหมือนเดิม การใช้พลังงาน ฯลฯ มี NOP หนึ่งนิรันดร์ที่ยาวนานบนท้องฟ้า? หรือ NOP ถูกดำเนินการอย่างต่อเนื่องหรือโปรเซสเซอร์จะปิดพร้อมกันหรือไม่ ส่วนหนึ่งของเหตุผลที่ฉันถามคือฉันสงสัยว่าตัวประมวลผลจำเป็นต้องปิดเครื่องก่อนที่มันจะเสร็จสิ้นการประมวลผลหรือไม่และมันจะทำอย่างไรถ้าการประมวลผลเสร็จสิ้นลงก่อนที่มือจะทำ?

3
อะไรคือสิ่งที่อยู่ในหน่วยความจำชนิดต่าง ๆ ของไมโครคอนโทรลเลอร์?
มีเซ็กเมนต์หน่วยความจำที่แตกต่างกันซึ่งข้อมูลชนิดต่าง ๆ ถูกใส่ลงในรหัส C หลังจากการคอมไพล์ เช่น: .text, .data, .bssกองและกอง ฉันแค่อยากรู้ว่าแต่ละเซ็กเมนต์เหล่านี้จะอยู่ในหน่วยความจำไมโครคอนโทรลเลอร์ นั่นคือข้อมูลใดที่จะเข้าสู่หน่วยความจำประเภทใดเนื่องจากประเภทหน่วยความจำคือ RAM, NVRAM, ROM, EEPROM, FLASH เป็นต้น ฉันได้พบคำตอบของคำถามที่คล้ายกันที่นี่ แต่พวกเขาไม่สามารถอธิบายได้ว่าเนื้อหาของหน่วยความจำแต่ละประเภทแตกต่างกันอย่างไร ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก ขอบคุณล่วงหน้า!

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

2
การป้องกันเฟิร์มแวร์บนตัวควบคุม AVR และ PIC
บางคนสามารถแตกไฟล์ HEX ที่ฉันเขียนในไมโครคอนโทรลเลอร์ที่ฉันให้มาได้หรือไม่ หากเป็นไปได้ผู้อื่นจะมั่นใจได้อย่างไรว่ารหัสของพวกเขาปลอดภัยในระบบฝังตัว ในกรณีของไมโครคอนโทรลเลอร์ PIC และ AVR เราจะป้องกันเฟิร์มแวร์ของตนจากการทำซ้ำได้อย่างไร?
23 pic  avr  embedded  firmware 

7
สำหรับโค้ดที่ฝังตัวทำไมฉันจึงควรใช้ประเภท“ uint_t” แทน“ int ที่ไม่ได้ลงชื่อ”
ฉันกำลังเขียนแอปพลิเคชันใน c สำหรับ STM32F105 โดยใช้ gcc ในอดีตที่ผ่านมา (กับโครงการง่าย) ผมได้กำหนดไว้เสมอเป็นตัวแปรchar, int, unsigned intและอื่น ๆ ผมเห็นว่ามันเป็นเรื่องธรรมดาที่จะใช้ประเภทที่กำหนดไว้ใน stdint.h เช่นint8_t, uint8_t, uint32_tฯลฯ นี้มันเป็นจริงในหลาย API ที่ฉันใช้และยังอยู่ในห้องสมุด ARM CMSIS จาก ST ฉันเชื่อว่าฉันเข้าใจว่าทำไมเราควรทำเช่นนั้น เพื่อให้คอมไพเลอร์เพิ่มประสิทธิภาพพื้นที่หน่วยความจำให้ดีขึ้น ฉันคาดว่าอาจมีเหตุผลเพิ่มเติม แต่เนื่องจากกฎการส่งเสริมจำนวนเต็มคผมให้ทำงานขึ้นกับคำเตือนการแปลงเวลาใด ๆ ที่ฉันพยายามที่จะเพิ่มค่าสองค่าดำเนินการค่าที่เหมาะสม ฯลฯ conversion to 'uint16_t' from 'int' may alter its value [-Wconversion]เตือนอ่านสิ่งที่ชอบ ปัญหาที่จะกล่าวถึงที่นี่และที่นี่ มันไม่ได้เกิดขึ้นเมื่อใช้ตัวแปรประกาศเป็นหรือintunsigned int ในการให้ตัวอย่างสองสามตัวอย่างให้สิ่งนี้: uint16_t value16; uint8_t value8; …
22 c  embedded  gcc 

5
เมื่อใดที่เราต้องการระบบปฏิบัติการในการออกแบบระบบสมองกลฝังตัว
ฉันได้เขียนโค้ดโลหะเปลือยมากมายสำหรับโปรเซสเซอร์ PIC และ x86 มีคนบอกฉันได้อย่างไรว่าจะต้องใช้ระบบปฏิบัติการและเมื่อไร ในทางกลับกันแอพพลิเคชั่นหรือสถานการณ์ใดบ้างที่สามารถจัดการกับหรือไม่มีระบบปฏิบัติการด้วย

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

6
คุณโครงสร้างโครงการฝังตัวขนาดใหญ่ได้อย่างไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิด5 เดือนที่ผ่านมา พื้นหลัง : วิศวกรอิเล็กทรอนิกส์ R&D อาวุโส ( EE เพียงคนเดียวใน บริษัท ) - ฮาร์ดแวร์และการเข้ารหัสไม่ใช่ปัญหา ปัญหาที่ใหญ่ที่สุดของฉันคือการได้รับภาพรวมที่เหมาะสมของโครงการและที่จะเริ่ม จนถึงตอนนี้ฉันได้ทำโครงการซอฟต์แวร์เพียงเล็กน้อย (โค้ดย่อย 500 บรรทัด) แต่ฉันไม่สามารถนึกภาพตัวเองทำโครงการขนาดใหญ่ได้โดยไม่สูญเสียภาพรวมการทำงานหรือขาดการทำงาน คุณจะจัดโครงสร้างที่ดีที่สุดได้อย่างไร / คุณใช้เครื่องมือใดในการจัดทำระบบซอฟต์แวร์ฝังตัวขนาดใหญ่ สิ่งที่ฉันกำลังทำอยู่ : ฉันมักจะเริ่มต้นด้วยการร่างการทำงานของโครงการ อาจเป็นแผนภูมิลำดับชั้นแบบหนึ่งหรือหลายต่อหลายชั้นหรือไดอะแกรมที่เกี่ยวข้อง (บล็อกไดอะแกรม ฯลฯ ) และทำการวิจัยส่วนประกอบ / ชิป จากนั้นฉันก็กระโดดเข้าสู่การเขียนโค้ด (ล้มเหลวอย่างรวดเร็วฉันเดา) ในขณะที่อ้างอิงเอกสารข้อมูล / อินเทอร์เน็ตการเข้ารหัสหนึ่งฟังก์ชันพร้อมกันและทดสอบด้วยข้อมูลจำลองหรือการทดสอบที่คล้ายกัน มันอาจจะเขียนข้อมูลไปยังชิป MEM และถ้าเป็นเช่นนั้นก็อาจเป็นไดรเวอร์ SPI ระหว่างชิปหลักและชิป MEM คำตอบอะไรที่ฉันกำลังมองหา …

4
ทำไม FPGA ที่ใช้ SRAM จึงใช้มากกว่า FPGA ที่ใช้ NVM
FPGAs ที่ใช้ SRAM จำเป็นต้องโหลดบิตสตรีมอีกครั้งหลังจากปิดเครื่อง ในขณะเดียวกันไม่จำเป็นต้องลบเลือนตาม ฉันสงสัยว่าทำไมการทดลองเพิ่มเติมและการวิจัยด้านความปลอดภัยใน SRAM FPGA มากกว่า NVM ที่ใช้อยู่ดูเหมือนว่าเทคโนโลยีระเหยถูกใช้มากขึ้นโดยไม่คำนึงถึงขีดจำกัดความปลอดภัย (เมื่อมาถึงเพื่อให้แน่ใจว่าบูตปลอดภัย) (PS: ฉันไม่มีสถิติมันเป็นข้อสังเกตส่วนตัว)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.