roboforum.ru

Технический форум по робототехнике.

Quick Start Guide для ленивых как я

Quick Start Guide для ленивых как я

Tsi329 » 25 окт 2010, 23:52

HOWTO для ленивых
Хоть я и сам отношусь к людям, для которых процесс приносит не меньшее удовольствие, чем результат, но времени на эксперементы с 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 секунд:
Убедительная просьба. Если вы увидели неточности или ошибки, то не стоит писать их в ветку - пишите мне в ЛС.
А вот если есть вопросы, то всегда, как у нас говорят на полесье, велкам.
Вложения
youneedit.tar.gz
Все что надо для реализации описанного
(2.65 МиБ) Скачиваний: 0

Re: Quick Start Guide для ленивых как я

Alyoha » 26 окт 2012, 17:24

Чем закончился проект?

Re: Quick Start Guide для ленивых как я

Tsi329 » 27 окт 2012, 08:37

Я выполнил следующие пункты из раздела "Что не сделано": 1,2,4,9,10
И в итоге осознал, что это всё проще и правильней сделать на WR703N+Ethernet камера. Так как для меня работа MJPG-Streamer-а не выдерживает никакой критики. Это программа для транслирования видео с камер расположенных где угодно, но не на роботе: низкий, а что самое главное, нестабильный FPS, низкое разрешение, "битые" кадры и отсутствие решения, чтобы считывать видео-поток средствами OpenCV.

А на WR703N+Ethernet вот что получилось.

oyASTF7QVaw (1).jpg


Вот все моих три робота. Тот, о котором идет речь, на фото справа. Аппаратно он уже закончен.
Каждую неделю себя корю за то, что до сих пор не расписал этот мой проект здесь... :pardon:

Re: Quick Start Guide для ленивых как я

Alyoha » 27 окт 2012, 19:06

Не плохо! Даже отлично.
Ждем описания.
Есть Tiny6410, лежит уже пол года, руки чешутся, да вот времени да и опыта в таких делах не очень.
Вообще, что-то можно с ней сделать?
Так хотел бы видео качественное писать на флэху и одновременно видео по вайфаю на комп передавать с не очень качеством только для осмотра места положения через ее же модуль без всякой обработки. Получится на такой плате? Хоть в какую сторону смотреть?


cron
Rambler\'s Top100 Mail.ru counter