Перейти к содержанию
    

Портирование ядра. Написал драйвер UART как корректно его подключить.

нет в suspend.c он не чего не правил.

Заметил полную не состоятельность патча.

Патч не чего не добавляет не в

/arch/arm/tools/mach-types

/arch/arm/Kconfig

/arch/arm/Makefile

/arch/arm/mm/Kconfig

а без этого ИМХО новая платформа просто не добавится.

Ну да фиг с ним, я не гордый. Раскидал руками всё что надо. Строчки добавил.

 

В конфиге явно прописал

CONFIG_SUSPEND=n

CONFIG_SUSPEND_FREEZER=n

и т.д.

но в той директории в которую я собираю появляется конфиг сформированный через автокоф компилятора и в нем

CONFIG_SUSPEND=y

CONFIG_SUSPEND_FREEZER=y

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CONFIG_SUSPEND=n

Вроде должно быть:

# CONFIG_SUSPEND not set

 

Смотрите внимательней, может какме другие настройки включают это. Вообще, я бы поотключал через menuconfig, можно быстро найти необходимые настройки "/". Плюс, будет видно, что оно еще тянет и от чего зависит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заметил полную не состоятельность патча.

:)

 

/arch/arm/Kconfig

/arch/arm/Makefile

есть они там

 

патчи ложатся, суспенд отключи через menuconfig

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Idle - файлы

/arch/arm/Kconfig

/arch/arm/Makefile

есть в первом патче но нет во втором.

 

Но не суть. Я решил попробовать собрать ядро с первым патчем.

Собрал всё что нужно из переписки, создал файлы патчей.

Попробовал пропатсчить ядра 3.0.4 , 3.1.1 , 3.1.2 , 3.2.0 , 3.2.1

всегда один и тот же результат. Ошибка при сборке

/home/armkernel/source/patchtest/linux-3.1.1/arch/arm/kernel/entry-armv.S: Assembler messages:
/home/armkernel/source/patchtest/linux-3.1.1/arch/arm/kernel/entry-armv.S:211: Error: bad instruction `get_irqnr_preamble r6,lr'
/home/armkernel/source/patchtest/linux-3.1.1/arch/arm/kernel/entry-armv.S:211: Error: bad instruction `get_irqnr_and_base r0,r2,r6,lr'
/home/armkernel/source/patchtest/linux-3.1.1/arch/arm/kernel/entry-armv.S:408: Error: bad instruction `get_irqnr_preamble r6,lr'
/home/armkernel/source/patchtest/linux-3.1.1/arch/arm/kernel/entry-armv.S:408: Error: bad instruction `get_irqnr_and_base r0,r2,r6,lr'
make[2]: *** [arch/arm/kernel/entry-armv.o] Error 1
make[1]: *** [arch/arm/kernel] Error 2
make: *** [sub-make] Error 2

 

Зато разобрался почему ядро игнорировало мои опции конфигурирования.

Я таскал свой конфиг с ветки 2.6.31, для третьей ветки в нем многого не хватало.

Через автоконф перевел его на третью ветку, а затем руками подправил всё что нужно.

 

Но что делать я ошибками сборки, я пока не представляю. Под ARM VERSATILE ядро успешно собирается. Значит ошибка где-то в mach части под мой камень.

Или в конфигурации, например, верно выбран процессор, но не верна целевая платформа.

Разбираюсь дальше....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

/arch/arm/Kconfig

/arch/arm/Makefile

есть в первом патче но нет во втором.

так вот же в пятой части: http://lists.infradead.org/pipermail/linux...ber/070011.html

 

всегда один и тот же результат. Ошибка при сборке

да, у меня такие же ошибки, но тулчейн специально не ставил, не уверен что подходит

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если поменять в конфиге

CONFIG_ARCH_VERSATILE=y на

CONFIG_ARCH_VERSATILE=n

 

а

CONFIG_ARCH_SHARK=y

то ошибки получаются другие.

Похоже на третьей ветке ядра по мимо процесора надо ещё и целевую платформу выбрать.

Какую выбирать для этого проца пока не знаю.

Но сейчас попробую покурить сырцы mach части. Может там какую подсказку найду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или в конфигурации, например, верно выбран процессор, но не верна целевая платформа.

да, что-то не так с выбором архитектуры

-D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

-D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi
можно по подробнее про вот эту строку? а то я что-то не понял.

Жаль, что к патчу не прилагается defconfig

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно по подробнее про вот эту строку? а то я что-то не понял.

вообще, а какое там ядро-то? может тот самое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понял ядро чего? Процессора, если так , то spmp8000 основан на ARM926, а он в свою очередь имеет V5 architecture

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понял ядро чего? Процессора, если так , то spmp8000 основан на ARM926, а он в свою очередь имеет V5 architecture

понятно, значит с ядром порядок

в arch/arm/mach-spmp8000/include/mach не хватает макросов (get_irqnr_preamble и прочие) или инклудов откуда их брать

это я уже не в курсе - к армоводам

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Idle спасибо вам за помощь.

Ну опубликую для истории, куда двинулся дальше.

get_irqnr_preamble и т.д. в действительности не хватало в mach части. Я уже писал их для ядра 2.6.31

по этому просто добавил в /mach/include/entry-macro.S строки

#include <mach/hardware.h>
#include <mach/irqs.h>
#include <mach/platform.h>

<-----><------>.macro<>disable_fiq
<------><------>.endm
<------><------>.macro  get_irqnr_preamble, base, tmp
<------><------>.endm
<------><------>.macro  arch_ret_to_user, tmp1, tmp2
<------><------>.endm
<------><------>.macro<>get_irqnr_and_base, irqnr, irqstat, base, tmp
<------><------>.endm

и создал там же файл platform.h

#ifndef __PLATFORM_H__
#define __PLATFORM_H__


#define>SPMP8K_IO_BASE<><------>0x90000000


#define>SPMP8K_UART0_BASE<----->0x92B04000
#define>SPMP8K_UART0_DATA<----->0x00
#define>SPMP8K_UART0_STAT1<---->0x14<-->// 0x92B04014
#define>SPMP8K_UART0_STAT2<---->0x18<-->// 0x92B04018
#define>SPMP8K_UART0_STAT3<---->0x20<-->//

 

Эта ошибка пропала. Компиляция двинулась чуть дальше и стала появляться ошибка

 

/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/kernel/debug.S: Assembler messages:

/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/kernel/debug.S:159: Error: too many positional arguments

/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/kernel/debug.S:175: Error: too many positional arguments

 

 

Ну тут более менее понятно в чем причина, видимо в более старых (или наоборот новых) версиях ядра, передавались два параметра в addruart и именно это и объявленно в

/arch/arm/mach-spmp8000/include/mach/debug-macro.S

<------>.macro  addruart, rp, rv
<------>mov     \rp, #0x92000000
<------>add<--->\rp, #0x00B00000
<------>add<--->\rp, #0x00004000
<------>orr<--->\rv, \rp, #0xF0000000
<------>.endm

#define UART_SHIFT 2
#include <asm/hardware/debug-8250.S>

а в /arch/arm/kernel/debug.S вызов идет с тремя параметрами

<------><------>addruart_current r3, r1, r2

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

в /arch/arm/mach-spmp8000/include/mach/debug-macro.S

 

<------>.macro  addruart, rp, rv, rb

 

и встретил новую ошибку компиляции

CC arch/arm/mach-spmp8000/core.o

/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/mach-spmp8000/core.c: In function ‘spmp8000_init_irq’:

/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/mach-spmp8000/core.c:90:2: error: implicit declaration of function ‘vic_of_init’

а вот такие ошибки всегда ставят меня в полный тупик.

неявное объявление функции "vic_of_init" , как его сделать явным?

 

у меня есть подозрение, что функция vic_of_init вызывается, но не где не объявлена. Или объявлена но не инклудится.

Ход моих мыслей верный?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня есть подозрение, что функция vic_of_init вызывается, но не где не объявлена. Или объявлена но не инклудится.

Ход моих мыслей верный?

да, такой функции нигде нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посмотрел в ванили 3.5.х там эта функция есть. Так что похоже патч предназначен для более познего ядра.

В ядре 3.2.1 этой функции так же нет.

Буду лазить тут

http://lxr.free-electrons.com/source/arch/...mmon/vic.c#L407

и искать в какой версии она появилась. Затем попробую скачать и пропатчить эту версию.

Посмотрим на что ругаться будет.

Сильнее всего угнетает перспектива по новой править конфиг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ядро упорно собирается под арм версализ.

Пытаюсь выставить через

make ARCH=arm menuconfig и загрузку своего конфига нужный мне процессор в system type -> ARM system type

нудный мне проц. А там его нету.

Хотя на более раних версиях ядра было SPMP8000 SoC.

Думаю как сделать что бы он появился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...