Mục lục:

Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 bước (có hình ảnh)
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 bước (có hình ảnh)

Video: Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 bước (có hình ảnh)

Video: Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows: 14 bước (có hình ảnh)
Video: Orange Pi: Running simple automation scripts and linux commands and other microcontrollers 2024, Tháng bảy
Anonim
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows
Orange PI HowTo: Compile Sunxi Tool for Windows Under Windows

YÊU CẦU:

Bạn sẽ cần

  1. Một máy tính (máy tính để bàn) chạy Windows.
  2. Kết nối Internet.
  3. Một bảng PI màu cam.

Cuối cùng là tùy chọn, nhưng tôi chắc chắn, rằng Bạn đã có nó. Nếu không, bạn sẽ không đọc được hướng dẫn này.

Khi Bạn mua máy tính bảng mạch đơn Orange PI, nó chỉ là một cục kim loại chết cho đến khi được cấu hình đúng cách. Và tệp cấu hình chính của nó: "script.bin" là chìa khóa đầu tiên giúp nó tồn tại. Tệp này nằm trong phân vùng khởi động của thẻ SD có thể khởi động của bạn. Và thật may mắn cho chúng tôi, trong hầu hết các bản phân phối Linux từ trang web Chính thức (https://www.orangepi.org/downloadresources/) phân vùng này là FAT32 và có thể dễ dàng nhìn thấy bởi bất kỳ máy tính Windows nào. Nó thực sự đơn giản hóa mọi thứ, vì vẫn chưa có cách nào đáng tin cậy để ghi vào các phân vùng Linux ext2 từ trong Windows.

Thật không may cho chúng tôi, tệp cấu hình script.bin có định dạng nhị phân hoàn toàn không thân thiện với việc chỉnh sửa của con người. Người ta cần một số loại công cụ phần mềm để giải mã nó và mã hóa trở lại sau khi các sửa đổi cần thiết đã được thực hiện. Và một bộ công cụ như vậy có tồn tại. Đó là CÔNG CỤ CHỐNG NẮNG khét tiếng. Điều đáng chú ý là nó được thiết kế để chạy trong Linux và chúng ta phải giữ một máy Linux chuyên dụng chỉ để sử dụng các công cụ sunxi hoặc tìm cách biên dịch chúng cho windows.

Tôi chỉ có thể biên dịch nó và chia sẻ tệp thực thi, nhưng không ai biết liệu họ có muốn tạo một bản phát hành mới hay không và Bạn sẽ cần một bản biên dịch mới càng sớm càng tốt. Vì vậy, tôi quyết định thực hiện một hướng dẫn cách biên dịch công cụ thiết yếu từ các nguồn. Bắt đầu nào.

Bước 1: Tải xuống Sunxi-tools

Tải xuống Sunxi-tools
Tải xuống Sunxi-tools
Tải xuống Sunxi-tools
Tải xuống Sunxi-tools

Tải xuống phiên bản mới nhất (hoặc cần thiết) của mã nguồn sunxi-tools. Truy cập URL: https://github.com/linux-sunxi/sunxi-tools/releases và chọn tải xuống dưới dạng lưu trữ zip.

Bước 2: Giải nén mã nguồn

Giải nén mã nguồn
Giải nén mã nguồn

Sau khi quá trình tải xuống hoàn tất, hãy giải nén mã nguồn vào thư mục Bạn chọn. (thêm nữa, tôi sẽ giả sử rằng thư mục này là c: / sunxitools \, vì vậy hãy thay thế đường dẫn này bằng đường dẫn của riêng bạn).

Bước 3: Tải xuống mã:: khối

Tải xuống mã:: khối
Tải xuống mã:: khối

Nếu Bạn có một bản sao cài đặt của một số trình biên dịch c ++ hoạt động cho windows. và nếu Bạn biết cách sử dụng nó, Bạn có thể trực tiếp tiến hành bước 3. Những người khác nên có một trình biên dịch c ++ thích hợp và một trình bao (IDE) để sử dụng nó một cách thoải mái. Sự lựa chọn của tôi là mã:: khối cho Windows cùng với chuỗi công cụ MinGW được cài đặt sẵn. Bạn có thể lấy nó từ đây:

Tải xuống và cài đặt nó.

Bước 4: Kiểm tra IDE của bạn

Kiểm tra IDE của bạn
Kiểm tra IDE của bạn

Để kiểm tra xem mọi thứ có ổn không, hãy khởi động codeblocks, nhấp vào "tạo dự án mới", chọn "ứng dụng bảng điều khiển", chọn c hoặc c ++, nhập tiêu đề của dự án kiểm tra, giữ nguyên giá trị mặc định trong cửa sổ tiếp theo và nhấp vào "kết thúc ".

Bước 5: Hoàn thành kiểm tra

Hoàn thành bài kiểm tra
Hoàn thành bài kiểm tra

Sau đó nhấp vào một hình tam giác màu xanh lục trên bảng điều khiển trên cùng của IDE hoặc sử dụng điểm menu Build-> Run. Nếu mọi thứ diễn ra suôn sẻ Bạn sẽ thấy thông báo từ ứng dụng "Xin chào thế giới" được tạo tự động của Bạn trong cửa sổ "DOS" màu đen.

Nếu không, điều đó có nghĩa là IDE và trình biên dịch không hoạt động bình thường và Bạn sẽ phải điều tra cách đặt nó đúng. Có thể Bạn sẽ phải tải xuống một phiên bản khác của các công cụ lập trình hoặc để kiểm tra quyền của chúng trong phần mềm tường lửa / chống vi-rút của Bạn.

Bước 6: Tạo dự án mới

Tạo dự án mới
Tạo dự án mới
Tạo dự án mới
Tạo dự án mới
Tạo dự án mới
Tạo dự án mới
Tạo dự án mới
Tạo dự án mới

Bây giờ Bạn sẽ có bộ công cụ của lập trình viên C / C ++ đang hoạt động và các mã nguồn sunxi-tools được giải nén trong thư mục c: / sunxitools / trên máy tính của Bạn. Đã đến lúc tập hợp một dự án. Tạo dự án mới trong IDE của bạn. Chọn dự án C (không phải c ++) thuần túy thuộc loại "ứng dụng bảng điều khiển".

Đảm bảo rằng Bạn đang tạo dự án trong thư mục c: / sunxitools / chứ không phải ở một nơi nào khác. (Các khóa mã EG có xu hướng tạo một thư mục con có cùng tên với dự án. Vì vậy, nếu Bạn đã đặt tên cho dự án của mình, hãy nói "thử nghiệm" và cố gắng đặt nó trong c: / sunxitools \, Bạn có thể kết thúc với dự án đã biến mất to c: / sunxitools / test / if Bạn không đủ chú ý.) Sunxi-tools chứa một số tiện ích, nhưng với mục đích của chúng tôi, chúng tôi sẽ chỉ cần một tiện ích: cái gọi là tiện ích "fexc".

Bước 7: Thêm tệp vào dự án

Thêm tệp vào dự án
Thêm tệp vào dự án

Chính xác là tiện ích "fexc" chịu trách nhiệm chuyển đổi script.bin thành định dạng văn bản và chuyển đổi ngược lại thành nhị phân. Điều cần thiết là tệp thực thi của tiện ích này có tên "fexc.exe", vì vậy rất tốt nếu Bạn đã đặt tên dự án của Bạn là "fexc". Tuy nhiên, Bạn có thể sử dụng bất kỳ tên nào khác của dự án, vì Bạn luôn có thể đổi tên tệp thực thi sau khi biên dịch hoặc Bạn có thể chọn "Dự án-> Thuộc tính" từ trình đơn kéo xuống trên cùng và trong cửa sổ xuất hiện, nhấp vào tab "Xây dựng mục tiêu", và chỉnh sửa trường "Tên tệp đầu ra" ở đó để ghi đè tên thực thi.

Đối với dự án được tạo tự động của bạn, Bạn chỉ nên thêm năm tệp nguồn:

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

và bảy tệp tiêu đề:

  • list.h (di chuyển nó ở dạng c: / sunxitools / include / thư mục vào thư mục c: / sunxitools )
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • phiên bản.h

Đảm bảo loại trừ main.c được tạo tự động khỏi dự án, vì fexc.c đã có hàm "int main" trong đó. (Hãy nhớ rằng bất kỳ chương trình nào chỉ nên có một chức năng chính?).

Tất cả các tệp mã nguồn cần thiết đã có trong thư mục con, nơi Bạn đã giải nén các mã nguồn. Các tệp tiêu đề xứng đáng có một cặp từ, lấy chúng ở đâu. "list.h" - thường nằm trong thư mục con "bao gồm" của bộ mã nguồn đã giải nén. "version.h" - chỉ cần bạn tự tạo. Đặt ở đó một chuỗi như:

#define PHIÊN BẢN "Win32"

Sau đó, lưu và đóng tệp. (Bạn có thể trang trí nó bằng # định nghĩa và # ifdef nếu bạn muốn.)

Nếu bây giờ Bạn cố gắng biên dịch dự án, nó sẽ phàn nàn về rất nhiều lỗi và thiếu một tệp. Các lỗi phần lớn là do một chút tự do về kiểu dáng, các lập trình viên sunxi-tools đã sử dụng để áp dụng và tệp bị thiếu là phần phụ thuộc không được bao gồm trong gói mã nguồn. Hãy đối phó với điều này từng bước.

Bước 8: Yêu cầu Gcc tuân theo Tiêu chuẩn Ngôn ngữ ISO C 1999

Có Gcc Tuân theo Tiêu chuẩn Ngôn ngữ ISO C 1999
Có Gcc Tuân theo Tiêu chuẩn Ngôn ngữ ISO C 1999

Để trình biên dịch không phàn nàn về phong cách lập trình quá tự do, hãy đặt giá trị "с99" của trình biên dịch. Trong codeblock, hãy vào menu "Project -> Build Options" và trong "Compiler Settings -> Compiler Flags", đánh dấu vào hộp kiểm "Have gcc tuân theo tiêu chuẩn ngôn ngữ ISO C 1999". Hoặc Bạn có thể chỉ cần thêm "-std = c99" vào chuỗi tùy chọn trình biên dịch của Bạn. Bây giờ nếu Bạn cố gắng biên dịch dự án, hàng tấn lỗi đó sẽ xuất hiện và Bạn là một với phần phụ thuộc bị thiếu.

Bước 9: Tìm sự phụ thuộc còn thiếu

Tìm sự phụ thuộc còn thiếu
Tìm sự phụ thuộc còn thiếu

Phần phụ thuộc bị thiếu là tệp "mman.h" - tiêu đề của một số loại trình quản lý bộ nhớ linux. Windows C nguyên bản không có tệp như vậy, nhưng may mắn thay có một cổng cửa sổ của nó. Truy cập https://github.com/witwall/mman-win32 cho windows. Tải xuống ảnh chụp nhanh của kho lưu trữ git.

Bước 10: Giải nén Mman

Giải nén Mman
Giải nén Mman

Giải nén các tệp mman.c và mman.h, đặt chúng vào thư mục c: / sunxitools \.

Bước 11: Và thêm họ vào dự án

Và thêm họ vào dự án
Và thêm họ vào dự án

Bước 12: Đường dẫn chính xác

Đường dẫn chính xác
Đường dẫn chính xác

Và trong dòng raplece của tệp "fex.c":

#bao gồm

đến

#include "mman.h"

Ở bước này, trình biên dịch của bạn sẽ không phàn nàn bất cứ điều gì và bạn sẽ nhận được fexc.exe chờ đợi lâu làm đầu ra. Đừng vui quá sớm. Tiện ích vẫn chưa hoạt động đầy đủ. Bạn có thể đảm bảo điều này bằng cách giải mã một số tệp script.bin hợp lệ thành dạng văn bản - tệp script.fex với việc mã hóa tệp script.fex trở lại script.bin. Bạn có thể lưu ý rằng kích thước của script.bin kết quả hơi khác so với kích thước của script.bin gốc. Và nếu bạn cố gắng giải mã kết quả một lần nữa, nó sẽ không thành công. Cả Orange PI đều không hoạt động với script này.bin. Để có được tiện ích chức năng, chúng ta phải xả một quả bom mã mà ai đó đã đưa vào mã nguồn của sunxi-tools. Nó sẽ là bước tiếp theo của chúng tôi.

Bước 13: Trừ tà

Trừ tà
Trừ tà

Để xả bom mã, hãy mở tệp mã fexc.c và tìm thấy ở đó một chuỗi văn bản có nội dung tiếp theo:

else if ((out = open (filename, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Chỉ cần thay thế nó bằng chuỗi tiếp theo:

else if ((out = open (tên tệp, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Nếu không phải là các chữ số xấu "666" trong chuỗi đầu tiên, tôi nghĩ rằng người lập trình đã quên sử dụng cờ O_BINARY. Nhưng Number of The Beast thực sự làm rõ ý định của anh ta một cách minh bạch. Hãy thử xem, nó khéo léo như thế nào: do sự khác biệt nhỏ trong cách xử lý tệp trong Windows và Linux, quả bom không có tác dụng khi tiện ích được biên dịch và sử dụng trong Linux. Nhưng nó làm hỏng mọi thứ khi tiện ích được sử dụng trong Windows.

Sau khi giải trừ bom, bạn cuối cùng cũng có thể biên dịch và sử dụng an toàn tiện ích fexc trên máy tính để bàn Windows của mình.

Bước 14: LƯU Ý

LƯU Ý
LƯU Ý

1) Để sử dụng tiện ích fexc một cách thoải mái, Bạn nên nhận được hai tệp hàng loạt:

bin2fex.bat - và - fex2bin.bat.

Bạn có thể tải chúng từ một số bản dựng fexc.exe công bằng dành cho Windows hiện có hoặc Bạn có thể tự mình nhập chúng:

  • bin2fex.bat phải chứa "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat phải chứa "fexc -O bin -I fex script.fex script.bin"

2) Nếu khó tìm trình quản lý mman cho Windows, người ta có thể tránh được việc sử dụng nó. Tuy nhiên, cần nhiều chỉnh sửa hơn đối với tệp fexc.c và yêu cầu ít nhất một số kiến thức về c. Vì sự thuận tiện của bạn, tôi chia sẻ mã nguồn đã chỉnh sửa của fexc từ sunxi-tools v1.4 miễn phí khỏi sự phụ thuộc vào mman.h cùng với tệp dự án codeblocks và với script.bin mẫu từ một số pi màu cam. Bạn có thể tải xuống fexc_nomman.zip

3) Có thể trong các phiên bản hậu quả của sunxi-tools, chúng sẽ bổ sung thêm một số phụ thuộc. Hãy thoải mái tìm chúng qua internet và thêm chúng vào dự án biên dịch của bạn.

5) Cuối cùng đây là phiên bản đã biên dịch trước của fexc.exe cho Win32:

fexc_nomman.zip

Nếu bạn đủ lười biếng, hãy thoải mái sử dụng ver. Tuy nhiên, hãy cẩn thận rằng nó sẽ không được cập nhật nếu / khi các phiên bản SunxiTools / Windows mới hơn có sẵn. Vì vậy, tốt hơn hết là bạn nên học cách biên dịch chúng hơn là phụ thuộc vào một số bản dựng nhị phân cố định, tôi cho là vậy.

4) "Orange PI", "Code:: Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner", v.v.… là nhãn hiệu tương ứng của chủ sở hữu tương ứng.

5) Nếu trình biên dịch của Bạn phàn nàn về việc không tìm thấy các hàm mman, như:

tham chiếu không xác định đến '_imp_mmap'

lưu ý rằng những người yêu thích định nghĩa của cộng đồng phát triển mman đã quên rằng mã có thể được biên dịch không chỉ dưới dạng thư viện dll. Nó cũng có thể là một thư viện tĩnh hoặc một mã độc lập như chúng ta có ở đây. Để khắc phục sự cố, hãy chỉnh sửa tệp "mman.h" như sau:

a) tìm các chuỗi:

#if được xác định (MMAN_LIBRARY)

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

b) thêm chuỗi

#define MMANSHARED_EXPORT

ngay bên dưới các chuỗi được tìm thấy ở bước trước

Đề xuất: