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

 
 
 
Reply to this topicStart new topic
user113
сообщение Apr 14 2008, 06:47
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 11-04-08
Пользователь №: 36 679



такая проблема - при попытке скомпилить драйвер под Arm выводятся ошибки типа

/root/arm/buildroot/project_build_arm/M7-EK/linux-2.6.22.10/include/asm/arch/hardware.h:30:2: error: #error "Unsupported AT91 processor"

/root/arm/buildroot/project_build_arm/M7-EK/linux-2.6.22.10/include/asm/arch/io.h:36: error: AT91_BASE_SYS undeclared (first use in this function)

ссылки в asm и arch - правельные

сам драйвер:
Код
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>

#define DEVICE_NAME "u2dev" // Device name as it appears in /proc/devices
#define MAJOR_NUM 253

int init_module(void);
void cleanup_module(void);


int init_module(void)
{
    printk("This is PKV/U3 driver.\n");

    return 0;
}

// ----------------------------------------------------------------------

void cleanup_module(void)
{
}

как видите - простейший вариант

make-файл:

Код
TARGET ?=
TARGET = arm-linux

PREFIX ?=
PREFIX = /root/arm/buildroot/build_arm/staging_dir/usr

ARCH ?=
ARCH=arm

etcdir =        ${PREFIX}/etc
sbindir =       ${PREFIX}/sbin
usrbindir =     ${PREFIX}/usr/bin
usrsbindir =    ${PREFIX}/usr/sbin

CROSS_COMPILE ?=
CROSS_COMPILE = ${TARGET}-

CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar

RANLIB = $(CROSS_COMPILE)ranlib

INCLUDE     = -I/root/arm/buildroot/project_build_arm/M7-EK/linux-2.6.22.10/include -isystem /root/arm/buildroot/project_build_arm/M7-EK/linux-2.6.22.10/include
CFLAGS          += -Wall -D_FILE_OFFSET_BITS=64 -DMODULE -D__KERNEL__
WARNINGS        = -Wstrict-prototypes -Wsign-compare -Wshadow \
                  -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
            -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
CFLAGS          += $(WARNINGS)                    
CFLAGS        += $(INCLUDE)
LDFLAGS += -Wl,-warn-common,--as-needed                    
OPTFLAGS = -O
CFLAGS += $(OPTFLAGS)
                    
u2dev.o: u2dev.c
    $(CC) $(CFLAGS) -c u2dev.c
        
clean:
    rm -f *.o

и

.sh файл
Код
export TARGET=arm-linux
export PREFIX=/root/arm/buildroot/build_arm/staging_dir/usr
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=$PATH:${PREFIX}/bin

если кто сталкивался или знает как это точно сделать - жду помощи
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 14 2008, 06:56
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(user113 @ Apr 14 2008, 09:47) *
/root/arm/buildroot/project_build_arm/M7-EK/linux-2.6.22.10/include/asm/arch/hardware.h:30:2: error: #error "Unsupported AT91 processor"
А вы посмотрите, что написано в этом hardware.h до 30 строки включительно. Предполагаю, что вы должны были при помощи ключа -D указать компилятору тип вашего процессора.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
user113
сообщение Apr 14 2008, 07:51
Сообщение #3





Группа: Новичок
Сообщений: 12
Регистрация: 11-04-08
Пользователь №: 36 679



спасибо помогло, только появилась еще вот такая ошибка

/root/arm/buildroot/project_build_arm/M7-EK/linux-2.6.22.10/include/linux/rwsem.h:24:65: error: asm/rwsem.h: No such file or directory

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

Сообщение отредактировал user113 - Apr 14 2008, 07:54
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 14 2008, 08:43
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(user113 @ Apr 14 2008, 10:51) *
в директориях других архитектур этот файл может как присутствовать так и нет, что делать чтобы исправить?
Читать исходники. Искать, в каких местах этот файл включается, смотреть вокруг - не обрамлено ли это место каким-нибудь #ifdef, смотреть, где определяется аргумент этого #ifdef, искать в гугле. Может там в комплекте шел какой-нибудь скрипт configure, который умеет настраивать все нужные параметры?.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 14 2008, 13:42
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(user113 @ Apr 14 2008, 09:47) *
такая проблема - при попытке скомпилить драйвер под Arm выводятся ошибки типа

Так Вы пытаетесь скомпилировать модуль ядра используя какой-то левый Makefile. Этот Makefile годится для приложений но не для модулей ядра.
Посмотрите хотя-бы linux/drivers/hid/Makefile
И запускать его надо примерно так:
Код
make -C /path/to/linux/kernel/source/tree M=`pwd`

Или так
Код
make -C /path/to/linux/kernel/source/tree SUBDIRS=/path/to/module/source/tree modules


И читайте linux/Documentation/kbuild

Сообщение отредактировал amw - Apr 14 2008, 13:48


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
user113
сообщение Apr 16 2008, 05:30
Сообщение #6





Группа: Новичок
Сообщений: 12
Регистрация: 11-04-08
Пользователь №: 36 679



Цитата
Так Вы пытаетесь скомпилировать модуль ядра используя какой-то левый Makefile. Этот Makefile годится для приложений но не для модулей ядра.


он годится и для модулей, если компилировать обычным gcc под х86, то все правильно компилиться и работает (именно как драйвер)

Цитата
Посмотрите хотя-бы linux/drivers/hid/Makefile


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

после добавления -D с правильными константами - файл откомпилился, но на arm'e при попытки insmod'a выдыется Illegal instraction
может у кого есть примеры make-ов для драйверов на arm, или кто точно знает как сделать?
Go to the top of the page
 
+Quote Post
andron86
сообщение Apr 16 2008, 06:23
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(user113 @ Apr 16 2008, 07:30) *
после добавления -D с правильными константами - файл откомпилился, но на arm'e при попытки insmod'a выдыется Illegal instraction
может у кого есть примеры make-ов для драйверов на arm, или кто точно знает как сделать?


Makefile
Код
obj-m += my_driver.o
modul-objs := my_driver.o


make -C /driver_path/ SUBDIRS=$PWD modules
Go to the top of the page
 
+Quote Post
user113
сообщение Apr 16 2008, 07:17
Сообщение #8





Группа: Новичок
Сообщений: 12
Регистрация: 11-04-08
Пользователь №: 36 679



2 andron86
driver_path - это путь к ядру или к .с моего драйвера? если к ядру то, если перед make'ом выполнить sh-ник, приведенный выше, то компилиться, появляется несколько файлов в том числе my_driver.ko, как я понял именно его нужно на arm'e инсмодить? но все равно не работает, ни .o, ни .ko при insmod my_driver.ko пишет Illegal instruction, и еще т.к. ядро собрано в минимальной конфигурации все средства разработки в нем отсутствуют - при insmod требуется наличие в системе gcc и или чегото подобного?
Go to the top of the page
 
+Quote Post
andron86
сообщение Apr 16 2008, 07:42
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(user113 @ Apr 16 2008, 09:17) *
2 andron86
driver_path - это путь к ядру или к .с моего драйвера?

звиняюсь, к исходникам ядра.

>>при insmod требуется наличие в системе gcc и или чегото подобного?

требуется insmod smile.gif
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 17 2008, 07:55
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(user113 @ Apr 16 2008, 08:30) *
может у кого есть примеры make-ов для драйверов на arm, или кто точно знает как сделать?

Вот, вчера отослать не получилось.
Прикрепленные файлы
Прикрепленный файл  Makefile.zip ( 905 байт ) Кол-во скачиваний: 43
 


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
user113
сообщение Apr 18 2008, 02:26
Сообщение #11





Группа: Новичок
Сообщений: 12
Регистрация: 11-04-08
Пользователь №: 36 679



проблема решена, принина была не в make файле, всем кому нужно - http://bugs.busybox.net/bug_view_advanced_...php?bug_id=2694

и спасибо всем кто помогал
Go to the top of the page
 
+Quote Post

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

 


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


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