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