Автор Тема: Търся Помощ  (Прочетена 1508 пъти)

Uvigii

  • Напреднали
  • *****
  • Публикации: 381
    • Профил
Търся Помощ
« -: Sep 20, 2007, 19:23 »
Здравейте, нуждая се от помощ при компилирането на
LcdMod за съвременни ядра (2.6.20+). Предполагам, че доста неща са променени в течение на времето и ще трябва да си загубите известно време в опит да промените модула.
Активен

http://www.openlab.info мрежова лаборатория

mhydra

  • Напреднали
  • *****
  • Публикации: 715
  • Distribution: Fedora, Mandriva
  • Window Manager: GNOME
    • Профил
Търся Помощ
« Отговор #1 -: Sep 20, 2007, 20:05 »
Все пак пробва ли да го компилираш? Ако не стане то явно изобщо може и да не тръгне този модул или поне доста ще трябва да се поработи докато се компилира и започне да върши някаква работа.
Сигурен ли си че го няма в съвременните ядра?
Активен

Указвам помощ за всичко свързано с Fedora и Мандрива.
Може да ме търсите на ICQ.

crasher5

  • Напреднали
  • *****
  • Публикации: 100
    • Профил
Търся Помощ
« Отговор #2 -: Sep 20, 2007, 20:43 »
Това теоретична постановка ли е или ще приложиш и малко примерен output, logs и тн.?
Активен

Uvigii

  • Напреднали
  • *****
  • Публикации: 381
    • Профил
Търся Помощ
« Отговор #3 -: Sep 20, 2007, 22:13 »
Цитат (mhydra @ Сеп. 20 2007,21:05)
Все пак пробва ли да го компилираш? Ако не стане то явно изобщо може и да не тръгне този модул или поне доста ще трябва да се поработи докато се компилира и започне да върши някаква работа.
Сигурен ли си че го няма в съвременните ядра?

Да. Пробвах. Ами не знам да има нещо подобно.
Активен

http://www.openlab.info мрежова лаборатория

Uvigii

  • Напреднали
  • *****
  • Публикации: 381
    • Профил
Търся Помощ
« Отговор #4 -: Sep 20, 2007, 22:23 »
Цитат (crasher5 @ Сеп. 20 2007,21:43)
Това теоретична постановка ли е или ще приложиш и малко примерен output, logs и тн.?

Здравейте,
не е теоретична постановка, изхода зависи от конкретното ядро за което се опитвам да компилирам
Примерен код
uvigii lcdmod-1.0.2 # make
make -C /lib/modules/2.6.18-vs2.0.2-gentoo-r8/build SUBDIRS=/usr/src/lcdmod-1.0.2 modules
make[1]: Entering directory `/usr/src/linux-2.6.18-vserver-2.0.2-r8'
  CC [M]  /usr/src/lcdmod-1.0.2/lcd.o
<command line>:13:1: /lib/modules/2.6.18-vs2.0.2-gentoo-r8/build/include/config/modversions.h: No such file or directory
/usr/src/lcdmod-1.0.2/lcd.c:12:1: warning: "KBUILD_MODNAME" redefined
<command line>:11:1: warning: this is the location of the previous definition
In file included from include/asm/processor.h:18,
                 from include/asm/thread_info.h:16,
                 from include/linux/thread_info.h:21,
                 from include/asm/uaccess.h:8,
                 from /usr/src/lcdmod-1.0.2/lcd.c:27:
include/asm/system.h: In function `__set_64bit_var':
include/asm/system.h:214: warning: dereferencing type-punned pointer will break strict-aliasing rules
include/asm/system.h:214: warning: dereferencing type-punned pointer will break strict-aliasing rules
/usr/src/lcdmod-1.0.2/lcd.c: At top level:
/usr/src/lcdmod-1.0.2/lcd.c:109: error: syntax error before string constant
/usr/src/lcdmod-1.0.2/lcd.c:109: warning: type defaults to `int' in declaration of `MODULE_PARM'
/usr/src/lcdmod-1.0.2/lcd.c:109: warning: data definition has no type or storage class
/usr/src/lcdmod-1.0.2/lcd.c:110: error: syntax error before string constant
/usr/src/lcdmod-1.0.2/lcd.c:110: warning: type defaults to `int' in declaration of `MODULE_PARM'
/usr/src/lcdmod-1.0.2/lcd.c:110: warning: data definition has no type or storage class
/usr/src/lcdmod-1.0.2/lcd.c:111: error: syntax error before string constant
/usr/src/lcdmod-1.0.2/lcd.c:111: warning: type defaults to `int' in declaration of `MODULE_PARM'
/usr/src/lcdmod-1.0.2/lcd.c:111: warning: data definition has no type or storage class
/usr/src/lcdmod-1.0.2/lcd.c: In function `start_module':
/usr/src/lcdmod-1.0.2/lcd.c:656: warning: initialization from incompatible pointer type
make[2]: *** [/usr/src/lcdmod-1.0.2/lcd.o] Error 1
make[1]: *** [_module_/usr/src/lcdmod-1.0.2] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.18-vserver-2.0.2-r8'
make: *** [lcd2.6] Error 2
Активен

http://www.openlab.info мрежова лаборатория

ivo1204

  • Напреднали
  • *****
  • Публикации: 987
    • Профил
Търся Помощ
« Отговор #5 -: Sep 21, 2007, 00:44 »
Начи моето мнение е да не използваш драйвер за тази работа .
Потърси с Гуглето , има програмки ,който ще ти свършат същата работа. Ще си независим от версията на ядрото ,по лесно се променя и тества ,  
На мен ми се струва ,че съм виждал нещо подобно и в ядрото.Вземи пак потърси ( не е стабилната , с пачовете)
Иначе ,преди година май беше , ми изпаднаха две платки с дислей 16 знака , та си поиграх . Не знаех точно какъв е контролера , та предположих че е  HD44780 съвместим.
Та лесно е. Вързах на паралелния порт . Гледам може и сериал ,ама аз нямам , а за УСБ , трябаше оше чипове.
Например за проба ,сега ,
http://lcd-linux.sourceforge.net/
си се компилира. Обаче , пак ,аз съм против модулите.



Активен

mhydra

  • Напреднали
  • *****
  • Публикации: 715
  • Distribution: Fedora, Mandriva
  • Window Manager: GNOME
    • Профил
Търся Помощ
« Отговор #6 -: Sep 21, 2007, 12:42 »
Ама тая джаджа към серийния порт ли се закача?
Ако е така то защо изобщо ти трябва драйвер? Както е казал човека по напред има си програмки за тая работа. По сигурно, и по ефективно според мен също.
За нещо за което не ти трябва някаква функционалност от страна на ядрото която не може да бъде използвана по друг път не виждам нужда да се ползва модул за целта.
Сегфаулт в модул в ядрото ти скапва целия комп докато сегфаулт в една обикновенна програмка просто ти скапва програмата.
Активен

Указвам помощ за всичко свързано с Fedora и Мандрива.
Може да ме търсите на ICQ.

Uvigii

  • Напреднали
  • *****
  • Публикации: 381
    • Профил
Търся Помощ
« Отговор #7 -: Sep 21, 2007, 19:23 »
Закача се на паралелния порт. Причините да искам да продължа да си го ползвам са много (най-важните):
* За разлика от другите решения които съм намерил това се ползва елементарно:
Примерен код
echo "Message 123">/dev/lcd

* Съществуващи приложения които го ползват в момента.

Поздрави
Активен

http://www.openlab.info мрежова лаборатория

ivo1204

  • Напреднали
  • *****
  • Публикации: 987
    • Профил
Търся Помощ
« Отговор #8 -: Sep 22, 2007, 03:40 »
Начи не знам за какво ще го ползваш и как , то разбира се си е твое решение ,  но  @Uvigii , поне  отвори линка ,който съм ти дал и виж става ли ?
Има и пример ,часовник :
#!/bin/sh
echo -en '\14' > /dev/lcd
while true;
do
#   echo -en "\033[f`date +\"%A %e %b\"`\n`date +%r`" > /dev/lcd
   echo -en "\14`date +\"%A %e %b\"`\n`date +%r`" > /dev/lcd
   sleep 1s
done
и се компилира.
Активен

ivo1204

  • Напреднали
  • *****
  • Публикации: 987
    • Профил
Търся Помощ
« Отговор #9 -: Sep 22, 2007, 16:40 »
@Uvigii,
Сега ,погледнах го и този , който ти искаш.
1. Маке файла го махам , слагам този:

obj-m    := lcd.o
KDIR    := /lib/modules/$(shell uname -r)/build
PWD    := $(shell pwd)
default:
   $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

(За тези файлове копи->пейст не работи , трябва точно <TAB>  , 8 празни интервала ,пред $(MAKE) )

2.Навсякъде ,където има
#include <linux/config.h>
го замествам  с:
#include <linux/autoconf.h>

3. Грешката ,която се получава е в:

91. static struct pardevice *pd;
92.#endif
93.static int io = DFLT_BASE;
94.static int disp_rows = DFLT_DISP_ROWS;
95.static int disp_cols = DFLT_DISP_COLS;
.................
109.MODULE_PARM( io, "i" );
110.MODULE_PARM( disp_rows, "i" );
111.MODULE_PARM( disp_cols, "i" );

Това е старото , новото е:

109.module_param(io, int , 0444);
110.module_param( disp_rows,int , 0444);
111.module_param(disp_cols, ,int , 0444);

И се компилира .Разбира се това е козметика , никакво вникване в програмата , аз и не мога да я тествам...



Активен

Uvigii

  • Напреднали
  • *****
  • Публикации: 381
    • Профил
Търся Помощ
« Отговор #10 -: Sep 24, 2007, 22:42 »
Цитат (ivo1204 @ Сеп. 22 2007,17:40)
@Uvigii,
Сега ,погледнах го и този , който ти искаш.
..............
И се компилира .Разбира се това е козметика , никакво вникване в програмата , аз и не мога да я тествам...

Сърдечно благодаря! Ще прегледам дали работи и ще пиша пак !
Активен

http://www.openlab.info мрежова лаборатория