Оглавление:
- Шаг 1. Загрузите Sunxi-tools
- Шаг 2: разархивируйте исходный код
- Шаг 3. Загрузите код:: блоки
- Шаг 4. Проверьте свою IDE
- Шаг 5: Завершите тест
- Шаг 6: Создайте новый проект
- Шаг 7: добавьте файлы в проект
- Шаг 8: Приведите Gcc в соответствие с языковым стандартом ISO C 1999 г
- Шаг 9: Найдите недостающую зависимость
- Шаг 10: Распакуйте Mman
- Шаг 11: и добавьте их в проект
- Шаг 12: правильный путь
- Шаг 13: Экзорцизм
- Шаг 14: ПРИМЕЧАНИЯ
Видео: Orange PI HowTo: компиляция Sunxi Tool для Windows под Windows: 14 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
ПРЕДПОСЫЛКИ:
Тебе понадобится
- (Настольный) компьютер под управлением Windows.
- Интернет-соединение.
- Оранжевая доска PI.
Последнее необязательно, но я уверен, что оно у Вас уже есть. В противном случае Вы не прочитаете эту инструкцию.
Когда вы покупаете одноплатный компьютер Orange PI, он остается всего лишь куском мертвого металла, пока не настроен должным образом. И его главный файл конфигурации: "script.bin" - это первый ключ, который оживит его. Этот файл находится в загрузочном разделе вашей загрузочной SD-карты. К счастью для нас, в большинстве дистрибутивов Linux с Официального сайта (https://www.orangepi.org/downloadresources/) этот раздел имеет файловую систему FAT32 и его легко увидеть на любом компьютере с Windows. Это действительно упрощает работу, поскольку до сих пор нет надежного способа записи в разделы Linux ext2 из-под Windows.
К сожалению, конфигурационный файл script.bin имеет двоичный формат, совершенно неприемлемый для редактирования человеком. Нужен какой-то программный инструмент, чтобы расшифровать его и зашифровать после внесения необходимых изменений. И такой набор инструментов существует. Это печально известный SUNXI-TOOLS. Ложка дегтя заключается в том, что он предназначен для работы под Linux, и нам нужно либо сохранить выделенную Linux-машину только для использования sunxi-tools, либо найти способ их компиляции для Windows.
Я мог бы просто скомпилировать его и поделиться исполняемым файлом, но никто не знает, хотят ли они сделать свежий выпуск, и вам понадобится новая компиляция как можно скорее. Поэтому я решил составить руководство, как собрать необходимый инструмент из исходников. Давайте начнем.
Шаг 1. Загрузите Sunxi-tools
Получите последнюю (или необходимую) версию исходного кода sunxi-tools. Перейдите по URL-адресу: https://github.com/linux-sunxi/sunxi-tools/releases и выберите загрузку в виде zip-архива.
Шаг 2: разархивируйте исходный код
После завершения загрузки разархивируйте исходный код в папку по вашему выбору. (далее я буду считать, что это папка c: / sunxitools \, поэтому замените этот путь на свой собственный).
Шаг 3. Загрузите код:: блоки
Если у вас установлена копия какого-либо работающего компилятора c ++ для windows. и если Вы знаете, как его использовать, Вы можете сразу перейти к шагу 3. Другие должны получить соответствующий компилятор C ++ и оболочку (IDE), чтобы использовать его с комфортом. Мой выбор - code:: block для Windows вместе с предустановленным набором инструментов MinGW. Вы можете получить его здесь:
Скачайте и установите его.
Шаг 4. Проверьте свою IDE
Чтобы проверить, все ли в порядке, запустите кодовые блоки, нажмите «создать новый проект», выберите «консольное приложение», выберите либо c, либо c ++, введите заголовок проекта оформления заказа, оставьте значения по умолчанию нетронутыми в следующем окне и нажмите «закончить».
Шаг 5: Завершите тест
Затем щелкните зеленый треугольник на верхней панели IDE или используйте пункт меню «Сборка-> Выполнить». Если все пошло правильно, вы должны увидеть сообщение из вашего автоматически сгенерированного приложения «Hello world» в черном окне «DOS».
Если нет, это означает, что IDE и компилятор не работают должным образом, и вам нужно будет изучить, как это правильно настроить. Возможно, вам придется загрузить другую версию инструментов программирования или проверить их разрешения в вашем брандмауэре / антивирусном ПО.
Шаг 6: Создайте новый проект
Теперь у вас должен быть работающий инструментарий программиста C / C ++ и распакованные исходные коды sunxi-tools в папке c: / sunxitools / на вашем компьютере. Пришло время собрать проект. Создайте новый проект в вашей IDE. Выберите простой проект C (не C ++) типа «консольное приложение».
Убедитесь, что вы создаете проект в папке c: / sunxitools \, а не в другом месте. (Кодовые блоки EG, как правило, создают подпапку с тем же именем, что и проект. Поэтому, если вы назвали свой проект, скажите "test" и попытайтесь поместить его в c: / sunxitools \, вы можете потерять проект. в c: / sunxitools / test \, если Вы недостаточно внимательны.) Sunxi-tools содержит несколько утилит, но для нашей цели нам понадобится только одна: так называемая утилита fexc.
Шаг 7: добавьте файлы в проект
Именно утилита fexc отвечает за преобразование script.bin в текстовый формат и за обратное преобразование в двоичный. Важно, чтобы исполняемый файл этой утилиты имел имя «fexc.exe», поэтому будет хорошо, если Вы назвали свой проект как «fexc». Однако вы можете использовать любое другое имя проекта, так как вы всегда можете переименовать исполняемый файл после компиляции, или вы можете выбрать «Проект-> Свойства» в верхнем раскрывающемся меню и в появившемся окне нажать вкладку «Цели сборки», и отредактируйте поле «Выходное имя файла», чтобы переопределить имя исполняемого файла.
В ваш автоматически сгенерированный проект вам нужно добавить только пять исходных файлов:
- fexc.c
- script.c
- script_bin.c
- script_fex.c
- script_uboot.c
и семь файлов заголовков:
- list.h (переместите его из c: / sunxitools / include / folder в c: / sunxitools / folder)
- 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 и # ifdef, если хотите.)
Если вы сейчас попытаетесь скомпилировать проект, он будет жаловаться на множество ошибок и один отсутствующий файл. Ошибки в основном связаны с некоторой чрезмерной свободой стиля, применяемыми программистами sunxi-tools, а отсутствующий файл - это зависимость, не включенная в пакет исходного кода. Давайте разберемся с этим шаг за шагом.
Шаг 8: Приведите Gcc в соответствие с языковым стандартом ISO C 1999 г
Чтобы компилятор не жаловался, слишком свободный стиль программирования выставил стандарт компиляции "с99". В кодовых блоках перейдите в меню «Проект -> Параметры сборки» и в «Настройки компилятора -> Флаги компилятора» установите флажок «Привести gcc в соответствие с языковым стандартом ISO 1999 г.». Или вы можете просто добавить «-std = c99» в строку параметров вашего компилятора. Теперь, если вы попытаетесь скомпилировать проект, эти тонны ошибок должны исчезнуть, и вы один на один с отсутствующей зависимостью.
Шаг 9: Найдите недостающую зависимость
Отсутствует зависимость - это файл "mman.h" - заголовок какого-то менеджера памяти Linux. В Windows C такого файла изначально нет, но, к счастью, для него есть порт для Windows. Перейдите на https://github.com/witwall/mman-win32 для Windows. Загрузите снимок репозитория git.
Шаг 10: Распакуйте Mman
Распакуйте файлы mman.c и mman.h, поместите их в папку c: / sunxitools \.
Шаг 11: и добавьте их в проект
Шаг 12: правильный путь
И в файле "fex.c" строка raplece:
#включают
к
#include "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 ((out = open (filename, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {
Просто замените его следующей строкой:
иначе if ((out = open (filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {
Если бы не злые цифры «666» в первой строке, я бы подумал, что кодировщик просто забыл использовать флаг O_BINARY. Но Число Зверя прозрачно проясняет его намерения. Подумайте, насколько это гениально: из-за тонкой разницы в том, как файлы обрабатываются в Windows и Linux, бомба не действует, когда утилита скомпилирована и используется под Linux. Но все портит, когда утилита используется под Windows.
После того, как бомба была обезврежена, вы наконец можете скомпилировать и безопасно использовать утилиту fexc на вашем настольном компьютере с Windows.
Шаг 14: ПРИМЕЧАНИЯ
1) Для комфортного использования утилитой fexc вы должны получить два командных файла:
bin2fex.bat - и - fex2bin.bat.
Вы можете получить их из какой-нибудь сборки faily fexc.exe для 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, вместе с файлом проекта кодовых блоков и образцом script.bin из какого-то оранжевого пи. Вы можете скачать 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" следующим образом:
а) найти струны:
# если определено (MMAN_LIBRARY)
#define MMANSHARED_EXPORT _declspec (dllexport) #else #define MMANSHARED_EXPORT _declspec (dllimport) #endif
б) добавить строку
#define MMANSHARED_EXPORT
чуть ниже строк, найденных на предыдущем шаге
Рекомендуемые:
Компоненты для поверхностного монтажа под пайку - Основы пайки: 9 шагов (с изображениями)
Компоненты для поверхностного монтажа под пайку | Основы пайки: до сих пор в моей серии «Основы пайки» я обсуждал достаточно основ пайки, чтобы вы могли начать практиковаться. В этом руководстве то, что я буду обсуждать, является немного более сложным, но это некоторые из основ пайки композитного материала для поверхностного монтажа
Z80 MBC2 - повторная компиляция QP / M Bios и загрузчика: 6 шагов
Z80 MBC2 - повторная компиляция QP / M Bios и загрузчика: если, как и я, вы окажетесь в положении, когда вам нужно повторно скомпилировать биос QP / M для вашего MBC2 - тогда вы это сделаете следующим образом. Я задокументировал процесс перекомпиляции существующей версии. Вы должны вносить изменения в фактическую Bios
Компиляция 64-битного ядра RT для Raspberry Pi 4B .: 5 шагов
Компиляция 64-битного ядра RT для Raspberry Pi 4B: в этом руководстве будет рассмотрен процесс сборки и установки 64-битного ядра реального времени на Raspberry Pi. Ядро RT имеет решающее значение для полной функциональности ROS2 и других решений IOT в реальном времени. Ядро было установлено на Raspbian на базе x64, который может быть
Фотобиореактор для водорослей под давлением: 10 шагов (с изображениями)
Фотобиореактор с водорослями под давлением: Прежде чем погрузиться в это руководство, я хотел бы немного подробнее рассказать о том, что это за проект и почему я решил его реализовать. Несмотря на то, что он немного длинный, я призываю вас прочитать его, так как многое из того, что я делаю, не имеет смысла
Pier9: Ювелирные изделия Eurion для находящихся под угрозой исчезновения животных: 7 шагов (с изображениями)
Pier9: Ювелирные изделия Eurion для находящихся под угрозой исчезновения животных: уникальный узор на этих украшениях помогает животным, находящимся под угрозой исчезновения, обеспечивать соблюдение авторских прав на их изображения. Этот паттерн известен как Созвездие Эуриона, он чаще всего используется для предотвращения подделки денег, и его можно найти на большинстве бумажных валют вокруг