สารบัญ:

Orange PI HowTo: รวบรวมเครื่องมือ Sunxi สำหรับ Windows ภายใต้ Windows: 14 ขั้นตอน (พร้อมรูปภาพ)
Orange PI HowTo: รวบรวมเครื่องมือ Sunxi สำหรับ Windows ภายใต้ Windows: 14 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Orange PI HowTo: รวบรวมเครื่องมือ Sunxi สำหรับ Windows ภายใต้ Windows: 14 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Orange PI HowTo: รวบรวมเครื่องมือ Sunxi สำหรับ Windows ภายใต้ Windows: 14 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Orange Pi Zero 2024, กรกฎาคม
Anonim
Orange PI HowTo: รวบรวมเครื่องมือ Sunxi สำหรับ Windows ภายใต้ Windows
Orange PI HowTo: รวบรวมเครื่องมือ Sunxi สำหรับ Windows ภายใต้ Windows

ข้อกำหนดเบื้องต้น:

คุณจะต้องการ

  1. คอมพิวเตอร์ (เดสก์ท็อป) ที่ใช้ Windows
  2. การเชื่อมต่ออินเทอร์เน็ต
  3. บอร์ด Orange PI

สุดท้ายเป็นทางเลือก แต่ฉันแน่ใจว่า คุณมีอยู่แล้ว มิฉะนั้นคุณจะไม่อ่านคำแนะนำนี้

เมื่อคุณซื้อคอมพิวเตอร์บอร์ดเดี่ยว Orange PI จะเหลือเพียงเศษโลหะจนกว่าจะกำหนดค่าอย่างเหมาะสม และไฟล์การกำหนดค่าหลัก: "script.bin" เป็นคีย์แรกที่ทำให้มันมีชีวิต ไฟล์นี้อยู่ในพาร์ติชันสำหรับเริ่มระบบของการ์ด SD ที่สามารถบู๊ตได้ของคุณ และโชคดีสำหรับเรา ในการแจกแจง Linux ส่วนใหญ่จากเว็บไซต์ทางการ (https://www.orangepi.org/downloadresources/) พาร์ติชันนี้คือ FAT32 และคอมพิวเตอร์ Windows ทุกเครื่องสามารถเห็นได้ง่าย มันทำให้สิ่งต่าง ๆ ง่ายขึ้นจริง ๆ เนื่องจากยังไม่มีวิธีที่เชื่อถือได้ในการเขียนลงในพาร์ติชัน Linux ext2 จากภายใต้ Windows

โชคร้ายสำหรับเรา ไฟล์การกำหนดค่า script.bin มีรูปแบบไบนารีที่ไม่เป็นมิตรกับการแก้ไขโดยมนุษย์ เราต้องการเครื่องมือซอฟต์แวร์บางประเภทเพื่อถอดรหัสและเข้ารหัสลับหลังการแก้ไขที่จำเป็น และชุดเครื่องมือดังกล่าวก็มีอยู่จริง มันเป็น SUNXI-TOOLS ที่น่าอับอาย แมลงวันในครีมคือว่ามันมีวัตถุประสงค์เพื่อให้ทำงานภายใต้ Linux และเราต้องเก็บเครื่อง Linux เฉพาะไว้เพื่อใช้เครื่องมือ sunxi เท่านั้นหรือหาวิธีรวบรวมสำหรับ windows

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

ขั้นตอนที่ 1: ดาวน์โหลด Sunxi-tools

ดาวน์โหลด Sunxi-tools
ดาวน์โหลด Sunxi-tools
ดาวน์โหลด Sunxi-tools
ดาวน์โหลด Sunxi-tools

รับซอร์สโค้ด sunxi-tools เวอร์ชันล่าสุด (หรือจำเป็น) ไปที่ URL: https://github.com/linux-sunxi/sunxi-tools/releases และเลือกดาวน์โหลดเป็นไฟล์ zip

ขั้นตอนที่ 2: เปิดเครื่องรูดซอร์สโค้ด

เปิดเครื่องรูดซอร์สโค้ด
เปิดเครื่องรูดซอร์สโค้ด

เมื่อการดาวน์โหลดเสร็จสิ้น ให้เปิดเครื่องรูดซอร์สโค้ดไปยังโฟลเดอร์ที่คุณเลือก (ต่อไปฉันจะถือว่าโฟลเดอร์นี้คือ c:\sunxitools\ ดังนั้นแทนที่เส้นทางนี้ด้วยเส้นทางของคุณเอง)

ขั้นตอนที่ 3: ดาวน์โหลดรหัส::blocks

ดาวน์โหลดรหัส::บล็อก
ดาวน์โหลดรหัส::บล็อก

หากคุณมีสำเนาคอมไพเลอร์ c ++ ที่ทำงานอยู่สำหรับ windows ที่ติดตั้งไว้ และถ้าคุณรู้วิธีใช้งาน คุณอาจไปยังขั้นตอนที่ 3 ได้โดยตรง คนอื่นๆ ควรได้รับคอมไพเลอร์ c++ และเชลล์ (IDE) ที่เหมาะสมเพื่อใช้งานอย่างสะดวกสบาย ตัวเลือกของฉันคือ code::blocks สำหรับ Windows พร้อมกับชุดเครื่องมือ MinGW ที่ติดตั้งไว้ล่วงหน้า คุณสามารถรับได้จากที่นี่:https://sourceforge.net/…/codeblocks-16.01mingw-setup.exe/download

ดาวน์โหลดและติดตั้ง

ขั้นตอนที่ 4: ทดสอบ IDE ของคุณ

ทดสอบ IDE ของคุณ
ทดสอบ IDE ของคุณ

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

ขั้นตอนที่ 5: ทำการทดสอบให้เสร็จ

สอบเสร็จ
สอบเสร็จ

จากนั้นคลิกสามเหลี่ยมสีเขียวที่แผงด้านบนของ IDE หรือใช้จุดเมนู Build->Run หากทุกอย่างเรียบร้อยดี คุณควรเห็นข้อความจากแอปพลิเคชัน "สวัสดีชาวโลก" ที่สร้างอัตโนมัติของคุณในหน้าต่าง "DOS" สีดำ

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

ขั้นตอนที่ 6: สร้างโครงการใหม่

สร้างโครงการใหม่
สร้างโครงการใหม่
สร้างโครงการใหม่
สร้างโครงการใหม่
สร้างโครงการใหม่
สร้างโครงการใหม่
สร้างโครงการใหม่
สร้างโครงการใหม่

ตอนนี้ คุณควรมีชุดเครื่องมือของโปรแกรมเมอร์ C/C++ และซอร์สโค้ดเครื่องมือ sunxi ที่คลายแพ็กแล้วในโฟลเดอร์ c:\sunxitools\ บนคอมพิวเตอร์ของคุณ ถึงเวลารวบรวมโครงการ สร้างโครงการใหม่ใน Your IDE เลือกโปรเจ็กต์ C ธรรมดา (ไม่ใช่ c++) ของประเภท "แอปพลิเคชันคอนโซล"

ตรวจสอบให้แน่ใจว่าคุณกำลังสร้างโครงการในโฟลเดอร์ c:\sunxitools\ และไม่ใช่ในที่อื่น (EG codeblocks มักจะสร้างโฟลเดอร์ย่อยที่มีชื่อเดียวกันกับโปรเจ็กต์ ดังนั้นหากคุณตั้งชื่อโปรเจ็กต์ของคุณแล้ว ให้พูดว่า "test" แล้วลองวางไว้ใน c:\sunxitools\ โปรเจ็กต์ของคุณอาจหายไป ไปที่ c:\sunxitools\test\ หากคุณไม่ใส่ใจเพียงพอ) Sunxi-tools มียูทิลิตี้หลายอย่าง แต่สำหรับจุดประสงค์ของเรา เราจะต้องมีเพียงหนึ่งยูทิลิตี้: ยูทิลิตี้ที่เรียกว่า "fexc"

ขั้นตอนที่ 7: เพิ่มไฟล์ใน Project

เพิ่มไฟล์ใน Project
เพิ่มไฟล์ใน Project

ยูทิลิตี้ "fexc" มีหน้าที่ในการแปลง script.bin เป็นรูปแบบข้อความและสำหรับการแปลงกลับเป็นไบนารี จำเป็นอย่างยิ่งที่โปรแกรมปฏิบัติการของยูทิลิตี้นี้จะต้องมีชื่อ "fexc.exe" ดังนั้นจะดีถ้าคุณตั้งชื่อโปรเจ็กต์ของคุณเป็น "fexc" อย่างไรก็ตาม คุณสามารถใช้ชื่ออื่นของโปรเจ็กต์ได้ เนื่องจากคุณสามารถเปลี่ยนชื่อไฟล์เรียกทำงานหลังจากการคอมไพล์ได้เสมอ หรือคุณสามารถเลือก "Project->Properties" จากเมนูแบบเลื่อนลงด้านบน และในหน้าต่างที่ปรากฏ ให้คลิกแท็บ "สร้างเป้าหมาย" และแก้ไขฟิลด์ "ชื่อไฟล์เอาต์พุต" เพื่อแทนที่ชื่อที่เรียกใช้งานได้

ในโครงการสร้างอัตโนมัติของคุณ คุณควรเพิ่มไฟล์ต้นฉบับเพียงห้าไฟล์:

  • fexc.c
  • script.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

และไฟล์ส่วนหัวเจ็ดไฟล์:

  • list.h (ย้ายจากโฟลเดอร์ c:\sunxitools\include\ ไปยังโฟลเดอร์ c:\sunxitools)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

อย่าลืมแยก main.c ที่สร้างอัตโนมัติออกจากโปรเจ็กต์ เพราะ fexc.c มีฟังก์ชัน "int main" อยู่แล้ว (โปรดจำไว้ว่าโปรแกรมใดควรมีฟังก์ชันหลักเพียงฟังก์ชันเดียว?)

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

#define เวอร์ชัน "Win32"

จากนั้นบันทึกและปิดไฟล์ (คุณอาจตกแต่งด้วย #define's และ #ifdef's ถ้าคุณต้องการ)

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

ขั้นตอนที่ 8: ให้ Gcc ปฏิบัติตามมาตรฐานภาษา ISO C ปี 1999

ให้ Gcc ปฏิบัติตามมาตรฐานภาษา ISO C ปี 1999
ให้ Gcc ปฏิบัติตามมาตรฐานภาษา ISO C ปี 1999

เพื่อให้คอมไพเลอร์ไม่บ่นว่ารูปแบบการเขียนโปรแกรมฟรีเกินไปให้ตั้งค่ามาตรฐาน "с99" ของการรวบรวม ใน codeblocks ให้ไปที่เมนู "Project -> Build Options" และใน "Compiler Settings -> Compiler Flags" ให้เลือกช่องทำเครื่องหมาย "มี gcc ปฏิบัติตามมาตรฐานภาษา ISO C 1999" หรือคุณสามารถเพิ่ม "-std=c99" ลงในสตริงตัวเลือกคอมไพเลอร์ของคุณ ตอนนี้ถ้าคุณพยายามคอมไพล์โปรเจ็กต์ ข้อผิดพลาดมากมายเหล่านั้นควรหมดไป และคุณเป็นหนึ่งต่อหนึ่งที่มีการพึ่งพาที่ขาดหายไป

ขั้นตอนที่ 9: ค้นหาการพึ่งพาที่ขาดหายไป

ค้นหาการพึ่งพาที่ขาดหายไป
ค้นหาการพึ่งพาที่ขาดหายไป

การพึ่งพาที่ขาดหายไปคือไฟล์ "mman.h" - ส่วนหัวของตัวจัดการหน่วยความจำ linux บางประเภท Windows C โดยกำเนิดไม่มีไฟล์ดังกล่าว แต่โชคดีที่มีพอร์ต windows ของมัน ไปที่ https://github.com/witwall/mman-win32 สำหรับ windows ดาวน์โหลดสแน็ปช็อตของที่เก็บ git

ขั้นตอนที่ 10: แกะ Mman

แกะ Mman
แกะ Mman

แตกไฟล์ mman.c และ mman.h แล้ววางลงในโฟลเดอร์ c:\sunxitools

ขั้นตอนที่ 11: และเพิ่มลงในโครงการ

และเพิ่มลงในโครงการ
และเพิ่มลงในโครงการ

ขั้นตอนที่ 12: เส้นทางที่ถูกต้อง

เส้นทางที่ถูกต้อง
เส้นทางที่ถูกต้อง

และในไฟล์ "fex.c" raplece line:

#รวม

เพื่อ

#รวม "mman.h"

ในขั้นตอนนี้ คอมไพเลอร์ของคุณไม่ควรบ่นอะไรเลย และคุณจะได้รับ fexc.exe ที่รอนานเป็นผลลัพธ์ อย่ามีความสุขเร็วเกินไป ยูทิลิตี้ยังทำงานได้ไม่เต็มที่ คุณสามารถตรวจสอบได้โดยถอดรหัสไฟล์ script.bin ที่ถูกต้องในรูปแบบข้อความ - ไฟล์ script.fex โดยเข้ารหัสไฟล์ script.fex กลับเข้าไปใน script.bin คุณอาจสังเกตว่าขนาดของ script.bin ที่ได้นั้นแตกต่างจากขนาดของ script.bin ดั้งเดิมเล็กน้อย และถ้าคุณพยายามถอดรหัสผลลัพธ์อีกครั้งก็จะล้มเหลว Orange PI จะไม่ทำงานกับ script.bin นี้ เพื่อให้ได้ยูทิลิตีการทำงาน เราต้องปล่อยโค้ดบอมบ์ ซึ่งมีคนใส่ซอร์สโค้ดของ sunxi-tools มันจะเป็นขั้นตอนต่อไปของเรา

ขั้นตอนที่ 13: การไล่ผี

การไล่ผี
การไล่ผี

ในการปลดปล่อยโค้ดบอมบ์ ให้เปิดไฟล์โค้ด fexc.c และพบว่ามีสตริงข้อความของเนื้อหาถัดไป:

อื่น if ((ออก = เปิด (ชื่อไฟล์, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {

เพียงแทนที่ด้วยสตริงถัดไป:

อื่น if ((ออก = open(ชื่อไฟล์, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 512))<0){

ถ้าไม่ใช่เลขร้าย "666" ในสตริงแรก ฉันคิดว่าผู้เข้ารหัสเพิ่งลืมใช้แฟล็ก O_BINARY แต่ Number of The Beast ได้ชี้แจงเจตนาของเขาอย่างโปร่งใส ลองคิดดูสิว่ามันฉลาดแค่ไหน: เนื่องจากความแตกต่างเล็กน้อยในการประมวลผลไฟล์ใน Windows และ Linux ระเบิดไม่มีผลเมื่อยูทิลิตี้ถูกคอมไพล์และใช้งานภายใต้ Linux แต่มันทำลายทุกอย่างเมื่อใช้ยูทิลิตี้ภายใต้ Windows

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

ขั้นตอนที่ 14: หมายเหตุ

หมายเหตุ
หมายเหตุ

1) ในการใช้ยูทิลิตี้ fexc อย่างสะดวกสบาย คุณควรได้รับไฟล์แบตช์สองไฟล์:

bin2fex.bat - และ - fex2bin.bat

คุณสามารถรับได้จาก fexc.exe build สำหรับ Windows ที่ล้มเหลวหรือคุณสามารถพิมพ์เองได้:

  • bin2fex.bat ควรมี "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat ควรมี "fexc -O bin -I fex script.fex script.bin"

2) หากเป็นเรื่องยากที่จะหาตัวจัดการ mman สำหรับ Windows เราสามารถหลีกเลี่ยงการใช้งานได้เลย อย่างไรก็ตาม ต้องใช้เวลาในการแก้ไขไฟล์ fexc.c มากขึ้นและต้องการความรู้เกี่ยวกับ c อย่างน้อย เพื่อความมั่นใจของคุณ ฉันแบ่งปันซอร์สโค้ดที่แก้ไขแล้วของ fexc จาก sunxi-tools v1.4 ที่ปราศจากการพึ่งพา mman.h พร้อมกับไฟล์โครงการ codeblocks และตัวอย่าง script.bin จาก pi สีส้มบางส่วน คุณสามารถดาวน์โหลด fexc_nomman.zip

3) เป็นไปได้ว่าในรุ่นต่อมาของ sunxi-tools พวกเขาจะเพิ่มการพึ่งพาเพิ่มเติม คุณสามารถค้นหาได้ทางอินเทอร์เน็ตและเพิ่มลงในโครงการรวบรวมของคุณ

5) สุดท้ายนี่คือ fexc.exe เวอร์ชันที่คอมไพล์ล่วงหน้าสำหรับ Win32:

fexc_nomman.zip

หากคุณขี้เกียจมากพอให้ใช้ ver. อย่างไรก็ตาม ระวังว่าจะไม่ได้รับการอัปเดตหาก/เมื่อ SunxiTools/Windows เวอร์ชันใหม่กว่าจะพร้อมใช้งาน ดังนั้นจึงเป็นการดีกว่าที่จะเรียนรู้วิธีการคอมไพล์มากกว่าการพึ่งพาการสร้างไบนารีแบบคงที่บางตัวฉันเข้าใจ

4) "Orange PI", "Code::Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner" ฯลฯ… เป็นเครื่องหมายการค้าของเจ้าของที่เกี่ยวข้อง

5) หากคุณคอมไพเลอร์บ่นว่าไม่พบฟังก์ชัน mman เช่น:

ไม่ได้กำหนดการอ้างอิงถึง '_imp_mmap'

พึงระวังว่าผู้ชื่นชอบชุมชนพัฒนา mman นั้นลืมไปว่าโค้ดนั้นสามารถคอมไพล์ได้ไม่เพียงแต่เป็นไลบรารี่ dll เท่านั้น นอกจากนี้ยังสามารถเป็นไลบรารีแบบคงที่หรือโค้ดแบบสแตนด์อโลนเหมือนที่เรามีที่นี่ ในการแก้ไขปัญหาให้แก้ไขไฟล์ "mman.h" ดังนี้:

ก) ค้นหาสตริง:

#if กำหนดไว้ (MMAN_LIBRARY)

#define MMANSHARED_EXPORT _declspec (dllexport) #else #define MMANSHARED_EXPORT _declspec (dllimport) #endif

b) เพิ่มสตริง

#define MMANSHARED_EXPORT

ด้านล่างสตริงที่พบในขั้นตอนก่อนหน้า

แนะนำ: