I'm trying to port contiki to the pic18f67j60, but I'm running into some
problems with sdcc that I can't figure out a way around.
Specifically, there's a set of macros to define processes (protothread),
and one that creates a list of these that should be automatically
started when the chip boots:
----------
struct process {
struct process *next;
const char *name;
PT_THREAD((* thread)(struct pt *, process_event_t, process_data_t));
};
#define PROCESS(name, strname) \
PROCESS_THREAD(name, ev, pdata); \
struct process name = { NULL, strname, \
process_thread_##name }
#define AUTOSTART_PROCESSES(...) \
struct process * const autostart_processes[] = {__VA_ARGS__, NULL}
-----------
When used in the application, these produce (straight from sdcc -E):
-----------
static char process_thread_hello_world_process(struct pt *process_pt,
process_event_t ev, process_data_t pdata);
struct process hello_world_process = {
0,
"Hello world process",
process_thread_hello_world_process
};
struct process * const autostart_processes[] = {
&hello_world_process, // ERROR!!!!
0
};
static char process_thread_hello_world_process(struct pt *process_pt,
process_event_t ev, process_data_t pdata) {
...
}
-----------
The above code compiles just fine with GCC, but returns "error 129:
pointer types incompatible: on the line reading "&hello_world_process".
The array itself is supposed to be a constant table containing pointers
to the volatile per-process structures, but sdcc isn't seeing it this way.
Is this a known issue, and if so are there plans to fix it? In the
meantime, can anybody think of a workaround? I'm going to try a fairly
radical restructuring that does the autostart very differently, but it
seems that if GCC and other compilers (even supposedly SDCC-z80) can
handle it, it would have to be a bug...
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user