реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Портирование ядра. Написал драйвер UART как корректно его подключить., spmp8000
Sanoend
сообщение Aug 21 2012, 13:57
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



нет в 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
Почему игнорируются опции, которые я подставил не представляю.

Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Aug 21 2012, 19:04
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(Sanoend @ Aug 21 2012, 17:57) *
CONFIG_SUSPEND=n

Вроде должно быть:
# CONFIG_SUSPEND not set

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


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 22 2012, 05:47
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(Sanoend @ Aug 21 2012, 17:57) *
Заметил полную не состоятельность патча.

sm.gif

Цитата(Sanoend @ Aug 21 2012, 17:57) *
/arch/arm/Kconfig
/arch/arm/Makefile

есть они там

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

Go to the top of the page
 
+Quote Post
Sanoend
сообщение Aug 22 2012, 08:32
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



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 части под мой камень.
Или в конфигурации, например, верно выбран процессор, но не верна целевая платформа.
Разбираюсь дальше....
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 22 2012, 09:18
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(Sanoend @ Aug 22 2012, 12:32) *
/arch/arm/Kconfig
/arch/arm/Makefile
есть в первом патче но нет во втором.

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

Цитата(Sanoend @ Aug 22 2012, 12:32) *
всегда один и тот же результат. Ошибка при сборке

да, у меня такие же ошибки, но тулчейн специально не ставил, не уверен что подходит
Go to the top of the page
 
+Quote Post
Sanoend
сообщение Aug 22 2012, 09:43
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



если поменять в конфиге
CONFIG_ARCH_VERSATILE=y на
CONFIG_ARCH_VERSATILE=n

а
CONFIG_ARCH_SHARK=y
то ошибки получаются другие.
Похоже на третьей ветке ядра по мимо процесора надо ещё и целевую платформу выбрать.
Какую выбирать для этого проца пока не знаю.
Но сейчас попробую покурить сырцы mach части. Может там какую подсказку найду.
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 22 2012, 09:59
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(Sanoend @ Aug 22 2012, 12:32) *
Или в конфигурации, например, верно выбран процессор, но не верна целевая платформа.

да, что-то не так с выбором архитектуры
Цитата
-D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi
Go to the top of the page
 
+Quote Post
Sanoend
сообщение Aug 22 2012, 10:04
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



Цитата(Idle @ Aug 22 2012, 12:59) *
-D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi
можно по подробнее про вот эту строку? а то я что-то не понял.
Жаль, что к патчу не прилагается defconfig
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 22 2012, 10:13
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(Sanoend @ Aug 22 2012, 14:04) *
можно по подробнее про вот эту строку? а то я что-то не понял.

вообще, а какое там ядро-то? может тот самое?
Go to the top of the page
 
+Quote Post
Sanoend
сообщение Aug 22 2012, 10:43
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



Не понял ядро чего? Процессора, если так , то spmp8000 основан на ARM926, а он в свою очередь имеет V5 architecture
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 22 2012, 10:50
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(Sanoend @ Aug 22 2012, 14:43) *
Не понял ядро чего? Процессора, если так , то spmp8000 основан на ARM926, а он в свою очередь имеет V5 architecture

понятно, значит с ядром порядок
в arch/arm/mach-spmp8000/include/mach не хватает макросов (get_irqnr_preamble и прочие) или инклудов откуда их брать
это я уже не в курсе - к армоводам
Go to the top of the page
 
+Quote Post
Sanoend
сообщение Aug 22 2012, 11:44
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



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 вызывается, но не где не объявлена. Или объявлена но не инклудится.
Ход моих мыслей верный?
Go to the top of the page
 
+Quote Post
Idle
сообщение Aug 22 2012, 12:22
Сообщение #28


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(Sanoend @ Aug 22 2012, 15:44) *
у меня есть подозрение, что функция vic_of_init вызывается, но не где не объявлена. Или объявлена но не инклудится.
Ход моих мыслей верный?

да, такой функции нигде нет
Go to the top of the page
 
+Quote Post
Sanoend
сообщение Aug 22 2012, 12:41
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



посмотрел в ванили 3.5.х там эта функция есть. Так что похоже патч предназначен для более познего ядра.
В ядре 3.2.1 этой функции так же нет.
Буду лазить тут
http://lxr.free-electrons.com/source/arch/...mmon/vic.c#L407
и искать в какой версии она появилась. Затем попробую скачать и пропатчить эту версию.
Посмотрим на что ругаться будет.
Сильнее всего угнетает перспектива по новой править конфиг.
Go to the top of the page
 
+Quote Post
Sanoend
сообщение Aug 22 2012, 14:09
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-08-12
Пользователь №: 73 144



Ядро упорно собирается под арм версализ.
Пытаюсь выставить через
make ARCH=arm menuconfig и загрузку своего конфига нужный мне процессор в system type -> ARM system type
нудный мне проц. А там его нету.
Хотя на более раних версиях ядра было SPMP8000 SoC.
Думаю как сделать что бы он появился.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 10:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01525 секунд с 7
ELECTRONIX ©2004-2016