ts-7000
[Top] [All Lists]

Re: [ts-7000] Re: programming tools for TS-Linux

To:
Subject: Re: [ts-7000] Re: programming tools for TS-Linux
From: Eddie Dawydiuk <>
Date: Wed, 16 May 2007 14:15:07 -0700 (MST)
Hello,

> the Cygwin box can't find 'asm/unistd.h' when I run the
> 'make' command for modutils when I follow the instructions.
>
> there must be some fundamental things about developing for this that they
> assume you know and therefore they don't mention them in the documentation.

When cross-compiling a kernel under Cygwin please ensure you use the
following toolchain.

ftp://ftp.embeddedarm.com/ts-arm-linux-cd/cross-toolchains/crosstool-cygwin-gcc-3.3.2-glibc-2.3.2.tar.bz2

It would be helpful if you sent info showing the commands you've entered
and the output of the commands including the errors you are seeing.

-- 
Best Regards,
______________________________________________________________
  Eddie Dawydiuk, Technologic Systems | voice:  (480) 837-5200
  16610 East Laser Drive Suite 10     | fax:    (480) 837-5300
  Fountain Hills, AZ 85268            | web: www.embeddedARM.com

> On 5/16/07, David Hawkins <> wrote:
>> 
>> 
>> > I'm using the crosscompiler provided by TS. I have tried this on my PC
>> > using Cygwin and I have also tried it on an Ubuntu box.
>> >
>> > Same results, the 'hello world' is fine but the other file is the issue.
>> 
>> 
>> So, user-space 'hello world' works, but the kernel module appears
>> to be wrong ... let me reboot into Linux for a second ...
>> 
>> Here's the output of building the kernel module included inline
>> below ...
>> 
>>  driver]$ export ARCH=arm
>>  driver]$ export
>> PATH=/opt/crosstool/gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/bin/:$PATH
>>  driver]$ export CROSS_COMPILE=arm-unknown-linux-gnu-
>>  driver]$ make
>> arm-unknown-linux-gnu-gcc -DDEBUG -D__KERNEL__ -DMODULE -O2 -Wall
>> -I../include
>> -I/home/dwh/ts7300/linux24-modules/lib/modules/2.4.26-ts11/build/include
>> -c fake_module.c
>>  driver]$ file fake_module.o
>> fake_module.o: ELF 32-bit LSB relocatable, ARM, version 1 (ARM), not
>> stripped
>> 
>> So the file type of a kernel module is not the same as that of a
>> user-space app. This is expected, as the kernel does not use
>> shared libraries.
>> 
>> To build the kernel module, I unzipped the ts11 kernel, then
>> built it as per the TS instructions, and then installed the
>> modules into linux24-modules (as you can see in the Makefile).
>> You may get a depmod.old error when you install the modules,
>> however, things work ok for building modules.
>> 
>> Cheers
>> Dave
>> 
>> # Makefile
>> #
>> # Set ARCH, CROSS_COMPILE, and PATH before calling this
>> CC=$(CROSS_COMPILE)gcc
>> MODCFLAGS = -DDEBUG -D__KERNEL__ -DMODULE -O2 -Wall
>> #MODCFLAGS = -D__KERNEL__ -DMODULE -O2 -Wall
>> SHELL=sh
>> KERNEL_VERSION=2.4.26-ts11
>> TS7300_MODULES=/home/dwh/ts7300/linux24-modules
>> INCLUDES=-I../include
>> -I$(TS7300_MODULES)/lib/modules/$(KERNEL_VERSION)/build/include
>> 
>> all: fake_module.o
>> 
>> fake_module.o: fake_module.c
>> $(CC) $(MODCFLAGS) $(INCLUDES) -c fake_module.c
>> 
>> clean:
>> -rm -f *.o *~
>> 
>> /*----------------------------------------------------------
>> * Filename: fake_module.c
>> * Author: D.W. Hawkins
>> * Date: July-2002
>> * Platform: Linux
>> * Purpose: Device driver development
>> 
>> *----------------------------------------------------------
>> *
>> * This is a template driver for use while developing driver code.
>> *
>> * This template implements module load and unload and parameter
>> * interrogation.
>> *
>> * See fake_driver.c for a more complete driver template.
>> *
>> 
>> *----------------------------------------------------------
>> */
>> 
>> /*----------------------------------------------------------
>> * Includes
>> 
>> *----------------------------------------------------------
>> */
>> 
>> #include <linux/module.h>
>> #include <linux/kernel.h>
>> #include <linux/init.h>
>> 
>> #include <linux/fs.h> /* file and device operations */
>> #include <linux/sched.h> /* ISR structure definitions */
>> #include <linux/interrupt.h> /* IRQ handling - ISRs */
>> #include <linux/slab.h> /* used to resolve kmalloc/kfree */
>> #include <linux/pci.h> /* PCI related macros and functions */
>> 
>> #include <asm/uaccess.h> /* get/put_user, copy_to/from_user */
>> #include <asm/io.h> /* ioremap, iounmap, memcpy_to/fromio */
>> 
>> /*----------------------------------------------------------
>> * Global parameters
>> 
>> *----------------------------------------------------------
>> */
>> 
>> static char debug = 1;
>> 
>> /*----------------------------------------------------------
>> * Information extractable via `modinfo' command
>> 
>> *----------------------------------------------------------
>> *
>> * Use /sbin/modinfo -p fake_module.o (i.e., on the driver file)
>> * to see the parameters.
>> *
>> */
>> 
>> MODULE_DESCRIPTION("Fake device driver module");
>> MODULE_AUTHOR("David Hawkins");
>> MODULE_LICENSE("GPL");
>> 
>> MODULE_PARM(debug, "1b");
>> MODULE_PARM_DESC(debug, "Enable/disable debugging messages");
>> 
>> /*----------------------------------------------------------
>> * Debug message macro
>> 
>> *----------------------------------------------------------
>> *
>> * This macro is used to generate debug information in the module. A module
>> * compiled with the symbol DEBUG defined can turn message generation on or
>> * off using an IOCTL call. A module compiled without DEBUG defined will
>> * not generate messages. (See the schar example in Ch. 21 [Mat99]).
>> *
>> */
>> 
>> #ifdef DEBUG
>> #define MSG(string, args...) if (debug) printk("fake: " string, ##args)
>> #else
>> #define MSG(string, args...)
>> #endif
>> 
>> /*----------------------------------------------------------
>> * Module load/unload declaration and definition
>> 
>> *----------------------------------------------------------
>> */
>> int fake_init()
>> {
>> MSG("Module 'fake' loaded.\n");
>> return 0;
>> }
>> 
>> void fake_exit()
>> {
>> MSG("Module 'fake' unloaded\n");
>> }
>> 
>> module_init(fake_init);
>> module_exit(fake_exit);
>>
>> 
>




 
Yahoo! Groups Links

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

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/ts-7000/join
    (Yahoo! ID required)

<*> To change settings via email:
     
    

<*> 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