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

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


wiki:usomiq-am437x-ezsdk

Различия

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

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

wiki:usomiq-am437x-ezsdk [2019/01/14 17:56]
maxx [Запись на карту]
wiki:usomiq-am437x-ezsdk [2019/05/28 18:31] (текущий)
maxx [Файловая система]
Строка 13: Строка 13:
 2. Скачиваем SDK в исходниках 2. Скачиваем SDK в исходниках
 <​code>​ <​code>​
-wget http://​software-dl.ti.com/​processor-sdk-linux/​esd/​AM437X/​latest/​exports/​am437x-evm-linux-sdk-src-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-src-05.02.00.10.tar.xz
 </​code>​ </​code>​
 ===== Распаковка исходников ===== ===== Распаковка исходников =====
Строка 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:​
 +<​code>​
 +cd board-support
 +</​code>​
 ==== Компиляция u-boot ==== ==== Компиляция u-boot ====
-Заходим в директорию '​u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2'​ и выполняем команды:+SDK от Texas Instruments не поддерживает модуль uSomIQ, //​хотя ​и легко запускается,​ если убрать чтение идентификатора платы ​из встроенной EEPROM//. Сначала скачаем и применим исправления исходных кодов для модуля uSomIQ:
 <​code>​ <​code>​
-make ARCH=arm distclean +wget http://​mentorel.com/​downloads/​usomiq/​patches/​add-am437x-usomiq-u-boot-sdk-05.02.00.10.patch
-make ARCH=arm am43xx_evm_usomiq_defconfig +
-make ARCH=arm CROSS_COMPILE=${CC}+
 </​code>​ </​code>​
-Если ваш модуль ​имеет NAND с размером страницы 4096 байт, то надо использовать другой _defconfig вместо обычного:+Заходим ​в директорию '​u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2'​ и выполняем команду:
 <​code>​ <​code>​
-make ARCH=arm am43xx_evm_usomiq_nand4k_defconfig+cd u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2 
 +patch -p1 < ../​add-am437x-usomiq-u-boot-sdk-05.02.00.10.patch
 </​code>​ </​code>​
-Если всё сделано ​правильно, то появятся два файла: MLO и u-boot.img. Эти файлы ​надо скопировать на первый раздел карточки SD:+Теперь непосредственно компиляция:
 <​code>​ <​code>​
-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}
 </​code>​ </​code>​
 +Если всё сделано правильно,​ то появятся два файла: **MLO** и **u-boot.img**. Эти файлы надо будет скопировать на FAT раздел карточки SD 
 ==== Компиляция ядра ==== ==== Компиляция ядра ====
 +SDK от Texas Instruments не поддерживает модуль uSomIQ, поэтому сначала скачаем и применим исправления исходных кодов для модуля uSomIQ:
 +<​code>​
 +wget http://​mentorel.com/​downloads/​usomiq/​patches/​add-am437x-usomiq-kernel-sdk-05.02.00.10.patch
 +cd linux-4.14.79+gitAUTOINC+bde58ab01e-gbde58ab01e
 +patch -p1 < ../​add-am437x-usomiq-kernel-sdk-05.02.00.10.patch
 +</​code>​
 +Непосредственно компиляция
 <​code>​ <​code>​
 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
 +</​code>​
 +Если ваш компьютер имеет несколько процессорных ядер (не путать с логическими ядрами),​ то можно ускорить компиляцию запустив компилятор на каждом из ядер. Для этого компилятору gcc надо передать параметр **-j4**, если ядер 4, или 8, если ядер 8. То есть, команда для компиляции ядра будет выглядеть так (местоположение -j8 не имеет значения):​
 +<​code>​
 +make ARCH=arm CROSS_COMPILE=${CC} zImage modules dtbs -j8
 </​code>​ </​code>​
 ==== Подготовка SD карты ==== ==== Подготовка SD карты ====
 Возьмите SD карту объемом не менее 2ГБ. Далее разобьем общее пространство карты на два: Возьмите SD карту объемом не менее 2ГБ. Далее разобьем общее пространство карты на два:
   * boot - раздел fat32 для u-boot   * boot - раздел fat32 для u-boot
-  * roofs - раздел ext4 для файловой системы+  * rootfs ​- раздел ext4 для файловой системы
  
 //​Разбивку карты выполняем в ОС Linux!// //​Разбивку карты выполняем в ОС Linux!//
Строка 105: Строка 122:
 [535222.056436] ​ sdc: sdc1 sdc2 [535222.056436] ​ sdc: sdc1 sdc2
 </​code>​ </​code>​
-В данном примере карта уже разбита на два раздела,​ но нам интересно другое:​ "sdc: sdc1 sdc2". Теперь мы знаем, что карта в системе обозначена как '/​dev/​**sdc**'​. Если бы карта имела один раздел или вовсе их не имела, то всё равно "​sdc"​ мы бы увидели. Итак, выполняем разметку ​карты: ​выполняем команду ​+В данном примере карта уже разбита на два раздела,​ но нам интересно другое:​ "sdc: sdc1 sdc2". Теперь мы знаем, что карта в системе обозначена как '/​dev/​**sdc**'​. Если бы карта имела один раздел или вовсе их не имела, то всё равно "​sdc"​ мы бы увидели. ​ 
 + 
 + 
 +Итак, ​cначала удалим ​все разделы с карты:
 <​code>​ <​code>​
-sudo fdisk /dev/sdc+sudo dd if=/​dev/​zero of=/​dev/​sdc ​bs=1M count=20
 </​code>​ </​code>​
-Если на карте есть разделы, то их надо удалить последовательно нажимая ​букву '​d'​ и выбирая номер раздела, который ​надо удалить ​(удаляем все). Теперь считаем, что на карте нет разделов:​ +Далее, ​чтобы выполнить ​разметку карты выполняем команду:​
-  - Создаем раздел командой '​n'​ (new), затем '​p'​ (основной),​ затем 1 (первый раздел),​ подтверждаем ​выбор ​первого сектора [ENTER], вводим 4095 для последнего сектора и опять [ENTER] +
-  - Изменяем ​тип раздела на fat16 нажатием '​t'​ (type), потом '​e'​ (W95 FAT16 (LBA) +
-  - Делаем раздел загружаемым:​ нажимаем '​a',​ потом '​1'​ +
-Теперь создадим раздел для файловой системы:​ +
-  - Создаем раздел ​командой '​n'​ (new), затем '​p'​ (основной),​ затем 2 (второй раздел),​ далее два раза жмем [ENTER] +
-Можно посмотреть что получилось в итоге. Для этого нажмите '​p'​:+
 <​code>​ <​code>​
-Disk /dev/sdc: 7948 MB7948206080 bytes +sudo sfdisk --version 
-255 heads63 sectors/​track966 cylinderstotal 15523840 sectors +</​code>​ 
-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 +<​code>​ 
-I/O size (minimum/​optimal)512 bytes / 512 bytes +sudo sfdisk ​/​dev/​sdc ​<<​-__EOF__ 
-Disk identifier: 0xafb3f87b +1M,12M,0xE,* 
- +13M,,,- 
-   Device Boot      Start         End      Blocks ​  ​Id ​ System +__EOF__ 
-/​dev/​sdc1 ​  ​       2048        ​4095 ​       1024     W95 FAT16 (LBA) +</code> 
-/​dev/​sdc2 ​           ​4096 ​   15523839 ​    ​7759872 ​  83  Linux+На карте 16ГБ получилась такая карта разделов
 +<​code>​ 
 +Device ​    ​Boot Start      ​End  Sectors ​ Size Id Type 
 +/​dev/​sdc1 ​     ​2048    ​26623    24576   ​12M ​ W95 FAT16 (LBA) 
 +/​dev/​sdc2 ​      26624 30965759 30939136 14.8G 83 Linux 
 +</​code>​ 
 +Теперь форматируем разделы:​\\ 
 +* Форматируем раздел 1 как "​FAT"​ командой  
 +<​code>​ 
 +sudo mkfs.vfat -F 16 -n BOOT /dev/sdc1 
 +</​code>​ 
 +* Форматируем раздел 2 как "​ext4"​ командой 
 +<​code>​ 
 +sudo mkfs.ext4 -L rootfs /dev/sdc2
 </​code>​ </​code>​
-Для записи разделов на диск нажмите '​w'​ 
- 
-**Форматирование разделов** 
-  - Форматируем раздел 1 как "​FAT"​ командой "sudo mkfs.vfat -F 32 -n "​boot"​ /​dev/​sdc1"​ 
-  - Форматируем раздел 2 как "​ext4"​ командой "sudo mkfs.ext4 -L rootfs /​dev/​sdc2"​ 
  
 **Монтирование разделов** **Монтирование разделов**
Строка 145: Строка 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>​
-В данном архиве содержится несколько файловых систем,​ включая скомпилированные бинарники u-boot и ядро Linux для отладочных плат от Texas Instruments (для uSomIQ они не подойдут). +Сначала распакуем весь архив:​ 
- +<​code>​ 
-==== Запись на карту ==== +tar xf am437x-evm-linux-sdk-bin-05.02.00.10.tar.xz 
-**Запись u-boot на карту**+</​code>​ 
 +Получаем директорию "​ti-processor-sdk-linux-am437x-evm-bin-05.02.00.10"​ с содержимым:​ 
 +<​code>​ 
 +cd ti-processor-sdk-linux-am437x-evm-bin-05.02.00.10 
 +ls 
 +bin  board-support ​ filesystem ​ Rules.make ​ setup.sh 
 +</​code>​ 
 +В данном архиве содержится несколько файловых систем,​ включая скомпилированные бинарники u-boot и ядро Linux для отладочных плат от Texas Instruments (для uSomIQ они не подойдут). ​Нас интересует директория **filesystem**:​ 
 +<​code>​ 
 +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 
 +</​code>​ 
 +Запишем на нашу SD карту файловую систему **tisdk-rootfs-image-am437x-evm.tar.xz** 
 +<​code>​ 
 +cd filesystem 
 +sudo tar xf tisdk-rootfs-image-am437x-evm.tar.xz -C /​media/​rootfs 
 +</​code>​ 
 +==== Запись ​загрузчиков ​на карту ==== 
 +=== Запись u-boot на карту ​===
 Заходим в директорию u-boot '​u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2',​ далее выполняем команды:​ Заходим в директорию u-boot '​u-boot-2018.01+gitAUTOINC+313dcd69c2-g313dcd69c2',​ далее выполняем команды:​
 <​code>​ <​code>​
Строка 156: Строка 202:
 sudo cp u-boot.img /media/boot sudo cp u-boot.img /media/boot
 </​code>​ </​code>​
-**Запись ядра, модулей и dtb**+=== Запись ядра, модулей и dtb ===
 Заходим в директорию ядра Linux '​linux-4.14.79+gitAUTOINC+bde58ab01e-gbde58ab01e',​ далее выполняем команды:​ Заходим в директорию ядра Linux '​linux-4.14.79+gitAUTOINC+bde58ab01e-gbde58ab01e',​ далее выполняем команды:​
 <​code>​ <​code>​
wiki/usomiq-am437x-ezsdk.1547477800.txt.gz · Последние изменения: 2019/01/14 17:56 — maxx