Thanks, John.

Can I use the same source code for the driver developed for kernel 2.4 also in 
2.6 ?

What about the makefile ?

As you can see, I have no experience about developing kernel modules.
Is there any good how-to or tutorial about writing Linux kernel modules, 
especially for 2.6 ?

Best regards,
Giovanni


John Crispin <[EMAIL PROTECTED]> wrote:                               2.6 
modules always end in .ko so an insmod on a .o file will always  
 fail under  2.6
 
 Quoting Giovanni <[EMAIL PROTECTED]>:
 
 > It is passed a long time since the last time that I tried to compile  
 >  the servo.c kernel module.
 >
 > Today, I restarted my activity on the Fox board and tried to compile  
 >  the servo module.
 >
 > I succeeded with the compilation, but I failed when I tried to   
 > insert the module into the kernel of the Fox.
 >
 > I did the following:
 >
 > [EMAIL PROTECTED] /mnt/flash/root]1400# insmod servo.o
 > Using servo.o
 > insmod: cannot insert `servo.o': Invalid module format (-1): Exec   
 > format error
 > [EMAIL PROTECTED] /mnt/flash/root]1400#
 >
 > As you see, I get and "Invalid module format" error.
 >
 > As you informed last time, in the source file I just commented out the lines
 >  > INC_MOD_USE_COUNT ;
 >> and
 >> DEC_MOD_USE_COUNT;
 >
 > I am using the 2.6 linux kernel. As far as I know the servo.c was   
 > developed as a kernel module for 2.4. Is that the problem ? If so,   
 > how can I make this kernel module for 2.6 ?
 >
 > In the attachment, you can see the files that I used.
 >
 > Best  regards,
 > Giovanni
 >
 > Ernst Mayerhofer <[EMAIL PROTECTED]> wrote:                  
 >                   Sorry, I mean:
 >
 >  MOD_INC_USE_COUNT;
 >  and
 >  MOD_DEC_USE_COUNT;
 >
 >  of course. wish you a nice sunday.
 >
 >  2007/2/11, Ernst Mayerhofer <[EMAIL PROTECTED]>:
 >  >
 >  > I wrote the module for kernel 2.4.
 >  > if i understand this error messages correctly, just comment out the lines
 >  > INC_MOD_USE_COUNT ;
 >  > and
 >  > DEC_MOD_USE_COUNT;
 >  >
 >  > hopefully it will work now.
 >  >
 >  > greets,ernst
 >  >
 >  > 2007/2/11, Giovanni <[EMAIL PROTECTED]>:
 >  > >
 >  > >   I tried to compile the servo.c program with the makefile indicated in
 >  > > the email, but I get a compilation error.
 >  > >
 >  > > Here is the Makefile:
 >  > >
 >  > > AXIS_TOP_DIR=/home/giovanni/fox/sdk/sdk-2.01-phrozen-new/devboard-R2_01
 >  > >
 >  > > TARGET := servo
 >  > > WARN := -W -Wstrict-prototypes -Wmissing-prototypes
 >  > > INCLUDE := -isystem /home/giovanni/fox/sdk/sdk-2.01-phrozen-new
 >  > > /devboard-R2_01/os/linux-2.6/include
 >  > > CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE} -mlinux -DCRISMMU
 >  > > CC := gcc-cris
 >  > >
 >  > > PREVENT_RECURSIVE_INCLUDE = 1
 >  > >
 >  > > PATH=$PATH:/usr/local/cris
 >  > >
 >  > > ${TARGET}.o: ${TARGET}.c
 >  > >
 >  > > .PHONY: clean
 >  > >
 >  > > clean:
 >  > > rm -rf {TARGET}.o
 >  > >
 >  > > Here is the error:
 >  > >
 >  > >   
 > [EMAIL PROTECTED]:~/fox/sdk/sdk-2.01-phrozen-new/devboard-R2_01/apps/servo$
 >  > > make
 >  > > gcc-cris -O2 -DMODULE -D__KERNEL__ -W -Wstrict-prototypes
 >  > > -Wmissing-prototypes -isystem /home/giovanni/fox/sdk/sdk-
 >  > > 2.01-phrozen-new/devboard-R2_01/os/linux-2.6/include -mlinux -DCRISMMU
 >  > > -c -o servo.o servo.c
 >  > > servo.c:29: warning: static declaration for `init_module' follows
 >  > > non-static
 >  > > servo.c:30: warning: static declaration for `cleanup_module' follows
 >  > > non-static
 >  > > servo.c: In function `device_open':
 >  > > servo.c:138: `MOD_INC_USE_COUNT' undeclared (first use in this function)
 >  > > servo.c:138: (Each undeclared identifier is reported only once
 >  > > servo.c:138: for each function it appears in.)
 >  > > servo.c: In function `device_release':
 >  > > servo.c:158: `MOD_DEC_USE_COUNT' undeclared (first use in this function)
 >  > > make: *** [servo.o] Error 1
 >  > >
 >  > > How can I do to make this file compile correctly ?
 >  > >
 >  > > Best regards,
 >  > > Giovanni
 >  > >
 >  > > Ernst Mayerhofer   
 > <[EMAIL PROTECTED]<ernst.mayerhofer%40gmail.com>>
 >  > > wrote: if you want to make something which works really well,   
 > you have to do
 >  > > it in
 >  > >
 >  > > the kernel ;-)
 >  > >
 >  > > I made a kernel module once. As I modified it now for you and didn't
 >  > > test it
 >  > > on the foxboard, there might be a problem, so feel free to ask me if
 >  > > there
 >  > > is some problem.
 >  > >
 >  > > just compile the servo.c attached with the also attached makefile. you
 >  > > have
 >  > > to change the path of AXIS_TOP_DIR in the Makefile.
 >  > >
 >  > > once you have compiled it, transfer it to the foxboard and type:
 >  > > $ insmod servo.o
 >  > > if you want to see the kernel log messages, type
 >  > > $ dmesg
 >  > > then you can make a new device node , eg
 >  > > $ mknod c /etc/servo c 249 0
 >  > > and, if you want to set the servo to a specific position, write the
 >  > > value of
 >  > > T_on in us to /etc/servo:
 >  > > $ echo 500 > /etc/servo
 >  > >
 >  > > it should work!
 >  > > notice that if you want to use it, you have to enable the fast timer
 >  > > api.
 >  > >
 >  > > greets and pardon for my bad english,
 >  > >
 >  > > ernst mayerhofer
 >  > >
 >  > > 2007/2/2, Giovanni <[EMAIL PROTECTED] <pino_otto%40yahoo.com>>:
 >  > > >
 >  > > > This solution sounds cool.
 >  > > >
 >  > > > Did you try it with a real case ?
 >  > > >
 >  > > > I would like to run some real working code based on this idea. If you
 >  > > have
 >  > > > some code ready to run, can you post it ? Otherwise we can collaborate
 >  > > to
 >  > > > develop some working code and test it.
 >  > > >
 >  > > > Best regards,
 >  > > > Giovanni
 >  > > >
 >  > > > spargelzack <[EMAIL PROTECTED]   
 > <spargelzack%40yahoo.com><spargelzack%40yahoo.com>>
 >  > > wrote:
 >  > > > (sorry if this shows up twice, i'm not familiar with the yahoo groups
 >  > > >
 >  > > > interface yet)
 >  > > >
 >  > > > Hi Everybody
 >  > > >
 >  > > > I found a cheap + fast solution for using servos with the foxboard.
 >  > > >
 >  > > > First, there is a way to use the i/o lines not described on the
 >  > > > acmesystems website (it's well known on the axis developer website
 >  > > > though). You can use write() on Ports A+B after proper initialization.
 >  > > >
 >  > > > The Clock interval is around 5 us, so you have to pass about 4000
 >  > > > values for a full 2ms period.
 >  > > >
 >  > > > But as i found out, the 20ms interval isn't all that important. What
 >  > > > matters is the length of the pulse.
 >  > > >
 >  > > > So, here's my code:
 >  > > >
 >  > > > --
 >  > > > #include <stdio.h>
 >  > > > #include "stdlib.h"
 >  > > > #include "unistd.h"
 >  > > > #include "sys/ioctl.h"
 >  > > > #include "fcntl.h"
 >  > > > #include <sys/time.h>
 >  > > > #include <asm/etraxgpio.h>
 >  > > >
 >  > > > int main(int argc, char **argv){
 >  > > > int fd;
 >  > > > int i;
 >  > > > int pos;
 >  > > > unsigned char mask;
 >  > > > unsigned char period[4000];
 >  > > >
 >  > > > if(argc > 1)
 >  > > > pos = atoi(argv[1]);
 >  > > > else
 >  > > > pos = 100;
 >  > > >
 >  > > > // better use memset() here, but this is proof-of-concept code
 >  > > > for(i=0; i<pos+1; i++){
 >  > > > if(pos > i)
 >  > > > period[i] = 0xFF;
 >  > > > else
 >  > > > period[i] = 0;
 >  > > > }
 >  > > >
 >  > > > fd = open("/dev/gpiob", O_RDWR);
 >  > > >
 >  > > > if(!fd){
 >  > > > printf("open error\n");
 >  > > > exit(-1);
 >  > > > }
 >  > > >
 >  > > > mask = 1<<6 | 1<<7; // use pins PB6 and PB7 according to the
 >  > > > fox pinout
 >  > > >
 >  > > > // prepare for write()
 >  > > > if(ioctl(fd, _IO(ETRAXGPIO_IOCTYPE, IO_CFG_WRITE_MODE),
 >  > > > IO_CFG_WRITE_MODE_VALUE(1, mask, 1<<1))){
 >  > > > perror("ioctl error");
 >  > > > exit(-1);
 >  > > > }
 >  > > >
 >  > > > for(;;){
 >  > > > write(fd, &period, pos+1); // write the pulse,
 >  > > > followed by a zero to set the output
 >  > > > usleep(5000); // let the CPU breathe a bit..
 >  > > > }
 >  > > > }
 >  > > > --
 >  > > >
 >  > > > This only works with ports A and B, not with the G line.
 >  > > >
 >  > > > Supply any value between 100 and 400 as first argument to set the
 >  > > > position of two servos connected to PB6 and PB7.
 >  > > >
 >  > > > example:
 >  > > >
 >  > > > ./motor 180
 >  > > >
 >  > > > This uses LESS THAN 1% CPU when running.
 >  > > >
 >  > > > This is proof of concept code, so it's UGLY AND NOT USEFUL OUT OF THE
 >  > > > BOX. Also, my english sucks a bit.
 >  > > >
 >  > > > --- In [email protected]   
 > <foxboard%40yahoogroups.com><foxboard%40yahoogroups.com>,
 >  > > "zooltheno1"
 >  > > > <[EMAIL PROTECTED]> wrote:
 >  > > > >
 >  > > > > Hi
 >  > > > > I want to use RC-Servos with the Foxboard, the normal interfall is
 >  > > > > 1-2ms and 20ms pause.
 >  > > > > I tried to use udelay for the delay, put the minimum is 40ms,
 >  > > > > which is far to slow, even normal AC is faster.
 >  > > > > How could I get the nesasery delay without 100% CPU load ?
 >  > > > >
 >  > > > > Bye
 >  > > > > Ralph
 >  > > > >
 >  > > >
 >  > > >
 >  > > >
 >  > > >
 >  > > >
 >  > > > ------------------------------------------------
 >  > > > Resources are limited, Imagination is unlimited.
 >  > > >
 >  > > > ---------------------------------
 >  > > > Want to start your own business? Learn how on Yahoo! Small Business.
 >  > > >
 >  > > > [Non-text portions of this message have been removed]
 >  > > >
 >  > > >
 >  > > >
 >  > >
 >  > > [Non-text portions of this message have been removed]
 >  > >
 >  > >
 >  > >
 >  > >
 >  > >
 >  > > ------------------------------------------------
 >  > > Resources are limited, Imagination is unlimited.
 >  > >
 >  > > ---------------------------------
 >  > > Get your own web address.
 >  > > Have a HUGE year through Yahoo! Small Business.
 >  > >
 >  > > [Non-text portions of this message have been removed]
 >  > >
 >  > >
 >  > >
 >  >
 >  >
 >
 >  [Non-text portions of this message have been removed]
 >
 >
 >
 >
 >
 >
 > ------------------------------------------------
 > Resources are limited, Imagination is unlimited.
 >
 > If you want to call me: http://www.jaxtr.com/pino_otto
 >
 >
 >
 > ---------------------------------
 > Shape Yahoo! in your own image.  Join our Network Research Panel today!
 
 
     
                               


------------------------------------------------
Resources are limited, Imagination is unlimited.

If you want to call me: http://www.jaxtr.com/pino_otto


       
---------------------------------
 Check out  the hottest 2008 models today at Yahoo! Autos.

Reply via email to