Tina_Описание процесса упаковки Linux, руководство_новое
Tina_Описание процесса упаковки Linux, руководство_новое

OpenRemoved_Tina_Linux_Packaging Process_Instruction Guide_new

1 Обзор

1.1 Цель написания

Представляем процесс упаковки на платформе Allwinner.

1.2 Область применения

Программная платформа Allwinner Tina v3.0 или выше.

1.3 Соответствующий персонал

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

2 Знакомство с упаковкой прошивки

Упаковка прошивки означает запись скомпилированного нами загрузчика, ядра и корневой файловой системы в файл образа. Этот файл образа также называется прошивкой. Затем этот образ можно записать на NAND, флэш- или SD-карту для запуска системы. При упаковке в прошивку необходимо использовать некоторые инструменты упаковки, скрипты упаковки и файлы конфигурации упаковки. В этой статье в основном рассказывается, какие инструменты необходимы для упаковки, какие файлы конфигурации необходимы и процесс создания прошивки.

3 Знакомство с инструментами упаковки

В этой статье представлены только инструменты, уникальные для упаковки Tina. Другие общие инструменты, такие как unix2dos, можно найти на сайте Baidu. Уникальные инструменты упаковки в tina SDK сохраняются по следующему пути:

Язык кода:javascript
копировать
tina/tools/pack-bintools/src

3.1 update_mbr

Название инструмента

update_mbr

Описание функции

В соответствии с файлом конфигурации раздела обновите файлы основного загрузочного каталога sunxi_mbr.fex, sunxi_gpt.fex и список файлов загрузки раздела dlinfo.fex.

Как использовать

update_mbr <partition_file> (mbr_count)Если mbr_count не указан, mbr_count = 4;update_mbr <partition_file> <mbr_countnt> <output_name>Это использование должно быть указаноmbr_count,Первоначально вывод sunxi_mbr.fex Он будет переименован в выходное_имя.

Описание параметра

файл_раздела: файл конфигурации раздела, например sys_partition.binmbr_count: количество резервных копий mbr. Если не указано, значение по умолчанию mbr_count = 4; имя_вывода: изменить выходное имя sunxi_mbr.fex. Такое использование не рекомендуется без особых требований.

Примеры применения

update_mbr sys_partition.bin 4update_mbr sys_partition.bin 1 sunxi_mbr_tmp.fex (это использование не рекомендуется без особых требований)

3.2 merge_full_img

Название инструмента

merge_full_img

Описание функции

Укажите начальный логический адрес, объедините boot0, boot1, mbr и файлы из списка загрузки файлов раздела в пакет прошивки img, который применяется ни к малой емкости, ни к прошивке. В настоящее время понятия о разделении нет.

Как использовать

merge_full_img –out –boot0 <boot0.fex> –boot1 <boot1.fex> –mbr <mbr.fex> –partition <partition.fex> \–logic_start <512|256>–help

Описание параметра

–out : Укажите целевой файл вывода –boot0. <boot0.fex>:указанный вводboot0 Файл –boot1 <boot1.fex>:указанный вводboot1 файл-MBR <mbr.fex>:указанный вводmbr файловый раздел <partition.fex>:указанный ввод Раздел Конфигурациядокумент

–logic_start <512|256>:Укажите начальный логический адрес

–help:показывать Как использовать

Примеры применения

merge_full_img –out full_img.fex <br/>–boot0 boot0_spinor.fex <br/>–boot1 ${BOOT1_FILE} <br/>–mbr sunxi_mbr.fex <br/>–logic_start ${LOGIC_START} <br/>–partition_file

3.3 script

(1) Уведомление: Речь идет не о линуксе Универсальный скрипт Инструменты (Linux Скачать скрипт Инструмент для записи терминальных сессий) (2) Это одноименный инструмент, реализованный Quanzhi, инструмент Описание функцииследующее:

Название инструмента

script

Описание функции

Проанализируйте все элементы данных входного текстового файла и сгенерируйте новый двоичный файл для программного анализа. Сгенерированный целевой файл имеет то же имя, что и исходный файл (за исключением суффикса), но суффикс — .bin.

Как использовать

script <source_file>

Описание параметра

source_file: входной текстовый файл, их может быть несколько.

Примеры применения

scriptsys_config.fexscriptsys_partition.fex

3.4 dragonsecboot

Название инструмента

dragonsecboot

Описание функции

1) Сгенерируйте файл toc0 на основе указанных ключей. 2) Сгенерируйте файл toc1 на основе указанных ключей и базы cnfbase. 3) Сгенерировать ключи согласно конфигурационному файлу. 4) Упакуйте и сгенерируйте целевой файл в соответствии с конфигурацией файла конфигурации.

Как использовать

dragonsecboot -toc0 <cfg_file> <version_file>dragonsecboot -toc1 <cfg_file> <version_file>dragonsecboot -key <cfg_file> dragonsecboot -pack <cfg_file>

Описание параметра

-toc0: означает создание файла toc0 -toc1: означает создание файла toc1 -key: означает создание пакета ключей: означает упаковывание cfg_file: файл конфигурации keypath: путь ключа cnfbase: входной файл cnf_base.cnf version_file: откат защиты встроенного ПО файл конфигурации

Примеры применения

dragonsecboot -pack boot_package.cfgdragonsecboot -key dragon_toc.cfg keysdragonsecboot -toc0 dragon_toc.cfg keys version_base.mkdragonsecboot -toc1 dragon_toc.cfg keys cnf_base.cnf version_base.mk

3.5 update_boot0

Название инструмента

update_boot0

Описание функции

Исправьте параметры заголовка boot0 в соответствии с содержимым сценария конфигурации. Исправлены параметры: debug_mode, параметр dram_para, параметр uart, bootcpu, параметр jtag, параметр NAND и т.д.

Как использовать

update_boot0 <sys_config_file> <storage_type>

Описание параметра

boot0: файл boot0 sys_config_file: файл конфигурации системы Storage_type: тип носителя

Примеры применения

update_boot0 boot0_nand.fex sys_config.bin NANDupdate_boot0 boot0_sdcard.fex sys_config.bin SDMMC_CARDupdate_boot0 boot0_spinor.fex sys_config.bin SDMMC_CARD

3.6 update_dtb

Название инструмента

update_dtb

Описание функции

Выровняйте двоичный файл dtb дерева устройств Linux до 512 байт, а затем зарезервируйте место.

Как использовать

update_dtb <dtb_file> <reserve_size>

Описание параметра

dtb_file: входной двоичный файл дерева устройств Linux. dtb_size: сколько байт зарезервировано для выходного целевого файла.

Примеры применения

update_dtb sunxi.fex 4096

3.7 update_fes1

Название инструмента

update_fes1

Описание функции

Возьмите данные из файла конфигурации системы и исправьте параметры, относящиеся к заголовку fes1. К параметрам коррекции относятся: параметры DRAM, параметры UART, параметры JTAG и т. д.

Как использовать

update_fes1 <fes1_file> <config_file>

Описание параметра

fes1_file: исправленный файл FES1 config_file: входной файл конфигурации системы.

Примеры применения

update_fes1 fes1.fex sys_config.bin

3.8 signature

Название инструмента

signature

Описание функции

Подпишите файл раздела, указанный в MBR для подписи.

Как использовать

signature <sunxi_mbr_file> <dlinfo_file>

Описание параметра

sunxi_mbr_file: Входной MBR-файл. dlinfo_file: Файл списка загрузки входного раздела.

Примеры применения

signature sunxi_mbr.fex dlinfo.fex

3.9 update_toc0

Название инструмента

update_toc0

Описание функции

Извлеките соответствующие параметры из файла конфигурации системы и исправьте параметры конфигурации toc0. Исправленные параметры включают в себя: DRAM, UART, JTAG, NAND, карту 0, карту 2, безопасные параметры и т. д.

Как использовать

update_toc0 <toc0_file> <config_file>

Описание параметра

toc0_file: входной файл toc0 config_file: входной файл конфигурации системы

Примеры применения

update_toc0 toc0.fex sys_config.bin

3.10 update_uboot

Название инструмента

update_uboot

Описание функции

Извлеките соответствующие параметры из файла конфигурации системы и исправьте параметры заголовка uboot. К параметрам коррекции относятся: параметры UART, параметры TWI, целевые параметры, параметры SDCARD и т. д.

Как использовать

update_uboot <uboot_file> <config_file>update_uboot -merge <uboot_file> <config_file>update_uboot -no_merge <uboot_file> <config_file>

Описание параметра

uboot_file: файл uboot, который необходимо обновить config_file: файл конфигурации системы -merge: файл конфигурации системы будет склеен в конце файла uboot -no_merge: файл конфигурации системы не будет склеен в конце файла uboot файл uboot Примечание. Если параметр -no_merge не указан явно, система будет объединена по умолчанию. Файл конфигурации сращивается в конце файла uboot.

Примеры применения

update_uboot u-boot.fex sys_config.binupdate_uboot -merge u-boot.fex sys_config.binupdate_uboot -no_merge u-boot.fex sys_config.bin

3.11 update_scp

Название инструмента

update_scp

Описание функции

Извлеките соответствующие параметры из файла конфигурации системы и исправьте параметры заголовка scp (код работы с малым процессором используется только чипами с решениями для небольших процессоров). К параметрам коррекции относятся: параметры UART, параметры драм_пара и т. д.

Как использовать

update_scp <scp_file> <config_file>

Описание параметра

uboot_file: файл scp для обновления config_file: файл конфигурации системы

Примеры применения

update_scp scp.fex sunxi.fex

3.12 u_boot_env_gen

Название инструмента

u_boot_env_gen

Описание функции

Проанализируйте файл env, чтобы создать файл двоичных данных env, который сможет распознать uboot. Его функция аналогична стандартному инструменту mkenvimage.

Как использовать

u_boot_env_gen <env_file> <env_bin_file>

Описание параметра

env_file: входной файл evn env_bin_file: выходной двоичный файл env

Примеры применения

u_boot_env_gen env.cfg env.fex

3.13 fsbuild

Название инструмента

fsbuild

Описание функции

Сгенерируйте файлы расширенного формата на основе boot-resource.ini.

Как использовать

fsbuild <rootfs_config_file> <magic_file>

Описание параметра

rootfs_config_file: файл конфигурации системы fat. Magic: используется для проверки файловой системы fat.

Примеры применения

fsbuild boot-resource.ini split_xxxx.fex

3.14 update_toc1 (инструмент старой версии, позже будет устаревшим, вы можете игнорировать его

Название инструмента

update_toc1

Описание функции

Удалите соответствующие параметры из файла конфигурации системы и исправьте параметры конфигурации toc1. Исправленные параметры включают в себя: параметр board_id_simple_gpio (необходимо настроить и включить, и в настоящее время нет решения для его использования).

Как использовать

update_toc1 <toc1_file> <config_file>

Описание параметра

toc1_file: входной файл toc1 config_file: входной файл конфигурации системы

Примеры применения

update_toc1 toc1.fex sys_config.bin

3.15 programmer_img

Название инструмента

programmer_img

Описание функции

Создайте прошивку для носителя mmc.

Как использовать

programmer_img <boot0_file> <uboot_file> <out_img>programmer_img <mbr_file> <out_img> <in_img>

Описание параметра

in_img: входной файл или образ boot0_file: файл boot0 uboot_file: файл uboot файл_раздела: файл конфигурации раздела mbr_file: файл sunxi_mbr выходной_img: выходной файл или образ

Примеры применения

programmer_img boot0_sdcard.fex boot_package.fex ${out_img}programmer_img sys_partition.bin sunxi_mbr.fex ${out_img} ${in_img}

3.16 dragon

Название инструмента

dragon

Описание функции

Создайте прошивку на основе файла конфигурации img и файла конфигурации раздела.

Как использовать

dragon <img_config> <partition_file>

Описание параметра

img_config: файл конфигурации, описывает формат файла img и содержит список других файлов part_file: файл конфигурации раздела.

Примеры применения

dragon image.cfg sys_partition.fex

3.17 sigbootimg

Название инструмента

sigbootimg

Описание функции

Добавляет сертификат после входного файла и выводит файл с сертификатом.

Как использовать

sigbootimg –image <input_img> –cert <cert_file> –output <output_img>

Описание параметра

input_img: входной файл или изображение cert_file: сертификат, соответствующий файлу или изображению output_img: файл или изображение с сертификатом

Примеры применения

sigbootimg –image boot.fex –cert boot.fex –output boot_sig.fex

4 Анализ сценария упаковки

4.1 Процесс вызова скрипта

Выполните make -j16 в домашнем каталоге Tina. После завершения компиляции вы можете выполнить команду package для выполнения работы по упаковке. Весь процесс упаковки примерно такой, как показано на рисунке ниже:

В сочетании с приведенным выше анализом блок-схемы упаковки метод упаковки запускается в корневом каталоге Tina SDK:

Язык кода:javascript
копировать
pack

Окончательно упакованная прошивка помещается в каталог tina/out/platform-{board}/. Команда Pack — это, по сути, команда переменной среды, встроенная в tina SDK.

При использовании tina SDK вам необходимо выполнить команду source build/envsetup.sh. Эта команда экспортирует некоторые команды оболочки, реализованные tina SDK, в текущую оболочку. Откройте скрипт build/envsetup.sh и вы увидите, что в нем реализована функция оболочки:

Язык кода:javascript
копировать
function pack()

После выполнения команды Pack в корневом каталоге tina в скрипте build/envsetup.sh вызывается функция package(). После установки некоторых параметров функция package() наконец вызывает следующий оператор:

Язык кода:javascript
копировать
$T/scripts/pack_img.sh -c $chip -p $platform -b $board -d $debug -s $sigmode -m $mode -w
$programmer -v $securemode -i $tar_image -t $T
-c: тип входного чипа. Например: sun8iw18p1.
-p: Платформа ввода, например: tina
-b: решение на уровне входной платы. Например: r328s2-perf1.
-d: введите метод ввода журнала при отладке, например: uart0/card0.
-s: укажите, является ли Пакет безопасной прошивкой, например: none/secure.
-m: является ли ввод обычной прошивкой или дамп прошивки для отладки: нормальный/дамп
-w:
-v: использовать ли безопасную загрузку при входе в пакет. Для tinaSDK этот параметр заменен на -s. Этот параметр является устаревшим или не может быть использован для совместимости.
Обратите внимание на этот параметр
-i:Укажите, следует ли создавать сжатый пакет.none/tar_image,Используется во время отладки,Клиенты не могут Обратите внимание на этот параметр
-t: путь к корневому каталогу Тины

Как видно из вышеизложенного, функция package() наконец вызывает файл сценария tina/scripts/pack_img.sh, который реализует финальный процесс упаковки. В настоящее время сценарий упаковки в основном разделен на 5 этапов (остальные этапы представляют собой специальную обработку), а именно:

Язык кода:javascript
копировать
do_prepare
do_ini_to_dts
do_common
do_pack_tina
do_finish

4.2 Анализ каждого этапа упаковки

4.2.1 Фаза do_prepare

На этом этапе действие копирования файла завершено. При упаковке необходимо скопировать несколько файлов в каталог tina/out/xxxplatform/image. Скрипт на данный момент их классифицирует, а именно:tools_file_list, configs_file_list, boot_resource_list и boot_file_list, boot_file_secure, a64_boot_file_secure. Если есть новые файлы, их можно классифицировать по. одну из категорий. Или создайте новые классы, и эти файлы будут использоваться в последующей упаковке.

Язык кода:javascript
копировать
function do_prepare()
{
......
#Копировать инструменты_file_list Файлы классов в tina/out/xxxplatform/image в каталоге
printf "copying tools file\n"
for file in ${tools_file_list[@]} ; do
cp -f $file ${ROOT_DIR}/image/ 2> /dev/null
done
......
#Копировать список_файлов_конфигураций Файлы классов в tina/out/xxxplatform/image в каталоге
printf "copying configs file\n"
for file in ${configs_file_list[@]} ; do
cp -f $file ${ROOT_DIR}/image/ 2> /dev/null
done
......
#Копировать boot_resource_list Файлы классов в tina/out/xxxplatform/image в каталоге
printf "copying boot resource\n"
#Копируем разные boot_file_secure в соответствии с разными архитектурами рук Файлы классов в tina/out/xxxplatform/image в каталоге
#32-битная система
printf "copying secure boot file\n"
for file in ${boot_file_secure[@]} ; do
cp -f `echo $file | awk -F: '{print $1}'` \
${ROOT_DIR}/`echo $file | awk -F: '{print $2}'`
done
# 64-битная система
printf "copying arm64 secure boot file\n"
for file in ${a64_boot_file_secure[@]} ; do
cp -f `echo $file | awk -F: '{print $1}'` \
${ROOT_DIR}/`echo $file | awk -F: '{print $2}'`
done
}

4.2.2 Фаза do_ini_to_dts

В linux-3.10 была представлена ​​концепция дерева устройств Linux. На этом этапе в основном компилируется и генерируется файл sunxi.dtb, описывающий дерево устройств. Этот файл будет анализироваться во время процесса запуска ядра Linux, и модули драйверов устройств каждого периферийного устройства загружаются в соответствии со списком устройств в файле. Конкретный анализ реализации заключается в следующем:

Язык кода:javascript
копировать
function do_ini_to_dts()
{
if [ "x${PACK_KERN}" == "xlinux-3.4" ] ;
then return
fi
......
#Установите разные параметры в соответствии с разными ядрами и, наконец, вызовите следующую команду для компиляции и генерации .dbt документ
$DTC_COMPILER ${DTC_FLAGS} -O dtb -o ${ROOT_DIR}/image/sunxi{SUFFIX}.dtb \
-b 0\
-i $DTC_SRC_PATH\
-F $DTC_INI_FILE\
-d $DTC_DEP_FILE $DTC_SRC_FILE &int> /dev/null
if [ $? -ne 0 ]; then
pack_error "Conver script to dts failed" exit 1
fi
printf "Conver script to dts ok.\n"
......}

4.2.3 do_common фаза

На этом этапе завершается общий для всех системных платформ парсинг файлов и упаковка разделов. Конкретный анализ реализации заключается в следующем. (Последовательность кода не соответствует сценарию, в основном для удобства объяснения. Этот этап связан с носителем информации, версией ядра и т. д.). Поэтому он более сложен, но в основном включает в себя следующие 5 этапов: (1) С помощью инструмента unix2dos убедитесь, что текстовый файл имеет формат DOS. (2) Используйте инструмент-скрипт для анализа текстового файла и создания соответствующего двоичного файла для облегчения последующего анализа инструмента. (3) Обновите параметры заголовков boot0, uboot и scp. (4) Создайте boot_package. (5) Создайте данные раздела env env.fex. Конкретный анализ реализации заключается в следующем:

Язык кода:javascript
копировать
function do_common()
{
busybox unix2dos sys_config.fex
busybox unix2dos sys_partition.fex
busybox unix2dos sys_partition_nor.fex
#использовать скрипт Программа анализирует текст документаsys_config.fex и sys_partition.fex/sys_partition_nor.fex
#Сгенерировать соответствующий двойной файлsys_config.bin и sys_partition.bin Облегчает последующий анализ инструментальной программы
script sys_config.fex > /dev/null
script sys_partition.fex > /dev/null
script sys_partition_nor.fex > /dev/null
#Согласно sys_config.bin Параметры, вынимаем DRAM, UART Подождите, пока параметры обновятся boot0 Параметры заголовка
update_boot0 boot0_nand.fex sys_config.bin NAND > /dev/null
update_boot0 boot0_sdcard.fex sys_config.bin SDMMC_CARD > /dev/null
#Согласно sys_config.bin Настройки параметров, обновление uboot Параметры заголовка
update_uboot u-boot.fex sys_config.bin > /dev/null
#Согласно sys_config.bin Настройка параметров, обновление fes1.fex параметр
update_fes1 fes1.fex sys_config.bin > /dev/null
    #Создаем образ раздела ресурсов, связанных с процессом запуска
fsbuildboot-resource.inisplit_xxxx.fex > /dev/null
#Создаем uboot на основе конфигурации Базовая конфигурациядвоичный файлenv.fex
mkenvimage -r -p 0x00 -s ${env_size} -o env.fex env_burn.cfg
u_boot_env_gen env.cfg env.fex > /dev/null
#Сгенерировать boot_package на основе конфигурации boot_package.cfg
echo "pack boot package"
busybox unix2dos boot_package.cfg
dragonsecboot -pack boot_package.cfg
}

4.2.4 Фаза do_pack_tina

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

Язык кода:javascript
копировать
function do_pack_tina()
{
#Мягкая ссылка boot.fex, rootfs.fex
ln -s ${ROOT_DIR}/boot.img boot.fex
ln -s ${ROOT_DIR}/rootfs.img rootfs.fex
......
#Если вам нужно превратить его в безопасную прошивку, будет вызвана функция do_signature.
do_signature
{
#Создать toc0документ
dragonsecboot -toc0 dragon_toc.cfg ${ROOT_DIR}/keys ${ROOT_DIR}/image/version_base.
mk
#Согласно sys_config.bin параметр,Удалить DRAM,UART Подождите, пока параметр обновится toc0 Параметры заголовка
update_toc0 toc0.fex sys_config.bin
......
#Создать toc1документ
dragonsecboot -toc1 dragon_toc.cfg ${ROOT_DIR}/keys \
${CNF_BASE_FILE} \
${ROOT_DIR}/image/version_base.mk
#Подписываем ядро
sigbootimg --image boot.fex --cert toc1/cert/boot.der --output boot_sig.fex
#Согласно sys_config.bin параметр,Удалить DRAM,UART равный параметр updatetoc1 Параметры заголовка
update_toc1 toc1.fex sys_config.bin
}
}

4.2.5 Фаза do_finish

На этом этапе завершается упаковка согласно указанным участникам прошивки. Конкретный анализ реализации заключается в следующем:

Язык кода:javascript
копировать
function do_finish()
{
......
#Сгенерировать структуру разделов documentsunxi_mbr.fex и список документов загрузки раздела documentdlinfo.fex
update_mbr sys_partition.bin 4 > /dev/null
#На основе указанного членского документа и информации о разделах,Комбинация завершена Пакет
изображение дракона.cfg sys_partition.fex
...
}

4.3 Анализ потока данных процесса упаковки

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

Синие — это исходные файлы или сгенерированные промежуточные файлы; Зеленые — инструменты, используемые для упаковки; Красный — это последняя сгенерированная прошивка. Пожалуйста, обратитесь к следующей главе, чтобы узнать, какие файлы включены в прошивку. Вот еще одно изображение, на котором вы можете увидеть роль упаковки и потока данных с общей точки зрения Tina SDK.

4.4 Анализ компонентов прошивки

Сущность пакета прошивки состоит из серии файлов, аналогично сжатому пакету. В пакет прошивки сжимается несколько файлов. Здесь файлы, которые необходимо добавить в пакет встроенного ПО, перечислены в описательном файле конфигурации (image.cfg). Затем процесс упаковки считывает этот файл конфигурации и генерирует окончательный пакет встроенного ПО. Из функции do_finish мы можем узнать, что инструментом для создания прошивки является дракон. Для инструмента дракона требуются два файла конфигурации: image.cfg и sys_partition.fex. Эти два файла конфигурации будут проанализированы ниже.

4.4.1 Анализ файла конфигурации image.cfg

Откройте файл tina/out/xxxplatform/image/image.cfg в текстовом режиме, и вы увидите следующее содержимое:

Язык кода:javascript
копировать
[FILELIST]
{filename = "sys_config.fex", maintype = ITEM_COMMON, subtype = "
SYS_CONFIG100000",},
{filename = "config.fex", maintype = ITEM_COMMON, subtype = "
SYS_CONFIG_BIN00",},
{filename = "board.fex", maintype = ITEM_COMMON, subtype = "
BOARD_CONFIG_BIN",},
{filename = "split_xxxx.fex", maintype = ITEM_COMMON, subtype = "
SPLIT_0000000000",},
{filename = "sys_partition.fex", maintype = ITEM_COMMON, subtype = "
SYS_CONFIG000000",},
{filename = "sunxi.fex", maintype = ITEM_COMMON, subtype = "
DTB_CONFIG000000",},
{filename = "boot0_nand.fex", maintype = ITEM_BOOT, subtype = "
BOOT0_0000000000",},
{filename = "boot0_sdcard.fex", maintype = "12345678", subtype = "1234567890
BOOT_0",},
{filename = "u-boot.fex", maintype = "12345678", subtype = "
UBOOT_0000000000",},
{filename = "toc1.fex", maintype = "12345678", subtype = "
TOC1_00000000000",},
{filename = "toc0.fex", maintype = "12345678", subtype = "
TOC0_00000000000",},
{filename = "fes1.fex", maintype = ITEM_FES, subtype = "FES_1
-0000000000",},
{filename = "boot_package.fex", maintype = "12345678", subtype = "BOOTPKG
-00000000",},
;----------------------------------USB-деталь массового производства----------- --- -----------------------;
;-->toolsдокумент
{filename = "usbtool.fex", maintype = "PXTOOLSB", subtype = "
xxxxxxxxxxxxxxxx",},
{filename = "aultools.fex", maintype = "UPFLYTLS", subtype = "
xxxxxxxxxxxxxxxx",},
{filename = "aultls32.fex", maintype = "UPFLTL32", subtype = "
xxxxxxxxxxxxxxxx",},
;-----------------------------------Часть массового производства карт ----------- --- --------------------------;
;-->зафиксированныйPCиспользовать
{filename = "cardtool.fex", maintype = "12345678", subtype = "1234567890
cardtl",},
{filename = "cardscript.fex", maintype = "12345678", subtype = "1234567890
script",},
;-->Нужно записать на картудокумент
{filename = "sunxi_mbr.fex", maintype = "12345678", subtype = "1234567890
___MBR",},
{filename = "dlinfo.fex", maintype = "12345678", subtype = "1234567890
DLINFO",},
{filename = "arisc.fex", maintype = "12345678", subtype = "1234567890
ARISC" ,},
;Информация о конфигурации зеркала
[IMAGE_CFG]
version = 0x100234 ;-->Imageверсия
pid = 0x00001234 ;-->продуктID
vid = 0x00008743 ;-->поставщикID
hardwareid = 0x100 ;-->аппаратное обеспечениеID bootrom
firmwareid = 0x100 ;-->прошивкаID bootrom
bootromconfig = "bootrom_071203_00001234.cfg"
rootfsconfig = "rootfs.cfg"
filelist = FILELIST
imagename = tina_XXXXXX.img

Формат этого элемента файла:

Язык кода:javascript
копировать
filename= name,maintype=ITEM_ROOTFSFAT16,subtype = user_define

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

• имя файла: упакованный файл относится к полному пути к файлу. Можно использовать относительные пути, как и в приведенных выше файлах, используются относительные пути. • основной тип: формат упаковки Указывает тип формата файла, который имеет список определений для этого типа. • подтип: произвольное имя В определяемом пользователем имени используются цифры и английские символы (с учетом регистра), а максимальная длина должна составлять 16 байт. Если вы напишете его в соответствии с вышеуказанными правилами и поместите после [FILELIST] файла, файл будет автоматически добавлен в пакет прошивки при его упаковке. В следующей таблице описана роль каждого члена встроенного ПО в файле image.cfg.

4.4.2 Анализ файла конфигурации sys_partition.fex

Помимо файлов, перечисленных в файле image.cfg, прошивка также содержит файлы для разделов, перечисленных в sys_partition.fex. Откройте sys_partition.fex с помощью текстового файла, и вы увидите следующее содержимое (основных разделов 3, таблица разделов может быть разной в разных решениях, также пользователи могут добавлять свои собственные разделы):

Язык кода:javascript
копировать
[partition_start]
[partition]
name = env
size = 32768
downloadfile = "env.fex"
user_type = 0x8000
[partition]
name = boot
size = 131072
downloadfile = "boot.fex"
user_type = 0x8000
[partition]
name = rootfs
size = 1048576
downloadfile = "rootfs.fex"
user_type = 0x8000

Это файл для планирования разделов диска. К атрибутам раздела относятся следующие: • Имя раздела • Размер раздела • Загруженные файлы • Атрибуты пользователя для разделов.

Ниже приведены свойства раздела, описанные в файле: • имя: имя раздела Имя раздела определяется пользователем. Когда пользователи определяют раздел, они могут изменить его на нужную строку, но длина не может превышать 16 байт. • размер: размер раздела Определяет размер этого раздела в секторах. • downloadfile: загруженный файл Путь и имя загруженного файла могут быть относительными — относительно раздела, в котором находится файл image.cfg, или. Используйте абсолютные пути. • user_type: атрибут пользователя раздела.

В настоящее время этот флаг используется только файловой системой UBI спин-энда. Это историческая проблема. Клиенты могут игнорировать его и заполнять в соответствии с разделом в документе (например, 0x8000). В следующей таблице описаны файлы в разделе, указанном в файле sys_partition.fex.

члены прошивки

Роль участника

env.fex

Базовый файл конфигурации u-boot

boot.fex

Мягкая ссылка boot.img, созданная tina SDK, в основном содержит ядро.

rootfs.fex

Мягкая ссылка на образ rootfs, созданный tina SDK, корневая файловая система

5. Получите упакованный файл образа раздела.

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

5.1 Включаем функцию [упаковать из тины]

Вышеупомянутые функции должны включить функцию [pack out of tina]

Язык кода:javascript
копировать
make meunconfig
Target Image -->
[*] support pack out of tina

После включения функции [pack out of tina] просто упакуйте напрямую и вы увидите, что в приглашении на печать сгенерирована дополнительная папка:

Язык кода:javascript
копировать
схема out/xx/aw_pack_src

5.2 Знакомство с каталогом aw_pack_src

Язык кода:javascript
копировать
./aw_pack_src
|--aw_pack.sh #Выполните этот скрипт для создания прошивки в каталоге aw_pack_src/out/
|--config #Пакет Конфигурациядокумент
|--image #различныйзеркальныйдокумент,Сменный,Но вы не можете изменить название документа.
| |--boot0_nand.fex #nand media boot0 образ
| |--boot0_sdcard.fex #SDcardboot0image
| |--boot0_spinor.fex #normediaboot0image
| |--boot0_spinor.fex #normediaboot0image
| |--boot_package.fex Образ #nand и SD-карты uboot
| |--boot_package_nor.fex #normediaubootmirror
| |--env.fex #env зеркало переменной среды
| |--boot.fex #Образ ядра
| |--rootfs.fex #rootfsmirror
|--other Другой документ, требуемый #Пакет
|--out #Каталог создания прошивки
|--tmp Временный каталог, используемый #Пакет
|--rootfs #Сохраните tar.gzПакет rootfs для вторичной модификации.
|--tools #инструмент
|--lib_aw #Копируем библиотеку документа плана всей книги,Например, мультимедийные компоненты Eyeempp и т. д., скомпилированные и связанные для прикладных приложений (эти библиотеки не выбраны).,Тогда ты сможешь
Может быть пустым (документ)
|--README #Некоторая информация о решениях уровня платыиллюстрировать,Например, расположение разделов и т. д.(никтоиллюстрировать Нет такой вещидокументпапка)。
  1. aw_pack_src Каталог и файлы внутри, вы можете пересадить их в свой SDK. начальство。Когда вы повторно выполняетеaw_pack.shкогда,То есть на основе разделов в этом каталогедокументи снова информацию о разделах Пакет Зрелый и полный амбицийпрошивка Сумка。На основании этого,Вы можете вручную изменить образ раздела дважды.документа потом попробуй еще раз Пакет。
  2. Также можно вынести файл раздела отдельно и сделать свой ОТА Обновите пакет или создайте свою собственную прошивку. прошивка. иллюстрировать Размер раздела и имя раздела, первоначально установленные Tina SDK, не могут быть изменены в aw_pack_src.

6 часто задаваемых вопросов об упаковке: часто задаваемые вопросы

• Вопрос 1. Размер файла образа превышает запланированный размер раздела.

Язык кода:javascript
копировать
...
ERROR: dl file rootfs.fex size too large
ERROR: filename = rootfs.fex
ERROR: dl_file_size = 5888 sector
ERROR: part_size = 4864 sector
ERROR: update mbr file fail
ERROR: update_mbr failed

A: Это указывает на rootfs rootfs.fex, связанный с разделом Файл изображения (dl_file_size: 5888 x 512 byte) Размер больше, чем размер плана разделов (part_size = 4864 x 512 byte) Нужно sys_partition.fex (NOR Случай: sys_partition_nor.fex) Измените размер раздела внутри, чтобы можно было установить размер образа раздела. иллюстрировать

Язык кода:javascript
копировать
sys_partition.fex Разделы внутри необходимо выровнять в соответствии с размером блока стирания флэш-памяти. Например СПИНОР Flash, Должно быть основано на 64K
чтобы выровнять.

• Вопрос 2: указанный образ раздела не найден.

Язык кода:javascript
копировать
...
ERROR: unable to open file usr.fex
update_for_part_info -1
ERROR: update mbr file fail
ERROR: update_mbr failed

A: Эта ошибка иллюстрировать. Установленный вами раздел указывает зеркальный документ раздела.,Но в Пакеткогдане найдено。такusr.fex Необходимо включить [CONFIG_SUNXI_SMALL_STORAGE_OTA] Он будет сгенерирован автоматически. Для других самостоятельно созданных файлов изображений разделов измените суффикс на xx.fex. И поместите следующий каталог для автоматического поиска:

Язык кода:javascript
копировать
device/config/chips/${TARGET_PLATFORM}/configs/${TARGET_PLAN}/linux

Или в sys_partition.fex(NOR направление Случай: sys_partition_nor.fex) Напишите абсолютный путь внутри

Язык кода:javascript
копировать
...
downloadfile = "/home/aw1315/img/DIY.fex"

• Вопрос 3: параметр раздела схемы NOR слишком велик.

Язык кода:javascript
копировать
...
load file: env_nor.fex ok
load file: bootlogo.fex ok
error:offset(67252224) is too large MAX_IMAGE_SIZE:67108864!
merge_package fail
Язык кода:javascript
копировать
...
scripts/pack_img.sh: line 1441: 73617 Segmentation fault (core dumped) merge_full_img
--out full_img.fex --boot0 boot0_spinor.fex --boot1 ${BOOT1_FILE} --mbr ${mbr_file} --
logic_start ${LOGIC_START} --uboot_start ${UBOOT_START} --partition sys_partition_nor.
bin
ERROR: merge_full_img failed

О: В двух приведенных выше случаях разделы, установленные в sys_partition_nor.fex, слишком велики, и их размер должен быть соответствующим. Учитывая, что SPINOR Flash не будет превышать 64М, такое ограничение было введено. Это тоже недостаток приложения merge_full_img. Если вам действительно нужно запаковать такую ​​большую прошивку Nor, возможно, вам придется закомментировать инструмент merge_full_img.

Язык кода:javascript
копировать
#create img for nor programmer
merge_full_img --out full_img.fex \
--boot0 boot0_spinor.fex \
--boot1 ${BOOT1_FILE} \
--mbr ${mbr_file} \
--logic_start ${LOGIC_START} \
--uboot_start ${UBOOT_START} \
--partition sys_partition_nor.bin
if [ $? -ne 0 ]; then
pack_error "merge_full_img failed"
exit 1
fi

будут скрипты/pack_img.sh Там, где есть два места с приведенными выше командами, используйте «#» Просто закомментируйте номер. иллюстрировать merge_full_img Он используется только для прошивки записывающего устройства и не влияет на генерацию прошивки Allwinner.

7 Краткое описание процесса упаковки

(1) Последним инструментом для упаковки и создания прошивки является дракон. (2)dragon Требуются инструменты 2 Файлы конфигурации image.cfg, sys_partition.fex. (3)dragon Инструмент основан на image.cfg. и sys_partition.fex Описывает упаковку файлов прошивки. (4) Весь процесс упаковки по сути представляет собой обработку image.cfg. и sys_partition.fex файл, описанный в. (5) Весь процесс упаковки можно просто понять следующим образом: 3 шаги: • Создайте или скопируйте image.cfg и sys_partition.fex файл описания. • Выполните некоторую промежуточную обработку описанного файла, например обновление некоторых конфигураций в файле и т. д. e_full_img --out full_img.fex –boot0 boot0_spinor.fex –boot1 {BOOT1_FILE} –mbr {mbr_file} –logic_start {LOGIC_START} –uboot_start {UBOOT_START} –partition sys_partition_nor.bin if [

Язык кода:javascript
копировать
будут скрипты/pack_img.sh Там, где есть два места с приведенными выше командами, используйте «#» Просто закомментируйте номер.
**иллюстрировать**
**merge_full_img Он используется только для прошивки записывающего устройства и не влияет на генерацию прошивки Allwinner.**

# 7 Краткое описание процесса упаковки

(1) Последним инструментом для упаковки и создания прошивки является дракон.
(2)dragon Требуются инструменты 2 Файлы конфигурации image.cfg, sys_partition.fex.
(3)dragon Инструмент основан на image.cfg. и sys_partition.fex Описывает упаковку файлов прошивки.
(4) Весь процесс упаковки по сути представляет собой обработку image.cfg. и sys_partition.fex файл, описанный в.
(5) Весь процесс упаковки можно просто понять следующим образом: 3 шаги:
• Создайте или скопируйте image.cfg и sys_partition.fex файл описания.
• Выполните некоторую промежуточную обработку описанного файла, например обновление некоторых конфигураций в файле и т. д.
• использовать дракона Инструмент генерирует финальную прошивку.
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 минут. .