roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 74 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: mini2440 сборка и установка ядра
СообщениеДобавлено: 08 июл 2010, 18:33 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Mini2440 Установка ядра linux

Эта статья рассчитана на то что вы имеете плату mini2440 c уже установленным загрузчиком u-boot
Если вы до сих пор его не установили то рекомендую ознакомиться со статьями
mini2440 Установка загрузчика u-boot в NAND
mini2440 смена загрузчика в NOR флеше

Приступаем

производим загрузку в режиме NAND (этот режим мы используем практически всегда когда не указано обратного, режим NOR загрузки требуется обычно для исправления ошибочных секторов в NAND флешке)

сначала мы потренируемся запускать готовое ядро которое можно найти на диске комплекта mini2440 по пути images/linux/zImage_T35

Особенность заключается в том что u-boot хранит запускаемые образы в специальных контейнерах которые содержат запись о том что за содержимое в нем находится и контрольную сумму для защиты от сбойных блоков в NAND.
Именно поэтому мы берём утилиту mkimage из каталога tools дистрибутива u-boot
(если у вас его ещё нету то получим : $ cd ~/mini2440;mkdir u-boot;cd u-boot; git clone git://repo.or.cz/u-boot-openmoko/mini2440.git )

исходим из того что ядро в формате zImage (zImage_T35) лежит у нас к каталоге ./images
делаем из него контейнер u-boot:
calculate mini2440 # ./mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ./images/zImage_T35 ./images/uImage_T35
Цитата:
Image Name:
Created: Wed Jul 7 01:45:30 2010
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2517028 Bytes = 2458.04 kB = 2.40 MB
Load Address: 30008000
Entry Point: 30008000


теперь файл ./images/uImage_T35 готов к отправке на mini2440

отправляем его:

calculate mini2440 # dfu-util -a 0 -D ./images/uImage_T35 -R
Цитата:
dfu-util - (C) 2007-2008 by OpenMoko Inc.
This program is Free Software and has ABSOLUTELY NO WARRANTY

dfu-util does currently only support DFU version 1.0

Opening USB Device 0x0000:0x0000...
Claiming USB DFU Runtime Interface...
Determining device status: state = appIDLE, status = 0
Device really in Runtime Mode, send DFU detach request...
Resetting USB...
Opening USB Device...
Found Runtime: [0x1457:0x511b] devnum=119, cfg=0, intf=0, alt=0, name="RAM 0x32000000"
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
Transfer Size = 0x1000
bytes_per_hash=50341
Starting download: [##################################################] finished!
state(2) = dfuIDLE, status(0) = No error condition is present
Done!
Resetting USB to switch back to runtime mode


теперь ядро у нас находится в RAM mini2440 по адресу 0x32000000
его нужно поместить в свой раздел:

MINI2440 # nand erase kernel
Цитата:
NAND erase: device 0 offset 0x60000, size 0x500000
Erasing at 0x540000 -- 100% complete.
OK


MINI2440 # nand write.e 0x32000000 kernel 0x300000
обращаю внимение здесь .e - признак обхода bad блоков

Цитата:
NAND write: device 0 offset 0x60000, size 0x300000
3145728 bytes written: OK


Всё ядро расположено на своем месте
осталось сделать его автоматически запускаемым:

MINI2440 # run set_bootargs_nand
MINI2440 # setenv bootcmd 'nboot.e kernel ; bootm'
MINI2440 # saveenv

можно перезапускать устройство и наблюдать в консоли примерно следующее:

Цитата:
Loading from NAND 128MiB 3,3V 8-bit, offset 0x60000
Image Name:
Created: 2010-07-06 21:45:30 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2517028 Bytes = 2.4 MB
Load Address: 30008000
Entry Point: 30008000
## Booting kernel from Legacy Image at 32000000 ...
Image Name:
Created: 2010-07-06 21:45:30 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2517028 Bytes = 2.4 MB
Load Address: 30008000
Entry Point: 30008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux................................................................................................................................................................... done, booting the kernel.



Теперь опишу как самостоятельно собрать ядро

исходим из соображения что у нас уже собран пакет для кросс компиляции armv4tl-softfloat-linux-gnueabi
сборка которого будет описана в разделе подготовки рабочего места на линуксе для разработчика

Вожможно это лишнее, но уточню что все нижеследующие операции производятся на x86 системе

cd ~/mini2440
mkdir kernel ; cd kernel
git clone git://repo.or.cz/linux-2.6/mini2440.git sources
cd sources
mkdir -p ../kernel-bin
mkdir -p ../modules

[создадим базовую конфигурацию ядра
CROSS_COMPILE=armv4tl-softfloat-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../modules/ mini2440_defconfig

Базовая конфигурация не оптимальна, рекомендую взять соответствующий вашей конфигурации файл с диска комплекта , каталог linux
внутри архива linux-2.6.32.2-mini2440-20100113.tgz лежат оптимизированные конфиги например config_mini2440_n35
я их вытащил сюда:
Вложение:
kernel_configs_mini2440.zip [53.66 КиБ]
Скачиваний: 0


для чего мы вообще затеяли сборку ? возможно хотели что то изменить в стандартном конфиге, делаем это и выходим с сохранением
CROSS_COMPILE=armv4tl-softfloat-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../modules/ menuconfig

далее собираем ядро и и модули копируем в отдельное расположение ( каталог modules уровнем выше ):
CROSS_COMPILE=armv4tl-softfloat-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../modules/
CROSS_COMPILE=armv4tl-softfloat-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../modules/ modules_install

готово само ядро мы отлавливаем каталогом выше : kernel-bin/arch/arm/boot/zImage
ну и модули там же в каталоге modules (их нужно скопировать в корень рутовой файловой системы mini2440)

не забываем zImage перед загрузкой на mini2440 запаковать как было описано выше :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 08 июл 2010, 19:06 
Не в сети

Зарегистрирован: 13 апр 2009, 09:29
Сообщения: 89
Откуда: Иваново
Skype: b_andrey_37
А если попробовать с ноля собрать ядро. Например взять 2.6.34 или 2.6.35 и полность настроить его под миньку. mach-mini2440.c там есть. Наверное будет интереснее если все устройства, конфигурацию gpio прописать и т.д. Потом будет понятнее все самим делать ;). Заодно описать меню ,хотя там вроде все понятно, но для начинающих полезно.

Добавлено спустя 1 минуту 29 секунд:
Не надо будет китайский мануал переводить. :) Там как раз все об этом, но с картинками. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 08 июл 2010, 19:08 
Не в сети

Зарегистрирован: 14 июн 2010, 17:19
Сообщения: 167
прог. языки: Qt/C/C++
Andrey37 писал(а):
А если попробовать с ноля собрать ядро.
Попробуй ;)
Базовая статья уже есть. :)

_________________
Любой прибор, защищённый плавким предохранителем, сможет защитить этот предохранитель, сгорев первым.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 08 июл 2010, 19:13 
Не в сети

Зарегистрирован: 13 апр 2009, 09:29
Сообщения: 89
Откуда: Иваново
Skype: b_andrey_37
Я сейчас глядя на вас в qt уткнулся. :))) Сижу жду когда скомпилится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 08 июл 2010, 20:13 
Не в сети

Зарегистрирован: 14 июн 2010, 17:19
Сообщения: 167
прог. языки: Qt/C/C++
Andrey37 писал(а):
Я сейчас глядя на вас в qt уткнулся. :))) Сижу жду когда скомпилится.
не спешил бы ты поперед батьки... хотя мож у тя сразу все на ура скомпилится :)
Есть компилишь all-included то часа 4 будет))
мне один мануальчик понравился на эту тему:
Цитата:
Вот и всё, можно компилировать Qt! Команда незамысловата:
make
… и вот тут можно пить пиво/курить/спать/заниматься сексом нужное ПОДЧЕРКНУТЬ
Особенно мне нравится когда после 2-3 часов ожидания вываливается пару ерроров и все начинаешь сначала :crazy:

_________________
Любой прибор, защищённый плавким предохранителем, сможет защитить этот предохранитель, сгорев первым.


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

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
:) а действительно, не спешили бы вы, появился бы шанс не ждать часами а использовать такую замечательную штуку как распределённая компиляция.
например я могу поставить кросс компилятор на двух узлах кластера на котором форум лежит, они всё равно бамбук курят.
это как никак 16 потоков сразу
правда мелкие пакеты так собирать не удобно - даже дольше получится, а вот для Qt и аналогичных - самое то


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 08 июл 2010, 20:43 
Не в сети

Зарегистрирован: 14 июн 2010, 17:19
Сообщения: 167
прог. языки: Qt/C/C++
setar писал(а):
например я могу поставить кросс компилятор на двух узлах кластера на котором форум лежит, они всё равно бамбук курят
Так что же ты раньше молчал!!!

_________________
Любой прибор, защищённый плавким предохранителем, сможет защитить этот предохранитель, сгорев первым.


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

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Andrey37 писал(а):
А если попробовать с ноля собрать ядро. Например взять 2.6.34 или 2.6.35 и полность настроить его под миньку. mach-mini2440.c там есть. Наверное будет интереснее если все устройства, конфигурацию gpio прописать и т.д. Потом будет понятнее все самим делать ;)

А в чем тайный смысл? есть коллеги зарубежные, которые ведут репозитарий этих самых патчей к ядру, чтобы нам с вами проще было.
Понятное дело это понадобилось бы если чего то в ядре не хватает, но даже в этом случае правильнее написать патч и отправить его этим ребятам (repo.or.cz) чтобы он всем доступен был.
Цитата:
Заодно описать меню ,хотя там вроде все понятно, но для начинающих полезно.

а в ядре описать всё практически не реально, во первых там древовидная структура с перекрёстными зависимостями в открывающихся пунктах
во вторых нужно досканально знать все существовавшие, существующие и ожидаемые методы работы ОС, файловые системы, устройства, шины и т.д.
я, уж насколько постоянно занимаюсь компиляцией ядер, всё равно не могу правильно и полностью собрать требуемое ядро, всё равно приходится пару- тройку раз добавлять нужные опции.

так что рекомендую ценить коллективный опыт, и пользоваться результатами общественно полезного труда (я про открытые репозитарии)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 09 июл 2010, 00:09 
Не в сети
Аватара пользователя

Зарегистрирован: 18 май 2010, 00:32
Сообщения: 59
Откуда: Харьков
прог. языки: C, Haskell
Кроме того, "свежее" ядро вовсе не означает "лучшее".
Скажем, 35-е на форуме friendlyarm людям так и не удалось подружить с железкой

_________________
Here I am, brain the size of a planet, and they ask me to take you to the bridge!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 09 июл 2010, 00:14 
Не в сети

Зарегистрирован: 14 июн 2010, 17:19
Сообщения: 167
прог. языки: Qt/C/C++
br0x писал(а):
Скажем, 35-е на форуме friendlyarm людям так и не удалось подружить с железкой
А нам пока и не надо))
Нам бы нормальную ФС на 32м собрать, да со всей переферией (порты там всякие, вай-вай, камеры разные), да с Qt :friends:
А то на одном ядре далеко не уедешь ;)
ЗЫ (про то, что переферию нужно включать в ядре, можете не говорить, знаю)

_________________
Любой прибор, защищённый плавким предохранителем, сможет защитить этот предохранитель, сгорев первым.


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

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


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

Зарегистрирован: 08 июл 2010, 23:08
Сообщения: 3
setar писал(а):
внутри архива linux-2.6.32.2-mini2440-20100113.tgz лежат оптимизированные конфиги например config_mini2440_n35
я их вытащил сюда:
Вложение:
kernel_configs_mini2440.zip


А что означают добавки в конце имени файла - a70, t35 итд?


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

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
это тип видеосистемы
A70 = 7"
T35 = 3.5" нового типа (забыл название, не NEC)
N35 = 3.5" старого типа NEC (у наших вроде ни у кого нету)

неправильный выбор параметра даст нецентрированную картинку на дисплее, или её кусок если промахнулись с дюймами


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mini2440 сборка и установка ядра
СообщениеДобавлено: 19 авг 2010, 11:57 
Не в сети

Зарегистрирован: 13 июн 2010, 13:34
Сообщения: 73
Skype: Z_Z_Z-77
прог. языки: С++, Delphi
ФИО: Павел Новиков
Цитата:
T35 = 3.5" нового типа (забыл название, не NEC)

Toppoly, что то мне кажется что он просто дешевле, поэтому сейчас и суется во все миньки, а зная что NEC обычно делает все достаточно хорошего качества, но при достаточно высокой цене, смею предположить, что NEC покруче будет)


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

Зарегистрирован: 10 июн 2010, 23:31
Сообщения: 43
Откуда: Краснодар
Skype: rotaxb
прог. языки: C
ФИО: Александр
Есть ли смысл качать ядро из репозитария?
setar писал(а):

какая там версия лежит? какой объем трафика?
Может целесообразнее собрать из исходников на диске?


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

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


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

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


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

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