SIGILL using timer in mcf5307
angelo <[email protected]> Sun, 12 Jun 2016 14:55:23 +0200
| Newsgroups | gmane.linux.uclinux.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi all,
i was testing a linux setitimer to make some led blink,
from following c++ code:
static void timer_handler(int signum)
{
static unsigned short value = 0xff;
*((unsigned short *)0x10000248) = (value & 0xff);
value = ~value;
}
string cmd_parser::on_cmd_blink(const string &state)
{
stringstream ss;
struct sigaction sa;
struct itimerval timer;
memset(&timer, 0, sizeof(struct itimerval));
if (state == "on") {
/* install timer_handler as the signal handler for
SIGALRM. */
memset(&sa, 0, sizeof(sa));
sa.sa_handler = &timer_handler;
sigaction(SIGALRM, &sa, NULL);
/* configure the timer to expire after 0,5 sec... */
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 500000;
/* ... and every 0,5 sec after that. */
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 500000;
setitimer(ITIMER_REAL, &timer, NULL);
ss << "blinking on\r\n";
<<<<<<<<<<<<<
} else if (state == "off") {
/* timer stop */
setitimer(ITIMER_REAL, &timer, NULL);
ss << "blinking disabled\r\n";
}
return ss.str();
}
If i leave the line above marked with "<<<<<<<<<<<<<"
i get SIGILL on the execution of setitimer
if i comment the line out, timer works properly and led
blinks.
I have:
mcf5307
~ # cat /proc/version
uClinux version 3.10.0-uc0amcore-001 (angelo@jerusalem) (gcc
version 4.5.1 (GCC) ) #70 Wed May 4 21:37:35 CEST 2016
~ #
makefile:
PREFIX=/opt/toolchains/m68k/Sourcery_CodeBench_Lite_for_ColdFire_uClinux/bin/m68k-uclinux-
CPP=$(PREFIX)g++
STRIP=$(PREFIX)strip
FLTHDR=$(PREFIX)flthdr
LD=$(PREFIX)ld
BINNAME=cfbot
BINDIR=bin
SRCDIR=src
OBJDIR=obj
INCLUDES=-Iinclude
SRCS:= $(wildcard $(SRCDIR)/*.cc)
OBJS:= $(patsubst %.cc,%.o,$(SRCS))
OBJS:= $(patsubst $(SRCDIR)%,$(OBJDIR)%,$(OBJS))
CFLAGS=-Os -s -m5307 -ffunction-sections -fdata-sections
LDFLAGS=-m5307 -Wl,--gc-sections
LIBS=
TFTP="192.168.0.80\\nmode binary\\nput bin/cfbm /tmp"
$(BINDIR)/$(BINNAME): $(OBJS)
$(CPP) $(OBJS) $(LDFLAGS) -o $@ $(LIBS)
# $(STRIP) $@
# $(FLTHDR) -s 65535 $@
# atftp --option "mode octet" -p -l $(BINDIR)/$(BINNAME) -r
/tmp/$(BINNAME) 192.168.0.80
$(OBJDIR)/%.o: $(SRCDIR)/%.cc
$(CPP) $(CFLAGS) $(INCLUDES) -Wall -c -o $@ $<
clean:
rm -f bin/*
rm -f obj/*.o
Every help is appreciated,
thanks,
angelo
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev