Сначала запишите вывод журнала официального пакета tina-sdk.
book@virtual-machine:~/D1s-Core/tina-d1-h$ pack
--==========--
PACK_CHIP sun20iw1p1
PACK_PLATFORM tina
PACK_BOARD d1-h-nezha
PACK_KERN
PACK_DEBUG uart0
PACK_SIG none
PACK_SECURE none
PACK_MODE normal
PACK_FUNC android
PACK_PROGRAMMER none
PACK_TAR_IMAGE none
PACK_TOPDIR /home/book/D1s-Core/tina-d1-h
--==========--
No kernel param, parse it from d1-h
copying tools file
copying configs file
storage_type value is 5
rm /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition_nor.fex
rm /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/image_nor.cfg
copying boot resource
LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03
copying boot file
make user resource for : /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.fex
handle partition user-res
no user resource partitions
APP_PART_DOWNLOAD_FILE = /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/app.fex
Need size of filesystem
no data resource partitions
don't build dtbo ...
create sys_partiton.fex +++++++++++++++++++++++++++++++++++++++++++++++++++++4
argc = 2
input name sys_partition.fex
Script 1 source file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.fex
Script 1 bin file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
update_fdt: num 1752 randto1k
parser 1 file ok
create sys_partiton.fex+++++++++++++++++++++++++++++++++++++++++++++++++++++5
update_chip
pack boot package
GetPrivateProfileSection read to end
content_count=3
LICHEE_REDUNDANT_ENV_SIZE config in BoardConfig.mk
--mkenvimage create redundant env data!--
---redundant env data size 0x20000---
packing for tina linux
normal
update mbr use 4++++++++++++++++++++++
mbr count = 4
partitation file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
mbr_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sunxi_mbr.fex
download_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/dlinfo.fex
mbr size = 252
mbr magic softw411
disk name=boot-resource
disk name=env
disk name=env-redund
disk name=boot
disk name=rootfs
disk name=dsp0
disk name=recovery
this is not a partition key
update_for_part_info 0
crc 0 = 4c7bc2df
crc 1 = d9c69382
crc 2 = bc706624
crc 3 = 29cd3779
gpt_head->header_crc32 = 0x892c53ba
GPT----part num 8---
gpt_entry: 128
gpt_header: 92
GPT:boot-resource: a1f8 c177
GPT:env : c178 c36f
GPT:env-redund : c370 c567
GPT:boot : c568 1161f
GPT:rootfs : 11620 1b597
GPT:dsp0 : 1b598 1b987
GPT:recovery : 1b988 227c7
GPT:UDISK : 227c8 ffffffde
update gpt file ok
update mbr file ok
temp = 20
mbr count = 4 total_sectors = 15269888 logic_offset = 40960
partitation file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
mbr_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sunxi_mbr.fex
download_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/dlinfo.fex
mbr size = 252
mbr magic softw411
disk name=boot-resource
disk name=env
disk name=env-redund
disk name=boot
disk name=rootfs
disk name=dsp0
disk name=recovery
this is not a partition key
update_for_part_info 0
crc 0 = 4c7bc2df
crc 1 = d9c69382
crc 2 = bc706624
crc 3 = 29cd3779
gpt_head->header_crc32 = 0x1328fa28
GPT----part num 8---
gpt_entry: 128
gpt_header: 92
GPT:boot-resource: a1f8 c177
GPT:env : c178 c36f
GPT:env-redund : c370 c567
GPT:boot : c568 1161f
GPT:rootfs : 11620 1b597
GPT:dsp0 : 1b598 1b987
GPT:recovery : 1b988 227c7
GPT:UDISK : 227c8 e8ffde
update gpt file ok
update mbr file ok
cp sys parttion.fex for dragon.fex ++++++++++++++++++++++++++++
====================================
show "sys_partition_for_dragon.fex" message
------------------------------------
[mbr]
mbr_size : 252 Kbyte
------------------------------------
partition_name : boot-resource
partition_size : 8064
downloadfile : boot-resource.fex
boot-resource.fex size : 3.0M byte
------------------------------------
partition_name : env
partition_size : 504
downloadfile : env.fex
env.fex size : 128K byte
------------------------------------
partition_name : env-redund
partition_size : 504
downloadfile : env.fex
env.fex size : 128K byte
------------------------------------
partition_name : boot
partition_size : 20664
downloadfile : boot.fex
boot.fex -> /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/boot.img
boot.img size : 5.0M byte
------------------------------------
partition_name : rootfs
partition_size : 40824
downloadfile : rootfs.fex
rootfs.fex -> /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/rootfs.img
rootfs.img size : 5.9M byte
------------------------------------
partition_name : dsp0
partition_size : 1008
downloadfile : dsp0.fex
dsp0.fex size : 249K byte
------------------------------------
partition_name : recovery
partition_size : 28224
------------------------------------
/home/book/D1s-Core/tina-d1-h/out/host/bin/
/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image
Begin Parse sys_partion.fex
Add partion boot-resource.fex BOOT-RESOURCE_FEX
Add partion very boot-resource.fex BOOT-RESOURCE_FEX
FilePath: boot-resource.fex
FileLength=2f8c00Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion boot.fex BOOT_FEX00000000
Add partion very boot.fex BOOT_FEX00000000
FilePath: boot.fex
FileLength=4f4000Add partion rootfs.fex ROOTFS_FEX000000
Add partion very rootfs.fex ROOTFS_FEX000000
FilePath: rootfs.fex
FileLength=5e0000Add partion dsp0.fex DSP0_FEX00000000
Add partion very dsp0.fex DSP0_FEX00000000
FilePath: dsp0.fex
FileLength=3e38cBuildImg 0
Dragon execute image.cfg SUCCESS !
----------image is for nand/emmc----------
----------image is at----------
/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/tina_d1-h-nezha_uart0.img
pack finish
Из приведенного выше журнала мы видим, что весь процесс упаковки условно разделен на несколько этапов:
Использование командной операции в основном разделено на 4 этапа.
busybox unix2dos sys_partition.fex
tina-d1-h/tools/pack-bintools/src/script sys_partition.fex
tina-d1-h/tools/pack-bintools/src/update_mbr sys_partition.bin 4
tina-d1-h/tools/pack-bintools/src/dragon image.cfg sys_partition.fex
внутри Самое главное это sys_partition.fex файл, который определяет информацию о разделах И размер и т. д. может войти скомпилировано tina-d1-h/out/d1-h-nezha/image Посмотреть в каталоге.
Мы можем напрямую просмотреть файл sys_partition.fex.
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ cat sys_partition_for_dragon.fex
;---------------------------------------------------------------------------------------------------
; проиллюстрировать: Строки в скрипте чувствительны к регистру. Пользователи могут указать значение после Исправлять"=", но не строку перед Исправлять.
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
; Конфигурация параметров загрузки прошивки
;---------------------------------------------------------------------------------------------------
;***************************************************************************************************
; размер МБР, в Кбайтах
;***************************************************************************************************
[mbr]
size = 252
;***************************************************************************************************
; Конфигурация раздела
;
;
; partition Пример определения:
; [partition] ; //Указывает раздел
; name = USERFS2 ; //Имя раздела
; size = 16384 ; //Размер раздела единица: Максимальное количество представленных секторов и разделов — 2^31. * 512 = 2T
; downloadfile = "123.fex" ; //Путь и имя загруженного файла могут быть относительными — это относительно раздела, в котором находится файл image.cfg. Вы также можете использовать абсолютные пути
; keydata = 1 ; //Раздел частных данных, данные не будут потеряны при возобновлении массового производства
; encrypt = 1 ; //Использование метода шифрования для записи обеспечит шифрование данных, но потеряет скорость записи.
; user_type = ? ; //Частное использование
; verify = 1 ; //Требуется проверить правильность после завершения массового производства
;
; Примечание: 1. Имя уникально. Одно и то же имя не разрешено
; 2. Максимальная длина имени — 12 символов.
; 3、size = 0, создаст пустой раздел без размера
; 4、align to logical block size(504 sectors), leb size = 2*(1 nand phy block size - 1 phy page size)
;***************************************************************************************************
[partition_start]
[partition]
name = boot-resource
size = 8064
downloadfile = "boot-resource.fex"
user_type = 0x8000
[partition]
name = env
size = 504
downloadfile = "env.fex"
user_type = 0x8000
[partition]
name = env-redund
size = 504
downloadfile = "env.fex"
user_type = 0x8000
[partition]
name = boot
size = 20664
downloadfile = "boot.fex"
user_type = 0x8000
[partition]
name = rootfs
size = 40824
downloadfile = "rootfs.fex"
user_type = 0x8000
[partition]
name = dsp0
size = 1008
downloadfile = "dsp0.fex"
user_type = 0x8000
[partition]
name = recovery
size = 28224
;downloadfile = "recovery.fex"
user_type = 0x8000
внутри всего скачать файл Это все файлы, которые мы скомпилировали для записи. Поэтому вам нужно только поместить соответствующие файлы в этот каталог для выполнения операции упаковки.
если ты не изменишься Судя по размеру файла,Может быть выполнено напрямуюtina-d1-h/tools/pack-bintools/src/dragon image.cfg sys_partition.fex
команда, вы обнаружите, что она генерирует tina_d1-h-nezha_uart0.img, изображение, это изображение такое же, как и созданное с помощью команды Pack.
Таквнутри Есть еще один файл img.cfg. Этот файл содержит множество fex. В настоящее время я думаю, что эти файлы привязаны к официальным инструментам программирования Allwinner, поэтому вам не нужно о них беспокоиться, пока они создаются. Просто поместите эти инструменты в текущий каталог.
С помощью этих двух файлов вы можете напрямую использовать упаковку Dragon для создания образа системы, который можно запрограммировать с помощью Phoenix Programmer.
Если формат образа вашей системы остается неизменным по размеру, то всегда можно использовать приведенную выше команду. Но в это время я хочу сам скомпилировать ядро, добавить модули драйверов, скомпилировать файловые системы и в результате добавить компоненты. изображение становится больше. Что делать?
Проще говоря, не достаточно ли напрямую изменить размер файла sys_partition.fex? Но вы обнаружите, что это не работает, выдаст ошибку. В настоящее время мы продолжим анализировать выходные данные журнала. Мы обнаружим, что при выполнении упаковки Dragon у нас есть только следующая выходная информация, а выше нет информации о разделах GPT/MBR.
/home/book/D1s-Core/tina-d1-h/tools/pack-bintools/src/
/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image
Begin Parse sys_partion.fex
Add partion boot-resource.fex BOOT-RESOURCE_FEX
Add partion very boot-resource.fex BOOT-RESOURCE_FEX
FilePath: boot-resource.fex
FileLength=2f8c00Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion boot.fex BOOT_FEX00000000
Add partion very boot.fex BOOT_FEX00000000
FilePath: boot.fex
FileLength=4f4000Add partion rootfs.fex ROOTFS_FEX000000
Add partion very rootfs.fex ROOTFS_FEX000000
FilePath: rootfs.fex
FileLength=5e0000Add partion dsp0.fex DSP0_FEX00000000
Add partion very dsp0.fex DSP0_FEX00000000
FilePath: dsp0.fex
FileLength=3e38cBuildImg 0
Dragon execute image.cfg SUCCESS !
Итак, сейчас вам нужно оглянуться назад. Откуда взялся этот файл и как он был создан? Путем поиска и анализа выясняется, что он происходит из файла sys_partiton.bin, но этот файл является двоичным, а также упаковывается и генерируется позже, поэтому нам еще придется вернуться и узнать, как работает файл sys_partition.bin. был создан.
То же самое сочетается с журналом и печатью.
Нашел следующие две команды. занятая коробка unix2dos sys_partition.fex скрипт sys_partition.fex
Сначала я подумал, что этот скрипт представляет собой некий пакет Ubuntu, но позже я узнал, что это также инструмент, предоставленный Allwinner. Теперь, когда мы нашли все инструменты, можем попробовать его модифицировать.
Измените sys_partition.fex, чтобы изменить его размер до 70824.
Затем сохраните и выйдите и выполните следующую команду с самого начала, чтобы подтвердить правильность предположения.
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ busybox unix2dos sys_partition.fex
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ ~/D1s-Core/tina-d1-h/tools/pack-bintools/src/script sys_partition.fex
argc = 2
input name sys_partition.fex
Script 1 source file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.fex
Script 1 bin file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
update_fdt: num 1752 randto1k
parser 1 file ok
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ ~/D1s-Core/tina-d1-h/tools/pack-bintools/src/update_mbr sys_partition.bin 4
mbr count = 4
partitation file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
mbr_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sunxi_mbr.fex
download_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/dlinfo.fex
mbr size = 252
mbr magic softw411
disk name=boot-resource
disk name=env
disk name=env-redund
disk name=boot
disk name=rootfs
disk name=dsp0
disk name=recovery
this is not a partition key
update_for_part_info 0
crc 0 = ea84dacc
crc 1 = 7f398b91
crc 2 = 1a8f7e37
crc 3 = 8f322f6a
gpt_head->header_crc32 = 0x53fc3a66
GPT----part num 8---
gpt_entry: 128
gpt_header: 92
GPT:boot-resource: a1f8 c177
GPT:env : c178 c36f
GPT:env-redund : c370 c567
GPT:boot : c568 1161f
GPT:rootfs : 11620 22ac7
GPT:dsp0 : 22ac8 22eb7
GPT:recovery : 22eb8 29cf7
GPT:UDISK : 29cf8 ffffffde
update gpt file ok
update mbr file ok
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ ~/D1s-Core/tina-d1-h/tools/pack-bintools/src/dragon image.cfg sys_partition.fex
/home/book/D1s-Core/tina-d1-h/tools/pack-bintools/src/
/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image
Begin Parse sys_partion.fex
Add partion boot-resource.fex BOOT-RESOURCE_FEX
Add partion very boot-resource.fex BOOT-RESOURCE_FEX
FilePath: boot-resource.fex
FileLength=2f8c00Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion boot.fex BOOT_FEX00000000
Add partion very boot.fex BOOT_FEX00000000
FilePath: boot.fex
FileLength=4f4000Add partion rootfs.fex ROOTFS_FEX000000
Add partion very rootfs.fex ROOTFS_FEX000000
FilePath: rootfs.fex
FileLength=5e0000Add partion dsp0.fex DSP0_FEX00000000
Add partion very dsp0.fex DSP0_FEX00000000
FilePath: dsp0.fex
FileLength=3e38cBuildImg 0
Dragon execute image.cfg SUCCESS !
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$
Наконец, в текущем каталоге был создан файл с именем tina_d1-h-nezha_uart0.img и записан в него с помощью инструмента Phoenix Burning. Вы обнаружите, что можете записать раздел, в который вы добавили файлы, и запустить его.
Итак, на данный момент проблема все еще существует: D1 использует файловую систему типа sqashfs. В настоящее время вам также необходимо проанализировать метод создания их файловой системы. Для этого вы можете использовать команду grep, см. следующее.
Наконец получил этот rootfs.squashfs -noappend -processors 9 -nopad -noappend -root-owned -comp xz -b 256k -p ‘’‘/dev d 755 0 0’‘’ -p ‘’‘/dev/console c 600 0 0 5 1’‘’ -processors 4\n’ >> /home/book/buildroot_dshannezhastu/buildroot-awol/output/build/buildroot-fs/squashfs/fakeroot
Потом закинуть в buildroot, чтобы сделать систему, которую сможет использовать ядро D1, Обратите внимание, что местоположение процесса init в переменной среды tina отличается от buildroot и его необходимо изменить. Обратите внимание, что местоположение процесса init в переменной среды tina отличается от buildroot и его необходимо изменить. Обратите внимание, что местоположение процесса init в переменной среды tina отличается от buildroot и его необходимо изменить.
Наконец, позвольте мне сообщить вам, что мы поддержали исходный код полного образа системы buildroot NEZHA D1. https://github.com/DongshanPI/buildroot_dshannezhastu
После клонирования вам необходимо обновить подмодуль git и выполнить следующую команду, чтобы получить исходный код подмодуля.
git submodule update --init --recursive git submodule update --recursive --remote git pull --recurse-submodules
Затем войдите в каталог buildroot-awol и подождите некоторое время, чтобы сгенерировать образ флэш-памяти для программирования Spinand. Конечно, для начала вы также можете записать на tf-карту. . buildroot_dshannezhastu/buildroot-awol$ make BR2_DL_DIR=…/Download BR2_EXTERNAL=…/br2nezhastu/ dshannezhastu_spinand_core_defconfig
Вывод информации после завершения компиляции.
Вывод изображения находится в каталоге output/images/.