Хоть я и сам отношусь к людям, для которых процесс приносит не меньшее удовольствие, чем результат, но времени на эксперементы с Mini2440 у меня пока нет. Поэтому решил сконфигурировать ее как можно быстрей и как можно меньшими затратами. Данный HOWTO, наверное, столько же для вас, сколько и для самого себя - для того чтобы потом судорожно не вспоминать, что да как. Я буду стараться делать как можно меньше движений, чтобы достигнуть результата. Лень - двигатель прогресса.
Начало. Сносим всё. Почему? Жалко встроенной NAND (короткий ресурс) + необходим QT4, чтобы программы писать в QtCreator-e.
Моя минька: 3.5" (не NEC) экран + 128Mb NAND памяти.
В случае если у вас отличается конфигурация миньки от моей, то различие будет только в образах, которые вы используете - u-boot и ядро.
План:
1. VirtualBox+Gentoo
2. Установка загрузчика Uboot. (дает функционал+возможность загружать ФС с SD карты)
3. Установка ФС на SD карту
4. Заливка ядра в NAND память
5. Модули ядра на SD карту.
6. Работа с Linux через putty
1. Ставим VirtualBox+Gentoo
Спасибо setar-у. Все расписано здесь
Для работы гостевой ОС используйте VirtualBox, а не VMWare. В последней есть несколько подводных камней, да и весит она много.
2. Установка Uboot
Уважаемый setar весь процесс подробно описал.
Можно делать как расписано, но есть и пара-тройка замечаний:
- собирать u-boot смысла нет. Из пакета нужна только утилита mkimage, которую можно и так в Инете найти
- пользуемся первым методом установки (эксперементальная часть души setar-а берет вверх и он лукавит, как мне кажется, говоря, что раз после команды
- Код: Выделить всё • Развернуть
go 0x31000000
мы висим или что-то не так, то спасет только второй метод. У меня как раз, все висело, но я перебрал все мыслимые варианты u-boot в Инете (около 10 штук) и нашел свой. Все зависит от версии миньки:
64Mb NAND, 128 или 1Gb и так далее.
- Не использовал ни minicom, ни screen. Причина одна - не удобно. И в первую очередь потому, что нельзя скопировать в буфер обмена команду из HOWTO и вставить, например, в minicom. Скачал Termite под винду. Не Бог весть что, но работает с пол тыка. А что еще надо. Настоить: 115200 8N1. Отключить любое управление потоком. У тех, у кого нет Com-порта в компьютере используйте переходник (мой случай). Причем в VirtualBox доступ надо давать не к переходнику непосредственно, а именно к Com-порту, который он эмулирует.
- я на своём Windows 7 x64, так и не смог завести usbpush через Linux+VirtualBox. А DNW для W7x64 не работает (может это только мне так повезло?). Есть красивое решение:
Mini2440 & 6410 USB Tranfer Tool - V0.3.2
Это терминал (сомнительный) + программа закачки по USB в одном флаконе (удобно) + идет на W7x64 без проблем.
А теперь по шагам:
Подключаем миньку к PC при помощи Com-кабеля (использовать только тот, что шел в наборе) и USB-кабеля.
Переключатель в NOR
- Код: Выделить всё • Развернуть
Termite: load ram 0x32000000 242332 u-boot
, где 2424332 реальный размер файла u-boot в байтах
USB Transfer Tool: передаем файл. В моём случае u-boot-128M.bin (вынул из архива u-boot_20100701.zip)
- Код: Выделить всё • Развернуть
Termite: go 0x32000000
Наслаждаемся запуском Uboot 3 2 1 (прерываем клавишей enter)
Если нет, то ищем другой u-boot.
- Код: Выделить всё • Развернуть
Termite: nand scrub
Termite: nand createbbt
Termite: nand write.e 0x32000000 u-boot
Termite: dynpart
Termite: dynenv set u-boot_env
Termite: saveenv
Termite: reset
Выключаем миньку, переключатель в NAND, и заново стартуем. Запускается u-boot 3 2 1 . Значит все хорошо.
На этом об утилите USB Transfer Tool можно забыть. Дальше все через SD карту будем делать.
Внимание! Если после перезагрузки миньки вы не увидите в терминале загрузчик и обратный отсчет, то установку нового загрузчика надо начинать с самого начала и выполнять все команды (включая nand scrub и nand createbbt)! Я, чтобы не насиловать nand, их пропускал, думая зачем каждый раз разбивать и без того разбитую на разделы NAND, а оказалось зря. Загрузчик корректно становится только в случае выполнения всех команд по очереди.
3. Установка ФС на SD. Берем SD карту. Какой объем решать вам. Я взял 2Gb и вставил в USB-SD картридер. Подготавливаем:
- Код: Выделить всё • Развернуть
Gentoo: lsusb (смотрим есть ли карта)
Gentoo: ls /dev/sd (смотрим какое устройсто. У меня sda веник, а sdb SD-карта)
Gentoo: fdisk /dev/sdb
fdisk: стереть существующие разделы
fdisk: o
fdisk: p
fdisk: n
fdisk: p
fdisk: 1
fdisk: enter
fdisk: +300MB
fdisk: n
fdisk: p
fdisk: 2
fdisk: enter
fdisk: +300MB
fdisk: w
Успешно вышли. Сделали два раздела по 300Mb. Я использовал пока только второй. В системе он у меня /dev/sdb2
- Код: Выделить всё • Развернуть
Gentoo: mkfs.ext3 /dev/sdb2
(использую пока ext3, для карты плохо, но jffs2 у меня не получается никак)
Качаем со страницы а там ссылочка rootfs_qtopia_qt4-20100816.tar.gz
- Код: Выделить всё • Развернуть
mount -t ext3 /dev/sdb2 /mnt/flash
tar xzvf rootfs_qtopia_qt4-20100816.tar.gz -C /mnt/flash
umount /mnt/flash
Всё, файловая система миньки готова. Откладываем SD карту в сторону.
4. Заливка ядра
Не знаю почему, но ядро setar-а у меня работало как зверь, но тач отзываться отказался. Поэтому пришлось делать своё ядро.
В первую очередь полез за родным образом ядра. Но оно на отрез отказывается грузиться с ext3 (просто не включен этот тип ФС в ядро)
Я предлагаю исправленный вариант (вложение к посту)
Но если есть желани творить самому, то качаем со страницы, а там ссылочка.
И усиленно читаем http://roboforum.ru/forum96/topic8415.html раздел Теперь опишу как самостоятельно собрать ядро.
За что еще раз спасибо setar-у.
Я брал еще одну карту для залития ядра, но по идее, я думаю, можно взять и ту же только первый раздел форматнуть
как FAT (mkfs.vfat /dev/sdb1)
Windows: записали файл ядра (uImage) на SD флешку (FAT). Запускаем Termite. После вставили SD в миньку и включили. 3 2 1 прерываем
enter-ом.
- Код: Выделить всё • Развернуть
Termite: initmmc
(проверяем а видна ли SD карта)
Termite: fatload mmc 0:1 0x32000000 uImage
Termite: nand erase kernel
Termite: nand write.e 0x32000000 kernel
Termite: setenv bootcmd nboot.e kernel \; bootm
Termite: setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=3tbc root=/dev/mmcblk0p2 rootdelay=2 rootfstype=ext3
Termite: saveenv
Обращаю внимание, что /dev/mmcblk0p2=/dev/sdb2.
setar писал(а):3tbc: передаем ядру знания о параметрах миньки
3 - тип дисплея (3 это 3" T35)
t - активировать тачскрин
b - backlight , активировать подсветку дисплея
с - в системе есть CMOS камера, инициализировать её
5. Модули ядра.
Согласно тому же HOWTO у нас есть отдельно лежащие модули ядра. Их надо кинуть на нашу SD с ФС.
Если использовали моё ядро, то мои во вложении к посту. В Gentoo запускаем mc
- Код: Выделить всё • Развернуть
Gentoo: mc
Gentoo: mount -t ext3 /dev/sdb2 /mnt/flash
И копируем модули в корень ФС на флешке так, чтобы указаный файл алиасов был по пути:
/lib/modules/2.6.32.2-FriendlyARM/modules.alias
- Код: Выделить всё • Развернуть
Gentoo: umount /mnt/flash
Вставляем SD карту с ФС в миньку и запускаемся в NAND режиме. Должна стартануть qtopia.
6. Работа с linux-ом миньки из под windows
Грузим putty(навернутый аналог Termite). И подключаемся через COM к миньке. Теперь после старта миньки если в putty нажать enter, то вы получаете удаленный терминал с поддержкой табуляции командной строки и цветов.
Что не сделано:
1. Wifi
2. DHCP
3. JFFS2
4. написание Hello world для консоли
5. написание Hello world для QT4
6. написание программы для работы с асинхронным УАРТОМ для консоли
7. написание программы для работы с асинхронным УАРТОМ для QT4
8. написание программы для передачи данных через Wifi на PC
9. траслирование камеры через wifi на PC
10. подключение миньки через RS-232 к переферии (сначала думал использовать PIC18F4550, но скорее всего остановлюсь на Arduino Mega)
11. Создание автомного робота со связью Wifi, где PC через OpenCV обрабатывает камеру, и дает команды.
хоть бы этот план на долгие годы не растянуть
Добавлено спустя 10 минут 20 секунд:
Убедительная просьба. Если вы увидели неточности или ошибки, то не стоит писать их в ветку - пишите мне в ЛС.
А вот если есть вопросы, то всегда, как у нас говорят на полесье, велкам.