Hello,
Currently, I use xenomai 2.3.1 on an ARM9.
I try to cross compile a module for my kernel and I don't find the right way
to do it, I guess.
Here is the code (it's to put the led off and on) :
#include <rtdm/rtdm_driver.h>
MODULE_LICENSE("GPL");
rtdm_task_t heartbeat_task;
int end = 0;
#define HEARTBEAT_PERIOD 100000000 /* 100 ms */
void heartbeat(void *cookie)
{
int state = 0;
int led_state[] = { 0, 1 };
while (!end) {
rtdm_task_wait_period();
at91_set_gpio_value(AT91_PIN_PB2,led_state[state++]);
if (state > 1)
state = 0;
}
}
int init_module(void)
{
leds_init();
return rtdm_task_init(&heartbeat_task, "heartbeat", heartbeat, NULL,99,
HEARTBEAT_PERIOD);
}
void cleanup_module(void)
{
end = 1;
rtdm_task_join_nrt(&heartbeat_task, 100);
at91_led_off(AT91_PIN_PB2);
}
And here is my Makefile :
CFLAGS = -g -D__KERNEL__ -DMODULE -I/usr/xenomai_arm-2.3.1uClibc/include
LDFLAGS = -D__KERNEL__ -DMODULE
test:test_leds.o
ld -r -o test.ko -L/usr/xenomai_arm-2.3.1uClibc/lib -lnative -lrtdm
test_leds.o
test_leds.o:test_leds.c
arm-linux-gcc $(CFLAGS) -c test_leds.c
When I compile, I have a lot of errors whose the begin is :
In file included from
/usr/src/ELDK_arm/usr/../arm/usr/include/linux/capability.h:45,
from /usr/src/ELDK_arm/usr/../arm/usr/include/linux/sched.h:46,
from /usr/src/ELDK_arm/usr/../arm/usr/include/linux/ptrace.h:81,
from /usr/xenomai_arm-2.3.1uClibc/include/asm/system.h:28,
from /usr/src/ELDK_arm/usr/../arm/usr/include/asm/bitops.h:23,
from /usr/src/ELDK_arm/usr/../arm/usr/include/linux/bitops.h:9,
from /usr/xenomai_arm-2.3.1uClibc/include/asm/atomic.h:29,
from /usr/xenomai_arm-2.3.1uClibc/include/rtdm/rtdm_driver.h:33,
from test_leds.c:21:
/usr/src/ELDK_arm/usr/../arm/usr/include/linux/spinlock.h:280: error: parse
error before '*' token
In file included from
/usr/src/ELDK_arm/usr/../arm/usr/include/linux/jiffies.h:4,
from /usr/src/ELDK_arm/usr/../arm/usr/include/linux/sched.h:51,
from /usr/src/ELDK_arm/usr/../arm/usr/include/linux/ptrace.h:81,
from /usr/xenomai_arm-2.3.1uClibc/include/asm/system.h:28,
from /usr/src/ELDK_arm/usr/../arm/usr/include/asm/bitops.h:23,
from /usr/src/ELDK_arm/usr/../arm/usr/include/linux/bitops.h:9,
from /usr/xenomai_arm-2.3.1uClibc/include/asm/atomic.h:29,
from /usr/xenomai_arm-2.3.1uClibc/include/rtdm/rtdm_driver.h:33,
from test_leds.c:21:
/usr/src/ELDK_arm/usr/../arm/usr/include/linux/calc64.h: In function
'do_div_llr':
/usr/src/ELDK_arm/usr/../arm/usr/include/linux/calc64.h:25: error: parse
error before '__asmeq'
In file included from
/usr/src/ELDK_arm/usr/../arm/usr/include/linux/sched.h:51,
from /usr/src/ELDK_arm/usr/../arm/usr/include/linux/ptrace.h:81,
from /usr/xenomai_arm-2.3.1uClibc/include/asm/system.h:28,
from /usr/src/ELDK_arm/usr/../arm/usr/include/asm/bitops.h:23,
I think it's a problem of option in the Makefile but I don't see. It's the
first time I do a module for Linux so ...
thanks
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help