roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 18:53

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 26 окт 2010, 00:26 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Ага, видел уже, завтра попробую начать осваивать :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 30 окт 2010, 10:17 
Не в сети

Зарегистрирован: 30 окт 2010, 10:06
Сообщения: 3
По поводу загрузки rootfs по частям.
Если на флешке нет bad блоков, то будет работать как описано в первом сообщении.
Однако если bad блоки есть, то nand write.e пишет больше данных, чем его просишь (из за пропуска bad блоков). И тогда на следующем шаге получается неправильное смещение, его нужно пересчитать.
Пример:

Запись первой части.
Сначала стираем
Код:
MINI2440 # nand erase rootfs

NAND erase: device 0 offset 0x560000, size 0x3aa0000
Skipping bad block at  0x01260000                                           
Skipping bad block at  0x01fc8000                                           
Skipping bad block at  0x03ff0000                                           
Skipping bad block at  0x03ff4000                                           
Skipping bad block at  0x03ff8000                                           
Skipping bad block at  0x03ffc000                                           

OK

Потом записываем в самое начало раздела rootfs (у меня так называется). ${filesize} - размер файла, полученного по tftp.
Код:
MINI2440 # nand write.e 0x32000000 rootfs ${filesize}

NAND write: device 0 offset 0x560000, size 0x1800000

Bad block at 0x1260000 in erase block from 0x1260000 will be skipped
Writing data at 0x1d63e00 -- 100% complete.
25165824 bytes written: OK

Тут интересное место 0x1d63e00 - адрес последнего занятого блока, значит следующий свободный - 0x1d64000.
Пишем вторую часть (предварительно получив по tftp)
Код:
MINI2440 # nand write.e 0x32000000 1D64000 ${filesize}

NAND write: device 0 offset 0x1d64000, size 0x10d0000

Bad block at 0x1fc8000 in erase block from 0x1fc8000 will be skipped
Writing data at 0x2e37e00 -- 100% complete.
17629184 bytes written: OK


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 01 ноя 2010, 11:27 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Абсолютно верное замечание!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 03 ноя 2010, 17:59 
Не в сети

Зарегистрирован: 30 окт 2010, 10:06
Сообщения: 3
А саму файловую систему я создаю не руками, а через дистрибутив openembedded.
Нужно иметь только gcc компилятор для x86 и openembedded. Он сам все скачает, откомпилирует кросс-компилятор, соберет систему (там тысячи разных программ), соберет .jffs2 файл, ядро и загрузчик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 03 ноя 2010, 18:18 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
:) вот только не понятно дистрибутив чего оно соберет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 05 ноя 2010, 23:07 
Не в сети

Зарегистрирован: 30 окт 2010, 10:06
Сообщения: 3
Дистрибутив Angstrom (http://www.angstrom-distribution.org/).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 17 фев 2011, 15:46 
Не в сети
Аватара пользователя

Зарегистрирован: 16 фев 2011, 13:30
Сообщения: 15
Откуда: Minsk
прог. языки: C/C++, Perl, Tcl/Sh, Python, Ruby, Pascal, Asm...
Поделюсь своим методом установки rootfs, понадобится только NFS и все!!!

По порядку:
1.Загружаемся в u-boot (читать тут

2.Смотрим разделы:
MINI2440 # mtdparts
device nand0 <mini2440-nand>, # parts = 4
#: name size offset mask_flags
0: u-boot 0x00040000 0x00000000 0
1: u-boot_env 0x00020000 0x00040000 0
2: kernel 0x00500000 0x00060000 0
3: rootfs 0x3faa0000 0x00560000 0
Нас интересует rootfs, раздел N 3. Запомните адрес 0x3faa0000 и номер раздела!!!

3.Настраиваем NFS server (в кратце):
3.1.Правим /etc/exports, добавляем в него следующее:
/opt/arm/rootfs 192.168.1.100(rw,no_root_squash,sync,no_subtree_check,nohide,crossmnt,insecure_locks)
Где /opt/arm/rootfs - каталог, в который мы положим файлы рут системы нашей mini2440
192.168.1.100 - IP платы
3.2.Перечитываем настройки NFS: exportfs -ra

4.Настраиваем IP и опции загрузки u-boot:
MINI2440 # setenv ipaddr 192.168.1.100
MINI2440 # setenv serverip 192.168.1.12
MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tbc nfsroot=192.168.1.12:/opt/arm/rootfs root=/dev/nfs ip=192.168.1.100
По последней строке малость разъяснений:
nfsroot=192.168.1.12:/opt/arm/rootfs - Здесь 192.168.1.12 - IP nfs сервера, а /opt/arm/rootfs - каталог с рут системой, который мы ранее задавали в настройках NFS сервера. ip=192.168.1.100 - IP, который получит плата.
MINI2440 # saveenv ---- Сохраняем настройки
(В этом месте можно не сохранять настройки, а сделать вот так:
MINI2440 # setenv root_nfs /opt/arm/rootfs
MINI2440 # boot
)

5.Копируем рут файл систему в каталог /opt/arm/rootfs, делается это проще всего в mc. Я использовал root_qtopia-20100108.tar.gz идущий на DVD. В конечном итоге содержимое каталога /opt/arm/rootfs должно выглядеть примерно так:
> ls /opt/arm/rootfs
bin dev etc home lib linuxrc mnt opt proc root sbin sys tmp usr var www

6.Перегружаем плату, если все сделали удачно, то борда загрузится, а в сериально консоле будет примерно следующее:
Please press Enter to activate this console.
[root@FriendlyARM /]#

7.Смотрим в консоли на имеющиеся разделы:
[root@FriendlyARM /]# cat /proc/partitions
major minor #blocks name
31 0 256 mtdblock0
31 1 128 mtdblock1
31 2 5120 mtdblock2
31 3 1043072 mtdblock3
31 4 1048576 mtdblock4

Вспоминаем сохраненный адрес (это надо, что бы не ошибиться используемым разделом), в моем случае: 0x3faa0000 == 1.068.105.728 / 1024 == 1043072 - размер в блоках соответствует разделу номер 3 (такой же номер мы видели в u-boot), значит нужный нам раздел для рута будет: mtdblock3

8.Создаем точку монтирования для раздела и монтируем в нее наш раздел:
[root@FriendlyARM /]# mkdir /tmp/ROOT_FS
[root@FriendlyARM /]# mount /dev/mtdblock3 /tmp/ROOT_FS
yaffs: dev is 32505859 name is "mtdblock3"
Тут /dev/mtdblock3 == /dev/ + полученное нами выше имя устройства.

Проверяем, все ли подмонтировалось:
[root@FriendlyARM /]# mount
В выводе должна присутствовать строка примерно такого вида:
/dev/mtdblock3 on /tmp/ROOT_FS type yaffs (rw,relatime)

Теперь копируем рут систему на наш новый рут (список каталогов NFS рута смотрим при помощи ls /), копировать надо все каталоги, кроме: /proc, /sys, /tmp
[root@FriendlyARM /]# cp -a /bin /lib /sbin /usr /dev /linuxrc /opt /var /etc /www /home /mnt /root /tmp/ROOT_FS/
Далее создадим не достающие каталоги:
[root@FriendlyARM /]# mkdir /tmp/ROOT_FS/proc /tmp/ROOT_FS/sys /tmp/ROOT_FS/tmp

Отключаем новый рут:
[root@FriendlyARM /]# umount /tmp/ROOT_FS/

Проверяем, отключился ли:
[root@FriendlyARM /]# mount
В выводе не должно быть строки с /tmp/ROOT_FS/

Перегружаем железку:
[root@FriendlyARM /]# reboot

9.Заходим в u-boot и правим загрузочную строку:
MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tbc root=/dev/mtdblock3
MINI2440 # saveen
Тут /dev/mtdblock3 - это то устройство, которое у нас и является рут системой. mini2440=0tbc - сию строку правим под параметры имеющейся у Вас железяки:
0 = 0 - 7" A70 (3.5" T35)
t = точскрин
b = подсветка дисплея (backlight)
c = CMOS камера (опционально)

Перегружаем железку и радуемся жизни!


Последний раз редактировалось Weekend 22 фев 2011, 20:11, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 17 фев 2011, 23:38 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Спасибо, действительно хороший вариант.
В двух словах Вы описываете загрузку в линукс с корнем по NFS и заполнение rootfs в NAND штатными средствами из под линукса.
Весьма разумно и изящно :Bravo:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 22 фев 2011, 01:37 
Не в сети

Зарегистрирован: 01 фев 2011, 20:47
Сообщения: 31
Цитата:
копируем и разворачиваем архив linux/arm-qtopia-20100108.tar.gz с диска контроллера (или подготавливаем свою сборку):
# tar -xvzf ./arm-qtopia-20100108.tar.gz -C /tftproot/root_qtopia

Тут у вас наверно ошибка. Надо наверно root_qtopia-20100108.tar.gz ??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 22 фев 2011, 03:50 
Не в сети
Аватара пользователя

Зарегистрирован: 16 фев 2011, 13:30
Сообщения: 15
Откуда: Minsk
прог. языки: C/C++, Perl, Tcl/Sh, Python, Ruby, Pascal, Asm...
Да архивы бывают разные, у кого какой рут попался:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 22 фев 2011, 18:12 
Не в сети

Зарегистрирован: 01 фев 2011, 20:47
Сообщения: 31
В чем может быть проблема?
Цитата:
eth0: link down
IP-Config: Complete:
device=eth0, addr=192.168.1.11, mask=255.255.255.0, gw=192.168.1.1,
host=192.168.1.11, domain=, nis-domain=(none),
bootserver=192.168.1.74, rootserver=192.168.1.74, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.74
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Looking up port of RPC 100005/1 on 192.168.1.74
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)

Цитата:
setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tb nfsroot=192.168.1.74:/tftproot/root_qtopia.jffs2 root=/dev/nfs rw rootfstype=jffs2 ip=192.168.1.11:192.168.1.74:192.168.1.1:255.255.255.0

192.168.1.74 - ip на котором поднят gentoo c NFS
192.168.1.11 - типа ip мини
192.168.1.1 - IP роутера


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 22 фев 2011, 20:10 
Не в сети
Аватара пользователя

Зарегистрирован: 16 фев 2011, 13:30
Сообщения: 15
Откуда: Minsk
прог. языки: C/C++, Perl, Tcl/Sh, Python, Ruby, Pascal, Asm...
nfsroot=192.168.1.74:/tftproot/root_qtopia.jffs2 - вот в этом, я не совсем понимаю, как ядро замонтирует loop файл... Для правильной работы, просто создайте каталог, в который выложите содержимое root директории и тогда строка загрузки будет примерно такой:
setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tbc nfsroot=192.168.1.74:/tftproot root=/dev/nfs ip=192.168.1.11


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 22 фев 2011, 20:16 
Не в сети

Зарегистрирован: 01 фев 2011, 20:47
Сообщения: 31
ясно спс. просто делал все по тому как описанно в первом посте )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 22 фев 2011, 21:25 
Не в сети
Аватара пользователя

Зарегистрирован: 16 фев 2011, 13:30
Сообщения: 15
Откуда: Minsk
прог. языки: C/C++, Perl, Tcl/Sh, Python, Ruby, Pascal, Asm...
alien писал(а):
ясно спс. просто делал все по тому как описанно в первом посте )

Сделайте по описанному мной посту, на 6й странице, проще и быстрее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 подготовка и размещение rootfs
СообщениеДобавлено: 22 фев 2011, 22:46 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Проблема проста: в ядре нет вкомпиленного jffs2 (это видно из логов, точнее не видно загрузки JSSF2 обработчика)
то как опиано в первом посте работает


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO