ts-7000
[Top] [All Lists]

[ts-7000] Re: Building Kernel Module

To:
Subject: [ts-7000] Re: Building Kernel Module
From: "Phil" <>
Date: Tue, 28 Mar 2006 00:34:33 -0000
Hi Tom,

When I first was looking at the errors that you were getting, there 
was something in my head saying "I've seen this before somewhere". It 
took a while but I finally remembered what it was.

When I was first writing my kernel driver I wasn't using 
a 'configured' kernel source. So I have just been able to repeat your 
errors by unzipping a fresh kernel source, and compiling from that. 
Then switching back to my 'configued' kernel source, it compiles ok.

Try the these commands from your kernel_source/linux24 directory...

make ts7200_config
make oldconfig

Then try recompiling your module. Hopefully, that should work. Even 
though you are able to compile now with Yan's crosstools, it's still 
nice to know why sometimes!!

Cheers
Phil


--- In  "chentom60" <> wrote:
>
> Phil,
> 
> Thank you for your help. I just modified the gpio.c that Yan Seiner
> posted a few weeks ago. However, even his original one could not be
> compiled on my PC.
> 
> Use a similar command below to compile, change the /include to your
> own Linux2.4 ARM kernel source include.
>  arm-linux-gcc -D__KERNEL__ -DMODULE
> -I/usr/local/src/linux24/include -O -Wall   -c -o gpio.o gpio.c
> 
> #include <linux/module.h>
> #include <linux/kernel.h>
> #include <linux/init.h>
> #include <linux/ioport.h>
> #include <linux/errno.h>
> #include <linux/fs.h>
> #include <asm-arm/io.h>
> 
> #define TSDIO24region 0x11e00104
> #define TSDIO24length 4
> #define TSDIO24ctrl 0x11e00104
> #define TSDIO24regA 0x11e00105
> #define TSDIO24regB 0x11e00106
> #define TSDIO24regC 0x11e00107
> 
> // device numbers
> // major - 253
> // minor:
> // 0 - ctrl
> // 1 - regA
> // 2 - regB
> // 3 - regC
> 
> #define TSDIO24major 253
> 
> static char *mem_virt_addr;
> 
> static ssize_t tsdio24_write(struct file *file, const char *buf,
> size_t length, loff_t *ppos)
> {
>     printk("<1>in write\n");
>     return 0;
> }
> 
> static ssize_t tsdio24_read(struct file *file, char *buf, size_t
> length, loff_t *ppos)
> {
>     printk("0x%02x %02x %02x %02x\n",
>        readb(mem_virt_addr),
>        readb(mem_virt_addr+1),
>        readb(mem_virt_addr+2),
>        readb(mem_virt_addr+3));
>     return 0;
> }
> 
> static struct file_operations tsdio24_fops = {
>   write:  tsdio24_write,
>   read:  tsdio24_read
>   };
> 
> int init_TSgpio(void)
> {
>        int result;
> 
>        printk("<1>Hello world.\n");
> 
>        if (check_mem_region(TSDIO24region, TSDIO24length))
>        {
>                printk("TSgpio: memory already in use\n");
>                return -EBUSY;
>        }
>        request_mem_region(TSDIO24region, 
TSDIO24length, "TSDIO24gpio");
> 
>        if( (result = register_chrdev(TSDIO24major, "TSDIO24",
> &tsdio24_fops)) < 0)
>        {
>                printk(KERN_WARNING "tsdio24: can't get major %
d\n",TSDIO24major);
>                return result;
>        }
>        mem_virt_addr = __ioremap(TSDIO24region, TSDIO24length);
>        return 0;
> }
> 
> void exit_TSgpio(void)
> {
>        iounmap(mem_virt_addr);
>        unregister_chrdev(TSDIO24major,"TSDIO24");
>        release_mem_region(TSDIO24region, TSDIO24length);
>        printk("<1>Goodbye, cruel world.\n");
> }
> 
> 
> module_init(init_TSgpio);
> module_exit(exit_TSgpio);
> 
> 
> 
> --- In  "Phil" <mccarl1978@> wrote:
> >
> > Hi Tom,
> > 
> > It's a bit hard to work out what is happening just from the 
> > description. Is it possible for you to upload/attach the "gpio.c" 
> > file that you are trying to compile?
> > 
> > Cheers
> > Phil
> > 
> > 
> > 
> > --- In  "chentom60" <chentom60@> wrote:
> > >
> > > Hi,
> > > 
> > > I want to build a kernel module for my TS-7250 to control gpio, 
but
> > > can not compile. 
> > > 
> > > I am using the latest toolchain, kernel source, kernel module 
from 
> > > http://www.embeddedarm.com/linux/ARM.htm. However, there are 
lots 
> > of
> > > compiling errors. 
> > > 
> > > I am using this command
> > > $/usr/local/opt/crosstool/arm-linux/gcc-3.3.4-glibc-
2.3.2/bin/arm-
> > linux-gcc
> > > -D__KERNEL__ -DMODULE -I/home/tom/linux24/include -O -Wall   -
c -o
> > > gpio.o gpio.c
> > > 
> > > The #include <linux/fs.h> in my gpio.c alone will lead to lots 
of
> > > error below:
> > > 
> > > /home/tom/linux24/include/linux/fs.h:424: error: parse error 
before
> > > "dev_t"
> > > /home/tom/linux24/include/linux/fs.h:424: warning: no semicolon 
at 
> > end
> > > of struct or union
> > > /home/tom/linux24/include/linux/fs.h:427: error: parse error 
before
> > > '}' token
> > > /home/tom/linux24/include/linux/fs.h:433: error: parse error 
before
> > > "dev_t"
> > > /home/tom/linux24/include/linux/fs.h:433: warning: no semicolon 
at 
> > end
> > > of struct or union
> > > /home/tom/linux24/include/linux/fs.h:438: error: parse error 
before
> > > '}' token
> > > 
> > > .................
> > > /home/tom/linux24/include/linux/jffs2_fs_i.h:42: error: field
> > > `vfs_inode' has incomplete type
> > > .......................
> > > 
> > > I found probably a similar discussion last year on failing to 
build
> > > kernel module:
> > > http://groups.yahoo.com/group/ts-7000/message/969
> > > 
> > > I do not know what should I do to successfully build kernel 
> > modules?
> > > Any new toolchain or kernel source or some patches to download?
> > > 
> > > Tom
> > >
> >
>







 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/ts-7000/

<*> To unsubscribe from this group, send an email to:
    

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


<Prev in Thread] Current Thread [Next in Thread>
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU