Embedded Linux для модуля MTAX-SOM-AM335x

Новые образы для прошивки модулей на базе TI SDK 07.00.00.00

Модификации модуля и MB MLO u-boot.img u-boot-spl.bin. zImage rootfs.tar.gz ubi.img DeviceTree
модуль:v4, MB:v2 MLO u-boot.img u-boot-spl.bin zImage rootfs_full.tar.gz ubi.img am335x-mtax.dtb

Документация по прошивке

https://drive.google.com/file/d/0B1nl8q4_-tA-dkVMY3lESHc1cVU/view?usp=sharing&resourcekey=0-IHL8JVtCgDoNXDvktFKXtg

Скрипт создания загрузочной SD карты

https://drive.google.com/file/d/0B1nl8q4_-tA-NkxNYnBjOVp2TFk/view?usp=sharing&resourcekey=0-aJ6wDWLvL66dTUChl4gafA

Патч для ревизии r586 к TISDK версии 07.00.00.00

https://drive.google.com/file/d/0B1nl8q4_-tA-YWZxYW9yQlFZSjQ/view?usp=sharing&resourcekey=0-g2WsM2LFSBzMMTZpDyDnbQ

Встроенный в модуль PHY

Для работы сети через встроенный в модуль PHY (TLK106) в Linux необходимо подменить файл конфигурации утройств board-support/linux-3.12.10-ti2013.12.01/arch/arm/boot/dts/am335x-mtax.dts на am335x-mtax_phyinternal.dts.

Новые образы для прошивки модулей

Модификации модуля и MB MLO u-boot.img u-boot-spl.bin. uImage rootfs.tar.gz ubi.img Архив с прошивками
модуль:v4, MB:v2, Исправлена работа сети для модулей с PHY MLO u-boot.img u-boot-spl.bin uImage rootfs_full.tar.gz ubi_full.img am335xv4_MBv2_r564.tar.gz

Скрипт установки SDK версии 7.00.00.00 (1.9GB)

http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/07_00_00_00/exports/ti-sdk-am335x-evm-07.00.00.00-Linux-x86-Install.bin

Патч для ревизии r564 к TISDK версии 06.00.00.00

https://drive.google.com/file/d/0B1nl8q4_-tA-dzVvXzE3ckVRTWM/view?usp=sharing&resourcekey=0-t1vDwnIK0weXqZiuvVVgWQ

Скрипт создания загрузочной SD карты

https://drive.google.com/file/d/0B1nl8q4_-tA-NlpBazJyZUNqWlk/view?usp=sharing&resourcekey=0-z1rTUw588FLaSMOl-lanIQ

Образы для прошивки модулей (SDK v.6.00.00.00)

Модификации модуля и MB MLO u-boot.img u-boot-spl.bin. uImage rootfs.tar.gz ubi.img Архив с прошивками
модуль:v4, MB:v2, ОЗУ:512МБ MLO u-boot.img u-boot-spl.bin uImage rootfs.tar.gz ubi.img am335xv4_512M_MBv2.tar.gz
модуль:v4, MB:v2, ОЗУ:256МБ MLO u-boot.img u-boot-spl.bin uImage rootfs.tar.gz ubi.img am335xv4_256M_MBv2.tar.gz
модуль:v1, MB:v1, ОЗУ:256МБ MLO u-boot.img u-boot-spl.bin uImage rootfs.tar.gz ubi.img am335xv1_MBv1.tar.gz
модуль:v4, MB:v1, ОЗУ:512МБ MLO u-boot.img u-boot-spl.bin uImage rootfs.tar.gz ubi.img  
модуль:v4, MB:v2, ОЗУ:256МБ(300MHz) MLO u-boot.img u-boot-spl.bin        

Загрузка u-Boot по UART

1. Удостовериться что в терминальной программе (будем рассматривать только minicom в OC Linux) после включения питания выводятся символы “CCCCCC”. Если этого не происходит, то следует установить первоочередной режим загрузки с UART0, (например перемычкой XBOOT1(2-3) или соединением через резистор X3:29 и X3:80 - 00011 - UART0,SPI0,XIP,MMC0) до включения питания.
2. Выключить питание модуля.
3. В minicom надо настроить размер буферов (1K) для передачи по XMODEM/YMODEM: Ctrl-a o, File transfer protocols, и прописать команды sx -vv -k и sb -vv -k.
4. Передаем по Xmodem стартовый загрузчик: Ctrl-a, s, xmodem выбираем файл u-boot-spl.bin (двойным пробелом выбирается и переходит по каталогам) и нажимаем ввод.
5. включаем питание, и ожидаем увидеть бегущие проценты скачивания
6. После удачной загрузки ROM код запускает стартовый загрузчик, который ожидает передачи загрузчика u-Boot по протоколу Yмодем.
7. После второго “CCCC” посылаем по Yмодем: Ctrl-a, s, ymodem выбираем файл u-boot.img и нажимаем ввод.
8. При удачной загрузке увидим приглашение U-Boot#

Загрузка образов по UART и прошивка NAND

Для стирания NAND flash:
nand erase 0 0x780000

Загрузка MLO по UART и прошивка в NAND:
loady 0x81000000

Ctrl+a, s, y modem, выбрать файл MLO:
nand write 0x81000000 0x0 0x020000;
nand write 0x81000000 0x20000 0x020000;
nand write 0x81000000 0x40000 0x020000;
nand write 0x81000000 0x60000 0x020000;

Загрузка u-boot.img по UART и прошивка в NAND:
loady 0x81000000
Ctrl+a, s, y modem, выбрать файл u-boot.img
nand write 0x81000000 0x80000 0x200000;

Загрузка uImage по UART и прошивка в NAND:
loady 0x81000000 Ctrl+a, s, y modem, выбрать файл uImage
nand write 0x81000000 0x280000 0x500000;

!!!Не рекомеднуем, так как по UART это будет очень долго!!!
Загрузка ubi.img по UART () и прошивка в NAND:
loady 0x81000000 Ctrl+a, s, y modem, выбрать файл ubi.img
nand write 0x81000000 0x780000 ${filesize};

После reset и выбора порядка загрузки NAND должен загрузиться Linux с корневой файловой системой ubi/ubifs в NAND.

Загрузка образов c SD карты и прошивка NAND

Запись прошивок для AM335x на SD карту (для Linux пользователей).

1. Вставьте micro SD карту в компьютер. 2. Запустите утилиту dmesg чтобы удостовериться что карта определиласьи доступна в системе. Консольный вывод (последние строки) должен быть похож на:

[438112.009168] sd 25:0:0:0: Attached scsi generic sg4 type 0
[438112.012077] sd 25:0:0:0: [sde] 7716864 512-byte logical blocks: (3.95 GB/3.67 GiB)
[438112.012624] sd 25:0:0:0: [sde] Write Protect is off
[438112.012628] sd 25:0:0:0: [sde] Mode Sense: 03 00 00 00
[438112.013168] sd 25:0:0:0: [sde] No Caching mode page present
[438112.013171] sd 25:0:0:0: [sde] Assuming drive cache: write through
[438112.016163] sd 25:0:0:0: [sde] No Caching mode page present
[438112.016167] sd 25:0:0:0: [sde] Assuming drive cache: write through

Этот вывод означает что карта доступна в системе через файл устройства /dev/sde.

3. Для форматирования SD карты, создания 2 разделов и копирования файлов можно запустать скрипт:

sudo ./mksd-ti335x.sh /dev/sde MLO u-boot.img uImage rootfs.tar.gz

Параметры для запуска скрипта:

  • Файл устройства SD карты: например /dev/sde;
  • Бинарный образ загрузчика MLO;
  • Бинарный образ загрузчика u-bool.img;
  • Образ ядра Linux - u-Image;
  • архив корневой файловой системы rootfs.tar.gz

Кроме указанных в параметрах файлов для подготовки SD карты, необходимы файлы:

  • pointercal - для пропуска утилиты калибровки touch screen;
  • ubi.img - образ ubi для прошивки в NAND.

В результате работы скрипта на карте памяти создается 2 раздела с файловыми системами FAT и ext3. Первый должен содержать файлы:

  • MLO
  • ubi.img
  • u-boot.img
  • uImage
  • pointercal

На втором разделе создается корневая файловая система из архива rootfs.tar.gz Для прошивки более полного образа корневой файловой системы можно использовать rootfs_full.tar.gz

Созданную SD карту можно извлечь из компьютера, вставить в разьем на материнской плате MTAX-MB. Если задать способ загрузки с SD карты (например перемычкой XBOOT3(1-2) или соединением через резистор X3:31 и X5:38) и подать питание, ОС Linux должна загрузиться c карты памяти.

Образы для прошивки.

Все образы: https://drive.google.com/drive/folders/0B1nl8q4_-tA-UWJDNk9jVVAtNm8?resourcekey=0-vsvHwkC-qtZQoZnJMPrY6Q&usp=sharing

Прошивка образов в NAND flash при загрузке с SD карты.


1. Подключить USB кабель в разъем XUSBFT1, вставить SD карту и подать питание. Запустить терминальную программу (TerraTerm, PUTTY, minicom) и настроить для работы с соответствующим последовательным портом компьютера. Для Linux запустить:
minicom -D /dev/ttyUSB1.

Настройки последовательного порта: 115200n8 (нажать Ctrl+a, s и выбрать соответствующие настройки).
2. Нажать ввод, чтобы остановить автоматическую загрузку Linux и войти в командрый режим u-Boot.
3. В консоли u-Boot выполнить команду для стирания NAND flash.
nand erase.chip

4. Выполнить команды для прошивки бинарных образов в NAND:
mmc rescan;
fatload mmc 0 0x81000000 MLO;
nand write 0x81000000 0x0 ${filesize};
nand write 0x81000000 0x20000 ${filesize};
nand write 0x81000000 0x40000 ${filesize};
nand write 0x81000000 0x60000 ${filesize};
fatload mmc 0 0x81000000 u-boot.img;
nand write 0x81000000 0x80000 ${filesize};
fatload mmc 0 0x81000000 uImage;
nand write 0x81000000 0x280000 ${filesize};
saveenv;

для v7.0:

mmc rescan
load mmc 0:2 0x81000000 /boot/MLO
nand write 0x81000000 NAND.SPL ${filesize}
nand write 0x81000000 NAND.SPL.backup1 ${filesize}
nand write 0x81000000 NAND.SPL.backup2 ${filesize}
nand write 0x81000000 NAND.SPL.backup3 ${filesize}
load mmc 0:2 0x81000000 /boot/u-boot.img
nand write 0x81000000 NAND.u-boot ${filesize}
load mmc 0:2 0x81000000 /boot/am335x-mtax.dtb
nand write 0x81000000 NAND.u-boot-spl-os ${filesize}
load mmc 0:2 0x81000000 /boot/zImage
nand write 0x81000000 NAND.kernel ${filesize}
saveenv

5. Прошивка корневой файловой системы UBI:
load mmc 0:2 0x81000000 ubi.img
nand write 0x81000000 NAND.file-system ${filesize}

Замечание: При скачивании файлов по сети с помощью tftpboot необходимо указывать размер файлов явным образом без ${filesize}.

6. После перезагрузки должен загрузиться Linux из NAND, при условии что выбран соответствующий режим загрузки.

Лог загрузки из NAND

Лог загрузки (am335xv4_512M_MBv2)

Загрузка образов по сети и прошивка в NAND (Восстановление прошивки по сети)

1. Установить загрузку с EMAC1 (если к EMAC1 подключен PHY контроллер в режиме MII, например TLK106 как на модуле MTAX-SOM-AM335x или на отладочной плате MTAX-MB-AM335x-v2, но не оба одновременно). Для этого можно выбрать порядок загруки SYSBOOT=b01011 (USB0-NAND-SPI0-MMC0).

2. Настроить интерфейс eth1 на Linux PC, например - статический IP:192.168.100.1/24.
3. Установить tftp сервер и настроить каталог /tftpboot как каталог по умолчани, например в файле /etc/xinetd.d/tftp:

	service tftp
{
  protocol = udp
  port = 69
  socket_type = dgram
  wait = yes
  user = nobody
  server = /usr/sbin/in.tftpd
  server_args = /tftpboot
  disable = no
}

При использовании TI SDK и запуске скрипта setup.sh указанные выше настройки tftp сервера установятся автоматически.
4. Установить dhcp-server (пакет isc-dhcp-server) и настроить:

  • В файле /etc/default/isc-dhcp-server прописать интерфейсы для DHCP:
	INTERFACES="usb0 usb1 eth1"
  • В файле /etc/dhcp/dhcpd.conf прописать настройки DHCP для eth1 и загрузки файлов по tftp.
	subnet 192.168.100.0 netmask 255.255.255.0 {
  interface eth1;
  range dynamic-bootp 192.168.100.100 192.168.100.200;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.100.255;
  option routers 192.168.100.1;
  option root-path "/tftpboot";
  if substring (option vendor-class-identifier, 0, 10) = "DM814x ROM" {
  filename "u-boot-spl.bin";
  # Check for PG2.0, CPSW or USB RNDIS
  } elsif substring (option vendor-class-identifier, 0, 10) = "AM335x ROM" {
    filename "u-boot-spl.bin.restore";
  } elsif substring (option vendor-class-identifier, 0, 17) = "AM335x U-Boot SPL" {
    filename "u-boot.img.restore";
  } else {
    filename "uImage";
  }
}

5. Запустить dhcp server:

	sudo service isc-dhcp-server start

6. Скопировать файлы в каталог /tftpboot:

  • u-boot-spl.bin.restore (образ u-boot-spl, собранный с поддержкой загрузки по EMAC1)
  • u-boot.img.restore (образ u-boot.img, собранный с поддержкой загрузки по EMAC1 и debrick.scr)
  • debrick.scr (скрипт для загрузки образов MLO, u-boot.img, uImage, ubi.img и прошамки их в NAND)
  • MLO, u-boot.img, uImage, ubi.img - образы для записи в NAND.

7. Включить питание и дождаться загрузки и прошивки всех образов.

8. Для подготовки своего сценария востановления образов по сети можно проделать следующие шаги:

  • Создать файл debrick.txt с командами u-boot, например:
	# erase NAND
nand erase.chip
# get MLO
tftp 0x81000000 MLO
nand write 0x81000000 0x0 0x20000
nand write 0x81000000 0x20000 0x20000
nand write 0x81000000 0x40000 0x20000
nand write 0x81000000 0x60000 0x20000
# get u-boot.img
tftp 0x81000000 u-boot.img
# write the whole block (4*MLO + u-boot.img) to NAND
nand write 0x81000000 0x80000 ${filesize}
# get uImage
tftp 0x81000000 uImage
nand write 0x81000000 0x280000 ${filesize}
# get ubi.img
tftp 0x81000000 ubi.img
nand write 0x81000000 0x780000 ${filesize}  

создать из него образ, понятный для u-boot:

mkimage -A arm -O U-Boot -C none -T script -d debrick.txt debrick.scr

Возможно, перед mkimage потребуется указать полный путь, например /home/user/ti-sdk-am335x-evm-06.00.00.00/board-support/u-boot-2013.01.01-psp06.00.00.00/tools/mkimage.

Настройка WIFI в режимет AP(точки доступа)

1. Скачать файл конфигурации( ap.cfg.gz). Распаковать его и записать на носитель доступный из Linux на плате.

2. Запустить команду для применения конфигурации:

unifi_config –dev /dev/unifiudi1 –setap_cfg /home/root/ap.cfg

3. Сгенерировать KEY, например для пароля «88888888» и точки доступа «testpoint» выполняем команду:

wpa_passphrase testpoint 88888888

В результате получится

	network={
          ssid="testpoint"
          #psk="88888888"
          psk=fa9c7090ea11704cec8e01fd5a06148c21f6c7dd0aff38ab2082155884af2651
      }

4. Вводим команду для перевода WIFI в режим AP:

iwpriv wlan0 AP_SET_CFG ASCII_CMD=AP_CFG,SSID=«testpoint»,SEC=«wpa2-psk»,KEY=fa9c7090ea11704cec8e01fd5a06148c21f6c7dd0aff38ab2082155884af2651,

CHANNEL=4,PREAMBLE=1,MAX_SCB=2,END

5. Запускаем: iwpriv wlan0 AP_BSS_START

(Для остановки: iwpriv wlan0 AP_BSS_STOP)

6. На компьютере ищем сеть «testpoint» и вводим пароль «88888888».

Как разрабатывать своё приложение под Linux Embedded на платформе AM335x