Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
CONFIG_PREEMPT=y ядро не грузится[Решено]
Maxizar
Добавлено 05.07.2011 17:36 Редактировалось 06.07.2011 16:46
0
Сообщение: 1
Maxizar
0

Пункты: 424
Регистрация: 04.07.2011
Если использовать buildroot2011.02, то при включении данного ключа ядро не грузится.
А именно при загрузке останавливается
в консоли:
Код

Uncompressing Linux... done, booting the kernel.

И все. В чем проблема?

Что вообще я делал и как:
1. Собираю все дело при помощи buildroot2011.02
2. Даю такие команды:
Код
make at91sam9g20dfc_defconfig
make linux-menuconfig (для включения CONFIG_PREEMPT=y)
make


Потом я понял, что немного не правильно, потому что при сборке ядра на него накатывается патч...

Из-за чего начал делал так:
Код
make at91sam9g20dfc_defconfig
make menucomfig (удаляем патч, ну чисто посмотреть что будет)
make

Такая же песня.... ядро не грузится

Или так:
Собираем ядро и все такое, после чего заходим в папку
buildroot2011.02/output/build/linux-2.6.33
удаляю сигнальные файлы:
Код
.stamp_compiled
.stamp_installed


при этом оставляю вот эти:
Код
.stamp_configured
.stamp_downloaded
.stamp_extracted
.stamp_patched


и включаю в конфиге через текстовый редактор возможность мягкого режима реального времени (CONFIG_PREEMPT=y)
после даю команду make
И получаю такую же песню :(

Вообще если сделать все выше сказанное но вручную закоментировать (CONFIG_PREEMPT=y)
и собрать все это дело.. то все работает и все хорошо, но нужен как раз режим мягкого реального времени...

Собственно вопрос: каким образом включить поддержку CONFIG_PREEMPT?, может что-то нужно включить дополнительно?
Плата: at91sam9g20-ek
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 05.07.2011 19:04 Редактировалось 05.07.2011 19:05 Сообщение: 2
sasamy
4.70

Пункты: 77138
Регистрация: 14.08.2009
Цитата

Если использовать buildroot2011.02, то при включении данного ключа ядро не грузится.
А именно при загрузке останавливается
в консоли:
Uncompressing Linux... done, booting the kernel.
И все. В чем проблема?


Проблема в чем угодно но только не в CONFIG_PREEMPT=y - у вас даже до начального загрузчика ядра дело не дошло, конфиг скорее всего как-то нарушаете и ядро конфигурируется с другим MACH_ID - ядро не узнает идентификатор машины, но это одна из версий, могу навскидку еще накидать но это непродуктивно.
Спуститься к концу Подняться к началу
Персональная информация
Maxizar
Добавлено 05.07.2011 21:54 Сообщение: 3
Maxizar
0

Пункты: 424
Регистрация: 04.07.2011
хм.. смотрите, если настроить и собрать ядро и ФС, то она запускается и все работает.. заходим в буилдрут вводим
Код
make linux-menuconfig (для включения CONFIG_PREEMPT=y)

собираем и все приехали.. получается, что именно эта галочка все портит...
Ведь я больше ничего не трогаю... где-то я ошибаюсь, но пока не могу поянть где :(
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 05.07.2011 22:11 Сообщение: 4
sasamy
4.70

Пункты: 77138
Регистрация: 14.08.2009
Цитата

собираем и все приехали.. получается, что именно эта галочка все портит...


Для эксперимента попробуйте любую другую галочку таким методом добавить - мне кажется результат будет тот-же.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 06.07.2011 00:01 Сообщение: 5
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Ведь я больше ничего не трогаю... где-то я ошибаюсь, но пока не могу поянть где :(

в чистом виде эта галочка явно непричем..

Код
user@debian:~/src/linux-3.0-rc4$ cat .config |grep EMPT
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_TINY_PREEMPT_RCU is not set
# CONFIG_PREEMPT_RCU is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y


Код
Linux version 3.0.0-rc4 (user@debian) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10)) #46 PREEMPT Sat Jul 2 11:36:05 EDT 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9M10G45-EK

Код
Debian GNU/Linux 6.0 armets ttyS0
armets login:

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Maxizar
Добавлено 06.07.2011 16:44 Сообщение: 6
Maxizar
0

Пункты: 424
Регистрация: 04.07.2011
Ну вот, что я понял:
Возможно Вы и правы, проблема не в этом и не в этой галочке...

Мое понимание всего этого:
Получается, что если мы так делаем, то собирается это дело буилдрутом как то не айс, почему?... я думаю мне еще рано об этом говорить....

Как решил проблему:
Вот тут Запуск платы на AT91SAM9260 в разделе Linux
Приведен скрипт, который собирает Ядро используя компилятор собранный буилдрутом...
Мне пришлось переписать его под свою версию.

Мой скрипт: (название файла скрипта Start):
Код

#!/bin/sh


#export PATH=/<path>/buildroot-2009.08/build_arm/staging_dir/usr/bin:${PATH}
export PATH=/home/xxx/buildroot-2011.05/output/host/usr/bin:${PATH}



make ARCH=arm clean
#make ARCH=arm CROSS_COMPILE=arm-linux-uclibcgnueabi-
make ARCH=arm CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi-

echo == Compiled ==


#rm zLinux.bin
rm linux.bin
rm uImage
#rm zlinux_2.6.bin



#arm-linux-uclibcgnueabi-objcopy -O binary -R .note -R .comment -R .note.gnu.build-id -S vmlinux linux.bin
arm-unknown-linux-uclibcgnueabi-objcopy -O binary -R .note -R .comment -R .note.gnu.build-id -S vmlinux linux.bin

#gzip -c -9 linux.bin > zLinux.bin

#mkimage -A arm -O linux -T kernel -C gzip -a 0x20008000 -e 0x20008000 -n "Linux Kernel Image" -d zLinux.bin zlinux_2.6.bin
mkimage -A arm -O linux -T kernel -C none -a 0x20008000 -e 0x20008000 -n "Linux Kernel Image" -d linux.bin uImage


Кидаем этот файл в папку с исходниками ядра в моем случае сюды:
Код
buildroot-2011.05/output/build/linux-2.6.33

в Ubuntu 11.04 запускаем это дело так:
Код
buildroot-2011.05/output/build/linux-2.6.33> ./Start


Если считать, что все это дело должно подцепить .config , в котором мы как раз и включили CONFIG_PREEMPT=y, то наверное мы собрали нужное нам ядро....

Кстати это можно как то проверить? всмысле как узнать, что собранное ядро использует мягкий режим реального времени?..


PS. mkimage я поставил в убунту, тобишь юзал не тот, что собрал буилдрут...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 06.07.2011 18:20 Сообщение: 7
sasamy
4.70

Пункты: 77138
Регистрация: 14.08.2009
Цитата

Кстати это можно как то проверить? всмысле как узнать, что собранное ядро использует мягкий режим реального времени?..


# uname -a
Linux buildroot 2.6.38.4 #5 PREEMPT Wed Jul 6 18:11:34 MSD 2011 armv5tejl GNU/Linux
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux