Отладочная плата EV-iMX287

Внимание! В платах EV-iMX287 eFuse процессора не запрограммированы. При необходимости вы можете запрограммировать их сами с помощью утилиты.Пока eFuse не запрограммированы, используйте в процессе работы, загрузки в плату sb файлы с индексом ivt (imx28_ivt_linux.sb, imx28_ivt_uboot.sb)

Заходим в папку ltib, запускаем

./ltib -c 
./ltib -p boot_stream.spec -f 

сборка boot stream image

После сборки в папке ev-imx287/src/ltib/rootfs/boot/ будут созданы файлы imx28_ivt_linux.sb, imx28_ivt_uboot.sb В папке ev-imx287/src/ltib/ будет создан файл файловой системы rootfs.ext2.gz

Для создания updater.sb и updater_ivt.sb

./ltib --selectype 
 
-- Choose the platform type 
                  Selection (imx28)  ---> 
-- Choose the packages profile 
                  Selection (mfg firmware profile)  --->

После завершения сборки будут созданы файлы updater.sb и updater_ivt.sb (ev-imx287/src/ltib/)

Выбор типа генерируемой файловой системы ./ltib -c → Target Image Generation → Options → Target Image → ext2.gz ramdisk

Переменные окружения

Задается в

./ltib -c
Package list --->

Файловая система на SD карте

noinitrd console=ttyAM0,115200 root=/dev/mmcblk0p3 rw rootwait ip=none gpmi

Файловая система в NAND Flash

noinitrd console=ttyAM0,115200 ubi.mtd=1 root=ubi0:rootfs0 rootfstype=ubifs rw gpmi

Файловая система NFS

noinitrd console=ttyAM0,115200 fec_mac=00:08:02:6B:A3:1A root=/dev/nfs nfsroot=10.193.100.213:/data/rootfs_home/rootfs_mx28 rw ip=dhcp rootwait gpmi

Файловая система RAMFS

noinitrd console=ttyAM0,115200 root=/dev/ram0 rdinit=/sbin/init fec_mac=00:08:02:6B:A3:1A gpmi
Запись ядра и rootfs на SD карту (Windows)


Копируем файлы imx28_ivt_linux.sb и cfimager.exe в папку cfimager. Туда же распаковываем файл rootfs.ext2.gz.Запускаем программу:

cfimager.exe -a -f imx28_ivt_linux.sb -e rootfs.ext2 -dual_boot -d h (Где параметр h - имя диска картридера, в который установлена карта)

Запись u-boot на SD карту (Windows) Копируем файлы imx28_ivt_uboot.sb и cfimager.exe в папку cfimager.Запускаем программу: cfimager -a -f imx28_ivt_uboot.sb -d h (Где параметр h - имя диска картридера, в который установлена карта)

Для загрузки файлов imx28_ivt_uboot.sb или imx28_ivt_linux в DDR2 платы используем утилиту sb_loader (Windows). Подключаем кабель USB A-A к разъему USB (OTG) платы и компьютеру, кабель к COM порту, запускаем терминальную программу (например PuTTY) и подключаем к плате питание.Запускаем утилиту sb_loader -f imx28_ivt_uboot.sb для загрузки u-boot или sb_loader -f imx28_ivt_linux.sb для загрузки ядра

Запись ядра и файловой системы в NAND Flash. Способ 1


1. На флешку записываем 2 файла - imx28_ivt_linux.sb и rootfs.jffs2
2. Загружаемся с SD карты.
3. Вставляем флешку в USB порт платы и монтируем

mount /dev/sda1 /mnt

4. Стираем NAND Flash

flash_eraseall /dev/mtd0

5. Пишем ядро

kobs-ng init /mnt/imx28_ivt_linux.sb

6. Пишем файловую систему

flash_eraseall /dev/mtd1
nandwrite /dev/mtd1 /mnt/rootfs.jffs2

Отключаем питание платы. Устанавливаем DIP SWITCH переключатель в режим загрузки с NAND Flash (0010). Подаем питание, плата должна загрузится.

Запись ядра и файловой системы в NAND Flash. Способ 2


1.

./ltib -c 

Package List → Package Selection → Выбираем нужные пакеты файловой системы
Здесь же указываем командную строку

noinitrd console=ttyAM0,115200 ubi.mtd=1 root=ubi0:rootfs0 rootfstype=ubifs rw gpmi



Target Image Generation → Options –> Target Image: ext2.gz ramdisk

Два раза Exit, сохраняем конфигурацию, ждем пока соберется ядро и файловая система.

2.

./ltib -p boot_stream.spec -f 

создаем boot stream image.

3. Запускаем скрипт build_rfs.sh, который создаст архив rootfs.tar.bz2 в папке ltib.
4. Копируем файлы rootfs.tar.bz2 и rootfs/boot/imx28_ivt_linux.sb в папку \Mfgtools-Rel-1.6.2.0322\Profiles\MX28 Linux Update\OS Firmware\files\
файл imx28_ivt_linux.sb переименовываем в linux.sb
5. Снимаем джампер с разъема USBID (X11)
6. Подключаем кабель USB в верхней разъем X10 (USB OTG)
7. Устанавливаем Dip Switch (S2) в положение 0000 (загрузка с USB)
8. Подаем на плату питание.
9. Запускаем утилиту MfgTool.exe, нажимаем Start и ждем. (если подключить кабель к COM порту, можно в терминальной программе наблюдать процесс программирования)

10. После успешной записи NAND Flash, нажимаем Stop, отключаем USB кабель и питание, переводим DIP SWITCH в положение 0010 и подаем питание на плату.Начнется процесс загрузки из NAND Flash.

Использование U-boot


Используется u-boot-imx, не входящий в LTIB.
Создаем карту с u-boot.sb, загружаемся с SD карты (Boot DIP SWITCH =1001)
Запись в SPI Flash

sf probe 2
sf erase 0x0 0x800000
tftp 0x42000000 u-boot.sb
sf write 0x42000000 0x0 0x42000

Переменные окружения хранятся в SPI Flash, адрес 0x60000.

Загрузка с USB
Устанавливаем USB Flash Drive в нижний разъем USB

usb reset
fatload usb 0:1 0x42000000 uImage
bootm 0x42000000
Проигрывание видеофайла с USB флешки


root@freescale ~$mount /dev/sda1 /mnt
root@freescale ~$gplay /mnt/prometheus_trailer.mp4
Запуск терминальной программы screen


root@freescale ~$screen -m /dev/ttySP0 115200
minicom


Если при попытке включить minicom в rootfs при сборке возникает ошибка

window.h:154: error: conflicting types for 'wprintf' 

то правим файл
dist/lfs-5.1/minicom/minicom.spec
меняем в нем номер версии 2.2 на 2.6.1
Загружаем minicom версии 2.6.1http://ftp.debian.org/debian/pool/main/m/minicom/minicom_2.6.1.orig.tar.gz
и копируем его в /opt/freescale/pkgs
пересобираем

./ltib -c 

Запуск minicom

minicom -s

Устанавливаем порт ttySP0

Проверка GSM модема


root@freescale~$minicom -s

Устанавливаем порт ttySP0
Информация о операторе из SIM карты:

AT+CSPN? 

Информация о качестве сигнала:

AT+CSQ 

Набрать номер:

ATD0443622502; 
WEB-камера


Захват с WEB-камеры и вывод на дисплей

gst-launch v4l2src device=/dev/video1 ! ffmpegcolorspace ! fbdevsink

Захват с WEB-камеры и трансляция потокового видео в сеть

gst-launch v4l2src device=/dev/video1 ! ffmpegcolorspace !  ffenc_h263 ! tcpclientsink  protocol=gdp host=192.168.0.103

можно использовать и другие кодеки

ffenc_mjpeg
ffenc_mpeg4
ffenc_flv
ffenc_wmv1
ffenc_h263p
ffenc_mpeg2video

Воспроизведение на компьютере с Линукс

gst-launch -v tcpserversrc host=0.0.0.0 protocol=gdp ! decodebin ! autovideosink
sudo apt-get -y install gstreamer0.10-pitfdll gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad 
gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse
Калибровка touchscreen


mknod /dev/input/tslib0 c 13 65 
export TSLIB_TSDEVICE=/dev/input/tslib0 
rm -f /etc/pointercal 
ts_calibrate
Управление реле


Настройка портов

echo 126 > /sys/class/gpio/export
echo 57 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio126/direction
echo out > /sys/class/gpio/gpio57/direction

Включить

echo 1 > /sys/class/gpio/gpio57/value
echo 1 > /sys/class/gpio/gpio126/value

Выключить

echo 0 > /sys/class/gpio/gpio126/value
echo 0 > /sys/class/gpio/gpio57/value
Управление светодиодами


LED0 Настройка порта

echo 68 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio68/direction

Включить

echo 0 > /sys/class/gpio/gpio68/value

Выключить

echo 1 > /sys/class/gpio/gpio68/value

LED1 Настройка порта

echo 71 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio71/direction

Включить

echo 0 > /sys/class/gpio/gpio71/value

Выключить

echo 1 > /sys/class/gpio/gpio71/value
Проверка CAN интерфейса


Устанавливаем джампер W3 или W4. Соединяем между собой интерфейсы CAN0 и CAN1.В тесте CAN0 будет принимать сообщения, CAN1 - передавать
Запускаем два SSH соединения, в первом набираем:

cantest can0

во втором набираем:

cantest can1 500#1E.10.10.51.22.77.45

В результате в первом должно появиться:

read 16 bytes
500  [8] 1E 10 10 51 22 77 45
Настройка FTP сервера на плате


Собираем rootfs с включенным inetutils
Устанавливаем на плате пароль командой passwd (например root)

root@freescale ~$ftp
ftp>open
(to) Вводим IP адрес платы EV-iMX287 (например 192.168.0.107)
Connected to 192.168.0.107.
220 freescale FTP server (GNU inetutils 1.4.2) ready.
Name (192.168.0.107:root):root
331 Password required for root.
Password:root
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Теперь можно зайти на плату с удаленного компьютера (192/168/0/107, логин root, пароль root)

Запуск QNX


С помощью cfimager записываем на sd карту файл imx28_ivt_ipl.sb
В проводнике записываем файл QNX-IFS на карту.
Вставляем sd карту в плату и подаем питание (boot swith = sdcard). После приглашения нажимаем M

Welcome to QNX Neutrino Initial Program Loader for Freescale iMX28 Board 
Command: 
Press 'M' for SDMMC download, file QNX-IFS assumed. 


Старт драйвера дисплея

io-display –dvid=0,did=0
Photon
io-graphics

Старт драйвера тачскрина

devi-43wvfig pro1 dev1

Старт сети

io-pkt-v4 -dmcimx28 ioport=0x800F0000,irq=101,unit=0 –dmcimx28 
ioport=0x800F4000,irq=102,unit=1 
ifconfig en0 192.168.0.187 up

где 192.168.0.187 - адрес назначаемый плате.

Настройка Wi-Fi


USB Wi-Fi модуль на чипсете RTL8192.
Загружаем драйвер. Распаковываем в любом месте и правим файл Makefile
Указываем PLATFORM_ARM_PXA2XX = y
Ниже меняем пути и версию ядра
ifeq ($(CONFIG_PLATFORM_ARM_PXA2XX), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := /opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-none-linux-gnueabi- KVER := 2.6.35 KSRC ?= /home/evodbg/Projects/ev-imx287/ltib/rpm/BUILD/linux-2.6.35.3 endif

Собираем

make

Получаем файл 8192cu.ko

Пересобираем файловую систему включив пакет Wireless tools
Пересобираем ядро, включив
<*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
[*] Support downloading firmware images with Host AP driver
[*] Support for non-volatile firmware download
Создаем microSD карту с новой файловой системой и ядром
Включаем плату, ждем загрузки ядра, копируем файл 8192cu.ko
Подключаем USB Wi-Fi модуль, набираем

insmod 8192cu.ko

Настраиваем соединение для сети без защиты

ifconfig wlan0 192.168.0.177 up
iwconfig wlan0 essid "Имя вашей сети"

Проверяем

ping 192.168.0.1

Для сети с WEP

iwconfig wlan0 essid "Имя вашей сети" key s:Ваш ASCII пароль

Проверяем

ping 192.168.0.1

Для сетей с WPA/WPA2 необходим wpa_supplicant

В папке LTIB выполняем

./ltib -m prep -p wpa_supplicant
./ltib -m scbuild -p wpa_supplicant
./ltib -m scinstall -p wpa_supplicant
./ltib -m scdeploy -p wpa_supplicant

Обновленную файловую систему записываем на карту и опять загружаем систему.
Продолжение вскоре