GoGPT Best VPN GoSearch

ไอคอน Fav ของ OnWorks

srec_examples - ออนไลน์ใน Cloud

เรียกใช้ srec_examples ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง srec_examples ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


srec_examples - ตัวอย่างวิธีใช้ SRecord

DESCRIPTION


การขอ srec_cat คำสั่งนั้นทรงพลังมากเนื่องจากความสามารถในการรวมตัวกรองอินพุต
ได้แทบไม่จำกัดวิธี หน้าคู่มือนี้อธิบายบางส่วนของพวกเขา

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

การขอ คำสั่ง . Are เกินไป นาน
หากคุณถูกทิ้งไว้บนระบบปฏิบัติการที่มีขีดจำกัดความยาวบรรทัดคำสั่งสั้น ๆ อย่างไร้เหตุผล
คำสั่งบางคำสั่งที่ตามมาอาจยาวเกินไป คุณสามารถหลีกเลี่ยงผู้พิการนี้ได้โดย
วางบรรทัดคำสั่งของคุณในไฟล์ พูดว่า fred.txtแล้วบอก srec_cat(1) อ่านสิ่งนี้
ไฟล์สำหรับบรรทัดคำสั่งที่เหลือเช่นนี้

srec_cat @fred.txt

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

แน่นอน คุณสามารถอัปเกรดเป็น Linux ได้เสมอ ซึ่งใช้งานน้อยกว่า 27
ปีแล้ว

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

การแปลง ไฟล์ รูปแบบ


สิ่งที่ง่ายที่สุด srec_cat(1) สามารถทำได้คือแปลงจากรูปแบบไฟล์ EPROM หนึ่งไฟล์เป็น
อื่น. โปรดจำไว้ว่า เมื่อคุณอ่านหัวข้อนี้ คุณสามารถทำสิ่งเหล่านี้ได้หลายอย่าง
พร้อมกันในคำสั่งเดียว แยกออกมาทำเป็นเท่านั้น
ง่ายต่อการเข้าใจ

อินเทล ไปยัง โมโตโรล่า
ตัวอย่างที่ง่ายที่สุดอย่างหนึ่งคือการแปลงไฟล์จากรูปแบบฐานสิบหกของ Intel เป็น Motorola S-
รูปแบบบันทึก:

srec_cat intel-file -อินเทล-โอ ไฟล์ srec

โปรดทราบว่าตัวระบุรูปแบบจะตามหลังชื่อของไฟล์ที่อธิบายทันที
เลือกสองรูปแบบที่ SRecord เข้าใจ และสามารถแปลงระหว่างรูปแบบทั้งหมดได้
(ยกเว้นเอาต์พุตแอสเซมเบลอร์, เบสิก, C และ FPGA ที่เป็นแบบเขียนเท่านั้น)

โมโตโรล่า ไปยัง อินเทล
การแปลงเป็นอย่างอื่นนั้นง่ายมาก:

srec_cat ไฟล์ srec -o intel-file -อินเทล

รูปแบบเริ่มต้นคือรูปแบบ Motorola S-Record ดังนั้นจึงไม่จำเป็นต้องระบุภายหลัง
ชื่อไฟล์

ต่าง รูปร่าง of เดียวกัน รูปแบบ
เป็นเรื่องน่าเศร้าที่โปรแกรมเมอร์ EPROM ที่ได้รับการเติมส่วนเสริมบางรายใช้เพียงบางส่วนเท่านั้น
ของข้อกำหนดที่ใช้เพื่อแสดงไฟล์ฐานสิบหก ตัวอย่างเช่น คอมไพเลอร์บางตัว
สร้างข้อมูล Motorola “s19” (นั่นคือบันทึกข้อมูล S1 พร้อมบันทึกการเริ่มต้น S9, 16 บิต
ฟิลด์ที่อยู่) ซึ่งจะใช้ได้ยกเว้นว่าโปรแกรมเมอร์ EPROM บล็อกหัวบางคนยืนยันใน
“s37” ข้อมูล Motorola (นั่นคือบันทึกข้อมูล S3 พร้อมบันทึกการเริ่มต้น S7, ที่อยู่ 32 บิต
ฟิลด์)

เป็นไปได้ที่จะแปลงจากรูปร่าง Motorola หนึ่งไปเป็นอีกรูปร่างหนึ่งโดยใช้ -ที่อยู่-ความยาว
ตัวเลือก:

srec_cat short.srec -o long.srec -address-length=4

คำสั่งนี้ระบุว่าจะใช้ที่อยู่สี่ไบต์ (32 บิต) บนเอาต์พุต

ส่วนนี้ยังใช้กับไฟล์ Intel hex เนื่องจากมีความสามารถในการเลือก
จากความกว้างของที่อยู่ที่หลากหลาย ในการแปลงจากรูปร่างของ Intel ไปเป็นอีกรูปร่างหนึ่งโดยใช้
เดียวกัน -ที่อยู่-ความยาว ตัวเลือก:

srec_cat i32.hex -o i16.hex -address-length=3

คำสั่งนี้ระบุว่าจะใช้ที่อยู่แบบแบ่งกลุ่ม 16 บิต “i20hex” บนเอาต์พุต ความยาวที่อยู่
ของ 4 เป็นค่าเริ่มต้น (“i32hex” การกำหนดแอดเดรสเชิงเส้น 32 บิต) และความยาวของแอดเดรส 2 จะ
ขอที่อยู่ 8 บิต "i16hex"

Line ความยาว
บางครั้งคุณจะพบกับโปรแกรมเมอร์ EPROM ที่อ่อนแอซึ่งรับมือไม่ได้
ด้วยบรรทัดข้อความยาว ๆ พวกเขาคิดว่าจะมีเพียง 46 ตัวอักษรต่อบรรทัดและ
barf เมื่อพวกเขาเห็นความยาวบรรทัดเริ่มต้นที่ srec_cat(1) เขียน (หรือแย่กว่านั้น รับ stack
เขียนลวก ๆ และผิดพลาด)

คำจำกัดความรูปแบบบันทึก Motorola S อนุญาตให้มีเพย์โหลดสูงสุด 255 ไบต์หรือบรรทัดของ
514 อักขระรวมทั้งการสิ้นสุดบรรทัด โปรแกรมเมอร์ EPROM ทั้งหมด น่า มีเพียงพอ
บัฟเฟอร์บรรทัดขนาดใหญ่เพื่อรับมือกับบันทึกขนาดใหญ่นี้ ไม่กี่ทำ

ตัวเลือก -line-length อาจใช้เพื่อระบุความยาวบรรทัดสูงสุด (ไม่รวม
ขึ้นบรรทัดใหม่) ที่จะใช้ในการส่งออก ตัวอย่างเช่น เพย์โหลด 16 ไบต์สำหรับ Motorola hex

srec_cat long.srec -o short.s19 -line‐length=46

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

เอาท์พุต ปิดกั้น ขนาด
นานๆจะเจอโปรแกรมเมอร์ตัวเก่า EPROM ที่ทำไม่ได้
รับมือกับการบันทึกข้อมูลแบบยาว โดยสันนิษฐานว่าจะมีขนาดไม่เกิน 16 ไบต์เท่านั้น
ข้อมูลต่อบันทึกและ barf เมื่อพวกเขาเห็นเพย์โหลด 32 ไบต์เริ่มต้นที่ srec_cat(1)
เขียน (หรือแย่กว่านั้น บัฟเฟอร์ล้นเกินทำให้เดินบนหญ้าสูงที่ขีดข่วนบนของคุณ
EPROM)

คำจำกัดความรูปแบบฐานสิบหกของ Intel อนุญาตให้มีข้อมูลเพย์โหลดสูงสุด 255 ไบต์ต่อบันทึก ทั้งหมด
โปรแกรมเมอร์ EPROM น่า มีบัฟเฟอร์ข้อมูลขนาดใหญ่เพียงพอที่จะจัดการกับบันทึกนี้
ใหญ่. ขอให้โชคดีกับสิ่งนั้น

ตัวเลือก -Output-Block-Size อาจใช้เพื่อระบุขนาดข้อมูลที่บันทึกที่จะใช้ใน
เอาท์พุท ตัวอย่างเช่น Intel hex ที่มีเพย์โหลด 16 ไบต์:

srec_cat long.srec -o short.hex -intel -obs=16

ระวังอย่าใส่ - ออบส์ ตัวเลือกระหว่างชื่อไฟล์ที่ส่งออกและรูปแบบ
ตัวระบุ

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

การขอ -data-only ตัวเลือกคือมือสั้น มีสี่คุณสมบัติซึ่งอาจจะเป็น - ปิดการใช้งาน or
ที่เปิดใช้งาน แยกจากกัน ดู srec_cat(1) man page สำหรับคำอธิบายของ - ปิดการใช้งาน และ
ที่เปิดใช้งาน ตัวเลือก

ตัวอย่างเช่น โปรแกรมเมอร์ EPROM แบบนีแอนเดอร์ทัลของคุณต้องการ Motorola hex พร้อมเร็กคอร์ดส่วนหัว
(S0) แต่ไม่มีบันทึกการนับข้อมูล (S5) ไม่ได้ใช้ -data-only ตัวเลือกมีมัน barf on
บันทึกการนับข้อมูล แต่ใช้ -data-only ตัวเลือกมีไว้บนส่วนหัวที่ขาดหายไป
บันทึก. ใช้ -disable=data-count ตัวเลือกจะปล่อยให้บันทึกส่วนหัวเหมือนเดิมในขณะที่
ระงับการบันทึกการนับข้อมูล

ข้อมูล ส่วนหัว
การขอ srec_cat(1) คำสั่งพยายามส่งผ่านข้อมูลส่วนหัวเสมอไม่เปลี่ยนแปลง เมื่อใดก็ตามที่
พวกเขามีอยู่ มันยังพยายามรักษาไว้เมื่อเปลี่ยนรูปแบบไฟล์จนถึงขีดจำกัด
รูปแบบไฟล์ที่มีความสามารถ

หากไม่มีไฟล์ส่วนหัวและคุณต้องการเพิ่มหรือคุณต้องการแทนที่
เร็กคอร์ดส่วนหัวของไฟล์ที่มีอยู่ ใช้ -หัวข้อ=เชือก ตัวเลือก. คุณจะต้องอ้างอิง
สตริง (เพื่อป้องกันเปลือกจากเชลล์) หากมีช่องว่างหรืออักขระเมตาของเชลล์

การกระทำ เริ่มต้น ที่อยู่จัดส่ง
การขอ srec_cat(1) คำสั่งพยายามส่งผ่านแอดเดรสเริ่มต้นการดำเนินการเสมอ (โดยทั่วไปคือ
เกิดขึ้นที่ส่วนท้ายของไฟล์) เมื่อใดก็ตามที่มีอยู่ พวกมันถูกปรับตาม
ด้วยการบันทึกข้อมูลโดย - ชดเชย กรอง. มันยังพยายามเก็บรักษามันไว้ข้ามไฟล์
รูปแบบการเปลี่ยนแปลงเพื่อจำกัดรูปแบบไฟล์ที่สามารถทำได้

หากไม่มีการบันทึกที่อยู่เริ่มต้นการดำเนินการและคุณต้องการเพิ่มหรือคุณต้องการ
เพื่อแทนที่เรกคอร์ดที่อยู่เริ่มต้นการดำเนินการที่มีอยู่ ให้ใช้ -การดำเนินการ-เริ่มต้น-
ที่อยู่=จำนวน ตัวเลือก

โปรดทราบ: ที่อยู่เริ่มต้นการดำเนินการเป็นแนวคิดที่แตกต่างจากที่อยู่แรกใน
หน่วยความจำของข้อมูลของคุณ คิดว่าเป็นที่อยู่ "goto" ที่มอนิเตอร์จะข้ามไปเมื่อ
โหลดเลขฐานสิบหกเสร็จแล้ว หากคุณต้องการเปลี่ยนตำแหน่งที่ข้อมูลเริ่มต้นในหน่วยความจำ ให้ใช้
- ชดเชย กรอง.

เครื่องประกอบ เช็คซัม
ผู้พัฒนาเฟิร์มแวร์แบบฝังตัวบางคนต้องแบกรับเครื่องมือ Featherbrained ซึ่งผลิต
การตรวจสอบที่ไม่ถูกต้องซึ่งโปรแกรมเมอร์ EPROM รุ่นระมัดระวังจะไม่ยอมรับ

ในการแก้ไขเช็คซัมในไฟล์ ให้ใช้เครื่องหมาย -ละเว้น-checksums ตัวเลือก. ตัวอย่างเช่น:

srec_cat broken.srec -ignore-checksums -o fixed.srec

เช็คซัมใน หัก.srec ถูกแยกวิเคราะห์ (ยังคงอยู่และเกิดข้อผิดพลาดหากไม่มี) แต่เป็น
ไม่ได้ตรวจสอบ ผลลัพท์ที่ได้ แก้ไข srec ไฟล์มีเช็คซัมที่ถูกต้อง NS -ละเว้น-checksums
ตัวเลือกใช้กับอินพุตเท่านั้น

ตัวเลือกนี้อาจใช้กับรูปแบบไฟล์ใดๆ ที่มี checksums รวมทั้ง Intel hex

การค้นพบ ความลึกลับ รูปแบบ
ดู อะไร รูปแบบ Is นี้? ส่วนด้านล่างสำหรับวิธีการค้นพบและแปลง EPROM ลึกลับ
โหลดรูปแบบไฟล์.

ไบนารี่ ไฟล์


เป็นไปได้ที่จะแปลงเป็นและจากไฟล์ไบนารี คุณยังสามารถผสมไฟล์ไบนารีและ
อื่นๆ ในรูปแบบเดียวกัน srec_cat(1) คำสั่ง

การเขียน เลขฐานสอง ไฟล์
วิธีที่ง่ายที่สุดในการอ่านไฟล์ hex และแปลงเป็นไฟล์ไบนารีมีลักษณะดังนี้:

srec_cat fred.hex -o fred.bin -ไบนารี

สิ่งนี้อ่านไฟล์ Motorola hex fred.srec และเขียนถึง เฟรด.บิน ดิบ
ไบนารี่.

โปรดทราบว่าข้อมูลจะถูกวางลงในไฟล์ไบนารีที่ออฟเซ็ตไบต์ที่ระบุโดย
ที่อยู่ในไฟล์ hex หากมีช่องว่างในข้อมูลก็จะเต็มไปด้วยศูนย์
แน่นอนว่านี่เป็นเรื่องปกติกับเอาต์พุตของลิงเกอร์โดยที่โค้ดถูกวางโดยเริ่มต้นที่a
สถานที่เฉพาะในความทรงจำ ตัวอย่างเช่น เมื่อคุณมีภาพที่เริ่มต้นที่ 0x100000
1MB แรกของไฟล์ไบนารีเอาต์พุตจะเป็นศูนย์

คุณสามารถยกเลิกการชดเชยนี้โดยอัตโนมัติโดยใช้คำสั่งเช่น

srec_cat fred.hex -offset − -minimum-addr fred.hex -o fred.bin

คำสั่งดังกล่าวทำงานโดยการชดเชย เฟรด.hex ไฟล์ในหน่วยความจำลดลงอย่างน้อย
ที่อยู่ใน เฟรด.hex ข้อมูลของไฟล์

ดูเพิ่มเติมที่ srec_binary(5) หน้าคนสำหรับรายละเอียดเพิ่มเติม

การอ่าน เลขฐานสอง ไฟล์
วิธีที่ง่ายที่สุดในการอ่านไฟล์ไบนารีและการแปลงจะมีลักษณะดังนี้

srec_cat fred.bin -binary -o fred.srec

นี่อ่านไฟล์ไบนารี เฟรด.บิน และเขียนข้อมูลทั้งหมดกลับออกมาเป็น a
ไฟล์ Motorola S-Record

บ่อยครั้งที่เลขฐานสองนี้ไม่ตรงกับที่คุณต้องการในพื้นที่ที่อยู่ เนื่องจากเป็น
สันนิษฐานว่าอาศัยอยู่ตามที่อยู่ศูนย์ หากคุณต้องการเคลื่อนย้ายไปรอบๆ ให้ใช้ปุ่ม - ชดเชย กรอง.

srec_cat fred.bin -binary -offset 0x10000 -o fred.srec

คุณต้องหลีกเลี่ยงไฟล์ "หลุม" ซึ่งเต็มไปด้วยศูนย์ คุณสามารถใช้ -พืช
ตัวกรอง ของคุณสามารถใช้ the - กรอก กรองหากคุณไม่ทราบว่าข้อมูลอยู่ที่ไหน

srec_cat fred.bin -binary -unfill 0x00 512 -o fred.srec

คำสั่งดังกล่าวจะลบการรันศูนย์ไบต์ที่ยาว 512 ไบต์หรือนานกว่านั้น ถ้าคุณ
ไฟล์มี 1 ไบต์นำหน้า XNUMXGB มันจะช้า มันอาจจะดีกว่าที่จะใช้
dd(1) คำสั่งให้หั่นและลูกเต๋าก่อน

ผนึก ไฟล์ ด้วยกัน


การขอ srec_cat คำสั่งใช้ชื่อจาก UNIX แมว(1) คำสั่ง ซึ่งย่อมาจาก
“catenate” หรือ “เข้าร่วม” NS srec_cat คำสั่งรวมไฟล์โหลด EPROM เข้าด้วยกัน

ทั้งหมด In หนึ่ง
การรวมไฟล์โหลด EPROM เข้าด้วยกันเป็นไฟล์เดียวทำได้ง่ายเพียงแค่ตั้งชื่อไฟล์ให้มาก ๆ
บรรทัดคำสั่งตามที่คุณต้องการ:

srec_cat อินไฟล์1 อินไฟล์2 -o ออกจากไฟล์

ตัวอย่างนี้คือไฟล์ Motorola S-Record ทั้งหมด เนื่องจากเป็นรูปแบบเริ่มต้น คุณสามารถ
มีหลายรูปแบบในคำสั่งเดียวและ srec_cat(1) จะยังคงทำงาน คุณไม่ได้
ต้องส่งออกรูปแบบเดียวกัน:

srec_cat อินไฟล์1 -คลื่นความถี่ อินไฟล์2 -นีดแฮม \
-o ออกจากไฟล์ -ซิกเนติกส์

นี่เป็นรูปแบบโบราณทั้งหมด อย่างไรก็ตาม ไม่ใช่เรื่องแปลกที่จะต้องผสมผสาน Intel
และรูปแบบโมโตโรล่าในโครงการเดียว

กรอง หลังจาก การร่วม
มีบางครั้งที่คุณต้องการรวมข้อมูลสองชุดเข้าด้วยกัน แล้วใช้ตัวกรอง
เพื่อผลลัพธ์ที่เข้าร่วม เมื่อต้องการทำเช่นนี้ คุณใช้วงเล็บ

srec_cat \
'(' \
แฟ้ม -ไม่รวม 0xFFF0 0x10000 \
-สร้าง 0xFFF0 0xFFF8 -ทำซ้ำสตริง 'กล้วย' \
')' \
-b-e-length 0xFFF8 4 \
-b-e-checksum-neg 0xFFFC 4 4 \
-o ออกจากไฟล์

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

การร่วม จบสิ้น
บ่อยครั้งที่ช่วงที่อยู่ในไฟล์โหลด EPROM จะทับซ้อนกัน คุณจะได้รับ
ผิดพลาดหากพวกเขาทำ หากทั้งสองไฟล์เริ่มต้นจากที่อยู่ศูนย์เพราะแต่ละไฟล์เข้าสู่ a
EPROM แยกกัน คุณอาจต้องใช้ตัวกรองออฟเซ็ต:

srec_cat อินไฟล์1 \
อินไฟล์2 - ออฟเซ็ต 0x80000 \
-o ออกจากไฟล์

บางครั้งคุณต้องการให้ทั้งสองไฟล์ติดตามกันอย่างแน่นอน แต่คุณไม่รู้
ชดเชยล่วงหน้า:

srec_cat อินไฟล์1 \
อินไฟล์2 -offset -สูงสุด-addr อินไฟล์1 \
-o ออกจากไฟล์

สังเกตว่าเมื่อก่อนเป็นตัวเลข (0x80000) ตอนนี้มีการคำนวณแล้ว (-สูงสุด-
addr อินไฟล์1). เป็นไปได้ว่าอาจมีการใช้ตัวเลขส่วนใหญ่ (เช่น -minimum‐addr และ
-พิสัย).

การปลูกพืช DIE DATA


เป็นไปได้ที่จะคัดลอกไฟล์โหลด EPROM เลือกที่อยู่ที่จะเก็บไว้และที่อยู่ใน
ทิ้ง.

อะไร ไปยัง เก็บ
กิจกรรมทั่วไปคือการครอบตัดข้อมูลของคุณให้ตรงกับตำแหน่ง EPROM ของคุณ ลิงเกอร์ของคุณอาจเพิ่ม
ขยะอื่นๆ ที่คุณไม่สนใจ เช่น ที่ตำแหน่งแรม ในตัวอย่างนี้
มี EPROM 1MB ที่ขอบเขต 2MB:

srec_cat แฟ้ม -ครอบตัด 0x200000 0x300000 \
-o ออกจากไฟล์

ขอบเขตล่างสำหรับช่วงที่อยู่ทั้งหมดจะรวมอยู่ด้วย ขอบเขตบนนั้นไม่รวมอยู่ด้วย ถ้าคุณ
ลบออก คุณจะได้จำนวนไบต์

ที่อยู่ สาขา
เป็นไปได้ว่าคุณมีโปรแกรมเมอร์ EPROM ที่งี่เง่าและมันเป็นไปไม่ได้ถ้าอิมเมจ EPROM
ไม่ได้เริ่มต้นที่ศูนย์ เพื่อค้นหาว่าอยู่ที่ไหน ทำ เริ่มต้นในหน่วยความจำใช้
srec_info(1) คำสั่ง:

$ srec_info ตัวอย่าง.srec
รูปแบบ: Motorola S-Record
ส่วนหัว: ตัวเชื่อมโยงโซ่เครื่องมือพิเศษเสียงหวือหวา
ที่อยู่เริ่มต้นการดำเนินการ: 0x00200000
ข้อมูล: 0x200000 - 0x32AAEF
$

แทนที่จะฆ่าไฟล์คำสั่ง linker เพียงแค่ออฟเซ็ตที่อยู่:

srec_cat แฟ้ม -crop 0x200000 0x300000 - ออฟเซ็ต −0x200000 \
-o ออกจากไฟล์

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

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

ถ้าทั้งหมดที่คุณต้องการทำคือออฟเซ็ตข้อมูลให้เริ่มจากศูนย์ที่อยู่ นี่อาจเป็น
อัตโนมัติ คุณจึงไม่ต้องรู้ที่อยู่ขั้นต่ำล่วงหน้าโดยใช้ srec_cat's
ความสามารถในการคำนวณบางสิ่งบนบรรทัดคำสั่ง:

srec_cat แฟ้ม -offset − -ขั้นต่ำ-addr แฟ้ม \
-o ออกจากไฟล์

สังเกตช่องว่างด้านใดด้านหนึ่งของเครื่องหมายลบ ซึ่งถือเป็นข้อบังคับ

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

ตัวอย่างเช่น หากคุณต้องการยกเว้นช่วงที่อยู่ที่หมายเลขซีเรียลของ an
อุปกรณ์ฝังตัวถูกเก็บไว้ พูด 0x20 ไบต์ที่ 0x100 คุณจะใช้คำสั่งดังนี้:

srec_cat input.srec - ไม่รวม 0x100 0x120 -o output.srec

การขอ เอาท์พุท.srec ไฟล์จะมีรูในข้อมูลในตำแหน่งที่จำเป็น

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

ไม่ต่อเนื่อง ที่อยู่ ช่วง
ช่วงที่อยู่ไม่จำเป็นต้องเป็นช่วงเดียว คุณสามารถสร้างช่วงที่อยู่โดยใช้
มากกว่าคู่เดียว

srec_cat แฟ้ม -ครอบตัด 0x100 0x200 0x1000 0x1200 \
-o ออกจากไฟล์

ตัวกรองนี้ส่งผลให้ข้อมูลจาก 0x100..0x1FF และข้อมูลจาก 0x1000..0x1200 ผ่าน
ผ่านส่วนที่เหลือจะลดลง สิ่งนี้มีประสิทธิภาพมากกว่าการผูกมัด a -พืช และ
-ไม่รวม กรองเข้าด้วยกัน

MOVING สิ่งของ รอบ


นอกจากนี้ยังสามารถเปลี่ยนที่อยู่ของบันทึกข้อมูลได้ ทั้งไปข้างหน้าและข้างหลัง
นอกจากนี้ยังสามารถจัดเรียงข้อมูลที่บันทึกลงในหน่วยความจำได้อีกด้วย

สาขา ตัวกรอง
การขอ -ออฟเซ็ต=จำนวน ตัวกรองทำงานตามที่อยู่ของเร็กคอร์ด ถ้าตัวเลขเป็นบวก
ที่อยู่ย้ายที่หน่วยความจำสูงขึ้นหลายไบต์ ค่าลบย้ายต่ำกว่า

srec_cat แฟ้ม -crop 0x200000 0x300000 - ออฟเซ็ต −0x200000 \
-o ออกจากไฟล์

ตัวอย่างข้างต้นย้ายบล็อกข้อมูลขนาด 1MB ที่ 0x200000 ลงไปที่ศูนย์ (ค่าออฟเซ็ตคือ
เชิงลบ) และทิ้งข้อมูลที่เหลือ

byte แลกเปลี่ยน
มีบางครั้งที่จำเป็นต้องสลับไบต์ในข้อมูล โดยแปลงระหว่าง big‐
โดยทั่วไปแล้วข้อมูล endian และ little‐endian

srec_cat แฟ้ม -byte-swap 4 -o ออกจากไฟล์

สิ่งนี้จะย้อนกลับไบต์ในค่า 32 บิต (4 ไบต์) ค่าเริ่มต้น หากคุณไม่ระบุความกว้าง
คือการย้อนกลับไบต์ในค่า 16 บิต (2 ไบต์) คุณสามารถใช้ค่าแปลก ๆ ที่คุณ
แบบว่าไม่ต้องยกกำลัง 2 ด้วยซ้ำ บางที 64 บิต (8 ไบต์) อาจมีประโยชน์
วันหนึ่ง.

เลขฐานสอง เอาท์พุต
คุณต้องระวังไฟล์ไบนารีบนเอาต์พุตเพราะรูนั้นเต็มไปด้วยศูนย์
โปรแกรม 100kB ของคุณที่ด้านบนของหน่วยความจำแอดเดรส 32 บิตจะสร้างไฟล์ขนาด 4GB ดู
srec_binary(5) เพื่อทำความเข้าใจและหลีกเลี่ยงปัญหานี้โดยปกติกับ - ชดเชย กรอง.

รุนแรง an ภาพ
หากคุณมีบัสข้อมูล 16 บิต แต่คุณใช้ EPROM 8 บิตสองตัวเพื่อเก็บเฟิร์มแวร์ของคุณ
คุณสามารถสร้างภาพที่คู่และคี่โดยใช้ -แยก กรอง. สมมติว่าคุณ
เฟิร์มแวร์อยู่ใน เฟิร์มแวร์.hex ไฟล์ ใช้สิ่งต่อไปนี้:

srec_cat Firmware.hex -แยก 2 0 -o Firmware.even.hex
srec_cat Firmware.hex -แยก 2 1 -o Firmware.odd.hex

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

เฟิร์มแวร์ srec_cat.hex \
-ออฟเซ็ต −0x10000 -แยก 2 0 \
-ชดเชย 0x10000 -o เฟิร์มแวร์.even.hex
เฟิร์มแวร์ srec_cat.hex \
-ออฟเซ็ต −0x10000 -แยก 2 1 \
-ชดเชย 0x10000 -o เฟิร์มแวร์.odd.hex

สังเกตว่าความสามารถในการใช้ตัวกรองหลายตัวช่วยลดความซับซ้อนของสิ่งที่จะเป็นมากได้อย่างไร
สคริปต์ที่ยาวขึ้น

สตริป
ใช้ครั้งที่สองสำหรับ -แยก ตัวกรองเป็นแถบหน่วยความจำ

คุณไม่จำเป็นต้องแบ่งออกเป็นส่วนกว้างไบต์ คุณสามารถเลือกขนาดอื่นได้ เป็นธรรมดาที่
ต้องการแปลงข้อมูลไวด์ 32 บิตเป็นข้อมูลไวด์ 16 บิตสองชุด

srec_cat firmware.hex - แยก 4 0 2 -o firmware.01.hex
srec_cat firmware.hex - แยก 4 2 2 -o firmware.23.hex

สิ่งนี้ค่อนข้างเข้าใจง่าย แต่คุณสามารถใช้แถบที่กว้างกว่านั้นได้

ในตัวอย่างนี้ ฮาร์ดแวร์ต้องการให้บล็อกขนาด 512 ไบต์สลับกันระหว่าง 4
EPROM การสร้างภาพ 4 ภาพจะทำดังนี้:

srec_cat firmware.hex - แยก 0x800 0x000 0x200 -o firmware.0.hex
srec_cat firmware.hex - แยก 0x800 0x200 0x200 -o firmware.1.hex
srec_cat firmware.hex - แยก 0x800 0x400 0x200 -o firmware.2.hex
srec_cat firmware.hex - แยก 0x800 0x600 0x200 -o firmware.3.hex

ไม่สมมาตร สตริป
ตัวอย่างที่แปลกประหลาดกว่าของการสตริปคือไมโครคอนโทรลเลอร์ Microchip dsPIC33F ที่มี
รูปแบบการจัดเก็บหน่วยความจำแปลก ๆ และสามารถจัดเก็บได้ 3 ไบต์ในที่อยู่ที่ควร
มีเพียง 2 ไบต์ ผลลัพธ์คือไฟล์ hex ที่เติมศูนย์ไบต์บนสุด (little
endian) และที่อยู่ทั้งหมดจะเพิ่มเป็นสองเท่าจากที่อยู่ในชิป นี่คืออัน
ตัวอย่าง:

S1130000000102000405060008090A000C0D0E0098
S1130010101112001415160018191A001C1D1E00C8
S1130020202122002425260028292A002C2D2E00F8
S1130030303132003435360038393A003C3D3E0028

ในการกำจัดช่องว่างภายใน 00 ไบต์ เหลือเพียง 3/4 ไบต์ที่มีนัยสำคัญ คุณยังใช้
ตัวกรองแยกพร้อมเพิ่มเติม ความกว้าง อาร์กิวเมนต์เช่นนี้:

ตัวอย่าง srec_cat.srec -split 4 0 3 -o no_dross.srec

ส่งผลให้ไฟล์ที่มีการขยายช่องว่างภายใน 00 ไบต์ออก ดูเหมือนว่านี้:

S113000000010204050608090A0C0D0E1011121451
S1130010151618191A1C1D1E2021222425262829EC
S11300202A2C2D2E30313234353638393A3C3D3E87

สังเกตว่าที่อยู่มีขนาด 3/4 เช่นกัน คุณสามารถย้อนกลับได้โดยใช้
-ไม่แยก และ -เติม=0 ฟิลเตอร์

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

srec_cat -o เฟิร์มแวร์.hex \
Firmware.even.hex - ไม่แยก 2 0 \
Firmware.odd.hex - ไม่แยก 2 1

ตัวอย่างข้างต้นจะย้อนกลับตัวอย่างบัสข้อมูล 16 บิตก่อนหน้า โดยทั่วไป คุณแยกออก
ด้วยพารามิเตอร์เดียวกับที่คุณแบ่งด้วย

การกรอก DIE ว่าง


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

การขอ ใส่ ตัวกรอง
เป็นไปได้ที่จะเติมช่องว่างที่ข้อมูลของคุณไม่ได้โกหก ตัวอย่างที่ง่ายที่สุดของ
สิ่งนี้จะเติม EPROM ทั้งหมด:

srec_cat แฟ้ม - เติม 0x00 0x200000 0x300000 -o ออกจากไฟล์

ตัวอย่างนี้เติมหลุม (ถ้ามี) ด้วยศูนย์ คุณต้องระบุช่วง - ด้วย a
พื้นที่แอดเดรส 32 บิต เติมทุกอย่างที่สร้าง ใหญ่ โหลดไฟล์.

หากคุณต้องการเติมช่องว่างในข้อมูลของคุณเท่านั้น และไม่ต้องการเติม EPROM ทั้งหมด
ลอง:

srec_cat แฟ้ม - เติม 0x00 - เกิน แฟ้ม -o ออกจากไฟล์

ตัวอย่างนี้แสดงให้เห็นความจริงที่ว่าไม่ว่าช่วงที่อยู่จะระบุไว้ที่ใด
-เกิน และ -ภายใน อาจใช้ตัวเลือก

ไม่บรรจุ ช่องว่าง
เป็นเรื่องปกติที่จะต้อง "ยกเลิกการเติม" ภาพ EPROM หลังจากที่คุณอ่านจากชิป โดยปกติ,
มันจะมีทุกหลุมที่เต็มไปด้วย 0xFF (พื้นที่ของ EPROM ที่คุณไม่ได้โปรแกรมแสดง
เป็น 0xFF เมื่อคุณอ่านกลับ)

ในการกำจัด 0xFF ไบต์ทั้งหมดในข้อมูล ให้ใช้ตัวกรองนี้:

srec_cat แฟ้ม -ยกเลิกการเติม 0xFF -o ออกจากไฟล์

สิ่งนี้จะกำจัด ทั้งหมด ไบต์ 0xFF รวมถึงไบต์ที่คุณต้องการจริงๆ
มีสองวิธีในการจัดการกับสิ่งนี้ ขั้นแรก คุณสามารถระบุความยาวขั้นต่ำของการวิ่งเป็น
ยกเลิกการกรอก:

srec_cat แฟ้ม -ยกเลิกการเติม 0xFF 5 -o ออกจากไฟล์

สิ่งนี้บอกว่าการวิ่ง 1xFF 4 ถึง 0 ไบต์นั้นใช้ได้ และควรสร้างรูเท่านั้น
สำหรับการรันตั้งแต่ 5 ไบต์ขึ้นไป 0xFF ไบต์ติดต่อกัน วิธีที่สองคือการเติมใหม่บน
ช่องว่างระหว่างกลาง:

srec_cat ออกจากไฟล์ -เติม 0xFF -over ออกจากไฟล์ \
-o ไฟล์เอาท์พุต2

วิธีที่คุณเลือกขึ้นอยู่กับความต้องการของคุณและรูปร่างของข้อมูลใน EPROM ของคุณ
คุณอาจต้องรวมเทคนิคทั้งสองเข้าด้วยกัน

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

srec_cat แฟ้ม -เติม 0x0A \
-ภายใน แฟ้ม -range-padding 2 \
-o ออกจากไฟล์

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

ใส่ สีสดสวย ลิขสิทธิ์
เป็นไปได้ที่จะเติม EPROM ส่วนที่ไม่ได้ใช้ของคุณด้วยข้อความลิขสิทธิ์ซ้ำ
ใครก็ตามที่พยายามทำวิศวกรรมย้อนกลับ EPROM ของคุณจะเห็นประกาศเกี่ยวกับลิขสิทธิ์ใน
ตัวแก้ไขฐานสิบหกของพวกเขา

ทำได้โดยใช้แหล่งอินพุตสองแหล่ง แหล่งหนึ่งจากไฟล์ข้อมูล และอีกแหล่งคือ
สร้างได้ทันที

srec_cat แฟ้ม \
-สร้าง '(' 0 0x100000 -ลบ -ภายใน แฟ้ม ')' \
-repeat-string 'ลิขสิทธิ์ (C) 1812 ไชคอฟสกี ' \
-o ออกจากไฟล์

สังเกตช่วงที่อยู่สำหรับการสร้างข้อมูล: ใช้ช่วงที่อยู่ของคุณ
EPROM ในกรณีนี้ 1MB เริ่มต้นจาก 0 และลบออกจากช่วงที่อยู่ที่ใช้โดย
ไฟล์อินพุต

หากคุณต้องการเขียนสคริปต์นี้ด้วยปีปัจจุบัน (เนื่องจากปี 1812 ค่อนข้างล้าสมัย) ให้ใช้
ความสามารถในการทดแทนเอาต์พุตของเชลล์ (เครื่องหมายย้อนกลับ):

srec_cat แฟ้ม \
-สร้าง '(' 0 0x100000 -ลบ -ภายใน แฟ้ม ')' \
-repeat-string "ลิขสิทธิ์ (C) `วันที่ +%Y` ไชคอฟสกี" \
-o ออกจากไฟล์

สตริงที่ระบุถูกทำซ้ำซ้ำแล้วซ้ำอีกจนกว่าจะเต็มทุกรู

ทำให้สับสน สีสดสวย สัญญาณรบกวน
บางครั้งคุณต้องการเติมสัญญาณรบกวนภาพ EPROM ของคุณเพื่อปกปิดว่าข้อมูลจริงอยู่ที่ไหน
หยุดและเริ่ม คุณสามารถทำได้ด้วย -สุ่ม-เติม กรอง.

srec_cat แฟ้ม -สุ่มเติม 0x200000 0x300000 \
-o ออกจากไฟล์

มันทำงานเหมือนกับ -เติม กรองแต่ใช้ตัวเลขสุ่มแทนไบต์คงที่
มูลค่า

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

srec_cat แฟ้ม \
-เครื่องกำเนิดไฟฟ้า '(' 0x200000 0x300000 -ลบ -ภายใน แฟ้ม ')' \
-ทำซ้ำ-ข้อมูล 0x1B 0x08 \
-o ออกจากไฟล์

สังเกตว่าช่วงที่อยู่ของเครื่องกำเนิดไฟฟ้าจะหลีกเลี่ยงช่วงที่อยู่ที่ถูกครอบครองโดย . อีกครั้งได้อย่างไร
แฟ้มข้อมูล คุณต้องทำให้ endian-ness ถูกต้องด้วยตัวคุณเอง

การแทรก คงที่ DATA


ในบางครั้ง คุณจะต้องการแทรกข้อมูลคงที่ หรือข้อมูลที่ . ของคุณไม่ได้สร้างขึ้น
คอมไพเลอร์หรือแอสเซมเบลอร์ลงในอิมเมจการโหลด EPROM ของคุณ

เลขฐานสอง วิธี ตามตัวอักษร
วิธีง่ายๆ วิธีหนึ่งคือการมีข้อมูลที่ต้องการในไฟล์ ในการแทรกไฟล์ของ
เนื้อหาตามตัวอักษรโดยไม่มีการตีความรูปแบบ ใช้ ไบนารี รูปแบบอินพุต:

srec_cat แฟ้ม -ไบนารี -o ออกจากไฟล์

อาจจำเป็นต้องใช้ an ชดเชย ตัวกรองเพื่อย้ายข้อมูลไปยังตำแหน่งที่คุณ
ต้องการภายในภาพจริง ๆ :

srec_cat แฟ้ม -ไบนารี -ออฟเซ็ต 0x1234 -o ออกจากไฟล์

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

วันที่ | srec_cat - -bin -offset 0xFFE3 -o ออกจากไฟล์

ชื่อไฟล์พิเศษ “-” หมายถึงการอ่านจากอินพุตมาตรฐาน ผลลัพธ์ของ ข้อมูล
คำสั่งมีความยาว 29 อักขระเสมอ และออฟเซ็ตที่แสดงจะวางไว้ที่ด้านบนสุดของ a
อิมเมจ EPROM 64KB

การทำซ้ำ เคย
การขอ ใส่ สีสดสวย ลิขสิทธิ์ ส่วนด้านบนแสดงวิธีการทำซ้ำสตริงซ้ำแล้วซ้ำอีก เรา
สามารถใช้การทำซ้ำครั้งเดียวเพื่อแทรกสตริงเพียงครั้งเดียว

srec_cat -generate 0xFFE3 0x10000 -repeat-string "`date`" \
-o ออกจากไฟล์

สังเกตว่าช่วงที่อยู่สำหรับการสร้างข้อมูลตรงกับความยาวของ
ข้อมูล(1) ขนาดเอาต์พุต คุณสามารถเพิ่มไฟล์อินพุตของคุณไปที่ด้านบนได้แน่นอน srec_cat(1)
คำสั่งเพื่อจัดหมวดหมู่อิมเมจ EPROM ของคุณพร้อมกับวันที่และเวลา

แทรก A นาน
ความเป็นไปได้อีกประการหนึ่งคือการเพิ่มหมายเลขคอมมิต Subversion ให้กับอิมเมจ EPROM ของคุณ ในเรื่องนี้
ตัวอย่าง เรากำลังแทรกค่า little-endian ขนาด 4 ไบต์ที่ที่อยู่ 0x0008 NS
จำนวนการโค่นล้มอยู่ใน $รุ่น ตัวแปรเชลล์ในตัวอย่างนี้:

srec_cat -generate 0x0008 0x000C -l-e-constant $ รุ่น 4 \
แฟ้ม -ไม่รวม 0x0008 0x000C \
-o ออกจากไฟล์

โปรดทราบว่าเราใช้ตัวกรองเพื่อให้แน่ใจว่ามีรูในอินพุตที่มีหมายเลขเวอร์ชัน
ไป เผื่อว่า linker จะใส่อะไรลงไป

DATA เกี่ยวกับเรา DIE DATA


เป็นไปได้ที่จะเพิ่มข้อมูลที่หลากหลายเกี่ยวกับข้อมูลไปยังผลลัพธ์

เช็คซัม
การขอ -big-endian-checksum-negative อาจใช้ตัวกรองเพื่อรวมข้อมูลแล้วแทรก
ลบของผลรวมลงในข้อมูล สิ่งนี้มีผลรวมเป็นศูนย์เมื่อ
เช็คซัมเองถูกรวมเข้าด้วยกัน โดยให้ความกว้างรวมตรงกับความกว้างของค่าที่แทรก

srec_cat แฟ้ม \
-ครอบตัด 0 0xFFFFFC \
-สุ่มเติม 0 0xFFFFFC \
-b-e-checksum-neg 0xFFFFFC 4 4 \
-o ออกจากไฟล์

ในตัวอย่างนี้ เรามี EPROM ในหน่วยความจำเมกะไบต์ที่ต่ำที่สุด ตัวกรอง -พืชผล
ทำให้แน่ใจว่าเรากำลังรวมข้อมูลภายใน EPROM เท่านั้น ไม่ใช่ที่อื่น NS
-random-fill filter เติมรูที่เหลืออยู่ในข้อมูลด้วยค่าสุ่ม ในที่สุด -b-
ตัวกรอง e-checksum-neg แทรกการตรวจสอบ 32 บิต (4 ไบต์) ในรูปแบบ big-endian ในรูปแบบสุดท้าย
4 ไบต์ของอิมเมจ EPROM โดยธรรมชาติแล้ว มีเวอร์ชัน endian เล็กน้อยของตัวกรองนี้เช่น
ดี.

รหัสที่ฝังตัวของคุณสามารถตรวจสอบ EPROM ได้โดยใช้รหัส C ที่คล้ายกับต่อไปนี้:

ยาวที่ไม่ได้ลงนาม *begin = (ยาวที่ไม่ได้ลงนาม *)0;
ยาวที่ไม่ได้ลงนาม * end = (ยาวที่ไม่ได้ลงนาม *)0x100000;
ผลรวมยาวที่ไม่ได้ลงนาม = 0;
ในขณะที่ (เริ่มต้น < สิ้นสุด)
ผลรวม += *เริ่มต้น++;
ถ้า (ผลรวม != 0)
{
อุ่ย
}

การขอ -big-endian-checksum-bitnot ตัวกรองจะคล้ายกัน ยกเว้นว่าผลรวมของเช็คซัม
ควรให้ค่า all-one-bits (-1) ตัวอย่างเช่น การใช้กางเกงขาสั้นแทนที่จะเป็นแบบยาว:

srec_cat แฟ้ม \
-ครอบตัด 0 0xFFFFFE \
- เติม 0xCC 0x00000 0xFFFFFE \
-b-e-checksum-neg 0xFFFFFE 2 2 \
-o ออกจากไฟล์

สมมติว่าคุณเลือกตัวกรอง endian-ness ที่ถูกต้อง โค้ดที่ฝังตัวของคุณจะสามารถตรวจสอบ EPROM . ได้
โดยใช้รหัส C คล้ายกับต่อไปนี้:

สั้นที่ไม่ได้ลงนาม *เริ่มต้น = (สั้นที่ไม่ได้ลงนาม *) 0;
สั้นที่ไม่ได้ลงนาม *end = (สั้นที่ไม่ได้ลงนาม *)0x100000;
ผลรวมสั้นที่ไม่ได้ลงนาม = 0;
ในขณะที่ (เริ่มต้น < สิ้นสุด)
ผลรวม += *เริ่มต้น++;
ถ้า (ผลรวม != 0xFFFF)
{
อุ่ย
}

นอกจากนี้ยังมี -b-e-checksum-positive ตัวกรอง และตัวกรอง little-endian ที่ตรงกัน ซึ่ง
แทรกผลรวมอย่างง่าย และซึ่งจะตรวจสอบในภาษา C โดยใช้การทดสอบความเท่าเทียมกัน

srec_cat แฟ้ม \
-ครอบตัด 0 0xFFFFFF \
- เติม 0x00 0x00000 0xFFFFFF \
-b-e-checksum-neg 0xFFFFFF 1 1 \
-o ออกจากไฟล์

สมมติว่าคุณเลือกตัวกรอง endian-ness ที่ถูกต้อง โค้ดที่ฝังตัวของคุณจะสามารถตรวจสอบ EPROM . ได้
โดยใช้รหัส C คล้ายกับต่อไปนี้:

ถ่านที่ไม่ได้ลงนาม *เริ่มต้น = (ถ่านที่ไม่ได้ลงชื่อ *)0;
ถ่านที่ไม่ได้ลงนาม * end = (ถ่านที่ไม่ได้ลงนาม *) 0xFFFFF;
ผลรวมถ่านที่ไม่ได้ลงชื่อ = 0;
ในขณะที่ (เริ่มต้น < สิ้นสุด)
ผลรวม += *เริ่มต้น++;
ถ้า (sum != *end)
{
อุ่ย
}

ในกรณี 8 บิต ไม่สำคัญว่าคุณจะใช้ big-endian หรือ little-endian
กรอง.

รวดเร็ว Hex-Dump
คุณสามารถดูเช็คซัมของข้อมูลได้โดยใช้รูปแบบเอาต์พุต "hex-dump" นี่คือ
มีประโยชน์สำหรับการดูค่าที่คำนวณได้ หรือสำหรับการดีบัก an srec_cat(1) สั่งก่อน
ทำให้เป็นอมตะในสคริปต์

srec_cat แฟ้ม \
-ครอบตัด 0 0x10000 \
- เติม 0xFF 0x0000 0x10000 \
-b-e-checksum-neg 0x10000 4 \
-ครอบตัด 0x10000 0x10004 \
-o - -hex-dump

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

Cyclic ความฟุ่มเฟือย การตรวจสอบ
เช็คซัมการเติมอย่างง่ายมีข้อ จำกัด ทางทฤษฎีหลายประการที่เกี่ยวข้องกับข้อผิดพลาด
พวกเขาสามารถและไม่สามารถตรวจจับได้ วิธีการ CRC มีปัญหาน้อยกว่า

srec_cat แฟ้ม \
-ครอบตัด 0 0xFFFFFC \
- เติม 0x00 0x00000 0xFFFFFC \
-b-e-crc32 0xFFFFFC \
-o ออกจากไฟล์

ในตัวอย่างข้างต้น เรามี EPROM ในหน่วยความจำเมกะไบต์ที่ต่ำที่สุด NS -พืช กรอง
ทำให้แน่ใจว่าเรากำลังรวมข้อมูลภายใน EPROM เท่านั้น ไม่ใช่ที่อื่น NS -เติม
ตัวกรองเติมรูที่เหลืออยู่ในข้อมูล ในที่สุด -b-e-checksum-neg แผ่นกรอง a
ผลรวมการตรวจสอบ 32 บิต (4 ไบต์) ในรูปแบบ big-endian ใน 4 ไบต์สุดท้ายของอิมเมจ EPROM
แน่นอนว่ามีตัวกรอง endian เล็กน้อยด้วยเช่นกัน

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

นอกจากนี้ยังมี CRC 16 บิต

srec_cat แฟ้ม \
-ครอบตัด 0 0xFFFFFE \
- เติม 0x00 0x00000 0xFFFFFE \
-b-e-crc16 0xFFFFFE \
-o ออกจากไฟล์

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

คุณสามารถดู CRC ของข้อมูลของคุณได้โดยใช้รูปแบบเอาต์พุต "hex-dump"

srec_cat แฟ้ม \
-ครอบตัด 0 0x10000 \
- เติม 0xFF 0x0000 0x10000 \
-b-e-crc16 0x10000 \
-ครอบตัด 0x10000 0x10002 \
-o - -hex-dump

คำสั่งนี้อ่านในไฟล์ คำนวณ CRC ของข้อมูล และวาง CRC ไว้ที่
0x10000 ครอบตัดผลลัพธ์ให้มีเฉพาะ CRC แล้วพิมพ์เช็คซัมบน
เอาต์พุตมาตรฐานในรูปแบบดัมพ์เลขฐานสิบหกแบบคลาสสิก

ที่ไหน Is My ข้อมูล?
มีคุณสมบัติหลายอย่างของภาพ EPROM ของคุณที่คุณอาจต้องการแทรกลงใน
ข้อมูล

srec_cat แฟ้ม -b-e-ขั้นต่ำ 0xFFFE 2 -o ออกจากไฟล์

ตัวอย่างข้างต้นแทรกที่อยู่ขั้นต่ำของข้อมูล (ต่ำ น้ำ) ลงในข้อมูล เช่น
สองไบต์ในลำดับ big-endian ที่ที่อยู่ 0xFFFE ซึ่งรวมถึงค่าต่ำสุดด้วย ถ้า
ข้อมูลมีไบต์อยู่แล้วในที่อยู่ที่กำหนด คุณต้องใช้ตัวกรองการยกเว้น
จำนวนไบต์เริ่มต้นเป็น 4

นอกจากนี้ยังมี -l-e-ขั้นต่ำ ตัวกรองสำหรับการแทรกค่า little-endian และอีกสองค่า
ฟิลเตอร์ที่เรียกว่า -b-e-exclusive-ขั้นต่ำ และ -l-e-exclusive-ขั้นต่ำ ที่ไม่รวมถึง
ขั้นต่ำในการคำนวณที่อยู่ข้อมูลขั้นต่ำ

srec_cat แฟ้ม -b-e-สูงสุด 0xFFFFFC 4 -o ออกจากไฟล์

ตัวอย่างข้างต้นแทรกที่อยู่สูงสุดของข้อมูล (สูง น้ำ + 1, เหมือนกับ
ช่วงที่อยู่) ลงในข้อมูลเป็นสี่ไบต์ในลำดับ big-endian ที่ที่อยู่ 0xFFFFFC
ซึ่งรวมถึงค่าสูงสุดเองด้วย หากข้อมูลมีไบต์ที่กำหนดอยู่แล้ว
ที่อยู่ คุณต้องใช้ an -ไม่รวม กรอง. จำนวนไบต์เริ่มต้นเป็น 4

นอกจากนี้ยังมี -l-e-สูงสุด ตัวกรองสำหรับการแทรกค่า little-endian และอีกสองค่า
ฟิลเตอร์ที่เรียกว่า -b-e-exclusive-สูงสุด และ -l-e-exclusive-สูงสุด ที่ไม่รวมถึง
สูงสุดในการคำนวณที่อยู่ข้อมูลสูงสุด

srec_cat แฟ้ม -b-e-length 0xFFFFFC 4 -o ออกจากไฟล์

ตัวอย่างข้างต้นแทรกความยาวของข้อมูล (สูง น้ำ +1 − ต่ำ น้ำ) ลงใน
data เป็นสี่ไบต์ในลำดับ big-endian ที่ที่อยู่ 0xFFFFFC รวมถึงความยาว
ตัวเอง. หากข้อมูลมีไบต์ที่ตำแหน่งความยาวอยู่แล้ว คุณต้องใช้ an
-ไม่รวม กรอง. จำนวนไบต์เริ่มต้นเป็น 4

นอกจากนี้ยังมี -l-e-length ตัวกรองสำหรับใส่ความยาว little‐endian และ -เป็น-
ความยาวพิเศษ และ -l-e-exclusive-length ฟิลเตอร์ที่ไม่รวมความยาวเอง
ในการคำนวณ

อะไร รูปแบบ Is นี้?
คุณสามารถรับข้อมูลต่างๆ เกี่ยวกับไฟล์โหลด EPROM ได้โดยใช้ปุ่ม srec_info(1)
สั่งการ. ตัวอย่างเช่น:

$ srec_info ตัวอย่าง.srec
รูปแบบ: Motorola S-Record
หัวข้อ: "http://srecord.sourceforge.net/"
ที่อยู่เริ่มต้นการดำเนินการ: 00000000
ข้อมูล: 0000 - 0122
0456 - 0FFF
$

ตัวอย่างนี้แสดงว่าไฟล์นั้นเป็น Motorola S-Record ข้อความในส่วนหัวของไฟล์คือ
พิมพ์พร้อมกับที่อยู่เริ่มต้นการดำเนินการ ส่วนสุดท้ายแสดงที่อยู่
ช่วงที่มีข้อมูล (ขอบเขตบนของแต่ละช่วงย่อยคือ inรวม มากกว่า
exแบบฟอร์มรวมที่ใช้ในบรรทัดคำสั่ง

$ srec_info บาง-แปลก-file.hex - เดา
รูปแบบ: Signetics
ข้อมูล: 0000 - 0122
0456 - 0FFF
$

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

หลิงหลิง DIE DATA


สามารถเปลี่ยนค่าของไบต์ข้อมูลได้หลายวิธี

srec_cat แฟ้ม -และ 0xF0 -o ออกจากไฟล์

ตัวอย่างข้างต้นทำงานแบบบิตและไบต์ข้อมูลด้วยมาสก์ 0xF0 NS
ที่อยู่ของบันทึกจะไม่เปลี่ยนแปลง ฉันไม่สามารถคิดที่จะใช้ตัวกรองนี้ได้จริงๆ

srec_cat แฟ้ม -หรือ 0x0F -o ออกจากไฟล์

ตัวอย่างข้างต้นดำเนินการ OR ที่ชาญฉลาดของไบต์ข้อมูลด้วยบิต 0x0F NS
ที่อยู่ของบันทึกจะไม่เปลี่ยนแปลง ฉันไม่สามารถคิดที่จะใช้ตัวกรองนี้ได้จริงๆ

srec_cat แฟ้ม -xor 0xA5 -o ออกจากไฟล์

ตัวอย่างข้างต้นดำเนินการ OR แบบพิเศษเฉพาะบิตของข้อมูลไบต์ด้วยบิต 0xA5
ที่อยู่ของบันทึกไม่เปลี่ยนแปลง คุณสามารถใช้สิ่งนี้เพื่อทำให้เนื้อหาของ .สับสน
EPROM ของคุณ

srec_cat แฟ้ม -ไม่ -o ออกจากไฟล์

ตัวอย่างข้างต้นทำงานในระดับบิตไม่ใช่ของไบต์ข้อมูล ที่อยู่ของบันทึกคือ
ไม่เปลี่ยนแปลง ความปลอดภัยจากความมืดมน?

ลิขสิทธิ์


srec_cat 1.58 รุ่น
ลิขสิทธิ์ (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011 ปีเตอร์ มิลเลอร์

การขอ srec_cat โปรแกรมมาพร้อมกับการรับประกันอย่างไม่มีเงื่อนไข สำหรับรายละเอียดใช้ 'srec_cat
-รุ่น ใบอนุญาตประกอบธุรกิจ' สั่งการ. นี่เป็นซอฟต์แวร์ฟรีและคุณสามารถแจกจ่ายซ้ำได้
ภายใต้เงื่อนไขบางประการ สำหรับรายละเอียดใช้ 'srec_cat -รุ่น ใบอนุญาตประกอบธุรกิจ' สั่งการ.

ใช้ srec_examples ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad




×
โฆษณา
❤️ช้อป จอง หรือซื้อที่นี่โดยไม่เสียค่าใช้จ่าย ช่วยให้บริการต่างๆ ฟรี