**Отладочная плата EV-iMX287** \\ * {{:user_manual_rus_2.1.pdf|Руководство пользователя(Обновлено 28/09/2012)}} * [[http://otladka.com.ua/doc/evimx287/evimx287_rev2_schematic.pdf|Принципиальная схема (rev 2).]] * [[http://otladka.com.ua/doc/evimx287/evimx287_rev3_schematic.pdf|Принципиальная схема (rev 3) Обновлено 11/02/2013]] * [[https://docs.google.com/open?id=0B_FS6J7Oi9HaTGVwRzZySnEwSnc|Утилита для программирования NAND Flash + собранные ядро и rootfs (Обновлено 28/09/2012)]] * [[https://docs.google.com/open?id=0B_FS6J7Oi9HaWHlZY2ZIR0Z6bm8|Утилита для создания загрузочной microSD карты (cfimager) (Обновлено 28/09/2012)]] * {{:sb_loader.zip|Утилита для загрузки файлов в память через USB (sb_loader)}} * [[https://docs.google.com/file/d/0B_FS6J7Oi9HadFZRSU9KUC1KTTA/edit?usp=sharing|Архив с виртуальной машиной (VirtualBox).Обновлено 12/02/2013]] * {{:ev_imx287_virtual_box.pdf|Руководство по настройке виртуальной машины}} * {{:ev_imx287_build_kernel_rootfs.pdf|Руководство по сборке ядра и файловой системы}} * {{:ax250_evodbg_ev-imx287_userguide_v110.pdf|Руководство по запуску WinCE 6.0}} * [[http://otladka.com.ua/doc/ax250_wce60r3_evodbg_ev-imx287_img_v110.zip|Собранный образ для запуска WinCE 6.0 (Разработан компанией Axonim Devices)]] * [[http://otladka.com.ua/doc/cfimager_qnx.rar|Собранный образ для запуска QNX ]] {{:4a.png?300|}}{{:board.png?300|}} **Внимание!** В платах 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 \\ {{:1.png?300|}} \\ Target Image Generation -> Options --> Target Image: ext2.gz ramdisk \\ {{:2.png?300|}} \\ Два раза 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 порту, можно в терминальной программе наблюдать процесс программирования) \\ {{:3.png?300|}} \\ 10. После успешной записи NAND Flash, нажимаем Stop, отключаем USB кабель и питание, переводим DIP SWITCH в положение 0010 и подаем питание на плату.Начнется процесс загрузки из NAND Flash.\\ {{:4.png?300|}} \\ Использование 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.1]][[http://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 Обновленную файловую систему записываем на карту и опять загружаем систему.\\ Продолжение вскоре\\