Инструменты пользователя

Инструменты сайта


wiki:usomiq-am437x-ezsdk

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
wiki:usomiq-am437x-ezsdk [2019/05/28 18:05] – [Распаковка исходников] maxxwiki:usomiq-am437x-ezsdk [2023/06/16 14:42] (текущий) – [Автономный старт с NAND] admin77
Строка 65: Строка 65:
 </code> </code>
 u-boot находится в директории **'u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2'**, а ядро Linux в **'linux-4.14.79+gitAUTOINC+bde58ab01e-gbde58ab01e'** u-boot находится в директории **'u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2'**, а ядро Linux в **'linux-4.14.79+gitAUTOINC+bde58ab01e-gbde58ab01e'**
-\\+ 
 +===== Компиляция =====
 Дальнейшие действия будут в директории board-support: Дальнейшие действия будут в директории board-support:
 <code> <code>
 cd board-support cd board-support
 </code> </code>
-===== Компиляция ===== 
 ==== Компиляция u-boot ==== ==== Компиляция u-boot ====
 SDK от Texas Instruments не поддерживает модуль uSomIQ, //хотя и легко запускается, если убрать чтение идентификатора платы из встроенной EEPROM//. Сначала скачаем и применим исправления исходных кодов для модуля uSomIQ: SDK от Texas Instruments не поддерживает модуль uSomIQ, //хотя и легко запускается, если убрать чтение идентификатора платы из встроенной EEPROM//. Сначала скачаем и применим исправления исходных кодов для модуля uSomIQ:
Строка 87: Строка 87:
 make ARCH=arm CROSS_COMPILE=${CC} make ARCH=arm CROSS_COMPILE=${CC}
 </code> </code>
-Если всё сделано правильно, то появятся два файла: MLO и u-boot.img. Эти файлы надо скопировать на первый раздел карточки SD (иногда Linux "ругается", что недостаточно прав, поэтому добавьте **sudo** перед каждой командой **cp**): +Если всё сделано правильно, то появятся два файла: **MLO** и **u-boot.img**. Эти файлы надо будет скопировать на FAT раздел карточки SD 
-<code> +
-cp MLO /media/boot +
-cp u-boot.img /media/boot +
-</code>+
 ==== Компиляция ядра ==== ==== Компиляция ядра ====
 SDK от Texas Instruments не поддерживает модуль uSomIQ, поэтому сначала скачаем и применим исправления исходных кодов для модуля uSomIQ: SDK от Texas Instruments не поддерживает модуль uSomIQ, поэтому сначала скачаем и применим исправления исходных кодов для модуля uSomIQ:
Строка 104: Строка 100:
 make ARCH=arm CROSS_COMPILE=${CC} tisdk_am437x-evm_defconfig make ARCH=arm CROSS_COMPILE=${CC} tisdk_am437x-evm_defconfig
 make ARCH=arm CROSS_COMPILE=${CC} zImage modules dtbs make ARCH=arm CROSS_COMPILE=${CC} zImage modules dtbs
 +</code>
 +Если ваш компьютер имеет несколько процессорных ядер (не путать с логическими ядрами), то можно ускорить компиляцию запустив компилятор на каждом из ядер. Для этого компилятору gcc надо передать параметр **-j4**, если ядер 4, или 8, если ядер 8. То есть, команда для компиляции ядра будет выглядеть так (местоположение -j8 не имеет значения):
 +<code>
 +make ARCH=arm CROSS_COMPILE=${CC} zImage modules dtbs -j8
 </code> </code>
 ==== Подготовка SD карты ==== ==== Подготовка SD карты ====
Строка 135: Строка 135:
 Если версия sfdisk >= 2.26.x (sfdisk from util-linux 2.27.1), то выполняем команду: Если версия sfdisk >= 2.26.x (sfdisk from util-linux 2.27.1), то выполняем команду:
 <code> <code>
-sudo sfdisk ${DISK} <<-__EOF__+sudo sfdisk /dev/sdc <<-__EOF__
 1M,12M,0xE,* 1M,12M,0xE,*
 13M,,,- 13M,,,-
 __EOF__ __EOF__
 +</code>
 +На карте 16ГБ получилась такая карта разделов:
 +<code>
 +Device     Boot Start      End  Sectors  Size Id Type
 +/dev/sdc1  *     2048    26623    24576   12M  e W95 FAT16 (LBA)
 +/dev/sdc2       26624 30965759 30939136 14.8G 83 Linux
 </code> </code>
 Теперь форматируем разделы:\\ Теперь форматируем разделы:\\
 * Форматируем раздел 1 как "FAT" командой  * Форматируем раздел 1 как "FAT" командой 
 <code> <code>
-sudo mkfs.vfat -F 32 -n "boot" /dev/sdc1+sudo mkfs.vfat -F 16 -n BOOT /dev/sdc1
 </code> </code>
 * Форматируем раздел 2 как "ext4" командой * Форматируем раздел 2 как "ext4" командой
 <code> <code>
-sudo mkfs.ext4 -L rootfs /dev/sdc2"+sudo mkfs.ext4 -L rootfs /dev/sdc2
 </code> </code>
  
Строка 161: Строка 167:
 Файловую систему скачаем готовую для SDK (размер архива 2ГБ): Файловую систему скачаем готовую для SDK (размер архива 2ГБ):
 <code> <code>
-wget http://software-dl.ti.com/processor-sdk-linux/esd/AM437X/latest/exports/am437x-evm-linux-sdk-bin-05.02.00.10.tar.xz+wget http://software-dl.ti.com/processor-sdk-linux/esd/AM437X/05_02_00_10/exports/am437x-evm-linux-sdk-bin-05.02.00.10.tar.xz
 </code> </code>
 Сначала распакуем весь архив: Сначала распакуем весь архив:
Строка 189: Строка 195:
 sudo tar xf tisdk-rootfs-image-am437x-evm.tar.xz -C /media/rootfs sudo tar xf tisdk-rootfs-image-am437x-evm.tar.xz -C /media/rootfs
 </code> </code>
-==== Запись загрузчиков на карту ====+===== Запись загрузчиков на карту =====
 === Запись u-boot на карту === === Запись u-boot на карту ===
 Заходим в директорию u-boot 'u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2', далее выполняем команды: Заходим в директорию u-boot 'u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2', далее выполняем команды:
Строка 207: Строка 213:
 sudo umount /dev/sdc1 /dev/sdc2 sudo umount /dev/sdc1 /dev/sdc2
 </code> </code>
-Теперь карту можно извлечь из ПК и загружать с нее модуль uSomIQ AM437x. Загрузка происходит автоматически без дополнительных действий.+Теперь карту можно извлечь из ПК и загружать с нее модуль uSomIQ AM437x. Загрузка происходит автоматически без дополнительных действий. Логин для входа в Linux - root без пароля 
 +===== Автономный старт с NAND ===== 
 +=== Запись загрузчика u-boot === 
 +Запишем идентификатор платы в EEPROM, установленную на плате модуля. Этот шаг необязателен, потому что данная версия u-boot игнорирует пустой или отсутствующий EEPROM, но, всё же, будет выполнять разный сценарий загрузки в зависимости от разных идентификаторов платы. 
 +<code> 
 +=> run eeprom_dump 
 +Setting bus to 0 
 +0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................ 
 +0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................ 
 +</code> 
 +Видно, что память EEPROM чистая, если модуль предварительно не прошивали. Запишем идентификатор и посмотрим на изменения: 
 +<code> 
 +=> run eeprom_usomiq 
 +=> run eeprom_dump 
 +Setting bus to 0 
 +0000: aa 55 33 ee 41 4d 34 33 55 53 4f 4d ff ff ff ff    .U3.AM43USOM.... 
 +0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................ 
 +</code> 
 +Теперь это однозначно uSomIQ AM437x.\\ 
 +Смотрим какие разделы присутствуют на флеш NAND: 
 +<code> 
 +=> mtd 
 + 
 +device nand0 <nand.0>, # parts = 10 
 + #: name                size            offset          mask_flags 
 + 0: NAND.SPL            0x00040000      0x00000000      0 
 + 1: NAND.SPL.backup1    0x00040000      0x00040000      0 
 + 2: NAND.SPL.backup2    0x00040000      0x00080000      0 
 + 3: NAND.SPL.backup3    0x00040000      0x000c0000      0 
 + 4: NAND.u-boot-spl-os  0x00080000      0x00100000      0 
 + 5: NAND.u-boot         0x00100000      0x00180000      0 
 + 6: NAND.u-boot-env     0x00040000      0x00280000      0 
 + 7: NAND.u-boot-env.backup10x00040000   0x002c0000      0 
 + 8: NAND.kernel         0x00700000      0x00300000      0 
 + 9: NAND.file-system    0x1f600000      0x00a00000      0 
 + 
 +active partition: nand0,0 - (NAND.SPL) 0x00040000 @ 0x00000000 
 + 
 +defaults: 
 +mtdids  : nand0=nand.0 
 +mtdparts: mtdparts=nand.0:256k(NAND.SPL),256k(NAND.SPL.backup1),256k(NAND.SPL.backup2),256k(NAND.SPL.backup3),512k(NAND.u-boot-spl-os),1m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup1),7m(NAND.kernel),-(NAND.file-system) 
 +</code> 
 +На всякий случай стираем флеш: 
 +<code> 
 +=> nand erase.chip 
 + 
 +NAND erase.chip: device 0 whole chip 
 +Erasing at 0x1ffe0000 -- 100% complete. 
 +OK 
 +</code> 
 +В ходе выполнения стирания могут появляться сообщения о "плохих" блоках. Это особенность NAND флеш и ничего страшного нет, блоки будут помечены как плохие и это никак не повлияет на работу устройства в будущем. 
 +<code> 
 +mmc rescan 
 +load mmc 0 ${loadaddr} MLO 
 +nand write ${loadaddr} NAND.SPL 
 +nand write ${loadaddr} NAND.SPL.backup1 
 +</code> 
 +Запись файла u-boot.img 
 +<code> 
 +load mmc 0 ${loadaddr} u-boot.img 
 +nand write ${loadaddr} NAND.u-boot 
 +</code> 
 +Запись dtb файла 
 +<code> 
 +setenv devtype mmc 
 +run findfdt 
 +run loadfdt 
 +nand write ${fdtaddr} NAND.u-boot-spl-os 
 +</code> 
 +Запись файла ядра 
 +<code> 
 +run loadimage 
 +nand write ${loadaddr} NAND.kernel 
 +</code> 
 +=== Запись файловой системы === 
 +//Предварительно надо взять готовый образ файловой системы из архива am437x-evm-linux-sdk-bin-05.02.00.10, например, маленький образ 'arago-tiny-image-am437x-evm.tar.xz', чтобы он точно уместился во флеш памяти.// 
 + 
 + 
 +теперь набираем команду 'boot' и загружаемся в Linux. Список разделов на флеш памяти можно посмотреть с помощью команды mtdinfo: 
 +<code> 
 +root@am437x-usomiq:~# mtdinfo 
 +Count of MTD devices:           10 
 +Present MTD devices:            mtd0, mtd1, mtd2, mtd3, mtd4, mtd5, mtd6, mtd7, mtd8, mtd9 
 +Sysfs interface supported:      yes 
 +</code> 
 +Видим, что последний раздел **mtd9** - это именно раздел под файловую систему. Теперь, с помощью ubiutils создаем файловую систему на флеш памяти: 
 +<code> 
 +ubiformat /dev/mtd9 -s 2048 -O 2048 
 +ubiattach /dev/ubi_ctrl -m 9 -O 2048 
 +ubimkvol /dev/ubi0 -s 450MiB -N rootfs 
 +mount -t ubifs ubi0:rootfs /mnt 
 +</code> 
 +Директория '/mnt' теперь это отформатированный раздел на флеш памяти NAND. Теперь запишем файловую систему, которую предварительно записали на SD карту в домашнюю директорию пользователя 'root': 
 +<code> 
 +cd /mnt 
 +tar xf ~/arago-tiny-image-am437x-evm.tar.xz 
 +</code> 
 +Теперь можно набрать команду reboot или poweroff, извлечь карту и загружаться непосредственно с модуля без внешнего накопителя. 
wiki/usomiq-am437x-ezsdk.1559055934.txt.gz · Последнее изменение: 2019/05/28 18:05 — maxx