Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ev-imx287-micro [2013/10/24 19:39] evodbg [Собираем OpenWRT] |
ev-imx287-micro [2013/12/11 20:06] (текущий) evodbg [Микросхема MLC NAND Flash памяти H27UAG8T2A] |
||
---|---|---|---|
Строка 1331: | Строка 1331: | ||
===== Собираем OpenWRT ===== | ===== Собираем OpenWRT ===== | ||
Для желающих попробовать OpenWRT. Его можно запустить на той же виртуальной машине, которая доступна для загрузки. Порядок действий: \\ | Для желающих попробовать OpenWRT. Его можно запустить на той же виртуальной машине, которая доступна для загрузки. Порядок действий: \\ | ||
- | 1. Загружаем архив openwrt_mx28.tar.bz2 | + | 1. Загружаем архив openwrt_mx28.tar.bz2\\ |
- | 2. Копируем его, например, в /home/evodbg/Projects/ev-imx287 | + | 2. Копируем его, например, в /home/evodbg/Projects/ev-imx287\\ |
- | 3. Разархивируем | + | 3. Разархивируем \\ |
<code> | <code> | ||
evodbg@evodbg:`/Projects/ev-imx287$ tar xvjf openwrt_mx28.tar.bz2 | evodbg@evodbg:`/Projects/ev-imx287$ tar xvjf openwrt_mx28.tar.bz2 | ||
</code> | </code> | ||
4. Загружаем архив dl.tar.bz2 в папку openwrt (это всякие пакеты, чтобы не при сборке они не тянулись с интернета) \\ | 4. Загружаем архив dl.tar.bz2 в папку openwrt (это всякие пакеты, чтобы не при сборке они не тянулись с интернета) \\ | ||
- | 5. Разархивируем | + | 5. Разархивируем \\ |
<code> | <code> | ||
evodbg@evodbg:`/Projects/ev-imx287/openwrt$ tar xjvf dl.tar.bz2 | evodbg@evodbg:`/Projects/ev-imx287/openwrt$ tar xjvf dl.tar.bz2 | ||
Строка 1348: | Строка 1348: | ||
Ждем, в зависимости от производительности компьютера сборка может идти долго. Результатом сборки в папке openwrt/bin/mx28 будут следующие файлы:\\ | Ждем, в зависимости от производительности компьютера сборка может идти долго. Результатом сборки в папке openwrt/bin/mx28 будут следующие файлы:\\ | ||
- | openwrt-mx28-uImage - собранное ядро, пригодное для загрузки по сети | + | openwrt-mx28-uImage - собранное ядро, пригодное для загрузки по сети\\ |
- | openwrt-imx28-evk.dtb - собранный dts файл платы, тоже пригодится для загрузки по сети | + | openwrt-imx28-evk.dtb - собранный dts файл платы, тоже пригодится для загрузки по сети\\ |
- | Запускаем u-boot, задаем ему следующие параметры окружения: | + | Запускаем u-boot, задаем ему следующие параметры окружения:\\ |
<code> | <code> | ||
setenv serverip xxx.xxx.xxx.xxx адрес сервера, откуда будем загружать | setenv serverip xxx.xxx.xxx.xxx адрес сервера, откуда будем загружать | ||
Строка 1361: | Строка 1361: | ||
res | res | ||
</code> | </code> | ||
- | После перезагрузки платы, u-boot по сети загрузит файлы openwrt-mx28-uImage и openwrt-imx28-evk.dtb и запустит ядро. Разумеется, перед этим, файловую систему (rootfs) надо положить на SD карту. | + | После перезагрузки платы, u-boot по сети загрузит файлы openwrt-mx28-uImage и openwrt-imx28-evk.dtb и запустит ядро. Разумеется, перед этим, файловую систему (rootfs) надо положить на SD карту.\\ |
<code> | <code> | ||
Configured for 5v only power source. Battery powered operation disabled. | Configured for 5v only power source. Battery powered operation disabled. | ||
Строка 1571: | Строка 1571: | ||
root@(none):~# | root@(none):~# | ||
</code> | </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 | ||