Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
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 | ||