Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
|
ev-imx287-micro [2013/10/24 20:04] 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. | ||
| Строка 1572: | Строка 1572: | ||
| </code> | </code> | ||
| - | Можно расположить ядро и файловую систему на SD карте и загружать ядро с карты. | + | Можно расположить ядро и файловую систему на SD карте и загружать ядро с карты.\\ |
| - | Загружаем архив elf2sb.tar.bz2. Распаковываем его в /openwrt/tools | + | Загружаем архив 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. | + | В корень 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> | <code> | ||
| chmod +x make_sb_file.sh | chmod +x make_sb_file.sh | ||
| Строка 1582: | Строка 1582: | ||
| После того, как make удачно завершился, запускаем скрипт make_sb_file.sh. Он выполняет следующее - "склеивает" файлы openwrt-mx28-zImage и openwrt-imx28-evk.dtb. Затем с помощью утилиты elftosb добавляет к ним инициализацую памяти, питания и командную строку и на выходе выдает файл imx28_ivt_linux.sb. | После того, как 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 выполняет следующие действия - создает папку /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 убедитесь, что ваша SD карта имеет имя **sdb**. Иначе поправьте имя в скрипте make_sd_card.sh на ваше.\\ |
| <code> | <code> | ||
| dmesg | dmesg | ||
| Строка 1613: | Строка 1613: | ||
| + | |||
| + | |||
| + | |||
| + | ==== Микросхема 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 | ||