wiki:usomiq-am437x-ezsdk
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версияСледующая версияСледующая версия справа и слева | ||
wiki:usomiq-am437x-ezsdk [2019/01/14 17:56] – [Запись на карту] maxx | wiki:usomiq-am437x-ezsdk [2023/06/16 14:31] – [Автономный старт с NAND] admin77 | ||
---|---|---|---|
Строка 13: | Строка 13: | ||
2. Скачиваем SDK в исходниках | 2. Скачиваем SDK в исходниках | ||
< | < | ||
- | wget http:// | + | wget http:// |
</ | </ | ||
===== Распаковка исходников ===== | ===== Распаковка исходников ===== | ||
Строка 65: | Строка 65: | ||
</ | </ | ||
u-boot находится в директории **' | u-boot находится в директории **' | ||
+ | |||
===== Компиляция ===== | ===== Компиляция ===== | ||
+ | Дальнейшие действия будут в директории board-support: | ||
+ | < | ||
+ | cd board-support | ||
+ | </ | ||
==== Компиляция u-boot ==== | ==== Компиляция u-boot ==== | ||
- | Заходим в директорию ' | + | SDK от Texas Instruments не поддерживает модуль uSomIQ, // |
< | < | ||
- | make ARCH=arm distclean | + | wget http:// |
- | make ARCH=arm am43xx_evm_usomiq_defconfig | + | |
- | make ARCH=arm CROSS_COMPILE=${CC} | + | |
</ | </ | ||
- | Если ваш модуль | + | Заходим |
< | < | ||
- | make ARCH=arm am43xx_evm_usomiq_nand4k_defconfig | + | cd u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2 |
+ | patch -p1 < ../ | ||
</ | </ | ||
- | Если всё сделано | + | Теперь непосредственно компиляция: |
< | < | ||
- | cp MLO /media/boot | + | make ARCH=arm distclean |
- | cp u-boot.img /media/boot | + | make ARCH=arm am43xx_evm_usomiq_defconfig |
+ | make ARCH=arm CROSS_COMPILE=${CC} | ||
</ | </ | ||
+ | Если всё сделано правильно, | ||
==== Компиляция ядра ==== | ==== Компиляция ядра ==== | ||
+ | SDK от Texas Instruments не поддерживает модуль uSomIQ, поэтому сначала скачаем и применим исправления исходных кодов для модуля uSomIQ: | ||
+ | < | ||
+ | wget http:// | ||
+ | cd linux-4.14.79+gitAUTOINC+bde58ab01e-gbde58ab01e | ||
+ | patch -p1 < ../ | ||
+ | </ | ||
+ | Непосредственно компиляция | ||
< | < | ||
make ARCH=arm CROSS_COMPILE=${CC} distclean | make ARCH=arm CROSS_COMPILE=${CC} distclean | ||
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 | ||
+ | </ | ||
+ | Если ваш компьютер имеет несколько процессорных ядер (не путать с логическими ядрами), | ||
+ | < | ||
+ | make ARCH=arm CROSS_COMPILE=${CC} zImage modules dtbs -j8 | ||
</ | </ | ||
==== Подготовка SD карты ==== | ==== Подготовка SD карты ==== | ||
Возьмите SD карту объемом не менее 2ГБ. Далее разобьем общее пространство карты на два: | Возьмите SD карту объемом не менее 2ГБ. Далее разобьем общее пространство карты на два: | ||
* boot - раздел fat32 для u-boot | * boot - раздел fat32 для u-boot | ||
- | * roofs - раздел ext4 для файловой системы | + | * rootfs |
// | // | ||
Строка 105: | Строка 122: | ||
[535222.056436] | [535222.056436] | ||
</ | </ | ||
- | В данном примере карта уже разбита на два раздела, | + | В данном примере карта уже разбита на два раздела, |
+ | |||
+ | |||
+ | Итак, | ||
< | < | ||
- | sudo fdisk /dev/sdc | + | sudo dd if=/ |
</ | </ | ||
- | Если на карте есть разделы, то их надо удалить последовательно нажимая | + | Далее, |
- | - Создаем раздел командой ' | + | |
- | - Изменяем | + | |
- | - Делаем раздел загружаемым: | + | |
- | Теперь создадим раздел для файловой системы: | + | |
- | - Создаем раздел | + | |
- | Можно посмотреть что получилось в итоге. Для этого нажмите ' | + | |
< | < | ||
- | Disk /dev/sdc: 7948 MB, 7948206080 bytes | + | sudo sfdisk --version |
- | 255 heads, 63 sectors/ | + | </ |
- | Units = sectors of 1 * 512 = 512 bytes | + | Если версия sfdisk >= 2.26.x (sfdisk from util-linux 2.27.1), то выполняем команду: |
- | Sector size (logical/physical): 512 bytes / 512 bytes | + | < |
- | I/O size (minimum/ | + | sudo sfdisk |
- | Disk identifier: 0xafb3f87b | + | 1M,12M,0xE,* |
- | + | 13M,,,- | |
- | Device Boot Start End Blocks | + | __EOF__ |
- | / | + | </code> |
- | / | + | На карте 16ГБ получилась такая карта разделов: |
+ | < | ||
+ | Device | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | Теперь форматируем разделы: | ||
+ | * Форматируем раздел 1 как " | ||
+ | < | ||
+ | sudo mkfs.vfat -F 16 -n BOOT /dev/sdc1 | ||
+ | </ | ||
+ | * Форматируем раздел 2 как " | ||
+ | < | ||
+ | sudo mkfs.ext4 -L rootfs /dev/sdc2 | ||
</ | </ | ||
- | Для записи разделов на диск нажмите ' | ||
- | |||
- | **Форматирование разделов** | ||
- | - Форматируем раздел 1 как " | ||
- | - Форматируем раздел 2 как " | ||
**Монтирование разделов** | **Монтирование разделов** | ||
Строка 145: | Строка 167: | ||
Файловую систему скачаем готовую для SDK (размер архива 2ГБ): | Файловую систему скачаем готовую для SDK (размер архива 2ГБ): | ||
< | < | ||
- | wget http:// | + | wget http:// |
</ | </ | ||
- | В данном архиве содержится несколько файловых систем, | + | Сначала распакуем весь архив: |
- | + | < | |
- | ==== Запись на карту ==== | + | tar xf am437x-evm-linux-sdk-bin-05.02.00.10.tar.xz |
- | **Запись u-boot на карту** | + | </ |
+ | Получаем директорию " | ||
+ | < | ||
+ | cd ti-processor-sdk-linux-am437x-evm-bin-05.02.00.10 | ||
+ | ls | ||
+ | bin board-support | ||
+ | </ | ||
+ | В данном архиве содержится несколько файловых систем, | ||
+ | < | ||
+ | arago-base-tisdk-image-am437x-evm.tar.xz | ||
+ | arago-base-tisdk-image-am437x-evm.ubi | ||
+ | arago-tiny-image-am437x-evm.tar.xz | ||
+ | arago-tiny-image-am437x-evm.ubi | ||
+ | tisdk-docker-rootfs-image-am437x-evm.tar.xz | ||
+ | tisdk-docker-rootfs-image-am437x-evm.ubi | ||
+ | tisdk-rootfs-image-am437x-evm.tar.xz | ||
+ | tisdk-rootfs-image-am437x-evm.ubi | ||
+ | </ | ||
+ | Запишем на нашу SD карту файловую систему **tisdk-rootfs-image-am437x-evm.tar.xz** | ||
+ | < | ||
+ | cd filesystem | ||
+ | sudo tar xf tisdk-rootfs-image-am437x-evm.tar.xz -C / | ||
+ | </ | ||
+ | ===== Запись | ||
+ | === Запись u-boot на карту | ||
Заходим в директорию u-boot ' | Заходим в директорию u-boot ' | ||
< | < | ||
Строка 156: | Строка 202: | ||
sudo cp u-boot.img /media/boot | sudo cp u-boot.img /media/boot | ||
</ | </ | ||
- | **Запись ядра, модулей и dtb** | + | === Запись ядра, модулей и dtb === |
Заходим в директорию ядра Linux ' | Заходим в директорию ядра Linux ' | ||
< | < | ||
Строка 167: | Строка 213: | ||
sudo umount /dev/sdc1 /dev/sdc2 | sudo umount /dev/sdc1 /dev/sdc2 | ||
</ | </ | ||
- | Теперь карту можно извлечь из ПК и загружать с нее модуль uSomIQ AM437x. Загрузка происходит автоматически без дополнительных действий. | + | Теперь карту можно извлечь из ПК и загружать с нее модуль uSomIQ AM437x. Загрузка происходит автоматически без дополнительных действий. |
+ | ===== Автономный старт с NAND ===== | ||
+ | === Запись загрузчика u-boot === | ||
+ | Запишем идентификатор платы в EEPROM, установленную на плате модуля. Этот шаг необязателен, | ||
+ | < | ||
+ | => 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 ................ | ||
+ | </ | ||
+ | Видно, что память EEPROM чистая. Запишем идентификатор и посмотрим на изменения: | ||
+ | < | ||
+ | => 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 ................ | ||
+ | </ | ||
+ | Теперь это однозначно uSomIQ AM437x.\\ | ||
+ | Смотрим какие разделы присутсвуют на флеш NAND: | ||
+ | < | ||
+ | => mtd | ||
+ | |||
+ | device nand0 < | ||
+ | #: name size offset | ||
+ | 0: NAND.SPL | ||
+ | 1: NAND.SPL.backup1 | ||
+ | 2: NAND.SPL.backup2 | ||
+ | 3: NAND.SPL.backup3 | ||
+ | 4: NAND.u-boot-spl-os | ||
+ | 5: NAND.u-boot | ||
+ | 6: NAND.u-boot-env | ||
+ | 7: NAND.u-boot-env.backup10x00040000 | ||
+ | 8: NAND.kernel | ||
+ | 9: NAND.file-system | ||
+ | |||
+ | active partition: nand0,0 - (NAND.SPL) 0x00040000 @ 0x00000000 | ||
+ | |||
+ | defaults: | ||
+ | mtdids | ||
+ | mtdparts: mtdparts=nand.0: | ||
+ | </ | ||
+ | На всякий случай стираем флеш: | ||
+ | < | ||
+ | => nand erase.chip | ||
+ | |||
+ | NAND erase.chip: device 0 whole chip | ||
+ | Erasing at 0x1ffe0000 -- 100% complete. | ||
+ | OK | ||
+ | </ | ||
+ | В ходе выполнения стирания могут появляться сообщения о " | ||
+ | < | ||
+ | mmc rescan | ||
+ | load mmc 0 ${loadaddr} MLO | ||
+ | nand write ${loadaddr} NAND.SPL | ||
+ | nand write ${loadaddr} NAND.SPL.backup1 | ||
+ | </ | ||
+ | Запись файла u-boot.img | ||
+ | < | ||
+ | load mmc 0 ${loadaddr} u-boot.img | ||
+ | nand write ${loadaddr} NAND.u-boot | ||
+ | </ | ||
+ | Запись dtb файла | ||
+ | < | ||
+ | setenv devtype mmc | ||
+ | run findfdt | ||
+ | run loadfdt | ||
+ | nand write ${fdtaddr} NAND.u-boot-spl-os | ||
+ | </ | ||
+ | Запись файла ядра | ||
+ | < | ||
+ | run loadimage | ||
+ | nand write ${loadaddr} NAND.kernel | ||
+ | </ | ||
+ | === Запись файловой системы === | ||
+ | // | ||
+ | теперь набираем команду ' | ||
+ | < | ||
+ | root@am437x-usomiq: | ||
+ | Count of MTD devices: | ||
+ | Present MTD devices: | ||
+ | Sysfs interface supported: | ||
+ | </ | ||
+ | Видим, что последний раздел **mtd9** - это именно раздел под файловую систему. Теперь, | ||
+ | < | ||
+ | ubiformat /dev/mtd9 -s 2048 -O 2048 | ||
+ | ubiattach / | ||
+ | ubimkvol /dev/ubi0 -s 450MiB -N rootfs | ||
+ | mount -t ubifs ubi0:rootfs /mnt | ||
+ | </ | ||
+ | Директория '/ | ||
+ | < | ||
+ | cd /mnt | ||
+ | tar xf ~/ | ||
+ | </ | ||
+ | Теперь можно набрать команду reboot или poweroff, извлечь карту и загружаться непосредственно с модуля без внешнего накопителя. |
wiki/usomiq-am437x-ezsdk.txt · Последнее изменение: 2023/06/16 14:42 — admin77