Руководство по разработке системного программного обеспечения Allwinner Tina Linux. Операция компиляции исходного кода SDK. Глубокое понимание структуры компиляции Tina-sdk. Поддержка Baiwen.com T113 D1-H Nezha DongshanPI-D1s V853-Pro и других плат для разработки.
Руководство по разработке системного программного обеспечения Allwinner Tina Linux. Операция компиляции исходного кода SDK. Глубокое понимание структуры компиляции Tina-sdk. Поддержка Baiwen.com T113 D1-H Nezha DongshanPI-D1s V853-Pro и других плат для разработки.

1 Обзор

Цель написания: Этот документ служит руководством по разработке системной платформы Allwinner Tina Linux. Он предназначен для того, чтобы помочь инженерам-разработчикам программного обеспечения и инженерам технической поддержки быстро приступить к работе и ознакомиться с процессом разработки и отладки системы Tina Linux.

Область применения: Tina Linux v3.5 и выше.

2 Информация о системе Тина

2.1 Обзор

Документы, выпущенные Tina SDK, призваны помочь разработчикам быстро приступить к разработке и отладке. Содержание документов не может охватить все знания и проблемы разработки. Список документации также постоянно обновляется.

Tina SDK предоставляет обширную документацию, в том числе документацию по эталонному проектированию аппаратного обеспечения, списки поддержки Flash и других основных устройств, инструкции по использованию инструментов массового производства, вводные документы по разработке программного обеспечения и формулированию, руководства по разработке микросхем и другие материалы.

2.2 Список документов

Пожалуйста, обратитесь к последнему списку платформы обслуживания клиентов Quanzhi Technology Quanzhi.

3 Обзор системы Tina

3.1 Обзор

Система Tina Linux представляет собой комплект разработки программного обеспечения, основанный на версии openwrt-14.07, который включает исходный код ядра, драйверы, инструменты, системное промежуточное программное обеспечение и пакеты приложений, используемые для разработки системы Linux. openwrt — это среда автоматического построения встроенной системы Linux с открытым исходным кодом, которая состоит из сценария Makefile и файла конфигурации Kconfig. Это позволяет пользователям компилировать полное системное программное обеспечение Linux, которое можно напрямую запрограммировать для запуска на компьютере через конфигурацию меню.

3.2 Блок-схема системы

На рисунке показана блок-схема программного обеспечения системы Tina, которая разделена на ядро ​​снизу вверх. && Driver、Libraries、System Существует четыре уровня: Сервис-пороки и Приложения. Содержание каждого уровня следующее:

  1. Kernel&&DriverВ основном предоставляетсяLinux Стандартная реализация ядра. Тина платформа изLinux Kernel Использование Linux3.4, linux3.10, linux4.4, linux4.9 и других ядер (разные аппаратные платформы могут использовать разные версии ядра). Обеспечить базовую поддержку, такую ​​как безопасность, управление памятью, управление процессами, стек сетевых протоколов и т. д., в основном управлять аппаратными ресурсами устройства через ядро ​​Linux, такими как планирование ЦП, кеш, память, ввод-вывод и т. д.;
  2. Уровень библиотек соответствует общим встроенным системам.,Эквивалент уровня промежуточного программного обеспечения. Содержит различные базовые библиотеки системы.,и поддержка сторонних библиотек с открытым исходным кодом,Предоставление API-интерфейса для уровня приложения.,Специалисты по настройке систем и разработчики приложений могут разрабатывать новые приложения на основе API уровня библиотек.
  3. Уровень системных служб соответствует уровню системных служб, включая управление запуском системы, управление конфигурацией, управление горячим подключением, управление хранилищем, промежуточное программное обеспечение мультимедиа и т. д.
  4. Уровень приложений в основном реализует конкретные продукты и логику взаимодействия.,Требуются некоторые системные базовые библиотеки и поддержка сторонних библиотек.,Разработчики могут разрабатывать и реализовывать свои собственные приложения.,Обеспечить различные возможности системы для проживания конечных пользователей.

3.3 Процесс разработки

Система Tina Linux основана на ядре Linux и представляет собой SDK, разработанный для множества различных форм продуктов. можно основываться на этом SDK эффективно реализует настройку системы и разработку трансплантации приложений.

Как показано на рисунке выше, разработчики могут следовать описанному выше процессу разработки, чтобы быстро создать среду разработки и локально скомпилировать систему Tina Linux. код. Этот процесс будет кратко представлен ниже:

  1. Проверьте системные требования: перед загрузкой кода и компиляцией,Необходимо убедиться, что местное оборудование для разработки может удовлетворить потребности,Включает аппаратные возможности машины,система программного обеспечения,цепочка для инструментов и так далее. В настоящее время система Тина Linux поддерживает компиляцию только в среде операционной системы Ubuntu.,И обеспечивает поддержку цепочки инструментов только в среде Linux.,Другие, такие как MacOS,Windows и другие системы пока не поддерживаются.
  2. Создайте среду компиляции: на машине разработки необходимо установить различные пакеты программного обеспечения и инструменты.,Подробности смотрите в главе «Среда разработки».,Узнал, что TinaLinux проверил версию операционной системы.,Время компиляции зависит от файлов библиотеки и т. д.
  3. Выберите устройство: перед компиляцией исходного кода,Разработчикам необходимо сначала экспортировать предопределенные переменные среды.,Затем в соответствии с потребностями разработчика,Выберите соответствующий тип аппаратной платы,Подробности смотрите в главе о компиляции.
  4. Настройка системы: разработчики могут использовать аппаратные платы и определения продуктов.,Настройка U-Boot, ядра и Open-wrt,Пожалуйста, обратитесь к соответствующему Руководству по разработке и настройке изописей в последующих главах.
  5. Компиляция и пакет: Компилируйте заказ после завершения выбора устройства и настройки системы.,Включая общую или модульную компиляцию и работу по очистке компиляции.,Далее из,будет генерироватьизboot/Бинарные файлы ядра、корневая файловая систему, в прошивку по определенному формату. Подробнее см. Компилировать. пакетглава。
  6. Гореть и запускать: После создания файла образа,Познакомим, как зеркалировать и запускать на аппаратных устройствах.,Дополнительную информацию см. в главе системного программирования.

4 Тина среда разработки

4.1 Обзор

Процесс разработки встроенного продукта обычно состоит из двух ключевых этапов: компиляции исходного кода и программирования встроенного ПО. Сначала необходимо подготовить компиляцию исходного кода

Среда компиляции, а программирование прошивки требует от производителей предоставления специальных инструментов программирования. В этой главе в основном описывается, как настроить среду для компиляции и программирования Tinasdk.

4.2. Создание среды компиляции.

Типичная встроенная среда разработки включает в себя локальный хост разработки и целевую аппаратную плату.

  • В качестве сервера компиляции локальный хост разработки должен предоставить операционную среду Linux, создать среду кросс-компиляции, а также обеспечить загрузку обновлений кода и услуги кросс-компиляции кода для разработки программного обеспечения.
  • Локальный хост разработки подключается к целевой аппаратной плате через последовательный порт или USB.,Скомпилированный файл образа можно записать на целевую аппаратную плату.,и отладить систему или приложение.
4.2.1 Конфигурация хоста разработки.

Tina Linux SDK был разработан и протестирован в Ubuntu14.04, поэтому мы Рекомендуется использовать Ubuntu 14.04 Исходный код компилируется в среде хоста. Для других версий не требуется специального тестирования. Возможно, потребуется соответствующим образом скорректировать пакет программного обеспечения.

4.2.2 Конфигурация программного пакета.

Перед компиляцией Tina Linux SDK необходимо убедиться, что на сервере компиляции есть gcc, binutils, bzip2, flex, python, perl, make, ia32-libs, find, grep, diff, unzip, gawk, getopt, subversion-sion, libz-dev установлен, заголовки libc.

Ubuntu можно установить напрямую, выполнив следующую команду:

Язык кода:javascript
копировать
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawkflex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip ia32-libslib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y

В Ubuntu 16.04 и выше выполните следующую команду, чтобы установить пакет программного обеспечения:

Язык кода:javascript
копировать
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++ libstdc++6 -y libc6:i386 libstdc++6:i386 lib32ncurses5 lib32z

5 Приобретение системы Тина

5.1 Обзор

5.2 Приобретение SDK

Allwinner Tina Linux SDK выпускается через сервер кода Allwinner. Клиентам необходимо подать заявку на разрешение на загрузку SDK из окна бизнес-/технической поддержки. Приложению требуется одновременное предоставление открытого ключа SSH для аутентификации и авторизации сервера. После авторизации код можно синхронизировать.

5.3 Структура SDK

Tina Linux SDK в основном состоит из системы сборки, инструментов настройки, цепочек инструментов, наборов инструментов хоста, приложений целевых устройств, документов, сценариев, ядра Linux и загрузчика. Соответствующие компоненты представлены ниже в порядке каталогов.

Язык кода:javascript
копировать
Tina-SDK/
    ├── build
    ├── config
    ├── Config.in
    ├── device
    ├── dl
    ├── docs
    ├── lichee
    ├── Makefile
    ├── out
    ├── package
    ├── prebuilt
    ├── rules.mk
    ├── scripts
    ├── target
    ├── tmp
    ├── toolchain
    └── tools
5.3.1 каталог сборки

В каталоге сборки хранятся файлы системы сборки Tina Linux. Эта структура каталогов в основном содержит ряд файлов, скомпилированных на основе спецификаций Makefile. файл мк написан. Основные функции:

  1. Проверьте, соответствует ли текущая среда компиляции Tina Требования к сборке Linuxиз.
  2. Создайте правила компиляции хост-пакета.
  3. Создайте цепочку инструментов из правил компиляции.
  4. Создайте целевой пакет и скомпилируйте правила.
  5. Придерживаться правил компиляции ядра Linux.
  6. Сгенерировать системную прошивку по правилам генерации.
Язык кода:javascript
копировать
build/
    ├── autotools.mk
    ├── aw-upgrade.mk
    ├── board.mk
    ├── cmake.mk
    ├── config.mk
    ├── debug.mk
    ├── depends.mk
    ├── device.mk
    ├── device_table.txt
    ├── download.mk
    ├── dumpvar.mk
    ├── envsetup.sh
5.3.2 каталог конфигурации

В каталоге конфигурации в основном хранится интерфейс меню конфигурации в Tina Linux и некоторые фиксированные элементы конфигурации. Меню конфигурации основано на внутреннем. Написана основная спецификация mconf.

Язык кода:javascript
копировать
config/
    ├── Config-build.in
    ├── Config-devel.in
    ├── Config-images.in
    ├── Config-kernel.in
    └── top_config.in
5.3.3 каталог устройств

Каталог устройств используется для хранения файлов конфигурации решения, включая конфигурацию ядра, конфигурацию env, конфигурацию таблицы разделов, sys_config.fex, доска.dts и т. д.

Эти конфигурации были сохранены в целевом каталоге в старой версии и перемещены в каталог устройства в новой версии.

Обратите внимание, что defconfig по-прежнему сохраняется в целевом каталоге.

Язык кода:javascript
копировать
device/
    └── config
        ├── chips
        ├── common
        └── rootfs_tar

Команда быстрого перехода: cconfigs

5.3.4 каталог документов

В каталоге docs в основном хранятся документы, используемые для разработки, написанные в формате уценки.

Этот каталог больше не будет обновляться. См. системную документацию платформы обслуживания клиентов Allwinner.

Язык кода:javascript
копировать
docs/
    ├── build.md
    ├── config.md
    ├── init-scripts.md
    ├── Makefile
    ├── network.md
    ├── tina.md
    ├── wireless.md
    └── working.md
5.3.5 каталог личи

В каталоге lichee в основном хранятся загрузчик, ядро, arisc, dsp и другие коды.

Язык кода:javascript
копировать
lichee/
    ├── bootloader
    │ ├── uboot_2011_sunxi_spl
    │ └── uboot_2014_sunxi_spl
    ├── brandy
    │ ├── u-boot-2011.09
    │ └── u-boot-2014.07
    ├── brandy-2.0
    │ ├── spl
    │ ├── tools
    │ └── u-boot-2018
    ├── linux-3.4
    ├── linux-3.10
    ├── linux-4.4
    ├── linux-4.9
    ├── arisc

Команды быстрого перехода: ядро, cboot, cboot0, carisc.

5.3.6 каталог пакетов

В каталоге пакета хранится исходный код пакета программного обеспечения и правила компиляции на целевой машине. Каталог разделен в соответствии с функциями целевого пакета программного обеспечения. добрый.

Язык кода:javascript
копировать
package/
    ├── allwinner
    ├── base-files
    ├── devel
    ├── dragonst
    ├── firmware
    ├── kernel
    ├── ......
    └── utils
5.3.7 готовый каталог

В каталоге предварительной сборки хранится предварительно скомпилированный кросс-компилятор. Структура каталогов следующая.

Язык кода:javascript
копировать
prebuilt/
    └── gcc
        └── linux-x86
            ├── aarch64
            │   ├── toolchain-sunxi-musl
            │   └── toolchain-sunxi-glibc
            ├── arm
            │   ├── toolchain-sunxi-arm9-glibc
            │   ├── toolchain-sunxi-arm9-musl
            │   ├── toolchain-sunxi-glibc
            │   ├── toolchain-sunxi-musl
            └── host
            └── host-toolchain.txt
5.3.8 Каталог сценариев

Каталог сценариев используется для хранения некоторых сценариев, связанных со сборкой и компиляцией.

Язык кода:javascript
копировать
scripts/
    ├── arm-magic.sh
    ├── brcmImage.pl
    ├── bundle-libraries.sh
    ├── checkpatch.pl
    ├── clang-gcc-wrapper
    ├── cleanfile
    ├── clean-package.sh
    ├── cleanpatch
    ├── ......
5.3.9 целевой каталог

Целевой каталог используется для хранения конфигураций и спецификаций целевой платы, созданных SDK и набором инструментов.

Язык кода:javascript
копировать
target/
    ├── allwinner
    ├── Config.in
    ├── imagebuilder
    ├── Makefile
    ├── sdk
    └── toolchain

Команда быстрого перехода: cdevice.

5.3.10 каталог набора инструментов.

Каталог инструментальной цепочки содержит конфигурации и правила сборки кросс-инструментальной цепочки.

Язык кода:javascript
копировать
toolchain/
    ├── binutils
    ├── Config.in
    ├── fortify-headers
    ├── gcc
    ├── gdb
    ├── glibc
    ├── info.mk
    ├── insight
    ├── kernel-headers
    ├── Makefile
    ├── musl
    └── wrapper
5.3.11 каталог инструментов.

Каталог инструментов используется для хранения правил компиляции инструментов на стороне хоста.

Язык кода:javascript
копировать
tools/
    ├── autoconf
    ├── automake
    ├── aw_tools
    ├── b43-tools
    ├── ......
5.3.12 исходящий каталог.

Каталог out используется для сохранения временных файлов и окончательных файлов изображений, связанных с компиляцией. Этот каталог автоматически создается после компиляции, например, плана компиляции. r328s2-perf1.

Язык кода:javascript
копировать
out/
    ├── r328s2-perf
    └── host

Каталог хоста используется для хранения инструментов на стороне хоста и некоторых файлов, связанных с разработкой.

Каталог r328s2-perf1 — это каталог, соответствующий решению. Структура каталога программы следующая:

Язык кода:javascript
копировать
out/r328s2-perf
    ├── boot.img
    ├── compile_dir
    ├── image
    ├── md5sums
    ├── packages
    ├── r328s2-perf1-boot.img
    ├── r328s2-perf1-uImage
    ├── r328s2-perf1-zImage
    ├── rootfs.img
    ├── sha256sums
    ├── staging_dir
    └── tina_r328s2-perf1_uart0.img
  • boot.img - финальная запись приехать в систему загрузку Разделить данные,Это может быть формат boot.img или uImage.
  • rootfs.img — это последний записанный файл системы rootfsРазделизданных, который по умолчанию имеет формат sqashfs.
  • r328s2-perf1-zImage — это образ ядра изzImage, используемый для дальнейшей генерации uImage.
  • r328s2-perf1-uImage — образ ядра в формате uImage,Если настроено как формат uImage,Он будет скопирован в boot.img.
  • r328s2-perf1-boot.img — образ ядра изboot.img в формате,Если настроено в формате boot.img,будет скопировано в boot.img
  • compile_dir компилирует хост для SDK,целевой и инструментальный каталог — каталог временных файлов,Для каждого пакета программного обеспечения имеются исходные коды.
  • staging_dir — это каталог, в котором сохраняется каждый результат каталога во время процесса компиляции SDK.
  • Каталог пакетов сохраняется и представляет собой окончательный созданный пакет программного обеспечения ipk.
  • tina_r328s2-perf1_uart0.img — это окончательный пакет прошивки (образ системы), через который выводится информация о последовательном порте.
  • Если используете пакет -d,Тогда сгенерированный пакет прошивки — xxx_card0.img,Передача информации через последовательный порт. Выход держателя карты.

Команда быстрого прыжка: cout.

5.4 Обновление SDK

Обновления SDK разделены на две категории: одна выпускается в One Number в виде патчей, а система уведомляет разработчиков по электронной почте после выпуска; другая — это регулярные (раз в полгода или квартал) итеративные обновления небольших версий, которые обновляются в прошлом; Патчи, интегрированные в SDK, после выпуска будут уведомлены разработчиками по системной электронной почте, и их можно будет обновить с помощью команды синхронизации репо на основе чистого пакета SDK.

5.5 Обратная связь о проблеме

Allwinner предоставляет платформу обслуживания клиентов Allwinner (https://open.allwinnertech.com) для регистрации проблем, с которыми сталкиваются клиенты. Статус проблемы и решения. Это облегчает отслеживание обеими сторонами и делает решение проблем более эффективным. Последующие проблемы с SDK, технические проблемы, технические консультации. и т. д. могут быть отправлены в эту систему, и технические службы Allwinner будут своевременно распространять, обрабатывать и отслеживать проблемы.

Примечание. Учетную запись для входа в систему необходимо открыть и подтвердить в Allwinner.

6. Сборка и упаковка Тины

6.1 Обзор

6.2 Система компиляции

Язык кода:javascript
копировать
(1) source build/envsetup.sh
(2) lunch
(3) make [-jN]
(4) pack [-d]

в,
Шаг (1) Создайте среду компиляции и экспортируйте переменные компиляции.
Шаг (2) предложит вам выбрать решение, которое вы хотите скомпилировать.
Параметр N на шаге (3) — это количество параллельных процессов компиляции, которое зависит от количества ядер ЦП сервера компиляции, например: 4 Core PC, может «сделать -j4"
Шаг (4) Пакет прошивки, параметр -d позволяет выводить информацию о последовательном порте сгенерированного пакета прошивки держателю карты пакета.
После завершения компиляции образ системы будет Пакетсуществоватьout/<board>/в каталоге

6.3 Компилируем загрузку

Заказ

Заказдействительный каталог

эффект

mboot

Любой каталог под tina

Скомпилируйте boot0 и uboot

mboot0

Любой каталог под tina

Скомпилировать boot0

muboot

Любой каталог под tina

Скомпилировать uboot

6.4 Компилируем ядро

Заказ

Заказдействительный каталог

эффект

mkernel

Любой каталог под tina

Скомпилировать ядро

6.5 Компиляция ARISC

arisc — это кодовое имя платформы AW для среды кода процессора. Его основная функция — отвечать за базовые операции, такие как спящий режим и завершение работы. он содержит Драйверы, библиотеки и наборы инструментов, необходимые для работы процессора, компилируются для создания scp.bin, а затем упаковываются в образ Tina с загрузочным файлом. Загрузчик загружается в домен процессора при запуске и запускается.

Тина предоставляет следующие прыжки и подборки, связанные с arisc:

Заказ

Заказдействительный каталог

эффект

carisc

Любой каталог под tina

Перейдите в каталог проекта кода процессора.

mkarisc

Любой каталог под tina

Скомпилировать код процессора

В Tina существует два способа компиляции кода arisc:

Первый способ — перейти к пути к коду arisc и скомпилировать его с помощью make.

Библиотека кода arisc имеет независимую цепочку инструментов и систему сборки, поэтому для компиляции кода arisc вы также можете перейти по соответствующему пути. Вниз, выполните makeЗаказ. Однако обратите внимание, что на данном этапе вам необходимо вручную сгенерировать файл isscp.bincopia. файлприжатьезSDKизbin файл По пути перезапишите соответствующий файл (общий путь — tina/device/config/chips/${имя платформы}/bin).

Операция заключается в следующем:

Язык кода:javascript
копировать
step1
Используйте carisc или cd Order, чтобы перейти в среду кода прибытияarisc Вниз, обычно tina/lichee/arisc/ar100s.

step2
Сгенерируйте необходимую конфигурацию. В Arch/configs/Вниз есть множество файлов конфигурации по умолчанию defconfig, которые можно выбирать и использовать в соответствии с моделью AXP, например make sun50iw10p1_axp803_defconfig. Эта операция создаст файл .config в корневом каталоге arisc.

step3
Чтобы изменить конфигурацию по умолчанию, используйте make менюконфигурация. Эта операция создаст меню конфигурации. Просто выберите необходимую конфигурацию. Эта операция изменит файл .config. Если вам нужно повторно использовать конфигурацию по умолчанию, повторите шаг 2.

step4
Скомпилировать с помощью makeЗаказ

step5
Скопируйте scp.bin в каталог приезжатьTinaizbin, то есть cbin может перейти в каталог из. Например, /tina/device/config/chips/r818/binstep6.

Если вам нужно очистить проект, вы можете использовать make clean

step7
Если вам нужно отправить изменения конфигурации defconfig, вы можете использовать make savedefconfigЗаказ. Этот заказ будет создан в корневом каталоге arisc на основе .config. дефконфиг. Скопируйте defconfig в папку прибытияarch/configs/Вниз и перезапишите соответствующий файл конфигурации.

Уведомление:

Вообще говоря, функции, выполняемые arisc, являются относительно низкоуровневыми, в основном связаны с такими операциями, как спящий режим и завершение работы, и имеют более высокие требования к стабильности. мы не Клиентам рекомендуется самостоятельно изменить любую соответствующую конфигурацию и код. При необходимости свяжитесь с нашей компанией или проведите достаточное тестирование стабильности.

Второй способ — использовать mkariscЗаказ.

Как упоминалось в приведенном выше методе,Чтобы решить проблему ручного копирования после компиляции arisc, Тина,TinaЭтот ярлык предоставляется Заказ мкариск. Следует отметить, что в настоящее время поддерживается только компиляция кода arisc R818 и MR813.

Операция заключается в следующем:относительно простой

Язык кода:javascript
копировать
step1
Настройте среду tina, например soure build/envsetup.sh, обед и другие операции.

step2
Используйте mkarisc для компиляции или напрямую КомпилироватьTina. При КомпилироватьTina также будет автоматически вызываться mkarisc Order.

Уведомление:

При компиляции с использованием mkariscЗаказ,Board.dts будет автоматически прочитан для получения модели AXP.,Затем используйте соответствующий файл конфигурации по умолчанию. Компиляция файлов. Если в board.dts указано «x-powers, axp803», mkarsicЗаказ будет использовать среду разработки arisc. Скомпилируйте файл конфигурации sun50iw10p1_axp803_defconfig в среде. В настоящее время, если вам нужно изменить конфигурацию arisc, Вы можете только сначала изменить файл конфигурации, а затем скомпилировать. Другие изменения конфигурации не принимаются.

6.6 Компиляция прошивки E907 (гетерогенное ядро ​​AMP платформы V85x)

E907 — это название процессора AMP платформы V85x. Его основная функция — обеспечить дополнительную вычислительную мощность и помочь Linux добиться быстрого запуска. ждать. Он содержит драйверы, библиотеки и наборы инструментов, необходимые для работы E907. Он скомпилирован для создания riscv.fex и упакован в образ Tina. Он загружается в ядро ​​RISC-V и запускается загрузчиком при запуске.

В Tina SDK скомпилируйте код E907 RISCV следующим образом:

E907 RISCV База кода имеет независимую цепочку инструментов и систему сборки, поэтому E907 Компиляцию прошивки тоже можно пропустить Поверните Приехать, соответствующий пути Вниз, и выполните Заказ. Однако следует отметить, что в это время вам необходимо вручную генерировать melis30.elf копия файла приезжать SDK из bin Путь к файлу Вниз, охватывающий соответствующий файл (общий путь устройство/конфигурация/чипы/${Платформа имя}/configs/default/riscv.fex).

Операция заключается в следующем:

Язык кода:javascript
копировать
step1
Используйте cdЗаказ, чтобы перейти в среду кода прибытияe907 Вниз, обычно rtos-dev/lichee/melis-v3.0/source.

step2
source melis-env.sh

step3
lunch v853-e907-ver1-board

step4
make menuconfig

step5
make -j

step6
Если вам нужно уменьшить объем памяти, вы можете обрезать отладочную информацию в melis. Выполнение исходного каталога: riscv64-unknown-elf-strip ekernel/melis30.elf

step7
Скопируйте и переименуйте его в riscv.fex, чтобы заменить изriscv.fex в каталоге tina/device/config/chips/v853/configs/default.

cp ekernel/melis30.elf /home/xxx/tina/device/config/chips/v853/configs/default/riscv.fex

step8
Выполнение системного каталога Tina Пакет Заказpack

6.7 Перепрограммирование приложения

Пожалуйста, убедитесь, что вы скомпилировали прошивку один раз.,Убедитесь, что база SDK скомпилирована.,быть одному Перепрограммировать приложение Сумка。Перепрограммировать Сценарии применения пакета приложения обычно предназначены для: Я только модифицировал приложение, перепрошивку не хочу, нужно только установить установочный пакет приложения. . Перед компиляцией убедитесь, что среда tina загружена:

Язык кода:javascript
копировать
$ source build/envsetup.sh
$ lunch
6.7.1 Метод 1

Находясь в каталоге пакета приложения (включая его подкаталоги), вы можете выполнить

Язык кода:javascript
копировать
$ mm [-B]
=> Параметр B сначала очищает временные файлы этого приложения, а затем компилирует его.

Пример: Предположим, что путь к пакету программного обеспечения: tina/package/utils/rwcheck, тогда:

Язык кода:javascript
копировать
$ cd tina/package/utils/rwcheck
$ mm -B

Скомпилированный установочный пакет программы сохраняется по следующему пути:

Язык кода:javascript
копировать
tina/out/<план>/packages/base
6.7.2 Метод 2

Находясь в корневом каталоге tinaiz, выполните:

Язык кода:javascript
копировать
$ make <приложение Сумкаизпуть>/clean,==>清空приложение Сумкавременныйдокумент
$ make <приложение Сумкаизпуть>/install,==>Компиляция программного обеспечения Сумка
или
$ make <приложение Сумкаизпуть>/{clean,install},==>Сначала очистите временные файлы, а затем скомпилируйте

Пример. Предположим, что путь к пакету: tina/package/utils/rwcheck, тогда:

Язык кода:javascript
копировать
$ cd tina
$ make package/utils/rwcheck/{clean,install}

6.8 Другие команды

Заказ

Заказдействительный каталог

эффект

make

Корневой каталог tina компилирует весь SDK

make

Корневой каталог Menuconfig tina запускает интерфейс конфигурации пакета программного обеспечения.

make

root_menuconfig tina запускает интерфейс конфигурации ядра

mkarisc

Любой каталог под tina Скомпилируйте исходный код процессора и выберите соответствующую конфигурацию по умолчанию в соответствии с моделью AXP.

printfconfig

Любой каталог под tina Распечатать текущую конфигурацию SDKиз

croot

Любой каталог под tina Быстрый переход приезжатькорневой каталог Тины

cconfigs

Любой каталог под tina Быстрое переключение схемы проживания из каталога конфигурации

cdevice

Любой каталог под tina Быстрое переключение каталога конфигурации схемы проживания

carisc

Любой каталог под tina Быстрое переключение каталога кодов процессора

cgeneric

Любой каталог под tina Быстрое переключение общего каталога схемы проживания

cout

Любой каталог под tina Быстрое переключение программы прибытия из выходного каталога

cboot

Любой каталог под tina Быстрое переключение каталога загрузчика

cgrep

Любой каталог под tina Найти строки в файлах c/c++/h

minstall

корневой каталог path/to/package/tina Скомпилируйте и установите пакет программного обеспечения.

mclean

путь/к/пакету/корневой каталог tina, чистый пакет

mm [-B]

Каталог пакета программного обеспечения. Скомпилируйте пакет программного обеспечения. -B означает очистку перед компиляцией.

pack

упакованная прошивка в корневом каталоге tina

m

Любой каталог под tina makeиз Быстрый Заказ,Скомпилировать весь SDK

p

Любой каталог под tina Packizfast Заказ, Пакет прошивки

7 Программирование системы Тины

7.1 Обзор

В этой главе в основном описывается процесс записи готового файла образа (образа) и его запуска на аппаратном устройстве.

из Горетьинструмент в SDK больше не обновляется,Будет удалено позже,Пожалуйста, уделите приоритетное внимание загрузке последней версии Гореинструмента с платформы обслуживания клиентов Цюаньчжи.

windowsинструмент интегрирован в APST,Просто скачайте и установите APST,APSTизинструмент поставляется с собственной документацией.

7.2 Инструмент для записи

Tina предлагает несколько видов записи изображений, введение показано в таблице. Пользователи могут выбрать подходящий метод записи.

инструмент

Запустите систему

описывать

PhoenixSuit

windows

Раздел обновления и весь инструмент для обновления прошивки

PhoenixCard

windows

Инструмент для производства прошивки карты

PhoenixUSBpro

windows

Инструмент для модернизации массового производства,Поддержка USB One Drag 8 Гореть

LiveSuit

ubuntu

Инструмент обновления прошивки

Для убунту:

  • 64-битный хост использует LiveSuitV306_For_Linux64.zip.
  • 32-битный хост использует LiveSuitV306_For_Linux32.zip.

Конкретные инструкции и инструкции по использованию можно загрузить с платформы обслуживания клиентов Гореинструмент.

7.3 Войдите в режим записи.

Устройству необходимо войти в режим Гореть. Устройство перейдет в режим Гореть в следующих ситуациях:

  1. BROM не может прочитать приезжатьboot0,Например, новая флешка не содержит данных,или Короткое замыкание при включении питанияflashблокировать связь。
  2. Нажмите последовательный порт 2 Входить Гореть。Прямо сейчас,В поле вывода инструмента последовательного порта,Нажмите и удерживайте клавиатуру «2»,Продолжайте выводить символ «2»,Включите питание и начните. boot0 обнаруживает этот символ приехать,Перейдет в режим приезжать Гореть.
  3. В консоли uboot выполните efex.
  4. В консоли Linux выполните перезагрузку efex.
  5. Если adb доступен, вы можете использовать эффект перезагрузки оболочки adb или нажать кнопку «Сейчас Гореть» на Гореинструменте.
  6. Когда fel_key_max и fel_key_min полностью настроены в [fel_key], нажмите значение клавиши в пределах диапазона, а затем включите питание.
  7. Если на плате имеется кнопка FEL, нажмите и удерживайте кнопку FEL, чтобы включить питание.
  8. Сделайте специальную карту активации,Загрузитесь с карты и войдите в режим Гореть.

8 Тина uboot, разработка индивидуального проекта

8.1 Обзор

В этой главе кратко описываются базовые настройки uboot.、функция пошива одежды、Компилировать пакет、Обычно используется Заказизиспользовать,Помогите клиентам понять Тину Платформа uboot обеспечивает основу для разработки индивидуальной загрузки.

В настоящее время Тина В SDK есть три версии uboot: uboot-2011, uboot-2014 и uboot-2018. При использовании на той же аппаратной платформе клиентам необходимо проверить информацию о версии в соответствии с аппаратной платформой разработки при получении SDK.

8.2 Путь кода

Язык кода:javascript
копировать
TinaSDK/
├── brandy
│   ├── ...
│   ├── u-boot-2011
│   └── u-boot-2014
├── brandy-2.0
│   ├── ...
│   └── u-boot-2018

8.3 функция загрузки

В TinaSDK загрузчик/uboot запускается до запуска ядра и может инициализировать аппаратные устройства и создавать карты пространства памяти. Спроецируйте карту, тем самым приведя системное программное и аппаратное обеспечение в подходящее состояние и подготовив правильную среду для окончательного вызова ядра Linux. в На платформе системы Тине,Помимо необходимости загрузки системы для запуска функции,uboot также обеспечивает программирование, обновления и другие функции.

  • Загрузочное ядро ​​может загрузить образ ядра, въезжающий в DRAM, в указанное место с носителя данных (nand/mmc/spinor) и запустить его.
  • массовое производство&обновление Сумкавключать Картамассовое производство,USB массовое производство,Частные данные Гореть,Обновление прошивки.
  • Управление питанием включает в себя логику управления при переходе в режим зарядки и отображение экрана во время зарядки.
  • В сообщении с приглашением загрузки может отображаться изображение логотипа запуска (формат BMP), когда компьютер включен.
  • FastbootФункция реализует стандарт fastbootiz.,Можно использовать fastboot для прошивки устройства.

8.4 конфигурация uboot

На примере uboot-2018 различные функции можно включать и отключать с помощью defconfig или меню конфигурации menuconfig. Конкретный метод настройки следующий:

8.4.1 метод defconfig
8.4.1.1 Этапы настройки defconfig
  1. vim /TinaSDK/lichee/brandy2.0/u-boot-2018/configs/sun8iw18p1_defconfig (если это спинорное решение, откройте sun8iw18p1_nor_defconfig)
  2. После открытия sun8iw18p1_defconfig или sun8iw18p1_nor_defconfig,Удалите или добавьте «#» перед соответствующим определением макроса, чтобы включить или выключить соответствующую функцию.

Как показано выше,Просто удалите # перед CONFIG_SUNXI_NAND, чтобы поддержать функцию, связанную с NAND.,Другие определения макросов аналогичны для включения и выключения.

8.4.1.2 Знакомство с макросом конфигурации defconfig.

На следующем рисунке представлены основные определения макросов в sun8iw18p1_defconfig/sun8iw18p1_nor_defconfig:

8.4.2 Метод менюконфигурации

Шаги по настройке из режима меню конфигурации следующие:

Язык кода:javascript
копировать
cd /TinaSDK/lichee/brandy2.0/u-boot-2018/
make ARCH=arm менюконфигурировать или сделать ARCH=arm64 menuconfig

Уведомление: рука для 32 битовая платформа, цели Arm64 64 битовая платформа.

Выполнение вышеуказанного заказа приведет к появлению меню конфигурации меню.,Как показано ниже,На этом этапе вы можете настроить функцию каждого модуля.,соответствовать Способ настройки описан в окне меню конфигурации меню.

8.5 компиляция uboot

8.5.1 Метод 1

Вы можете скомпилировать uboot в каталоге tina.

Язык кода:javascript
копировать
source build/envsetup.sh (см. подробное примечание 1)
lunch (См. подробное примечание 2)
muboot (см. подробное примечание 3)
Подробные примечания:
1 Загрузка переменных среды и tina предоставляет из Заказ.
2 Введите номер и выберите план.
3 Скомпилировать uboot, автоматически обновлять uboot после завершения компиляции binaryприезжатьTinaSDK/target/allwinner/$(BOARD)-common/bin/。
8.5.2 Способ 2
Язык кода:javascript
копировать
source build/envsetup.sh (см. подробное примечание 1)
lunch (См. подробное примечание 2)
cboot (см. подробное примечание 3)
make XXX_config (см. подробное примечание 4)
make -j

Подробные примечания:
3 Перейдите в каталог с исходным кодом приезжатьUboot.
4 Выберите конфигурацию решения. Если вы используете norflash, запустите make. XXX_nor_config。
5 Выполнить Скомпилировать ubootизэкшн.

8.6 конфигурация uboot

8.6.1 Конфигурация sys_config.

sys_config.fex — важный файл для настройки параметров различных модулей. Он предоставляет информацию для изменения и обновления важных параметров каждого модуля. Чрезвычайно удобно. Путь хранения документов:

Язык кода:javascript
копировать
TinaSDK/target/allwinner/$(BOARD)/configs/sys_config.fex
TinaSDK/device/config/chips/$(CHIP)/configs/$(BOARD)/sys_config.fex
8.6.1.1 Знакомство со структурой sys_config.fex

sys_config.fes в основном состоит из первичных ключей и подразделов.,Первичный ключ — это основной идентификатор элемента или модуля.,В квадратных скобках [],Подключ правильный Функция или каждый параметр элемента конфигурации в модуле, как показано на рисунке ниже, dram_para — это первичный ключ, dram_clk, dram_type и dram_zp — это подразделы.

8.6.1.2 Пример конфигурации sys_config.fex

[платформа]: элементы конфигурации, связанные с платформой.

Например, debug_mode =1 означает включение режима отладки uboot. После его включения в журнал будет напечатана соответствующая информация об отладке. интерес. next_work=2 означает, что система выполнит следующий шаг после завершения процесса (0x1 означает обычный запуск, 0x2 означает перезагрузку, 0x3 означает «выключено»), для других конфигураций см. подсказки перед [платформа].

[цель]: элементы конфигурации функции, относящиеся к целевой платформе.

На рисунке выше вы можете настроить частоту процессора, настроив boot_clock.

[uart_para]: элемент конфигурации последовательного порта, элемент конфигурации uart_para — это важная конфигурация, используемая при печати и отладке последовательного порта uboot.

На приведенном выше рисунке isuart_debug_port=0 означает, что конфигурация uart_debug_tx/uart_debug_rx порта gpio (PA04/PA05) должна основываться на соответствующих настройках GPIO.

8.6.1.3 Процесс анализа sys_config.fex

В uboot2014/2018 sys_config.fex в конечном итоге будет преобразован в dtb (устройство tree binary,linuxКонфигурация ядра Способ),dtb в конечном итоге будет Пакет Гореть для прошивки,Этот файл будет загружен в память во время запуска.,Ранее настроенные параметры в sys_config.fex были преобразованы в узлы dtb.,Наконец, будет вызвана функция fdt_getprop_32() для анализа узла из в dtb.

8.6.2 Конфигурация переменных среды.

Переменные ubootizenvironment представляют собой пары ключ-значение.,Интерфейс работы для:getenv(),setenv(),сохранитьv(). Переменная среды формы:

Язык кода:javascript
копировать
boot_normal=sunxi_flash read 40007800 boot;boota 4000780\
boot_recovery=sunxi_flash read 40007800 recovery;boota 40007800\
boot_fastboot= fastboot
8.6.2.1 Роль переменных среды.

Вы можете разместить некоторую информацию о параметрахили Заказпоследовательностьопределениесуществовать Долженв переменных среды。существоватьв переменных средыопределениеUBOOTЗаказпоследовательность,

Функциональные модули UBOOT можно комбинировать и выполнять для выполнения важной функции.

Например, если вы выполните вышеупомянутое boot_normal Переменные среды соответствуют из Заказ, Uboot будет вызван первым sunxi_flash Заказ загружает ядро ​​приезжатьDRAMиз0x40007800 с носителя изbootРаздел; Полная загрузка ядра с помощью bootaЗаказ.

Способ вызова переменных среды при запуске uboot показан на рисунке:

8.6.2.2 Знакомство с примерами конфигурации переменных среды.

В TinaSDK файл конфигурации переменной среды сохраняется в TinaSDK/target/allwinner/$(BOARD)/configs/env.cfg. документ,Когда пользователи используют из,Вы можете посмотреть приезжатьenv-4.4.cfg, env-4.9.cfg и другие файлы.,env-xxxСуффиксные числа обозначаютсуществовать Нет На той же версии ядраизсоответствоватьнабор。После открытия его содержимое отображается Например Вниз,

  • bootdelay=0, измените значение переменной среды bootdelay (то есть время задержки обратного отсчета в журнале во время загрузки). Для облегчения отладки значение bootdelay обычно не должно быть равно 0., чтобы вы могли войти в uboot, нажав любую клавишу после включения миникомпьютера. Статус заказа оболочки.
  • boot_normal=sunxi_flash read 40007800 boot;boota 4000780,Установить загрузочное ядро ​​Заказ,При загрузке Раздел прочитайте адрес памяти 0x40007800,Затем запустите ядро ​​с адреса памяти 0x40007800.
  • Setargs_nand=setenv bootargs earlyprintk=${earlyprink}… ,Установите переменные среды, связанные с ядром,Эта переменная будет распечатана и обработана при загрузке в журнал ядра.,То есть cmdline выглядит так, как показано ниже:
  • loglevel=8, устанавливает уровень печати журнала ядра.
8.6.3 Конфигурация раздела sys_partition.fex

Файл конфигурации Раздела представляет собой файл Разделиз диска планирования. Процесс Гореть перенесет данные каждого Раздела во флэш-память в соответствии с файлом конфигурации Раздела.

ТинаSDK,Разделите путь к файлу конфигурации TinaSDK/target/allwinner/$(BOARD)/configs/sys_partition.fex. Для некоторых решений вы можете просмотреть два файла конфигурации Раздела sys_partition.fex и sys_partition_nor.fex.,Если это ПакетTina не прошивка,Затем используйте файл конфигурации sys_partition_linux.fex.,Если это пакет или прошивка,Затем используйте sys_partition_nor.fex.

8.6.3.1 Введение в настройку раздела sys_partition.fex

Разделизсвойство, содержащее имя, размер раздела, файл загрузки и свойство пользователя. Вот что в файле:

  • name,Разделимя настраивается пользователем. Когда пользователь определяет Разделиз,Вы можете изменить это на нужную строку,Но длина не может превышать 16 байт.
  • size,Определите размер Разделиза,В единицах размера сектора (1 сектор = 512 байт).,Как показано выше Даватьenv Раздел выделено 32768 секторов, т.е. 32768*512/1024/1024 = 16M), обратите внимание, что для выравнивания по байтам размер выделенного здесь сектора должен быть кратным 128 。
  • downloadfile,Скачать файл по пути и имени. Можно использовать относительные пути.,Относительное относится к местоположению файла image.cfg. Также можно использовать абсолютные пути.
  • user_type,Предоставляется операционной системе для использования. в настоящий момент,Когда каждая операционная система читает Разделиз,Прежде чем продолжить, на основе свойств пользователя будет оцениваться, принадлежит ли ему текущий Раздел или нет. Этот проект разработан, чтобы избежать проблем при одновременном существовании нескольких систем.,Операционная система A выполняет операции чтения и записи в операционной системе B и системе Раздел, которые не следует выполнять.,В результате операционная система B не может работать должным образом.

Более конкретные инструкции можно найти в «Руководстве по разработке TinaLinux Storage Management».

9 Индивидуальная разработка ядра Tina

9.1 Обзор

В этой главе кратко представлены базовые настройки ядра.、функция пошива одежды、Обычно используется Заказизиспользовать,Помогите клиентам понять Тинуплатформаlinux Ядро обеспечивает основу для индивидуальной разработки ядра.

В настоящее время Тина Всего SDK 4 версия Linux ядро соответственно linux-3.4, linux-3.10, linux-4.4, linux- 4.9,Используется на разных аппаратных платформах соответственно,Когда клиенты получают пакет SDK для поездок, им необходимо проверить информацию ядра на основе разработки аппаратной платформы.

9.2 Путь кода

Язык кода:javascript
копировать
TinaSDK/
    ├── ...
    ├── linux-3.10
    ├── linux-3.4
    ├── linux-4.4
    └── linux-4.9

9.3 Документация по разработке модуля.

Подробно прочтите документацию по разработке BSP. Каталог документации содержит инструкции по использованию и разработке для общих модулей ядра.

9.4 Конфигурация ядра

Когда клиенты настраивают продукты,Часто бывает необходимо изменить конфигурацию ядра Linux.,в TineSDK, откройте Конфигурацию ядраиз вроде Вниз,

Язык кода:javascript
копировать
croot
make kernel_menuconfig

После выполнения в консоли оболочки появится меню конфигурации. Как показано на рисунке ниже,

10 Индивидуальная разработка системы Tina

10.1 Tina переключение procd-init и busybox-init.

tina по умолчанию использует procd-init:

Язык кода:javascript
копировать
make Menuconfig для настройки:
1.System init Выберите procd-init

2. Выберите следующие шаги
Base system --->
    <*>block-mount
    <*>busybox................................ Core utilities for embedded Linux --->
        Init Utilities --->
            [ ] init Не выбирать здесь
        Coreutils --->
            [*] head
        Miscellaneous Utilities --->
            [*] strings
    <*> uci
    <*> logd

3.env.cfg модификация
init=/sbin/init

Режим самозапуска busybox-init настраивается следующим образом:

Язык кода:javascript
копировать
make Menuconfig для настройки:
1.System init Выберите занятую инициализацию

2. Выберите следующие шаги
Base system --->
    <*>busybox................................ Core utilities for embedded Linux --->
    Init Utilities --->
    [* ] init Выберите здесь

3.env.cfg модификация
    init=/init
    rdinit=/rdinit

10.2 Трансплантация приложения

В Tina Linux SDK каталог программного пакета обычно содержит следующие два каталога и один файл:

Язык кода:javascript
копировать
package/<Классификация>/<программное обеспечение Сумкаимя>/Makefile
package/<Классификация>/<программное обеспечение Сумкаимя>/patches/ [необязательный]
package/<Классификация>/<программное обеспечение Сумкаимя>/files/ [необязательный]
в,
patches Сохраните файл патча, и все патчи будут автоматически добавлены в исходный код перед компиляцией.
files Сохраните исходный код программного пакета. Во время компиляции соответствующий исходный код перезапишет исходные файлы в исходном коде.
Makefile Компилировать файлы правил,

10.2.1 Пример Makefile

ДолженMakefileиз ФункциядаПодготовка исходного кода программного обеспечения,Процесс компиляции и установки,Предоставляет интерфейс для Tina Linux для идентификации пакетов программного обеспечения и управления ими.,Логика компиляции программного обеспечения определяется самим программным обеспечением Makefile.,Теоретически он не имеет реальной связи с Makefile (Makefile выполняет только makeЗаказ и связанные с ним параметры).

Подробные примечания:

Язык кода:javascript
копировать
1. Если это программное обеспечение с открытым исходным кодом, рекомендуется, чтобы версия пакета программного обеспечения соответствовала версии загруженного пакета программного обеспечения.
2. Переменные, начинающиеся с PKG, в основном сообщают Системе сборка Где скачать пакеты ПО.
3. md5sum используется для проверки правильности загруженного пакета программного обеспечения. Если он правильный, при компиляции программного обеспечения исходный код пакета программного обеспечения будет найден в PKG_BUILD_DIR.
4.Package/<name>: <name>используется для указания ДолженPackageизимя,Долженимявстречасуществоватьсоответствоватьнабор系统中显示。
5.использоватьполагаться Сумкаизимя<name>указать зависимости,Если это пакет расширения,Добавьте знак «+» впереди,еслида内核版本полагатьсяиспользовать@LINUX_2_<minor version>。
6. Если значение 1 , пакет не появится в меню конфигурации, а будет скомпилирован как фиксированная дополнительная опция.
7. В программном обеспечении с открытым исходным кодом он обычно используется для создания файла Makefile, параметры которого можно передавать через CONFIGURE_VARS.
8. В программном обеспечении с открытым исходным кодом это обычно эквивалентно выполнению команды make, в которой можно использовать два параметра: MAKE_FLAGS и MAKE_VARS.
9. Несколько встроенных ключевых слов:
    INSTALL_DIR эквивалентен установке -d m0755
    INSTALL_BIN эквивалентен установке -m0755
    INSTALL_DATA эквивалентно установке -m0644
    INSTALL_CONF эквивалентен установке -m0600
10. Все части определения этого файла Makefile определены для параметров макроса. Верхний файл Makefile компилируется путем вызова этого макроса.

10.2.2 Настройки автозапуска

в Тине Linux поддерживает два формата сценариев инициализации.,Что-то вродедаbusyboxРежимилиsysVРежимизсценарий инициализации, Что-то вродедаprocdРежимизсценарий инициализации。Обычно мы ставимПриложение, запускаемое сценарием инициализации, называется сервисом.

Сценарий инициализации организован в виде сценария оболочки на языке программирования.,Сценарии оболочки представляют собой базовые знания и здесь не будут объясняться. Общая ситуация Вниз, исходный код скрипта инициализации сохраняется в каталоге программных файлов.,И суффикс ".init",Например:

Язык кода:javascript
копировать
tina/package/system/fstools/files/fstab.init

Установите сценарий инициализации в Makefile из /etc/init.d.,Например:

Язык кода:javascript
копировать
define Package/block-mount/install
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_BIN) ./files/fstab.init $(1)/etc/init.d/fstab
endef
10.2.2.1 Вызов самозапускающегося сценария.
  • При запуске метода ручного вызова будет слишком много журналов.,Информация журнала собирается демоном logd.,не хорошо для нас Отладка скриптов инициализации,В это время вы можете вручную вызвать форму из Заказ через небольшой компьютерный терминал для отладки.,Например:
Язык кода:javascript
копировать
root@TinaLinux: /# /etc/init.d/fstab start
10.2.2.2 Сценарий формата sysV

Сценарий инициализации в стиле sysV сохраняется в каталоге /etc/init.d/ небольшого компьютера для реализации автоматического запуска при загрузке. Следующий пример начинается с минимального содержания Сценарий инициации описан в качестве примера. старт/стоп:

Язык кода:javascript
копировать
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
START=10
STOP=15
DEPEND=xxxx
start() {
#commands to launch application
}
stop() {
#commands to kill application
}
Уведомление:
START=10, Укажите приоритет загрузки (последовательность) [Чем меньше значение, тем Чем раньше начнется], диапазон значений: 0–99.
STOP=15, Укажите приоритет остановки выключения (последовательность) [Чем меньше значение, тем Сначала закройте], диапазон значений: 0–99.
DEPEND=xxxx,Указывает, что сценарий инициализации будет выполняться параллельно.,Обеспечьте выполнение зависимостей с помощью этой конфигурации.

имя

свойство

Функция

start

Должно быть достигнуто

Запустить службу

stop

Должно быть достигнуто

Остановить службу

reload

Опциональная реализация

Перезапустить службу

enable

Опциональная реализация

Перезагрузить сервис

disable

Опциональная реализация

Отключить службу

В оболочке вы можете использовать следующий заказ для работы с соответствующими услугами.

Язык кода:javascript
копировать
$ root@TinaLinux:/# /etc/init.d/exmple restart|start|stop|reload|enable|disable
10.2.2.3 сценарий формата procd

Следующий пример сценария инициализации используется в качестве примера для объяснения, в основном для реализации функции start_service:

Язык кода:javascript
копировать
#!/bin/sh /etc/rc.common
USE_PROCD=1
PROG=xxxx
START=10
STOP=15
DEPEND=xxxx
start_service() {
procd_open_instance
procd_set_param command $PROG -f
......
procd_close_instance
}

Подробное введение можно найти по адресу: https://wiki.openwrt.org/inbox/procd-init-scripts.

10.3 Отладка приложения

По умолчанию вновь добавленное программное обеспечение отключено. На данный момент вам необходимо вручную настроить активирующий пакет программного обеспечения. Выполнив в корневом каталоге tinaiz make menuconfig входит в интерфейс настройки программного пакета:

Путь к программному пакету связан с определением в программном пакете изMakefile.,Возьмите fstools в качестве примера,Определить в Makefile для:

Язык кода:javascript
копировать
define Package/fstools
    SECTION:=base
    CATEGORY:=Base system
    DEPENDS:=+ubox +USE_GLIBC:librt +NAND_SUPPORT:ubi-utils
    TITLE:=OpenWrt filesystem tools
    MENU:=1
endef

На этом этапе вам нужно только ввести Basy в интерфейсе меню конфигурации. systemПрямо сейчас Можно найтиприезжатьfstoolsизпрограммное обеспечение Сумка。

Значение префиксного символа:

Язык кода:javascript
копировать
[*] или<*> : Скомпилировать в SDK
[ ] или< > : Не включено

Поддерживаемые операции:

Язык кода:javascript
копировать
Y или y: Выбрать содержит
N или n: отменить выбор

10.4 Компиляция приложения

Подробности см. в главе «Приложение перепрограммирования».

10.5 Установка приложения

  1. Получить установочный пакет

Установочный пакет обычно находится в каталоге:

Язык кода:javascript
копировать
tina/out/<план>/packages/base

Формат названия установочного пакета для:

Язык кода:javascript
копировать
<Имя приложения>_<Версия приложения>-<Релизная версия приложения>_sunxi.ipk
  1. Установить пакет приложения

Загрузить установочный пакет для приезда маленькой машины через adb:

Язык кода:javascript
копировать
$ adb push <Установить Сумкапуть> <Толкатьприезжатьмаленький письменный столпуть>

Установите пакет приложения:

Язык кода:javascript
копировать
$ opkg install <Установить Сумкапуть>

10.6 Разбиение на разделы и монтаж

  • Обновить раздел

Раздел

Функция

bootРаздел

Сохранить образ ядра

rootfsРаздел

Базовый образ системы Раздел,включает/библиотека,/bin,/ и т. д. и т. д.

recoveryРаздел

Хранит образ системы восстановления, доступен только в плане большой емкости. Подробную информацию см. в документе OTA.

extendРаздел

Сохраните образ системы восстановления и часть rootfsizusr.,Только план малой мощности имеет,Подробности см. в документации OTA.

  • Нет Обновить раздел

Раздел

Функция

privateРаздел

Серийный номер магазина Раздел

miscРаздел

Статус системы、Flash-статус Раздел

UDISKРаздел

Данные пользователя Раздел,Обычно монтируется в /mnt/UDISK.

overlayfsРаздел

Хранить данные о покрытии наложений

  • по умолчаниюточка монтирования

Раздел

точка монтирования

Примечание

/dev/by-name/boot

/boot

/dev/by-name/boot-res

/boot-res

/dev/by-name/UDISK

/mnt/UDISK

Данные пользователя Раздел

/dev/mmcblk0 —/dev/mmcblk0p1

/mnt/SDCARD

TfКартаточка монтирования

/dev/by-name/rootfs_data

/overlay

Хранить данные о покрытии наложений

boy illustration
Реализуйте загрузку файлов с использованием минимального WEB API.
boy illustration
Демо1 Laravel5.2 — генерация и хранение URL-адресов
boy illustration
Spring boot интегрирует Kafka и реализует отправку и потребление информации (действительно при личном тестировании)
boy illustration
Мысли о решениях по внутренней реализации сортировки методом перетаскивания
boy illustration
Междоменный доступ к конфигурации nginx не может вступить в силу. Междоменный доступ к странице_Page
boy illustration
Как написать текстовый контент на php
boy illustration
PHP добавляет текстовый водяной знак или водяной знак изображения к изображениям – метод инкапсуляции
boy illustration
Интерпретация быстрой таблицы (TLB)
boy illustration
Интерфейс WeChat API (полный) — оплата WeChat/красный конверт WeChat/купон WeChat/магазин WeChat/JSAPI
boy illustration
Преобразование Java-объекта в json string_complex json-строки в объект
boy illustration
Примените сегментацию слов jieba (версия Java) и предоставьте пакет jar
boy illustration
matinal: Самый подробный анализ управления разрешениями во всей сети SAP. Все управление разрешениями находится здесь.
boy illustration
Коротко расскажу обо всем процессе работы алгоритма сборки мусора G1 --- Теоретическая часть -- Часть 1
boy illustration
[Спецификация] Результаты и исключения возврата интерфейса SpringBoot обрабатываются единообразно, поэтому инкапсуляция является элегантной.
boy illustration
Интерпретация каталога веб-проекта Flask
boy illustration
Что такое подробное объяснение файла WSDL_wsdl
boy illustration
Как запустить большую модель ИИ локально
boy illustration
Подведение итогов десяти самых популярных веб-фреймворков для Go
boy illustration
5 рекомендуемых проектов CMS с открытым исходным кодом на базе .Net Core
boy illustration
Java использует httpclient для отправки запросов HttpPost (отправка формы, загрузка файлов и передача данных Json)
boy illustration
Руководство по развертыванию Nginx в Linux (Centos)
boy illustration
Интервью с Alibaba по Java: можно ли использовать @Transactional и @Async вместе?
boy illustration
Облачный шлюз Spring реализует примеры балансировки нагрузки и проверки входа в систему.
boy illustration
Используйте Nginx для решения междоменных проблем
boy illustration
Произошла ошибка, когда сервер веб-сайта установил соединение с базой данных. WordPress предложил решение проблемы с установкой соединения с базой данных... [Легко понять]
boy illustration
Новый адрес java-библиотеки_16 топовых Java-проектов с открытым исходным кодом, достойных вашего внимания! Обязательно к просмотру новичкам
boy illustration
Лучшие практики Kubernetes для устранения несоответствий часовых поясов внутри контейнеров
boy illustration
Введение в проект удаления водяных знаков из коротких видео на GitHub Douyin_TikTok_Download_API
boy illustration
Весенние аннотации: подробное объяснение @Service!
boy illustration
Пожалуйста, не используйте foreach для пакетной вставки в MyBatis. Для 5000 фрагментов данных потребовалось 14 минут. .