รหัสเฟิร์มแวร์หรือข้อมูลคืออะไร?


29

เมื่อมีคนบอกว่าพวกเขา "กระพริบ" เฟิร์มแวร์ไปยังอุปกรณ์ฉันสงสัยว่ามันหมายถึงอะไร

  1. เฟิร์มแวร์เป็นเพียงไบนารีดั้งเดิมที่เก็บไว้ในหน่วยความจำและสามารถตีความได้โดย CPU ของอุปกรณ์ (เช่น EXE อื่น ๆ บนคอมพิวเตอร์)? หรือเฟิร์มแวร์เป็นเพียงข้อมูลที่ทำหน้าที่เป็นอินพุตให้กับโปรแกรมที่ไม่เปลี่ยนรูปแบบที่ฮาร์ดโค้ด / ต่อสายไปยังอุปกรณ์แล้วหรือไม่?
  2. หากตัวอย่างหลังไม่ใช่เฟิร์มแวร์คุณจะเรียกว่าอะไร ตัวอย่างเช่นสมมติว่าอุปกรณ์มีไบนารี่บางตัวsomeapp.exeอยู่และคุณไม่สามารถลบหรือแก้ไขไบนารี่นี้ได้ ไบนารีเมื่อวิ่งจะรับอินพุตจากชิปหน่วยความจำ คุณสามารถ "แฟลช" ข้อมูลไปยังชิปนี้และส่งผลกระทบต่ออินพุต / การกำหนดค่าของsomeapp.exeที่จะมีผลในครั้งต่อไปที่มันทำงาน หากไม่ใช่เฟิร์มแวร์สิ่งนี้จะเรียกว่าอะไร

12
นี่เป็นคำถามที่ดีจริงๆ มันเป็นการพักที่ดีจากการฆ่าของ "เครื่องปิ้งขนมปังของฉันไม่ได้ปิ้งฉันสามารถใส่อาร์ดิโนไว้ในเครื่องได้หรือไม่" คำถาม
Jason_L_Bens

17
ดีคำถามนี้จะดีถ้าไม่ใช่ข้อบกพร่องที่สำคัญในนั้น: รหัสคือข้อมูลและข้อมูลสามารถเป็นรหัส - เท่าที่เกี่ยวข้องกับสถาปัตยกรรม / รุ่น Von Neumann ดังนั้นคำถามทั้งหมดอยู่ในไร้สาระ - เนื่องจากรหัสสามารถ (และมักจะ ) ถือว่าเป็นข้อมูลและในทางกลับกัน; นอกจากนี้ยังมีการ OP: ทำไมไม่ตรวจสอบen.wikipedia.org/wiki/Firmware ? มันมีคำตอบสำหรับคำถามนี้มากและสิ่งอื่น ๆ ที่เกี่ยวข้องกับเฟิร์ม - ดังนั้นในขณะที่มันคือการพักผ่อนที่ดีจาก "ฉันสามารถเสียบหลอดไฟ 12V เข้า 230V ซ็อกเก็ต" คำถามก็ยังคงย่อยหุ้นในหนังสือของฉัน .. .
vaxquis

2
ฉันค่อนข้างแน่ใจว่าคำตอบที่นี่คือ "ใช่"
Connor Wolf

7
รหัสเครื่องเป็นเพียงการป้อนข้อมูลไปยังการเดินสายที่ไม่เปลี่ยนรูปของ CPU
user253751

2
เป็นคำหนังสือหรือตัวอักษร?
Nick T

คำตอบ:


27

บ่อยครั้งที่มีคำจำกัดความดังกล่าวเราเห็นด้วยในกรณีส่วนใหญ่ แต่ไม่มีขอบเขตแน่นอนระหว่างสิ่งที่เป็นเฟิร์มแวร์และสิ่งที่ไม่ เฟิร์มแวร์คือ

  • เก็บไว้อย่างถาวร (ยกเว้นบุคคลที่มีความรู้ที่สามารถเปลี่ยนได้ ... )
  • ไม่ต้องการเปลี่ยน (ยกเว้น ... )
  • ทำงานบนโปรเซสเซอร์โดยไม่ได้รับความช่วยเหลือจากซอฟต์แวร์อื่น (ยกเว้น ... คุณจะได้รับ)

สำหรับข้อมูลที่ถูกตีความโดยล่าม (เฟิร์มแวร์): สิ่งนี้มักไม่ได้ทำในการตั้งค่าระดับมืออาชีพเพราะมันทำให้ผลิตภัณฑ์มีราคาแพงกว่า: หน่วยความจำเพิ่มเติมพลัง CPU และอื่น ๆ เป็นสิ่งจำเป็นเพื่อให้บรรลุเป้าหมายเดียวกัน มันเป็นแต่บางครั้งใช้ในการตั้งค่าอดิเรกมักจะมีล่ามพื้นฐานในแฟลชและ (tokenized) พื้นฐานการประยุกต์ใช้เก็บไว้ใน EEPROM (หรือใน Flash เกินไป) ตรวจสอบอินสแตนซ์ของ PICAXE และแสตมป์พื้นฐานต่างๆ

IMO ในการตั้งค่าทั้งล่ามพื้นฐานและแอพพลิเคชั่นพื้นฐานควรเรียกว่าเฟิร์มแวร์


การใช้งานล่ามเฟิร์มแวร์ที่น่าสนใจซึ่งตีความรหัสที่เก็บไว้ (ซึ่ง IMO ควรได้รับการพิจารณาว่าเป็นเฟิร์มแวร์ด้วย) คือการเริ่มต้น XBOX 360 การพูดคุยที่ยอดเยี่ยมนี้อธิบายรายละเอียดบางอย่าง


MSalters ด้านล่างสงสัยว่ารหัส FPGA / ข้อมูลการกำหนดค่าควรได้รับการพิจารณาเป็นเฟิร์มแวร์หรือไม่

ในแง่มุมที่สำคัญที่สุด (เป็นข้อมูลที่เปลี่ยนแปลงได้ช้าในกระบวนการผลิต แต่มันไม่ได้ตั้งใจที่จะเปลี่ยนแปลงโดยผู้ใช้ปลายทาง) บิต FPGA จะทำงานเหมือนเฟิร์มแวร์ ที่ทำให้คำถามไม่ว่าจะเป็นเฟิร์มแวร์ตามที่ moot นิยาม จุดสำคัญคือมันสามารถ (และควร) เขียนจัดการและจัดการเช่นเฟิร์มแวร์ (ถ้ามันเดินและต้มตุ๋นเหมือนเป็ดมันเป็นเป็ด?)

อย่ากังวลกับคำจำกัดความเมื่อไม่มีประโยชน์ เฟิร์มแวร์ไมโครโค้ดคืออะไร? การเป็นตัวแทนนั้นสำคัญหรือไม่ บริบทมีความสำคัญอย่างไร ROM บิตสำหรับเฟิร์มแวร์ IWM หรือไม่


ความเห็นของ Vaxquis ต่อคำถามของ OP ทำให้ฉันได้อ่านบทความ wiki ที่เขาลิงก์ไป IMO คำจำกัดความของเฟิร์มแวร์ที่ให้ไว้ที่นั่น (หน่วยความจำถาวรและรหัสโปรแกรมและข้อมูลที่เก็บอยู่ในนั้น) เป็นปัญหา IMO แผนที่ที่เก็บไว้ในระบบนำทางรถยนต์คือข้อมูลไม่ใช่เฟิร์มแวร์ไม่ว่าจะถูกจัดเก็บอย่างไร (ตามวิกิที่ควรจะเป็นเฟิร์มแวร์) และแอพใน iPhone หรือ Android เป็นแอพพลิเคชั่นไม่ใช่เฟิร์มแวร์


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

คอมพิวเตอร์ TI 99/4 (1979) รวมล่ามไว้ใน ROM สำหรับภาษาที่เรียกว่า GPL และล่ามพื้นฐานที่เขียนด้วย GPL คุณลักษณะที่สำคัญของ GPL คือสามารถเรียกใช้รหัสที่เก็บไว้ในชิป GROM (ซึ่งได้รับการออกแบบมาสำหรับการเข้าถึงตามลำดับขั้นต้นและสามารถทำให้ร่างกายมีขนาดเล็กลงและราคาถูกกว่า ROM เข้าถึงแบบสุ่ม) ดังนั้น TI 99/4 อาจถูกมองว่าเป็นก้อน - คอมพิวเตอร์ส่วนบุคคลที่มีการออกแบบคล้ายคลึงกับตราประทับพื้นฐาน
supercat

14

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


ขอบคุณ @Leon Heller (+1) - มีชื่อสำหรับตัวอย่างที่ 2 ข้างต้นโดยที่หนึ่งคือข้อมูลอินพุต "กระพริบ" ไปยังไบนารีคงที่บนชิปหรือไม่ หรือสิ่งนี้ไม่ได้ถูกฝึกมาโดยทั่วไป? ขอบคุณอีกครั้ง!
HeineyBehinds

มันเป็นเพียงข้อมูล มันสามารถเก็บไว้ในหน่วยความจำระเหยหรือไม่ลบเลือน
Leon Heller

คำที่ฉันจะใช้สำหรับ # 2 ของคุณจะเป็น "ตารางค้นหา" ตัวอย่างที่ฉันนึกได้ก็คือค่าฟังก์ชันไซน์ที่ใช้สำหรับออสซิลเลเตอร์ที่ควบคุมด้วยตัวเลข
kjgregory

1
@KGregory มันอาจจะเป็นตารางการค้นหาก็สามารถโปรแกรมการตีความก็สามารถเป็นข้อมูลภาพ ...
glglgl

@glglgl ตกลง ฉันอาจโต้แย้งว่าสิ่งเหล่านั้นสามารถพิจารณารูปแบบของตารางค้นหา แต่ฉันคิดว่าเราอยู่ข้างจุดนี้
kjgregory

9

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


รักคำตอบนี้ +1 ดีมากสำหรับการเน้นข้อมูลและรหัสเป็นสิ่งเดียวกันในที่สุด
Vality

พวกเขาเหมือนกันสำหรับสถาปัตยกรรม Von Neumann อย่างน้อย เมื่อคุณแยกรถเมล์ออกคุณสามารถเริ่มเถียงได้ว่ามันเป็นสิ่งที่แตกต่างกันถึงแม้ว่ามันจะเป็นเพียงแค่บิตในที่สุด
Jason_L_Bens

8

เป็นจริงทั้งคู่

ตัวอย่างหนึ่งของเฟิร์มแวร์คือ PC BIOS ส่วนหนึ่งของ BIOS สามารถใช้งานได้ แต่ส่วนอื่น ๆ ของ BIOS นั้นเป็นข้อมูลจริงโดยเฉพาะในตารางสำหรับแสดงเพื่อระบุฟังก์ชั่นที่แตกต่างของ BIOS ROM โดยไม่คำนึงถึงประเภทของเทคโนโลยีที่ใช้ บน. บ่อยครั้งที่ข้อมูลถูกเก็บไว้ในหน่วยความจำแฟลชแบตเตอรี่หรือตัวเก็บประจุสำรอง RAM ตัวใดตัวหนึ่งทั้ง CMOS SRAM หรือเทคโนโลยีชิปหน่วยความจำที่เข้ากันได้อื่น

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

เฟิร์มแวร์ตามคำจำกัดความคือระดับการเข้าถึงต่ำสุดที่เริ่มต้นทดสอบฮาร์ดแวร์ที่คุณติดตั้งในระบบหรือส่วนประกอบที่ฝังอยู่และให้รูทีนระดับต่ำ (บางครั้งเรียกว่าการเรียกใช้ฟังก์ชัน BIOS) ที่ระบบปฏิบัติการของคุณจำเป็นต้องใช้ส่วนประกอบ ในระบบของคุณ ในสมัยก่อน BIOS หรือระบบอินพุตเอาต์พุตพื้นฐานยังรวมถึงภาษาการเขียนโปรแกรมที่เรียกว่า "BASIC" เช่น Commodore 64 และคอมพิวเตอร์ส่วนบุคคลอื่น ๆ ของปี 1970 แน่นอนว่ามีคอมพิวเตอร์รุ่นเก่าที่มีพื้นฐานในตัวสำหรับการใช้งาน โดยนักวิทยาศาสตร์คอมพิวเตอร์มืออาชีพเช่นกัน หากคุณเคยได้ยิน ROM อักขระหรือสัญลักษณ์นั่นเป็นรูปแบบข้อมูลบริสุทธิ์สำหรับผู้บริหารหรือ ROM โปรแกรมเพื่อให้ระบบไปที่ ROM อักขระนั้นและค้นหาอักขระตามลำดับหรือถ่ายโอนชิปทั้งหมดไปยัง RAM เพื่อทำงานกับมัน ที่นั่น

โปรแกรมเริ่มต้นพรหม, EPROM, EEPROM, Flash จะเขียนเฟิร์มแวร์บนชิปเช่นเดียวกับส่วนต่อท้ายของ. hex หรือ. bin ซึ่งเป็นรูปแบบที่คล้ายกันขึ้นอยู่กับแอปพลิเคชันของคุณที่คุณใช้ส่งชิปเฟิร์มแวร์

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

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

ฉันเห็นด้วยไม่ควรเรียกว่าเฟิร์มแวร์เพราะไม่ใช่เทคนิคในชิปเป็นโซลูชั่นถาวรและต้องการเครื่องมือพิเศษและแอปพลิเคชันเพื่ออัปเดตเฟิร์มแวร์ (ในกรณีของ BIOS เก่ากับความจำแฟลช)

มีคำถามเพิ่มเติมฉันยินดีที่จะตอบคำถามเหล่านี้ให้คุณ


6

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

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

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

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

2
"แต่จากนั้นมันจะถูกต้มลงไปที่รหัสเครื่องเพื่อให้ซีพียูสามารถเข้าใจได้" เช่นเดียวกับรหัสซอฟต์แวร์เช่นเดียวกับที่เขียนใน C หรืออะไรทำนองนั้น
glglgl

1
สิ่งที่ตัวประมวลผลเข้าใจคือใช่ไบนารี แต่มีสิ่งที่เรียกว่ารหัสการดำเนินการ mnemomic (รหัส op ตามที่เห็นในอุตสาหกรรม) สำหรับพวกเราที่ยังคงโปรแกรมในภาษาแอสเซมบลีซึ่งเกิดขึ้นเป็นหนึ่งในขั้นตอนเหนือภาษาเครื่อง ])

0

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

ฮาร์ดแวร์เปลี่ยนแปลงได้ยาก ซอฟต์แวร์เปลี่ยนแปลงได้ง่าย เฟิร์มแวร์นั้นไม่ยากที่จะเปลี่ยนเหมือนฮาร์ดแวร์ แต่ยากที่จะเปลี่ยนแปลงกว่าซอฟต์แวร์

มันสามารถใช้เพื่อหารือเกี่ยวกับรหัสข้อมูลหรือข้อมูลการกำหนดค่า (เช่นใน FPGA / PLD / ฯลฯ ) ซึ่งสามารถเปลี่ยนแปลงได้


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

0

เพื่ออธิบายเพิ่มเติมว่าเฟิร์มแวร์คืออะไรจากภายใน

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

นี่คือสิ่งที่เฟิร์มแวร์ทำ;

  1. มีคำแนะนำแบบเดินสายสำหรับตัวประมวลผลที่กำหนดเพื่อดำเนินการและดำเนินการซึ่งเรียกว่า "bootstrap" คอมพิวเตอร์ที่สามารถบูตได้ส่วนใหญ่มีสิ่งนี้ใน BIOS

  2. เริ่มต้นฮาร์ดแวร์ดังกล่าวผ่านคำแนะนำในเฟิร์มแวร์

  3. โหลดเข้า / ขึ้นตารางกระโดด

  4. ทำให้การเข้าถึงการลงทะเบียนบนอุปกรณ์ที่กำหนดสามารถเข้าถึงได้

  5. การควบคุมมือออกไปที่รูทีนการออกหลังจากใช้ไบออสหลังจากสถานะเย็น (ปิดเครื่อง) หรือเริ่มอุ่น (ใช้การรีบูตปกติหรือพินการรีเซ็ต)

  6. ไบออส (เฟิร์มแวร์) ส่วนใหญ่ได้รับการออกแบบมาสำหรับชิปเซ็ตเฉพาะในใจและถอนการทำงานทั้งหมดของสิ่งเหล่านั้นและรวบรวมข้อมูลใด ๆ ที่อาจมีบางสิ่งแนบกับบัสไลน์ที่กำหนดในคอมพิวเตอร์หรืออุปกรณ์ฝังตัว

  7. ฮาร์ดดิสก์เป็นตัวอย่างที่ดีของโซลูชันหน่วยความจำที่มีอยู่ในตัวและเป็นอุปกรณ์ฝังตัวที่มี BIOS อยู่และมีรูปแบบของเฟิร์มแวร์บนชิปเช่นกัน

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

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

หากคุณต้องการทราบว่า Ada, C, C ++, D และภาษาการเขียนโปรแกรมอื่น ๆ แปลง "โทเค็น" ของพวกเขาซึ่งเป็นรหัสพื้นเมืองของพวกเขาที่ถูกสับเป็น op-หลอกเป็นภาษาเครื่อง มีหนังสือหลายเล่มที่ฉันแนะนำให้คุณอ่านบางเล่มค่อนข้างประถมและมีศูนย์กลางอยู่ที่โปรเซสเซอร์ที่เฉพาะเจาะจงมาก แต่ก็ดีที่จะเรียนรู้ ฉันจะให้หนังสือหนึ่งเล่มแก่คุณในขณะนี้เพราะฉันไม่ต้องการให้คุณจมน้ำตายหรือใครก็ตามที่อ่านข้อมูลนี้

  1. การสร้างคอมไพเลอร์ด้วย 'C' โดย Charles N. Fischer & Richard J. LeBlanc จูเนียร์
  2. เยี่ยมชมเว็บไซต์นี้มันขึ้นอยู่กับชิปเซ็ต x86 ที่พบในพีซี IBM http://www.laynetworks.com/assembly%20tutorials.htm

นั่นคือการแนะนำการเขียนโปรแกรมภาษาแอสเซมบลีบนพีซีในตอนเริ่มต้น มันพูดคุยเกี่ยวกับการจัดการขัดจังหวะ (ฮาร์ดแวร์และซอฟต์แวร์ขัดจังหวะ) และหัวข้ออื่น ๆ อีกมากมายมันอธิบายเพิ่มเติมในเชิงลึกเกี่ยวกับสิ่งที่ BIOS ทำจริงและวิธีการทำงานกับมัน

ต่างจากภาษาแอสเซมบลีและภาษาเครื่องคุณสามารถหลีกเลี่ยงได้มากขึ้นใน Ada, C, C ++, D หากคุณไม่ทราบรายละเอียดเฉพาะฮาร์ดแวร์ของคุณ ในภาษาแอสเซมบลีและภาษาเครื่องถ้าคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่อาจมีบางอย่างไม่ดีเกิดขึ้นหรือรหัสไม่ทำงาน ฉันชอบกรณีหลังไม่ทำงานกับสิ่งที่ไม่ดี

หมายเหตุ: เกี่ยวกับคำตอบข้างต้นเกี่ยวกับแฟลชแรมไม่มีสิ่งนั้นมีแฟลชรอม แต่ไม่ใช่แฟลชแรม Flash ROM มีเฟิร์มแวร์ในตัว RAM ที่มีแบตเตอรี่หรือตัวเก็บประจุสำรองหรือมี ROM แฟลชอื่นที่มีพารามิเตอร์สำหรับตัวเลือกของ BIOS ที่คุณตั้งค่าไว้

มีรหัสในเฟิร์มแวร์เกี่ยวกับวิธีการจัดเก็บหรือล้างหน่วยความจำข้อมูล (เทียบกับหน่วยความจำโปรแกรม / เฟิร์มแวร์ตัวเอง) ถ้ามันเป็นแฟลชรอมหรือชิปแรม บนพีซีหากรหัสผ่าน BIOS ของคุณถูกอ่านผิดหรือคุณจำไม่ได้ (หรือใครบางคนกำลังยุ่งกับคุณ) คุณสามารถเปิดเคสและค้นหาหมุดสองตัวที่เรียกว่า "CMOS CLR / CMOS CLEAR / BIOS RESET / BIOS RST" การย่อสองพินเหล่านั้นเข้าด้วยกันจะเป็นการล้างหน่วยความจำทั้งหมดที่คุณต้องทำหลังจากนั้นคือกดปุ่มรีเซ็ตเมื่อพินทั้งสองยังคงสั้น ซึ่งจะล้างรหัสผ่านและอนุญาตให้คุณเข้าถึงพีซี BIOS ของคุณได้อย่างสมบูรณ์ (สมมติว่าคุณมีคอมพิวเตอร์รุ่นใหม่ตั้งแต่ปี 1990 เป็นต้นไป)

สำหรับพีซีใหม่คุณมีหน่วยความจำแฟลชสำหรับเฟิร์มแวร์และคุณมีแบตเตอรี่สำรอง SRAM (ไม่จำเป็นต้องรีเฟรชเหมือนชิป DRAM อยู่ตลอดเวลาโดยใช้เทคโนโลยีเก่า)


0

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

ในแง่ของคำศัพท์ที่เกี่ยวข้องกับระบบปฏิบัติการนั้นจะถูกแฟลชใน ROM ด้วย แต่คราวนี้เป็นความรับผิดชอบของระบบปฏิบัติการที่จะทำการแฟลชเมื่อมีการอัพเดท


0

ผมเชื่อว่าการใช้"ประวัติศาสตร์"มุมมองอาจจะให้ความเข้าใจพื้นฐานของสิ่งเฟิร์มคือ
เริ่มแรกด้วย "hard-ware" เพื่อให้ / สร้างฟังก์ชั่นที่กำหนดเราสามารถใช้หลอดรีเลย์ทรานซิสเตอร์และไอซี คุณจะใช้ส่วนประกอบเหล่านี้จำนวนหนึ่งและคุณจะสร้างอุปกรณ์ที่ใช้งานฟังก์ชั่นที่ต้องการ นี้ได้รับการพิจารณา "ยากเครื่อง" เพราะถ้าคุณต้องการ (หรือจำเป็น) เพื่อเปลี่ยนฟังก์ชั่นที่คุณจะต้องสาย unsolder ซ็อกเก็ต ฯลฯ และนี่ก็เป็น"ยาก"ที่จะทำ ดังนั้นวิธีการใช้ฟังก์ชั่นนี้จึงกลายเป็นที่รู้กันว่าใช้ฮาร์ดแวร์ การใช้ CPU, RAM และรหัสกลายเป็นอีกวิธีหนึ่งในการสร้างฟังก์ชั่นและกลายเป็นที่รู้จักในชื่อ "soft-ware"เพื่อทำการเปลี่ยนแปลงการออกแบบ "อย่างไรก็ตามยังมีความต้องการ (ส่วนใหญ่มาจากผู้ผลิต) เพื่อทำการออกแบบให้เร็วที่สุดเท่าที่จะเป็นไปได้ แต่จะสามารถทำการเปลี่ยนแปลงการออกแบบในนาทีสุดท้ายได้ง่ายและคุ้มค่าที่สุด . การใช้ ROMs ทำให้มีความยืดหยุ่นจนถึงจุด "เรือลำแรก" EEPROMS อนุญาตการเปลี่ยนแปลงแม้หลังจาก "เรือลำแรก" (ในสนาม) รหัสที่จำเป็น / ใช้สำหรับ ROMs และ PROMs นั้นให้ชื่อของ"เฟิร์มแวร์" ."

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