Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ev-imx287-micro [2013/08/05 18:12] evodbg [Отступление] |
ev-imx287-micro [2013/12/11 20:06] (текущий) evodbg [Микросхема MLC NAND Flash памяти H27UAG8T2A] |
||
---|---|---|---|
Строка 5: | Строка 5: | ||
Вся нижеописанное относится к платам построенным на процессоре i.MX287(i.MX283/i.MX285/i.MX280) такими как **EV-iMX287**, **EV-iMX287-Mini**, **SE-iMX287-Micro**. | Вся нижеописанное относится к платам построенным на процессоре i.MX287(i.MX283/i.MX285/i.MX280) такими как **EV-iMX287**, **EV-iMX287-Mini**, **SE-iMX287-Micro**. | ||
- | {{http://www.youtube.com/v/RpQvPJZ1h70?.swf?400×333}} | + | |
===== Документация ===== | ===== Документация ===== | ||
[[http://www.otladka.com.ua/doc/micro287/user_manual_rus_ev-imx287-micro_rev1.1.pdf|Руководство пользователя модуля SE-iMX287-Micro (Rus)]] (версия 1.1 14/07/2013 1.7 МБ)\\ | [[http://www.otladka.com.ua/doc/micro287/user_manual_rus_ev-imx287-micro_rev1.1.pdf|Руководство пользователя модуля SE-iMX287-Micro (Rus)]] (версия 1.1 14/07/2013 1.7 МБ)\\ | ||
+ | [[https://docs.google.com/file/d/0B_FS6J7Oi9HaaG9kRWo1VGdyNFk/edit?usp=sharing|Принципиальная схема модуля (Rev 1.3)]]\\ | ||
[[http://www.otladka.com.ua/images/stories/brief/brief_rus_se-imx287-micro_1.png|SE-iMX287-Micro Product Brief Rus]] (1.5 МБ)\\ | [[http://www.otladka.com.ua/images/stories/brief/brief_rus_se-imx287-micro_1.png|SE-iMX287-Micro Product Brief Rus]] (1.5 МБ)\\ | ||
[[http://www.otladka.com.ua/images/stories/brief/brief_rus_ev-imx287-mb-mini_1.png|EV-iMX287-MB-Mini Product Brief Rus]] (1.5 МБ)\\ | [[http://www.otladka.com.ua/images/stories/brief/brief_rus_ev-imx287-mb-mini_1.png|EV-iMX287-MB-Mini Product Brief Rus]] (1.5 МБ)\\ | ||
{{:ev-imx287-mb-mini-schematic.pdf|Принципиальная схема материнской платы EV-iMX287-MB-MINI в формате pdf.}} \\ | {{:ev-imx287-mb-mini-schematic.pdf|Принципиальная схема материнской платы EV-iMX287-MB-MINI в формате pdf.}} \\ | ||
[[http://www.otladka.com.ua/doc/micro287/ev-imx287-mb-mini.rar|Проект (схема и плата) в Altium Designer.]] (2.0 МБ)\\ | [[http://www.otladka.com.ua/doc/micro287/ev-imx287-mb-mini.rar|Проект (схема и плата) в Altium Designer.]] (2.0 МБ)\\ | ||
+ | [[https://docs.google.com/file/d/0B_FS6J7Oi9Hac2g3LTBDSWVNZ3c/edit?usp=sharing|Утилита PinMux для назначения выводов процессора]]\\ | ||
+ | [[https://docs.google.com/file/d/0B_FS6J7Oi9HaSFVZbmdhRjVXdmM/edit?usp=sharing|Утилита для программирования eFuse процессора]]\\ | ||
===== Вступление ===== | ===== Вступление ===== | ||
Строка 229: | Строка 232: | ||
Все дальнейшие действия выполняются в каталоге **ltib** (home/evodbg/Projects/ev-imx287/ltib/) \\ | Все дальнейшие действия выполняются в каталоге **ltib** (home/evodbg/Projects/ev-imx287/ltib/) \\ | ||
- | {{:virtualbox_logo80.png?100|}} Образ виртуальной машины (размер файла 8ГБ) | + | {{:virtualbox_logo80.png?100|}} [[https://docs.google.com/file/d/0B_FS6J7Oi9HaTTRVRkVYN0NTN00/edit?usp=sharing|Образ виртуальной машины (размер файла 5.6ГБ)]] |
==== О *.sb файлах ==== | ==== О *.sb файлах ==== | ||
Для успешной загрузки процессорам серии i.MX28 требуется ядро или загрузчик со специальным заголовком. Вкратце - это специальный заголовок, в котором содержится инициализация регистров питания и памяти DDR2. | Для успешной загрузки процессорам серии i.MX28 требуется ядро или загрузчик со специальным заголовком. Вкратце - это специальный заголовок, в котором содержится инициализация регистров питания и памяти DDR2. | ||
Строка 1262: | Строка 1264: | ||
</code> | </code> | ||
+ | ===== Аппаратные часы реального времени ===== | ||
+ | На некоторых платах (EV-iMX287-Mini) предусмотрена возможность установки микросхемы PCF8563 с держателем литиевой батареи CR1220. \\ | ||
+ | Чтобы добавить в ядро поддержку данной RTC необходимо сделать следующее:\\ | ||
+ | В борд файле платы mx28evk.c добавить строку { I2C_BOARD_INFO("pcf8563",0x51) },\\ | ||
+ | <code> | ||
+ | static struct i2c_board_info __initdata mxs_i2c_device[] = { | ||
+ | { I2C_BOARD_INFO("sgtl5000-i2c", 0xa), .flags = I2C_M_TEN }, | ||
+ | { I2C_BOARD_INFO("pcf8563",0x51) }, | ||
+ | { I2C_BOARD_INFO("at24", 0x52) }, | ||
+ | { I2C_BOARD_INFO("si7005-i2c", 0x40)}, | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | В menuconfig ядра зайти в Device Drivers -> Real Time Clock и установить Philips PCF8563 \\ | ||
+ | Пересобираем ядро, загружаем в плату. Убеждаемся что чип найден\\ | ||
+ | |||
+ | <code> | ||
+ | root /root # dmesg | grep -i pcf | ||
+ | rtc-pcf8563 0-0051: chip found, driver version 0.4.3 | ||
+ | rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0 | ||
+ | rtc-pcf8563 0-0051: setting system clock to 2013-09-12 13:34:42 UTC (1378992882) | ||
+ | root /root # | ||
+ | </code> | ||
+ | Выполняем команду\\ | ||
+ | <code> | ||
+ | root /root # hwclock -r | ||
+ | Thu Sep 12 13:46:43 2013 -0.637157 seconds | ||
+ | root /root # | ||
+ | </code> | ||
+ | Если появляются сообщения | ||
+ | <code> | ||
+ | rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable. | ||
+ | rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable. | ||
+ | rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable. | ||
+ | </code> | ||
+ | На них не обращаем внимание, это значит что время не установлено. \\ | ||
+ | Устанавливаем время\\ | ||
+ | <code> | ||
+ | root /root # date MMDDhhmmCCYY.ss | ||
+ | </code> | ||
+ | MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды\\ | ||
+ | Например, чтобы установить 12 сентября 2013 года 13:34 набираем \\ | ||
+ | <code> | ||
+ | root /root # date 091213342013 | ||
+ | Thu Sep 12 13:34:00 UTC 2013 | ||
+ | root /root # | ||
+ | </code> | ||
+ | |||
+ | Теперь выполним команду \\ | ||
+ | <code> | ||
+ | root /root # hwclock -w | ||
+ | </code> | ||
+ | Устанавливаем батарейку в держатель, отключаем питание, подключаем, убеждаемся, что часы идут верно.\\ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Собираем OpenWRT ===== | ||
+ | Для желающих попробовать OpenWRT. Его можно запустить на той же виртуальной машине, которая доступна для загрузки. Порядок действий: \\ | ||
+ | 1. Загружаем архив openwrt_mx28.tar.bz2\\ | ||
+ | 2. Копируем его, например, в /home/evodbg/Projects/ev-imx287\\ | ||
+ | 3. Разархивируем \\ | ||
+ | <code> | ||
+ | evodbg@evodbg:`/Projects/ev-imx287$ tar xvjf openwrt_mx28.tar.bz2 | ||
+ | </code> | ||
+ | 4. Загружаем архив dl.tar.bz2 в папку openwrt (это всякие пакеты, чтобы не при сборке они не тянулись с интернета) \\ | ||
+ | 5. Разархивируем \\ | ||
+ | <code> | ||
+ | evodbg@evodbg:`/Projects/ev-imx287/openwrt$ tar xjvf dl.tar.bz2 | ||
+ | </code> | ||
+ | 6. Находясь в папке openwrt набираем \\ | ||
+ | <code> | ||
+ | evodbg@evodbg:`/Projects/ev-imx287/openwrt$ make | ||
+ | </code> | ||
+ | |||
+ | Ждем, в зависимости от производительности компьютера сборка может идти долго. Результатом сборки в папке openwrt/bin/mx28 будут следующие файлы:\\ | ||
+ | openwrt-mx28-uImage - собранное ядро, пригодное для загрузки по сети\\ | ||
+ | openwrt-imx28-evk.dtb - собранный dts файл платы, тоже пригодится для загрузки по сети\\ | ||
+ | |||
+ | Запускаем u-boot, задаем ему следующие параметры окружения:\\ | ||
+ | <code> | ||
+ | setenv serverip xxx.xxx.xxx.xxx адрес сервера, откуда будем загружать | ||
+ | setenv ipaddr xxx.xxx.xxx.xxx назначаем адрес плате | ||
+ | setenv ethaddr xx:xx:xx:xx:xx:xx при первом запуске придется назначить MAC адрес | ||
+ | setenv bootargs console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait ip=dhcp gpmi - командная строка (в данном случае rootfs на SD карте) | ||
+ | setenv bootcmd 'tftp 0x42000000 openwrt-mx28-uImage; tftp 0x41000000 openwrt-imx28-evk.dtb; bootm 0x42000000 - 0x41000000' | ||
+ | saveenv | ||
+ | res | ||
+ | </code> | ||
+ | После перезагрузки платы, u-boot по сети загрузит файлы openwrt-mx28-uImage и openwrt-imx28-evk.dtb и запустит ядро. Разумеется, перед этим, файловую систему (rootfs) надо положить на SD карту.\\ | ||
+ | <code> | ||
+ | Configured for 5v only power source. Battery powered operation disabled. | ||
+ | LLLCJul 17 201314:51:18 | ||
+ | FRAC 0x92925552 | ||
+ | memory type is DDR2 | ||
+ | Wait for ddr ready 1power 0x00820710 | ||
+ | 1311 Frac 0x92925552 | ||
+ | start change cpu freq | ||
+ | hbus 0x00000003 | ||
+ | cpu 0x00010001 | ||
+ | start test memory accress | ||
+ | ddr2 0x40000000 | ||
+ | finish simple test | ||
+ | LLLLLLLFLCLLJUncompressing Linux... done, booting the kernel. | ||
+ | [ 0.000000] Booting Linux on physical CPU 0x0 | ||
+ | [ 0.000000] Linux version 3.9.11 (rusar@v1310) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #17 Thu Oct 24 16:14:38 EEST 2013 | ||
+ | [ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 | ||
+ | [ 0.000000] CPU: VIVT data cache, VIVT instruction cache | ||
+ | [ 0.000000] Machine: Freescale i.MX28 (Device Tree), model: Freescale i.MX28 Evaluation Kit | ||
+ | [ 0.000000] Memory policy: ECC disabled, Data cache writeback | ||
+ | [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 | ||
+ | [ 0.000000] Kernel command line: -e setenv bootargs console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait ip=none gpmi | ||
+ | [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes) | ||
+ | [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) | ||
+ | [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) | ||
+ | [ 0.000000] __ex_table already sorted, skipping sort | ||
+ | [ 0.000000] Memory: 128MB = 128MB total | ||
+ | [ 0.000000] Memory: 124152k/124152k available, 6920k reserved, 0K highmem | ||
+ | [ 0.000000] Virtual kernel memory layout: | ||
+ | [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) | ||
+ | [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) | ||
+ | [ 0.000000] vmalloc : 0xc8800000 - 0xff000000 ( 872 MB) | ||
+ | [ 0.000000] lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) | ||
+ | [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) | ||
+ | [ 0.000000] .text : 0xc0008000 - 0xc050e7cc (5146 kB) | ||
+ | [ 0.000000] .init : 0xc050f000 - 0xc0532c7c ( 144 kB) | ||
+ | [ 0.000000] .data : 0xc0534000 - 0xc055e480 ( 170 kB) | ||
+ | [ 0.000000] .bss : 0xc055e480 - 0xc058fc50 ( 198 kB) | ||
+ | [ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 | ||
+ | [ 0.000000] NR_IRQS:16 nr_irqs:16 16 | ||
+ | [ 0.000000] of_irq_init: children remain, but no parents | ||
+ | [ 0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms | ||
+ | [ 0.000000] Console: colour dummy device 80x30 | ||
+ | [ 0.000501] Calibrating delay loop... 226.09 BogoMIPS (lpj=1130496) | ||
+ | [ 0.080201] pid_max: default: 32768 minimum: 301 | ||
+ | [ 0.080470] Mount-cache hash table entries: 512 | ||
+ | [ 0.081694] CPU: Testing write buffer coherency: ok | ||
+ | [ 0.082434] Setting up static identity map for 0xc03b9f98 - 0xc03b9ff0 | ||
+ | [ 0.084922] devtmpfs: initialized | ||
+ | [ 0.086201] pinctrl core: initialized pinctrl subsystem | ||
+ | [ 0.086858] regulator-dummy: no parameters | ||
+ | [ 0.087304] NET: Registered protocol family 16 | ||
+ | [ 0.088609] DMA: preallocated 256 KiB pool for atomic coherent allocations | ||
+ | [ 0.112515] Serial: AMBA PL011 UART driver | ||
+ | [ 0.112964] 80074000.serial: ttyAMA0 at MMIO 0x80074000 (irq = 230) is a PL011 rev2 | ||
+ | [ 0.357450] console [ttyAMA0] enabled | ||
+ | [ 0.371342] bio: create slab <bio-0> at 0 | ||
+ | [ 0.379272] mxs-dma 80004000.dma-apbh: initialized | ||
+ | [ 0.387232] mxs-dma 80024000.dma-apbx: initialized | ||
+ | [ 0.393052] 3P3V: 3300 mV | ||
+ | [ 0.396298] usb0_vbus: 5000 mV | ||
+ | [ 0.399933] usb1_vbus: 5000 mV | ||
+ | [ 0.404285] SCSI subsystem initialized | ||
+ | [ 0.408693] usbcore: registered new interface driver usbfs | ||
+ | [ 0.414451] usbcore: registered new interface driver hub | ||
+ | [ 0.420149] usbcore: registered new device driver usb | ||
+ | [ 0.429966] pps_core: LinuxPPS API ver. 1 registered | ||
+ | [ 0.434955] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> | ||
+ | [ 0.444249] PTP clock support registered | ||
+ | [ 0.448838] Advanced Linux Sound Architecture Driver Initialized. | ||
+ | [ 0.456400] Switching to clocksource mxs_timer | ||
+ | [ 0.486682] NET: Registered protocol family 2 | ||
+ | [ 0.492550] TCP established hash table entries: 1024 (order: 1, 8192 bytes) | ||
+ | [ 0.499587] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) | ||
+ | [ 0.506080] TCP: Hash tables configured (established 1024 bind 1024) | ||
+ | [ 0.512806] TCP: reno registered | ||
+ | [ 0.516088] UDP hash table entries: 256 (order: 0, 4096 bytes) | ||
+ | [ 0.522051] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) | ||
+ | [ 0.528890] NET: Registered protocol family 1 | ||
+ | [ 0.534076] RPC: Registered named UNIX socket transport module. | ||
+ | [ 0.540026] RPC: Registered udp transport module. | ||
+ | [ 0.544832] RPC: Registered tcp transport module. | ||
+ | [ 0.549554] RPC: Registered tcp NFSv4.1 backchannel transport module. | ||
+ | [ 0.556480] NetWinder Floating Point Emulator V0.97 (double precision) | ||
+ | [ 0.590504] NFS: Registering the id_resolver key type | ||
+ | [ 0.595804] Key type id_resolver registered | ||
+ | [ 0.600015] Key type id_legacy registered | ||
+ | [ 0.604199] jffs2: version 2.2. (NAND) б╘ 2001-2006 Red Hat, Inc. | ||
+ | [ 0.611835] msgmni has been set to 242 | ||
+ | [ 0.618973] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) | ||
+ | [ 0.626498] io scheduler noop registered (default) | ||
+ | [ 0.654548] Console: switching to colour frame buffer device 100x30 | ||
+ | [ 0.674552] mxsfb 80030000.lcdif: initialized | ||
+ | [ 0.679737] uart-pl011 80074000.serial: no DMA platform data | ||
+ | [ 0.686122] 8006a000.serial: ttyAPP0 at MMIO 0x8006a000 (irq = 215) is a 8006a000.serial | ||
+ | [ 0.694962] mxs-auart 8006a000.serial: Found APPUART 3.1.0 | ||
+ | [ 0.700809] 8006c000.serial: ttyAPP1 at MMIO 0x8006c000 (irq = 218) is a 8006c000.serial | ||
+ | [ 0.709628] mxs-auart 8006c000.serial: Found APPUART 3.1.0 | ||
+ | [ 0.715602] 8006e000.serial: ttyAPP2 at MMIO 0x8006e000 (irq = 221) is a 8006e000.serial | ||
+ | [ 0.724509] mxs-auart 8006e000.serial: Found APPUART 3.1.0 | ||
+ | [ 0.730371] 80070000.serial: ttyAPP3 at MMIO 0x80070000 (irq = 224) is a 80070000.serial | ||
+ | [ 0.739236] mxs-auart 80070000.serial: Found APPUART 3.1.0 | ||
+ | [ 0.745169] 80072000.serial: ttyAPP4 at MMIO 0x80072000 (irq = 227) is a 80072000.serial | ||
+ | [ 0.754001] mxs-auart 80072000.serial: Found APPUART 3.1.0 | ||
+ | [ 0.760119] at24 0-0050: 128 byte 24c01 EEPROM, writable, 32 bytes/write | ||
+ | [ 0.770090] ONFI param page 0 valid | ||
+ | [ 0.773685] ONFI flash detected | ||
+ | [ 0.776868] NAND device: Manufacturer ID: 0x01, Chip ID: 0xda (AMD/Spansion S34ML02G1), 256MiB, page size: 2048, OOB size: 64 | ||
+ | [ 0.788341] Scanning device for bad blocks | ||
+ | [ 1.189605] gpmi-nand 8000c000.gpmi-nand: driver registered. | ||
+ | [ 1.212702] m25p80 spi32766.0: mx25l6405d (8192 Kbytes) | ||
+ | [ 1.336880] libphy: fec_enet_mii_bus: probed | ||
+ | [ 1.344739] usbcore: registered new interface driver asix | ||
+ | [ 1.350316] usbcore: registered new interface driver ax88179_178a | ||
+ | [ 1.356711] usbcore: registered new interface driver cdc_ether | ||
+ | [ 1.362849] usbcore: registered new interface driver smsc95xx | ||
+ | [ 1.368813] usbcore: registered new interface driver net1080 | ||
+ | [ 1.374736] usbcore: registered new interface driver cdc_subset | ||
+ | [ 1.380810] usbcore: registered new interface driver zaurus | ||
+ | [ 1.386750] usbcore: registered new interface driver cdc_ncm | ||
+ | [ 1.392511] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver | ||
+ | [ 1.399055] Initializing USB Mass Storage driver... | ||
+ | [ 1.404213] usbcore: registered new interface driver usb-storage | ||
+ | [ 1.410234] USB Mass Storage support registered. | ||
+ | [ 1.415553] imx_usb 80080000.usb: pinctrl get/select failed, err=-19 | ||
+ | [ 1.423004] ci_hdrc ci_hdrc.0: doesn't support gadget | ||
+ | [ 1.428114] ci_hdrc ci_hdrc.0: EHCI Host Controller | ||
+ | [ 1.433318] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1 | ||
+ | [ 1.451072] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00 | ||
+ | [ 1.458322] hub 1-0:1.0: USB hub found | ||
+ | [ 1.462249] hub 1-0:1.0: 1 port detected | ||
+ | [ 1.466954] imx_usb 80090000.usb: pinctrl get/select failed, err=-19 | ||
+ | [ 1.474394] ci_hdrc ci_hdrc.1: doesn't support gadget | ||
+ | [ 1.479504] ci_hdrc ci_hdrc.1: EHCI Host Controller | ||
+ | [ 1.484612] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2 | ||
+ | [ 1.511069] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00 | ||
+ | [ 1.518032] hub 2-0:1.0: USB hub found | ||
+ | [ 1.521974] hub 2-0:1.0: 1 port detected | ||
+ | [ 1.527212] mousedev: PS/2 mouse device common for all mice | ||
+ | [ 1.533058] rtc-pcf8563 0-0051: chip found, driver version 0.4.3 | ||
+ | [ 1.540587] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable. | ||
+ | [ 1.548098] rtc-pcf8563 0-0051: retrieved date/time is not valid. | ||
+ | [ 1.554800] rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0 | ||
+ | [ 1.565680] stmp3xxx-rtc 80056000.rtc: rtc core: registered 80056000.rtc as rtc1 | ||
+ | [ 1.573463] i2c /dev entries driver | ||
+ | [ 1.611031] mxs-mmc 80010000.ssp: initialized | ||
+ | [ 1.618294] usbcore: registered new interface driver usbhid | ||
+ | [ 1.624014] usbhid: USB HID core driver | ||
+ | [ 1.631870] mxs-lradc 80050000.lradc: Touchscreen not enabled. | ||
+ | [ 1.649542] sgtl5000 0-000a: Failed to get supply 'VDDD': -517 | ||
+ | [ 1.655905] 0-000a: 1200 mV normal | ||
+ | [ 1.659883] sgtl5000 0-000a: Using internal LDO instead of VDDD | ||
+ | [ 1.677787] mmc0: host does not support reading read-only switch. assuming write-enable. | ||
+ | [ 1.702925] mmc0: new high speed SD card at address b368 | ||
+ | [ 1.721018] mmcblk0: mmc0:b368 00000 954 MiB | ||
+ | [ 1.728023] mmcblk0: p1 p2 p3 | ||
+ | [ 5.700965] sgtl5000 0-000a: Device with ID register ffff is not a sgtl5000 | ||
+ | [ 7.721144] sgtl5000 0-000a: ASoC: failed to probe CODEC -19 | ||
+ | [ 7.726908] mxs-sgtl5000 sound.9: ASoC: failed to instantiate card -19 | ||
+ | [ 7.733649] mxs-sgtl5000 sound.9: snd_soc_register_card failed (-19) | ||
+ | [ 7.740826] TCP: cubic registered | ||
+ | [ 7.744488] NET: Registered protocol family 17 | ||
+ | [ 7.749220] Key type dns_resolver registered | ||
+ | [ 7.755141] registered taskstats version 1 | ||
+ | [ 7.763611] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable. | ||
+ | [ 7.771136] rtc-pcf8563 0-0051: retrieved date/time is not valid. | ||
+ | [ 7.777255] rtc-pcf8563 0-0051: hctosys: invalid date/time | ||
+ | [ 7.786872] ALSA device list: | ||
+ | [ 7.789870] No soundcards found. | ||
+ | [ 7.814206] VFS: Mounted root (ext2 filesystem) on device 179:3. | ||
+ | [ 7.823779] devtmpfs: mounted | ||
+ | [ 7.827584] Freeing init memory: 140K | ||
+ | init started: BusyBox v1.19.4 (2013-10-14 10:23:03 EEST) | ||
+ | Initializing random number generator... done. | ||
+ | Starting network... | ||
+ | [ 9.000263] eth0: Freescale FEC PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=800f0000.etherne:00, irq=-1) | ||
+ | udhcpc (v1.19.4) started | ||
+ | Sending discover... | ||
+ | [ 10.991457] libphy: 800f0000.etherne:00 - Link is Up - 100/Full | ||
+ | Sending discover... | ||
+ | Sending select for 192.168.0.104... | ||
+ | Lease of 192.168.0.104 obtained, lease time 7200 | ||
+ | Starting dropbear sshd: generating rsa key... generating dsa key... OK | ||
+ | |||
+ | (none) login: root | ||
+ | Jan 1 00:00:21 login[82]: root login on 'ttyAMA0' | ||
+ | |||
+ | |||
+ | BusyBox v1.19.4 (2013-10-14 10:23:03 EEST) built-in shell (ash) | ||
+ | Enter 'help' for a list of built-in commands. | ||
+ | |||
+ | _______ ________ __ | ||
+ | | |.-----.-----.-----.| | | |.----.| |_ | ||
+ | | - || _ | -__| || | | || _|| _| | ||
+ | |_______|| __|_____|__|__||________||__| |____| | ||
+ | |__| W I R E L E S S F R E E D O M | ||
+ | ----------------------------------------------------- | ||
+ | ATTITUDE ADJUSTMENT (%C, %R) | ||
+ | ----------------------------------------------------- | ||
+ | * 1/4 oz Vodka Pour all ingredients into mixing | ||
+ | * 1/4 oz Gin tin with ice, strain into glass. | ||
+ | * 1/4 oz Amaretto | ||
+ | * 1/4 oz Triple sec | ||
+ | * 1/4 oz Peach schnapps | ||
+ | * 1/4 oz Sour mix | ||
+ | * 1 splash Cranberry juice | ||
+ | ----------------------------------------------------- | ||
+ | root@(none):~# | ||
+ | </code> | ||
+ | |||
+ | Можно расположить ядро и файловую систему на SD карте и загружать ядро с карты.\\ | ||
+ | Загружаем архив elf2sb.tar.bz2. Распаковываем его в /openwrt/tools\\ | ||
+ | В корень openwrt копируем два скрипта make_sb_file.sh и make_sd_card.sh. В папку /openwrt/staging_dir/target-arm_v5te_uClibc-0.9.33.2_eabi/ копируем скрипты mk_hdr.sh и mk_mx28_sd.\\ | ||
+ | Делаем скрипты исполняемыми:\\ | ||
+ | <code> | ||
+ | chmod +x make_sb_file.sh | ||
+ | chmod +x make_sd_card.sh | ||
+ | </code> | ||
+ | После того, как make удачно завершился, запускаем скрипт make_sb_file.sh. Он выполняет следующее - "склеивает" файлы openwrt-mx28-zImage и openwrt-imx28-evk.dtb. Затем с помощью утилиты elftosb добавляет к ним инициализацую памяти, питания и командную строку и на выходе выдает файл imx28_ivt_linux.sb. | ||
+ | Скрипт make_sd_card.sh выполняет следующие действия - создает папку /boot в собранной файловой системе ( /openwrt/staging_dir/target-arm_v5te_uClibc-0.9.33.2_eabi/root-mx28), копирует в эту папку файл ядра imx28_ivt_linux.sb и записывает на ядро и файловую систему на SD карту с помощью скрипта mk_mx28_sd. | ||
+ | Перед запуском make_sd_card.sh убедитесь, что ваша SD карта имеет имя **sdb**. Иначе поправьте имя в скрипте make_sd_card.sh на ваше.\\ | ||
+ | <code> | ||
+ | dmesg | ||
+ | [190556.968190] usb 2-1: new high speed USB device using ehci_hcd and address 6 | ||
+ | [190557.116232] usb 2-1: configuration #1 chosen from 1 choice | ||
+ | [190557.118077] scsi8 : SCSI emulation for USB Mass Storage devices | ||
+ | [190557.118340] usb-storage: device found at 6 | ||
+ | [190557.118346] usb-storage: waiting for device to settle before scanning | ||
+ | [190562.116662] usb-storage: device scan complete | ||
+ | [190562.123248] scsi 8:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS | ||
+ | [190562.124947] sd 8:0:0:0: Attached scsi generic sg1 type 0 | ||
+ | [190562.713188] sd 8:0:0:0: [sdb] 1953792 512-byte logical blocks: (1.00 GB/954 MiB) | ||
+ | [190562.714037] sd 8:0:0:0: [sdb] Write Protect is off | ||
+ | [190562.714044] sd 8:0:0:0: [sdb] Mode Sense: 03 00 00 00 | ||
+ | [190562.714051] sd 8:0:0:0: [sdb] Assuming drive cache: write through | ||
+ | [190562.718144] sd 8:0:0:0: [sdb] Assuming drive cache: write through | ||
+ | [190562.718154] **sdb: sdb1 sdb2 sdb3** | ||
+ | </code> | ||
+ | отмонтируйте карту | ||
+ | <code> | ||
+ | umount /dev/sdb1 | ||
+ | umount /dev/sdb2 | ||
+ | umount /dev/sdb3 | ||
+ | </code> | ||
+ | Запустите скрипт make_sd_card.sh. Ответьте yes на вопрос о записи. После записи, вставьте карту в плату, установите режим загрузки дип переключателями 1001 и подайте питание. Система должна загрузиться и смонтироваться. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Микросхема MLC NAND Flash памяти H27UAG8T2A ==== | ||
+ | На некоторых платах EV-iMX287-Mini может быть установлена микросхема NAND Flash Hynix H27UAG8T2A объемом 2 Гбайта. | ||
+ | С данной памятью мы использовали ядро 3 версии. Для записи в нее ядра и файловой системы можно использовать следующую методику: | ||
+ | 1. Создаем загрузочную SD карту с ядром 3 версии и файловой системой. | ||
+ | 2. Записываем на нее файлы ядра и архив файловой системы, которую желаем расположить в NAND Flash | ||
+ | 3. Загружаемся с SD карты. | ||
+ | Выполняем: | ||
+ | <code> | ||
+ | flash_eraseall /dev/mtd0 стираем партицию mtd0 | ||
+ | kobs-ng init /home/imx28_ivt_linux.sb записываем туда ядро | ||
+ | flash_eraseall /dev/mtd1 стираем партицию mtd1 | ||
+ | ubiattach /dev/ubi_ctrl -d 0 -m 1 | ||
+ | ubimkvol /dev/ubi0 -N rootfs0 -m | ||
+ | mkdir -p /mnt/ubi0 | ||
+ | mount -t ubifs ubi0_0 /mnt/ubi0 | ||
+ | tar xvf /home/rootfs.tar -C /mnt/ubi0 распаковываем туда файловую систему | ||
+ | sync | ||
+ | sync | ||
+ | umount /mnt/ubi0 отмонтируем | ||
+ | </code> | ||
+ | Устанавливаем дип переключатели в режим загрузки с NAND Flash (0010) и подаем питание. Теперь система должна стартовать из NAND Flash. | ||
+ | Подсказка: в 3 ядре используется командная строка console=ttyAMA0 вместо ttyAM0 как во 2. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Использование планировщика cron ==== | ||
+ | Для запуска программ, скриптов и т.п. удобно использовать cron | ||
+ | Для этого на плате выполняем: \\ | ||
+ | <code> | ||
+ | mkdir /var/spool/cron/ | ||
+ | mkdir /var/spool/cron/crontabs/ | ||
+ | crontab -e | ||
+ | </code> | ||
+ | После выполнения последней команды запуститься редактор vi \\ | ||
+ | Впишем задание - запускать скрипт script.sh, который лежит в /home \\ | ||
+ | <code> | ||
+ | */5 * * * * /home/script.sh | ||
+ | </code> | ||
+ | Чтобы сохранить изменения и выйти из редактора нажимаем Esc, затем : (двоеточие), w,q, кнопку Enter \\ | ||
+ | Теперь каждые 5 минут будет запускаться на выполнение script.sh | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Опять про создание *.sb файлов ==== | ||
+ | Теперь воспользуемся утилитой elftosb. Для создания загрузочного образа ядра создадим папку и скопируем в нее следующие файлы - boot_prep, power_prep, linux_prep, zImage и linux_ivt.bd. Отредактируем файл linux_ivt.bd указав в нем расположение файлов boot_prep, power_prep, linux_prep, zImage. Все вышеперечисленные файлы можно найти в директории ltib или в этом архиве. Запустим утилиту elftosb:\\ | ||
+ | <code> | ||
+ | elftosb -z -f imx28 -c ./linux_ivt.bd -o imx28_ivt_linux.sb | ||
+ | </code> | ||
+ | Сгенерированный файл imx28_ivt_linux.sb можно записать на SD карту или в NAND Flash как уже было описано выше и использовать для загрузки. | ||
===== Список литературы ===== | ===== Список литературы ===== | ||
* [[http://cache.freescale.com/files/32bit/doc/data_sheet/IMX28CEC.pdf?fpsp=1&WT_TYPE=Data%20Sheets&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation|iMX287 Datasheet]] | * [[http://cache.freescale.com/files/32bit/doc/data_sheet/IMX28CEC.pdf?fpsp=1&WT_TYPE=Data%20Sheets&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation|iMX287 Datasheet]] |