INMYS WIKI

Инженерами для инженеров

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

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


boards:nms-sdm-am335x:firmware

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
boards:nms-sdm-am335x:firmware [2022/10/15 15:04] Владимир Андреевboards:nms-sdm-am335x:firmware [2022/10/18 11:41] (текущий) – [Сборка rootfs] Владимир Андреев
Строка 1: Строка 1:
 ===== Подготовка программной части ===== ===== Подготовка программной части =====
  
 +===== Сборка Linux при помощи Docker =====
  
-===== Сборка Linux при помощи Buildroot и Docker ===== +Для выполнение следующей инструкции, на компьютере должно быть установлено [[https://docs.docker.com/engine/install/|Docker окружение]]\\
- +
-Для выполнение следующей инструкции, на компьютере должно быть установлено [[https://docs.docker.com/engine/install/|Docker окружение]]+
 Также необходимо скачать следующие файлы: Также необходимо скачать следующие файлы:
-  * Набор скриптов и образ контейнера +  * [[ https://doc.inmys.ru/open?hash=704a57f1e171d813ab832b63e72a4def&fn=utils.tar.gz   Набор скриптов и образ контейнера ]] 
-  * {{ :playground:nms-som-e2am335x:u-boot_mir.tar | u-boot patch}} +  * [[ https://doc.inmys.ru/open?hash=4a879b1cc5739894027143998bc28fce&fn=u-boot_mir.tar | U-boot patch]] 
-  * {{ :playground:nms-som-e2am335x:kernel_mir.tar | kernel patch}} +  * [[ https://doc.inmys.ru/open?hash=2196ec1f4bdc2f586e8b79b3d7fb129d&fn=kernel_mir.tar | Kernel patch]] 
-  * {{ :playground:nms-som-e2am335x:rootfs.tar.gz rootfs}} +  * [[ https://doc.inmys.ru/open?hash=f43106fe680cffc15679ca7162265ab2&fn=rootfs.tar.gz  | Rootfs]] 
-И распаковать их, выполним команды:<code>+  * [[ https://doc.inmys.ru/open?hash=650dc30f7e937fa12e37ea70ff6e10dd&fn=gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz | Standalone ARM Toolchain* ]] 
 +  * [[https://doc.inmys.ru/open?hash=729a2f87ae127622fc8c4e5d95d242ef&fn=am335x-evm-linux-sdk-src-06.03.00.106.tar.xz AM335x Linux SDK BSP Source Code* ]] 
 +* файлы скачаны с сайта [[https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/06_03_00_106/index_FDS.html | ti.com]] 
 + 
 +Рекомендация: Удобнее скачать файлы в отдельный каталог и работать в этой папке. Для этого, необходимо переместить скачанные архивы в новую папку и перейти в неё в терминале. Распаковать архивы 
 +<code>
 tar -xf u-boot_mir.tar tar -xf u-boot_mir.tar
 tar -xf kernel_mir.tar tar -xf kernel_mir.tar
 tar -xf rootfs.tar.gz tar -xf rootfs.tar.gz
 tar -xf utils.tar.gz tar -xf utils.tar.gz
 +tar -xf am335x-evm-linux-sdk-src-06.03.00.106.tar.xz
 +tar -xf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
 +</code>
 +Для подготовки обрза контейнера, необходимо перейти в папку utils и выполнить команду сборки образа
 +<code>
 +sudo docker build -t am335x utils/
 +</code>
 +После этого в docker появится образ **am335x**
 +===== Подготовка к сборке =====
 +Скопируйте два скрипта из каталога utils в текущую директорию
 +<code>
 +cp utils/kernel.sh .
 +cp utils/u-boot.sh .
 +</code>
 +
 +===== Сборка spl/MLO/u-boot =====
 +Выполните команду 
 +<code>
 +sudo docker run -e USER=$USER  -e USERID=$UID -v $(pwd):/BR -t am335x bash u-boot.sh 
 +</code>
 +
 +===== Сборка linux =====
 +Выполните команду 
 +<code>
 +sudo docker run -e USER=$USER  -e USERID=$UID -v $(pwd):/BR -t am335x bash kernel.sh 
 +</code>
 +Сборка может занять длительное время, в зависимости от конфигурации компьютера.
 +
 +После сборки, появится файлы 
 +  * Board-support/linux-4.19.94+gitAUTOINC+be5389fd85-gbe5389fd85/arch/arm/boot/zImage 
 +  * Board-support/linux-4.19.94+gitAUTOINC+be5389fd85-gbe5389fd85/arch/arm/boot/dts/am335x-mir_mb.dtb
 +
 +Проверить их наличие можно командой:
 +<code>
 +ls board-support/linux-4.19.94+gitAUTOINC+be5389fd85-gbe5389fd85/arch/arm/boot/zImage
 +ls board-support/linux-4.19.94+gitAUTOINC+be5389fd85-gbe5389fd85/arch/arm/boot/dts/am335x-mir_mb.dtb
 +</code>
 +===== Сборка rootfs =====
 +Выполните команду 
 +<code>
 +sudo docker run -e USER=$USER  -e USERID=$UID -v $(pwd):/BR -t am335x make -C rootfs
 +</code>
 +Сборка может занять длительное время, в зависимости от конфигурации компьютера.
 +
 +После сборки, появится файл __rootfs/buildroot-2018.05.1/output/images/rootfs.cpio.uboot__
 +===== Прошивка пустого модуля =====
 +собранные файлы {{ boards:nms-sdm-am335x:files:prebuild_bins.tar |bins}}
 +<code>
 +cd board-support/u-boot-2019.01+gitAUTOINC+333c3e72d3-g333c3e72d3
 +picocom -b 115200  --send-cmd "sx -vv " /dev/ttyUSB1
 +#ctrl a+s -> send by Xmodem spl/u-boot-spl.bin
 +spl/u-boot-spl.bin
 +#ctrl a+s -> send by Xmodem spl/u-boot.bin
 +u-boot.bin
 +
 +setenv ipaddr 192.168.1.198
 +setenv serverip 192.168.1.125
 +tftp ${rdaddr} mir_am33/rootfs.cpio.uboot
 +tftp ${loadaddr} mir_am33/zImage
 +tftp ${fdtaddr} mir_am33/am335x-mir_mb.dtb
 +setenv bootargs "console=ttyS0,115200n8 earlyprintk debug"
 +bootz ${loadaddr} ${rdaddr} ${fdtaddr}
 +#login with root/root
 +fdisk /dev/mmcblk0
 +n
 +p
 +1
 +
 ++1G
 +a
 +1
 +t
 +c
 +n
 +p
 +2
 +
 +
 +w
 +####
 +mkfs.vfat /dev/mmcblk0p1
 +mkfs.vfat -n STORE /dev/mmcblk0p2
 +mount /dev/mmcblk0p1 /opt/
 +copy from build machine to /opt on som: am335x-mir_mb.dtb  MLO  rootfs.cpio.uboot  u-boot.img  zImage
 +#scp <...>/bin/results/ root@192.168.1.198:/opt/umount /opt
 +sync
 +</code>
 +===== Настройка rootfs =====
 +Изменение ip адресов
 +<code>
 +savevar.sh kernel NETWORK_IP   192.168.1.198 # ip on eth0
 +savevar.sh kernel NETWORK_IP_1 192.168.2.198 # ip on eth1
 +savevar.sh kernel NETWORK_IP_2 192.168.3.198 # ip on eth2
 +</code>
 +Для добавление автозапуска скриптов, их нужно записать в файл // /mnt/store/postup.sh //
 +
 +**Замечание:** после перезагрузки, данные в /mnt/store сохранятся, но всё остальное будет очищено. Соответственно пользовательские файлы должны хранится в /mnt/store.
 +
 +Настройки хранятся в файлах // /mnt/store/settings/kernel // и // /mnt/store/settings/userspace //
 +
 +// /mnt/store/settings/kernel //
 +<code>
 +NETWORK_MODE=<mode>
 +
 +#mode=static - use NETWORK_IP, NETWORK_MASK, NETWORK_DEFAULT_GATEWAY for network setup
 +
 +#mode=dhcp - get ip/dns via dhcp
 +
 +#default: static
 +
 +#example: NETWORK_MODE=static
 +
 +NETWORK_IP=<ip>
 +
 +#default: 192.168.1.198
 +
 +#example: NETWORK_IP=192.168.1.198
 +
 +NETWORK_MASK=<mask>
 +
 +#default: 255.255.255.0
 +
 +#example: NETWORK_MASK=255.255.255.0
 +
 +NETWORK_DEFAULT_GATEWAY=<ip>
 +
 +#default: ""
 +
 +#example: NETWORK_DEFAULT_GATEWAY=192.168.1.1
 +
 +</code>
 +
 +
 +// /mnt/store/settings/userspace //
 +<code>
 +CHANGEROOTPASSWD=<false|true>
 +
 +# use LOGIN_ROOTPASS or not
 +
 +#default: false
 +
 +#example: CHANGEROOTPASSWD=true
 +
 +LOGIN_ROOTPASS=<enc_passw>
 +
 +#enc_passw - result of crypt from glibc password manipulation (md5 hash of the password and salt)
 +
 +#default: $1$.1o2Wll.$rZsjTFfqjfJAZuLeWkpuj0
 +
 +# default value - hash of 'root' password
 + 
 +#example: LOGIN_ROOTPASS='$1$.1o2Wll.$rZsjTFfqjfJAZuLeWkpuj0'
 </code> </code>
-Для подготовки обрза контейнера, необходимо распаковать  
  
 +Пароль может быть изменён двумя способами:
 +  - Через // /mnt/store/settings/userspace // \\ Вызываем из glibc функцию crypt и результат записываем в LOGIN_ROOTPASS (и CHANGEROOTPASSWD=true ) \\ Можно выполнить команту passwd из консоли и посмотреть результат в /etc/passwd.
 +  - В // /mnt/store/postup.sh // <code>echo root:123 | chpasswd </code> У пользователя root будет пароль 123
boards/nms-sdm-am335x/firmware.1665846249.txt.gz · Последнее изменение: 2022/10/15 15:04 — Владимир Андреев