initial mc1322x commit
based on commit aac3a355451d899f02737f2907af8c874ee4feba of git://git.devl.org/git/malvira/contiki-mc1322x.git
This commit is contained in:
parent
a453acd325
commit
1145fa9ba9
35
cpu/mc1322x/COPYING
Normal file
35
cpu/mc1322x/COPYING
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: COPYING,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
9
cpu/mc1322x/CREDITS
Normal file
9
cpu/mc1322x/CREDITS
Normal file
|
@ -0,0 +1,9 @@
|
|||
MC13224v library code, test routines, and handy tools
|
||||
|
||||
http://mc1322x.devl.org
|
||||
Mariano Alvira mar@devl.org
|
||||
|
||||
Parts of the build system came from U-boot and Darrel Harmon's
|
||||
"darrell's loader" for the AT91RM9200. Other parts from the Contiki
|
||||
OS.
|
||||
|
115
cpu/mc1322x/Makefile.mc1322x
Normal file
115
cpu/mc1322x/Makefile.mc1322x
Normal file
|
@ -0,0 +1,115 @@
|
|||
# -*- makefile -*-
|
||||
|
||||
# Adapted from Makefile.msp430
|
||||
# Adapted from Makefile.at91sam7
|
||||
|
||||
### Define the CPU directory
|
||||
CONTIKI_CPU=$(CONTIKI)/cpu/mc1322x
|
||||
|
||||
### Define the source files we have in the AT91SAM7S port
|
||||
|
||||
CONTIKI_CPU_DIRS = . lib src board dev ../arm/common/dbg-io
|
||||
|
||||
MC1322X = debug-uart.c rtimer-arch.c watchdog.c contiki-crm.c contiki-maca.c contiki-misc.c leds-arch.c leds.c contiki-uart.c slip-uart1.c
|
||||
|
||||
DBG_IO = dbg-printf.c dbg-snprintf.c dbg-sprintf.c strformat.c
|
||||
|
||||
CPU_LIBS = $(notdir $(wildcard $(CONTIKI_CPU)/lib/*.c))
|
||||
CPU_SRCS = $(notdir $(wildcard $(CONTIKI_CPU)/src/*.c)) $(notdir $(wildcard $(CONTIKI_CPU)/src/*.S))
|
||||
|
||||
CONTIKI_TARGET_SOURCEFILES += $(MC1322X) $(DBG_IO) $(CPU_LIBS) $(CPU_SRCS) $(SYSAPPS) $(ELFLOADER) \
|
||||
$(TARGETLIBS) $(UIPDRIVERS) $(USB)
|
||||
|
||||
CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES)
|
||||
|
||||
THREADS =
|
||||
|
||||
CROSS=arm-linux-
|
||||
|
||||
### Compiler definitions
|
||||
CC = $(CROSS)gcc
|
||||
LD = $(CROSS)gcc
|
||||
AS = $(CROSS)as
|
||||
AR = $(CROSS)ar
|
||||
NM = $(CROSS)nm
|
||||
OBJCOPY = $(CROSS)objcopy
|
||||
STRIP = $(CROSS)strip
|
||||
|
||||
PROJECT_OBJECTFILES += ${addprefix $(OBJECTDIR)/,$(CONTIKI_TARGET_MAIN:.c=.o)}
|
||||
|
||||
TEXT_BASE = 0x00400000
|
||||
export TEXT_BASE
|
||||
LINKERSCRIPT = $(CONTIKI_CPU)/mc1322x.lds
|
||||
|
||||
STARTUP=$(OBJECTDIR)/start.o
|
||||
|
||||
ARCH_FLAGS= -mcpu=arm7tdmi-s -mthumb-interwork -march=armv4t -mtune=arm7tdmi-s -DCONFIG_ARM -D__ARM__ #-Wcast-align
|
||||
THUMB_FLAGS= -mthumb -mcallee-super-interworking
|
||||
ARM_FLAGS=
|
||||
|
||||
CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) -I$(CONTIKI_CPU)/loader \
|
||||
-I$(CONTIKI_CPU)/dbg-io \
|
||||
-I$(CONTIKI)/platform/$(TARGET) \
|
||||
-I$(CONTIKI_CPU)/lib/include \
|
||||
-I$(CONTIKI_CPU)/src \
|
||||
-I$(CONTIKI_CPU)/board \
|
||||
${addprefix -I,$(APPDIRS)} \
|
||||
-DWITH_ASCII -DMCK=$(MCK) \
|
||||
-Werror $(ARCH_FLAGS) -g
|
||||
|
||||
CFLAGS += $(CFLAGSNO) -Os -DRUN_AS_SYSTEM -DROM_RUN -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -DTEXT_BASE=$(TEXT_BASE) -fno-builtin-printf -fno-builtin-sprintf
|
||||
LDFLAGS += -T $(LINKERSCRIPT) -nostartfiles -static -Wl,-Map=contiki-$(TARGET).map,-export-dynamic
|
||||
AFLAGS := $(AFLAGS_DEBUG) -D__ASSEMBLY__ $(CPPFLAGS) -gstabs
|
||||
|
||||
CDEPFLAGS = $(CFLAGS) -D __MAKING_DEPS__
|
||||
|
||||
### Setup directory search path for source files
|
||||
|
||||
CUSTOM_RULE_C_TO_OBJECTDIR_O=yes
|
||||
CUSTOM_RULE_C_TO_O=yes
|
||||
|
||||
CFLAGS += -I$(OBJECTDIR) -I$(CONTIKI_CPU)/board -DBOARD=$(TARGET)
|
||||
|
||||
$(OBJECTDIR)/board.h: $(OBJECTDIR)
|
||||
ln -sf ../$(CONTIKI_CPU)/board/$(TARGET).h $(OBJECTDIR)/board.h
|
||||
|
||||
|
||||
$(OBJECTDIR)/isr.o: $(CONTIKI_CPU)/src/isr.c
|
||||
$(CC) $(CFLAGS) $(ARM_FLAGS) $< -c -o $@
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) $(THUMB_FLAGS) $< -c
|
||||
|
||||
$(OBJECTDIR)/%.o: %.c
|
||||
$(CC) $(CFLAGS) $(THUMB_FLAGS) -c $< -o $@
|
||||
|
||||
CUSTOM_RULE_S_TO_OBJECTDIR_O = yes
|
||||
%.o: %.S
|
||||
$(CC) $(CFLAGS) $(AFLAGS) $(ARM_FLAGS) $< -c
|
||||
|
||||
$(OBJECTDIR)/%.o: %.S
|
||||
$(CC) $(CFLAGS) $(AFLAGS) $(ARM_FLAGS) $< -c -o $@
|
||||
|
||||
CUSTOM_RULE_C_TO_CO=yes
|
||||
|
||||
%.co: %.c
|
||||
$(CC) $(CFLAGS) -DAUTOSTART_ENABLE $(THUMB_FLAGS) $< -c -o $@
|
||||
|
||||
.PRECIOUS: %.bin %_$(TARGET).bin
|
||||
|
||||
%.ihex: %.$(TARGET)
|
||||
$(OBJCOPY) $^ -O ihex $@
|
||||
|
||||
%_$(TARGET).bin: %.elf
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
||||
symbols.c:
|
||||
@${CONTIKI}/tools/make-empty-symbols
|
||||
|
||||
%.$(TARGET): %_$(TARGET).bin
|
||||
@
|
||||
|
||||
%.elf: $(OBJECTDIR)/board.h %.co $(PROJECT_OBJECTFILES) contiki-$(TARGET).a $(STARTUP) $(OBJECTDIR)/symbols.o
|
||||
$(CC) $(LDFLAGS) $(CFLAGS) -nostartfiles -o $@ $(filter-out %.a,$^) $(filter %.a,$^) $(filter %.a,$^)
|
||||
|
||||
|
39
cpu/mc1322x/README.subtree
Normal file
39
cpu/mc1322x/README.subtree
Normal file
|
@ -0,0 +1,39 @@
|
|||
The Contiki MC1322x port includes libmc1322x as a subtree. This makes
|
||||
pulling updates to libmc1322x easy, but pushing changes from contiki
|
||||
to libmc1322x is not so easy. However, this should not stop you from
|
||||
implementing core features in contiki first, (especially if you are in
|
||||
a bind). The way to do this is to make files prefixed with contiki-*
|
||||
in cpu/mc1322x and add them to Makefile.mc1322x.
|
||||
|
||||
For instance, if you need a routine called sleep, but libmc1322x
|
||||
doesn't have that yet, you could implement sleep in
|
||||
contiki-crm.c. Feel free to use as many contiki specific things in
|
||||
here as you want. We can pull these changes directly into the contiki
|
||||
tree. There is nothing stopping you from making changes to the lib
|
||||
files --- in fact you should if that is the right thing to do (and
|
||||
then push your changes upstream). The subtree merge should make it
|
||||
easy to still pull updates.
|
||||
|
||||
You'll also notice that the libmc1322x build system is still
|
||||
present. This allows you to cd ./tests and make all of the libmc1322x
|
||||
unit tests as normal. This is a handy way to perform a sainity check
|
||||
on all of the mc1322x specific code.
|
||||
|
||||
The subtree was set up as follows:
|
||||
|
||||
From:
|
||||
http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
|
||||
|
||||
Moved mc1322x.lds to mc1322x.lds.contiki
|
||||
|
||||
Setup with:
|
||||
|
||||
git remote add -f libmc1322x git://git.devl.org/git/malvira/libmc1322x.git
|
||||
git read-tree --prefix=cpu/mc1322x -u libmc1322x/master
|
||||
git commit -m "Merge libmc1322x as a subdirectory"
|
||||
|
||||
|
||||
And to do subsequent merges from libmc1322x do:
|
||||
|
||||
git pull -s subtree libmc1322x master
|
||||
|
12
cpu/mc1322x/TODO
Normal file
12
cpu/mc1322x/TODO
Normal file
|
@ -0,0 +1,12 @@
|
|||
- openocd flashing
|
||||
use run_algorithm to hook ROM NVM functions
|
||||
see flash/stm32x.c
|
||||
|
||||
- add timestamp to received packets
|
||||
|
||||
- add a way to set modes: tx_only, rx_only, txrx. (so you can be lazy
|
||||
and have blocks of code that don't need to handle rx packets)
|
||||
|
||||
- beacon sync
|
||||
|
||||
- CCA and ED.
|
128
cpu/mc1322x/clock.c
Normal file
128
cpu/mc1322x/clock.c
Normal file
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: clock.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#include <sys/clock.h>
|
||||
#include <sys/cc.h>
|
||||
#include <sys/etimer.h>
|
||||
#include "dev/leds.h"
|
||||
|
||||
#include "contiki-conf.h"
|
||||
#include "mc1322x.h"
|
||||
|
||||
#include "contiki-conf.h"
|
||||
|
||||
#define MAX_TICKS (~((clock_time_t)0) / 2)
|
||||
|
||||
static volatile clock_time_t current_clock = 0;
|
||||
|
||||
volatile unsigned long seconds = 0;
|
||||
|
||||
void
|
||||
clock_init()
|
||||
{
|
||||
/* timer setup */
|
||||
/* CTRL */
|
||||
#define COUNT_MODE 1 /* use rising edge of primary source */
|
||||
#define PRIME_SRC 0xf /* Perip. clock with 128 prescale (for 24Mhz = 187500Hz)*/
|
||||
#define SEC_SRC 0 /* don't need this */
|
||||
#define ONCE 0 /* keep counting */
|
||||
#define LEN 1 /* count until compare then reload with value in LOAD */
|
||||
#define DIR 0 /* count up */
|
||||
#define CO_INIT 0 /* other counters cannot force a re-initialization of this counter */
|
||||
#define OUT_MODE 0 /* OFLAG is asserted while counter is active */
|
||||
|
||||
*TMR_ENBL = 0; /* tmrs reset to enabled */
|
||||
*TMR0_SCTRL = 0;
|
||||
*TMR0_CSCTRL =0x0040;
|
||||
*TMR0_LOAD = 0; /* reload to zero */
|
||||
*TMR0_COMP_UP = 1875; /* trigger a reload at the end */
|
||||
*TMR0_CMPLD1 = 1875; /* compare 1 triggered reload level, 10HZ maybe? */
|
||||
*TMR0_CNTR = 0; /* reset count register */
|
||||
*TMR0_CTRL = (COUNT_MODE<<13) | (PRIME_SRC<<9) | (SEC_SRC<<7) | (ONCE<<6) | (LEN<<5) | (DIR<<4) | (CO_INIT<<3) | (OUT_MODE);
|
||||
*TMR_ENBL = 0xf; /* enable all the timers --- why not? */
|
||||
|
||||
enable_irq(TMR);
|
||||
|
||||
}
|
||||
|
||||
void tmr0_isr(void) {
|
||||
if(bit_is_set(*TMR(0,CSCTRL),TCF1)) {
|
||||
current_clock++;
|
||||
if((current_clock % CLOCK_CONF_SECOND) == 0) {
|
||||
seconds++;
|
||||
#if BLINK_SECONDS
|
||||
leds_toggle(LEDS_GREEN);
|
||||
#endif
|
||||
}
|
||||
|
||||
if(etimer_pending() &&
|
||||
(etimer_next_expiration_time() - current_clock - 1) > MAX_TICKS) {
|
||||
etimer_request_poll();
|
||||
}
|
||||
|
||||
|
||||
/* clear the compare flags */
|
||||
clear_bit(*TMR(0,SCTRL),TCF);
|
||||
clear_bit(*TMR(0,CSCTRL),TCF1);
|
||||
clear_bit(*TMR(0,CSCTRL),TCF2);
|
||||
return;
|
||||
} else {
|
||||
/* this timer didn't create an interrupt condition */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
clock_time_t
|
||||
clock_time(void)
|
||||
{
|
||||
return current_clock;
|
||||
}
|
||||
|
||||
unsigned long
|
||||
clock_seconds(void)
|
||||
{
|
||||
return seconds;
|
||||
}
|
||||
|
||||
/* clock delay from cc2430 */
|
||||
/* I don't see any documentation about how this routine is suppose to behave */
|
||||
void
|
||||
clock_delay(unsigned int len)
|
||||
{
|
||||
unsigned int i;
|
||||
for(i = 0; i< len; i++) {
|
||||
asm("nop");
|
||||
}
|
||||
}
|
121
cpu/mc1322x/contiki-crm.c
Normal file
121
cpu/mc1322x/contiki-crm.c
Normal file
|
@ -0,0 +1,121 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: contiki-crm.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#include "mc1322x.h"
|
||||
|
||||
#define CRM_DEBUG 1
|
||||
#if CRM_DEBUG
|
||||
#define PRINTF(...) printf(__VA_ARGS__)
|
||||
#else
|
||||
#define PRINTF(...)
|
||||
#endif
|
||||
|
||||
uint32_t cal_rtc_secs; /* calibrated 2khz rtc seconds */
|
||||
|
||||
void sleep(uint32_t opts, uint32_t mode)
|
||||
{
|
||||
|
||||
/* the maca must be off before going to sleep */
|
||||
/* otherwise the mcu will reboot on wakeup */
|
||||
// maca_off();
|
||||
*CRM_SLEEP_CNTL = opts;
|
||||
*CRM_SLEEP_CNTL = (opts | mode);
|
||||
|
||||
/* wait for the sleep cycle to complete */
|
||||
while(!bit_is_set(*CRM_STATUS,0)) { continue; }
|
||||
/* write 1 to sleep_sync --- this clears the bit (it's a r1wc bit) and powers down */
|
||||
set_bit(*CRM_STATUS,0);
|
||||
|
||||
/* now we are asleep */
|
||||
/* and waiting for something to wake us up */
|
||||
/* you did tell us how to wake up right? */
|
||||
|
||||
/* waking up */
|
||||
while(!bit_is_set(*CRM_STATUS,0)) { continue; }
|
||||
/* write 1 to sleep_sync --- this clears the bit (it's a r1wc bit) and finishes the wakeup */
|
||||
set_bit(*CRM_STATUS,0);
|
||||
|
||||
/* you may also need to do other recovery */
|
||||
/* such as interrupt handling */
|
||||
/* peripheral init */
|
||||
/* and turning the radio back on */
|
||||
|
||||
}
|
||||
|
||||
/* turn on the 32kHz crystal */
|
||||
/* once you start the 32xHz crystal it can only be stopped with a reset (hard or soft) */
|
||||
void enable_32khz_xtal(void)
|
||||
{
|
||||
static volatile uint32_t rtc_count;
|
||||
PRINTF("enabling 32kHz crystal\n\r");
|
||||
/* first, disable the ring osc */
|
||||
ring_osc_off();
|
||||
/* enable the 32kHZ crystal */
|
||||
xtal32_on();
|
||||
|
||||
/* set the XTAL32_EXISTS bit */
|
||||
/* the datasheet says to do this after you've check that RTC_COUNT is changing */
|
||||
/* the datasheet is not correct */
|
||||
xtal32_exists();
|
||||
|
||||
/* now check that the crystal starts */
|
||||
/* this blocks until it starts */
|
||||
/* it would be better to timeout and return an error */
|
||||
rtc_count = *CRM_RTC_COUNT;
|
||||
PRINTF("waiting for xtal\n\r");
|
||||
while(*CRM_RTC_COUNT == rtc_count) {
|
||||
continue;
|
||||
}
|
||||
/* RTC has started up */
|
||||
PRINTF("32kHZ xtal started\n\r");
|
||||
|
||||
}
|
||||
|
||||
void cal_ring_osc(void)
|
||||
{
|
||||
uint32_t cal_factor;
|
||||
PRINTF("performing ring osc cal\n\r");
|
||||
PRINTF("crm_status: 0x%0x\n\r",*CRM_STATUS);
|
||||
PRINTF("sys_cntl: 0x%0x\n\r",*CRM_SYS_CNTL);
|
||||
*CRM_CAL_CNTL = (1<<16) | (20000);
|
||||
while((*CRM_STATUS & (1<<9)) == 0);
|
||||
PRINTF("ring osc cal complete\n\r");
|
||||
PRINTF("cal_count: 0x%0x\n\r",*CRM_CAL_COUNT);
|
||||
cal_factor = (REF_OSC*1000) / *CRM_CAL_COUNT;
|
||||
cal_rtc_secs = (NOMINAL_RING_OSC_SEC * cal_factor)/100;
|
||||
PRINTF("cal factor: %d\n\r", cal_factor);
|
||||
PRINTF("hib_wake_secs: %d\n\r", cal_rtc_secs);
|
||||
set_bit(*CRM_STATUS,9);
|
||||
}
|
277
cpu/mc1322x/contiki-maca.c
Normal file
277
cpu/mc1322x/contiki-maca.c
Normal file
|
@ -0,0 +1,277 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: contiki-maca.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
/* contiki */
|
||||
#include "radio.h"
|
||||
#include "sys/process.h"
|
||||
#include "net/rime/packetbuf.h"
|
||||
#include "net/netstack.h"
|
||||
|
||||
#include "mc1322x.h"
|
||||
#include "contiki-conf.h"
|
||||
|
||||
#define CONTIKI_MACA_DEBUG 0
|
||||
#if CONTIKI_MACA_DEBUG
|
||||
#define PRINTF(...) printf(__VA_ARGS__)
|
||||
#else
|
||||
#define PRINTF(...)
|
||||
#endif
|
||||
|
||||
#ifndef MACA_RAW_PREPEND
|
||||
#define MACA_RAW_PREPEND 0xff
|
||||
#endif
|
||||
|
||||
#ifndef BLOCKING_TX
|
||||
#define BLOCKING_TX 1
|
||||
#endif
|
||||
|
||||
static volatile uint8_t tx_complete;
|
||||
|
||||
/* contiki mac driver */
|
||||
|
||||
int contiki_maca_init(void);
|
||||
int contiki_maca_on_request(void);
|
||||
int contiki_maca_off_request(void);
|
||||
int contiki_maca_read(void *buf, unsigned short bufsize);
|
||||
int contiki_maca_prepare(const void *payload, unsigned short payload_len);
|
||||
int contiki_maca_transmit(unsigned short transmit_len);
|
||||
int contiki_maca_send(const void *payload, unsigned short payload_len);
|
||||
int contiki_maca_channel_clear(void);
|
||||
int contiki_maca_receiving_packet(void);
|
||||
int contiki_maca_pending_packet(void);
|
||||
|
||||
const struct radio_driver contiki_maca_driver =
|
||||
{
|
||||
.init = contiki_maca_init,
|
||||
.prepare = contiki_maca_prepare,
|
||||
.transmit = contiki_maca_transmit,
|
||||
.send = contiki_maca_send,
|
||||
.read = contiki_maca_read,
|
||||
.receiving_packet = contiki_maca_receiving_packet,
|
||||
.pending_packet = contiki_maca_pending_packet,
|
||||
.channel_clear = contiki_maca_channel_clear,
|
||||
.on = contiki_maca_on_request,
|
||||
.off = contiki_maca_off_request,
|
||||
};
|
||||
|
||||
static volatile uint8_t contiki_maca_request_on = 0;
|
||||
static volatile uint8_t contiki_maca_request_off = 0;
|
||||
|
||||
static process_event_t event_data_ready;
|
||||
|
||||
volatile packet_t *prepped_p;
|
||||
|
||||
int contiki_maca_init(void) {
|
||||
prepped_p = 0;
|
||||
trim_xtal();
|
||||
vreg_init();
|
||||
contiki_maca_init();
|
||||
set_channel(0); /* channel 11 */
|
||||
set_power(0x12); /* 0x12 is the highest, not documented */
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* CCA not implemented */
|
||||
int contiki_maca_channel_clear(void) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* not sure how to check if a reception is in progress */
|
||||
int contiki_maca_receiving_packet(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int contiki_maca_pending_packet(void) {
|
||||
if (rx_head != NULL) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int contiki_maca_on_request(void) {
|
||||
contiki_maca_request_on = 1;
|
||||
contiki_maca_request_off = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int contiki_maca_off_request(void) {
|
||||
contiki_maca_request_on = 0;
|
||||
contiki_maca_request_off = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* it appears that the mc1332x radio cannot */
|
||||
/* receive packets where the last three bits of the first byte */
|
||||
/* is equal to 2 --- even in promiscuous mode */
|
||||
int contiki_maca_read(void *buf, unsigned short bufsize) {
|
||||
volatile uint32_t i;
|
||||
volatile packet_t *p;
|
||||
|
||||
if((p = rx_packet())) {
|
||||
PRINTF("maca read");
|
||||
#if CONTIKI_MACA_RAW_MODE
|
||||
/* offset + 1 and size - 1 to strip the raw mode prepended byte */
|
||||
/* work around since maca can't receive acks bigger than five bytes */
|
||||
PRINTF(" raw mode");
|
||||
p->length -= 1;
|
||||
p->offset += 1;
|
||||
#endif
|
||||
PRINTF(": p->length 0x%0x bufsize 0x%0x \n\r", p->length, bufsize);
|
||||
if((p->length) < bufsize) bufsize = (p->length);
|
||||
memcpy(buf, (uint8_t *)(p->data + p->offset), bufsize);
|
||||
#if CONTIKI_MACA_DEBUG
|
||||
for( i = p->offset ; i < (bufsize + p->offset) ; i++) {
|
||||
PRINTF(" %02x",p->data[i]);
|
||||
}
|
||||
#endif
|
||||
PRINTF("\n\r");
|
||||
free_packet(p);
|
||||
return bufsize;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int contiki_maca_prepare(const void *payload, unsigned short payload_len) {
|
||||
volatile int i;
|
||||
volatile packet_t *p;
|
||||
|
||||
if ((prepped_p == 0)
|
||||
&& (p = get_free_packet())) {
|
||||
PRINTF("contiki maca prepare");
|
||||
maca_on();
|
||||
#if CONTIKI_MACA_RAW_MODE
|
||||
p->offset = 1;
|
||||
p->length = payload_len + 1;
|
||||
#else
|
||||
p->offset = 0;
|
||||
p->length = payload_len;
|
||||
#endif
|
||||
if(payload_len > MAX_PACKET_SIZE) return RADIO_TX_ERR;
|
||||
memcpy((uint8_t *)(p->data + p->offset), payload, payload_len);
|
||||
#if CONTIKI_MACA_RAW_MODE
|
||||
p->offset = 0;
|
||||
p->data[0] = CONTIKI_MACA_PREPEND_BYTE;
|
||||
PRINTF(" raw mode");
|
||||
#endif
|
||||
#if CONTIKI_MACA_DEBUG
|
||||
PRINTF(": sending %d bytes\n\r", payload_len);
|
||||
for(i = p->offset ; i < (p->length + p->offset); i++) {
|
||||
PRINTF(" %02x",p->data[i]);
|
||||
}
|
||||
PRINTF("\n\r");
|
||||
#endif
|
||||
|
||||
prepped_p = p;
|
||||
|
||||
return RADIO_TX_OK;
|
||||
} else {
|
||||
PRINTF("couldn't get free packet for contiki_maca_send\n\r");
|
||||
return RADIO_TX_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
int contiki_maca_transmit(unsigned short transmit_len) {
|
||||
PRINTF("contiki maca transmit\n\r");
|
||||
#if BLOCKING_TX
|
||||
tx_complete = 0;
|
||||
#endif
|
||||
tx_packet(prepped_p);
|
||||
prepped_p = 0;
|
||||
#if BLOCKING_TX
|
||||
/* block until tx_complete, set by contiki_maca_tx_callback */
|
||||
/* there are many places in contiki that rely on the */
|
||||
/* transmit call to block */
|
||||
while(!tx_complete && (tx_head != 0));
|
||||
#endif
|
||||
}
|
||||
|
||||
int contiki_maca_send(const void *payload, unsigned short payload_len) {
|
||||
contiki_maca_prepare(payload, payload_len);
|
||||
contiki_maca_transmit(payload_len);
|
||||
return RADIO_TX_OK;
|
||||
}
|
||||
|
||||
PROCESS(contiki_maca_process, "maca process");
|
||||
PROCESS_THREAD(contiki_maca_process, ev, data)
|
||||
{
|
||||
volatile uint32_t i;
|
||||
int len;
|
||||
|
||||
PROCESS_BEGIN();
|
||||
|
||||
while (1) {
|
||||
PROCESS_WAIT_EVENT_UNTIL(ev == event_data_ready);
|
||||
// PROCESS_YIELD_UNTIL(ev == PROCESS_EVENT_POLL);
|
||||
|
||||
/* check if there is a request to turn the radio on or off */
|
||||
if(contiki_maca_request_on == 1) {
|
||||
contiki_maca_request_on = 0;
|
||||
maca_on();
|
||||
}
|
||||
|
||||
if(contiki_maca_request_off == 1) {
|
||||
contiki_maca_request_off = 0;
|
||||
maca_off();
|
||||
}
|
||||
|
||||
if (rx_head != NULL) {
|
||||
packetbuf_clear();
|
||||
len = contiki_maca_read(packetbuf_dataptr(), PACKETBUF_SIZE);
|
||||
if(len > 0) {
|
||||
packetbuf_set_datalen(len);
|
||||
NETSTACK_RDC.input();
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
PROCESS_END();
|
||||
}
|
||||
|
||||
void maca_rx_callback(volatile packet_t *p __attribute((unused))) {
|
||||
process_post(&contiki_maca_process, event_data_ready, NULL);
|
||||
}
|
||||
|
||||
#if BLOCKING_TX
|
||||
void maca_tx_callback(volatile packet_t *p __attribute((unused))) {
|
||||
tx_complete = 1;
|
||||
}
|
||||
#endif
|
43
cpu/mc1322x/contiki-maca.h
Normal file
43
cpu/mc1322x/contiki-maca.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: contiki-maca.h,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#ifndef CONTIKI_MACA_H
|
||||
#define CONTIKI_MACA_H
|
||||
|
||||
PROCESS_NAME(contiki_maca_process);
|
||||
|
||||
extern const struct radio_driver contiki_maca_driver;
|
||||
|
||||
#endif
|
61
cpu/mc1322x/contiki-mc1322x-conf.h
Normal file
61
cpu/mc1322x/contiki-mc1322x-conf.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: contiki-mc1322x-conf.h,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CONTIKI_MC1322X_CONF_H__
|
||||
#define __CONTIKI_MC1322X_CONF_H__
|
||||
|
||||
typedef int32_t s32_t;
|
||||
|
||||
/*
|
||||
* MCU and clock rate
|
||||
*/
|
||||
#define MCU_MHZ 24
|
||||
#define PLATFORM PLATFORM_MC1322X
|
||||
|
||||
/* Pre-allocated memory for loadable modules heap space (in bytes)*/
|
||||
#define MMEM_CONF_SIZE 256
|
||||
|
||||
typedef uint32_t clock_time_t;
|
||||
typedef unsigned char u8_t;
|
||||
typedef unsigned short u16_t;
|
||||
typedef unsigned long u32_t;
|
||||
typedef unsigned short uip_stats_t;
|
||||
|
||||
void clock_delay(unsigned int us2);
|
||||
void clock_wait(int ms10);
|
||||
void clock_set_seconds(unsigned long s);
|
||||
unsigned long clock_seconds(void);
|
||||
|
||||
#endif
|
42
cpu/mc1322x/contiki-misc.c
Normal file
42
cpu/mc1322x/contiki-misc.c
Normal file
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: contiki-misc.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "contiki.h"
|
||||
|
||||
int raise(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
43
cpu/mc1322x/contiki-uart.c
Normal file
43
cpu/mc1322x/contiki-uart.c
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: contiki-uart.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
int (*uart1_input_handler)(unsigned char c) = 0;
|
||||
|
||||
void
|
||||
uart1_set_input(int (*input)(unsigned char c))
|
||||
{
|
||||
uart1_input_handler = input;
|
||||
}
|
||||
|
41
cpu/mc1322x/contiki-uart.h
Normal file
41
cpu/mc1322x/contiki-uart.h
Normal file
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: contiki-uart.h,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#ifndef CONTIKI_UART_H
|
||||
#define CONTIKI_UART_H
|
||||
|
||||
extern int (*uart1_input_handler)(unsigned char c);
|
||||
|
||||
#endif
|
61
cpu/mc1322x/dbg-io.c
Normal file
61
cpu/mc1322x/dbg-io.c
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: dbg-io.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "uart1.h"
|
||||
#include "contiki-conf.h"
|
||||
|
||||
#undef putc
|
||||
#undef puts
|
||||
|
||||
int
|
||||
putc(int c, FILE *f)
|
||||
{
|
||||
dbg_putchar(c);
|
||||
return c;
|
||||
}
|
||||
|
||||
int
|
||||
puts(const char *s)
|
||||
{
|
||||
unsigned int i=0;
|
||||
while(s && *s!=0) {
|
||||
dbg_putchar(*s++); i++;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
12
cpu/mc1322x/debug-uart.c
Normal file
12
cpu/mc1322x/debug-uart.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
#include "contiki-conf.h"
|
||||
|
||||
unsigned int
|
||||
dbg_send_bytes(const unsigned char *s, unsigned int len)
|
||||
{
|
||||
unsigned int i=0;
|
||||
while(s && *s!=0) {
|
||||
if( i >= len) { break; }
|
||||
dbg_putchar(*s++); i++;
|
||||
}
|
||||
return i;
|
||||
}
|
27
cpu/mc1322x/debug-uart.h
Normal file
27
cpu/mc1322x/debug-uart.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
#ifndef __DEBUG_UART_H__1V2039076V__
|
||||
#define __DEBUG_UART_H__1V2039076V__
|
||||
|
||||
#ifndef dbg_setup_uart
|
||||
#define dbg_setup_uart dbg_setup_uart_default
|
||||
#endif
|
||||
|
||||
void
|
||||
dbg_setup_uart();
|
||||
|
||||
void
|
||||
dbg_set_input_handler(void (*handler)(const char *inp, unsigned int len));
|
||||
|
||||
unsigned int
|
||||
dbg_send_bytes(const unsigned char *seq, unsigned int len);
|
||||
|
||||
|
||||
void
|
||||
dbg_putchar(const char ch);
|
||||
|
||||
void
|
||||
dbg_blocking_putchar(const char ch);
|
||||
|
||||
void
|
||||
dbg_drain();
|
||||
|
||||
#endif /* __DEBUG_UART_H__1V2039076V__ */
|
80
cpu/mc1322x/leds-arch.c
Normal file
80
cpu/mc1322x/leds-arch.c
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: leds-arch.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#include "contiki-conf.h"
|
||||
#include "dev/leds.h"
|
||||
#include "mc1322x.h"
|
||||
#include "board.h"
|
||||
|
||||
#define LED_ARCH_RED (1ULL << LED_RED)
|
||||
#define LED_ARCH_GREEN (1ULL << LED_GREEN)
|
||||
#define LED_ARCH_BLUE (1ULL << LED_BLUE)
|
||||
|
||||
#define LED_ARCH_YELLOW (LED_ARCH_RED | LED_ARCH_GREEN )
|
||||
#define LED_ARCH_PURPLE (LED_ARCH_RED | LED_ARCH_BLUE)
|
||||
#define LED_ARCH_CYAN ( LED_ARCH_GREEN | LED_ARCH_BLUE)
|
||||
#define LED_ARCH_WHITE (LED_ARCH_RED | LED_ARCH_GREEN | LED_ARCH_BLUE)
|
||||
|
||||
/*FIXME: this is broken --- don't set all of the GPIO direction */
|
||||
void leds_arch_init(void)
|
||||
{
|
||||
gpio_pad_dir(LED_ARCH_WHITE);
|
||||
}
|
||||
|
||||
unsigned char leds_arch_get(void)
|
||||
{
|
||||
uint64_t led = (((uint64_t)*GPIO_DATA1) << 32) | *GPIO_DATA0;
|
||||
|
||||
return ((led & LED_ARCH_RED) ? 0 : LEDS_RED)
|
||||
| ((led & LED_ARCH_GREEN) ? 0 : LEDS_GREEN)
|
||||
| ((led & LED_ARCH_BLUE) ? 0 : LEDS_BLUE)
|
||||
| ((led & LED_ARCH_YELLOW) ? 0 : LEDS_YELLOW);
|
||||
|
||||
}
|
||||
|
||||
/*FIXME: this is broken --- it hits the entire GPIO data register and breaks the button sensor */
|
||||
void leds_arch_set(unsigned char leds)
|
||||
{
|
||||
uint64_t led;
|
||||
|
||||
led = (led & ~(LED_ARCH_RED|LED_ARCH_GREEN|LED_ARCH_YELLOW|LED_ARCH_BLUE))
|
||||
| ((leds & LEDS_RED) ? LED_ARCH_RED : 0)
|
||||
| ((leds & LEDS_GREEN) ? LED_ARCH_GREEN : 0)
|
||||
| ((leds & LEDS_BLUE) ? LED_ARCH_BLUE : 0)
|
||||
| ((leds & LEDS_YELLOW) ? LED_ARCH_YELLOW : 0);
|
||||
|
||||
gpio_data(led);
|
||||
}
|
||||
|
261
cpu/mc1322x/mc1322x.lds
Normal file
261
cpu/mc1322x/mc1322x.lds
Normal file
|
@ -0,0 +1,261 @@
|
|||
/* Script for -z combreloc: combine and sort reloc sections */
|
||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
|
||||
"elf32-littlearm")
|
||||
OUTPUT_ARCH(arm)
|
||||
SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
|
||||
SECTIONS
|
||||
{
|
||||
|
||||
SYS_STACK_SIZE = 1024;
|
||||
IRQ_STACK_SIZE = 256;
|
||||
FIQ_STACK_SIZE = 256;
|
||||
SVC_STACK_SIZE = 256;
|
||||
ABT_STACK_SIZE = 16;
|
||||
UND_STACK_SIZE = 16;
|
||||
HEAP_SIZE = 1024;
|
||||
|
||||
/* Read-only sections, merged into text segment: */
|
||||
PROVIDE (__executable_start = 0x00400000); . = 0x00400000;
|
||||
.text :
|
||||
{
|
||||
*start*.o (.text)
|
||||
*(.irq)
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
*(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
|
||||
} =0
|
||||
|
||||
.stack : {
|
||||
__stack_start__ = . ;
|
||||
|
||||
. += IRQ_STACK_SIZE;
|
||||
. = ALIGN (4);
|
||||
__irq_stack_top__ = . ;
|
||||
|
||||
. += FIQ_STACK_SIZE;
|
||||
. = ALIGN (4);
|
||||
__fiq_stack_top__ = . ;
|
||||
|
||||
. += SVC_STACK_SIZE;
|
||||
. = ALIGN (4);
|
||||
__svc_stack_top__ = . ;
|
||||
|
||||
. += ABT_STACK_SIZE;
|
||||
. = ALIGN (4);
|
||||
__abt_stack_top__ = . ;
|
||||
|
||||
. += UND_STACK_SIZE;
|
||||
. = ALIGN (4);
|
||||
__und_stack_top__ = . ;
|
||||
|
||||
. += SYS_STACK_SIZE;
|
||||
. = ALIGN (4);
|
||||
__sys_stack_top__ = . ;
|
||||
|
||||
__stack_end__ = .;
|
||||
}
|
||||
|
||||
.interp : { *(.interp) }
|
||||
.note.gnu.build-id : { *(.note.gnu.build-id) }
|
||||
.hash : { *(.hash) }
|
||||
.gnu.hash : { *(.gnu.hash) }
|
||||
.dynsym : { *(.dynsym) }
|
||||
.dynstr : { *(.dynstr) }
|
||||
.gnu.version : { *(.gnu.version) }
|
||||
.gnu.version_d : { *(.gnu.version_d) }
|
||||
.gnu.version_r : { *(.gnu.version_r) }
|
||||
.rel.dyn :
|
||||
{
|
||||
*(.rel.init)
|
||||
*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
|
||||
*(.rel.fini)
|
||||
*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
|
||||
*(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
|
||||
*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
|
||||
*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
|
||||
*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
|
||||
*(.rel.ctors)
|
||||
*(.rel.dtors)
|
||||
*(.rel.got)
|
||||
*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
|
||||
}
|
||||
.rela.dyn :
|
||||
{
|
||||
*(.rela.init)
|
||||
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
|
||||
*(.rela.fini)
|
||||
*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
|
||||
*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
|
||||
*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
|
||||
*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
|
||||
*(.rela.ctors)
|
||||
*(.rela.dtors)
|
||||
*(.rela.got)
|
||||
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
|
||||
}
|
||||
.rel.plt : { *(.rel.plt) }
|
||||
.rela.plt : { *(.rela.plt) }
|
||||
.init :
|
||||
{
|
||||
KEEP (*(.init))
|
||||
} =0
|
||||
.plt : { *(.plt) }
|
||||
.fini :
|
||||
{
|
||||
KEEP (*(.fini))
|
||||
} =0
|
||||
PROVIDE (__etext = .);
|
||||
PROVIDE (_etext = .);
|
||||
PROVIDE (etext = .);
|
||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
||||
.rodata1 : { *(.rodata1) }
|
||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
||||
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
|
||||
/* Adjust the address for the data segment. We want to adjust up to
|
||||
the same address within the page on the next page up. */
|
||||
|
||||
/* . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); */
|
||||
|
||||
. = ALIGN(4);
|
||||
. = DATA_SEGMENT_ALIGN(4,4);
|
||||
|
||||
/* Exception handling */
|
||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
||||
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
|
||||
/* Thread Local Storage sections */
|
||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||
.preinit_array :
|
||||
{
|
||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
||||
KEEP (*(.preinit_array))
|
||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
||||
}
|
||||
.init_array :
|
||||
{
|
||||
PROVIDE_HIDDEN (__init_array_start = .);
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
PROVIDE_HIDDEN (__init_array_end = .);
|
||||
}
|
||||
.fini_array :
|
||||
{
|
||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
||||
KEEP (*(.fini_array))
|
||||
KEEP (*(SORT(.fini_array.*)))
|
||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
||||
}
|
||||
.ctors :
|
||||
{
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
the constructors, so we make sure it is
|
||||
first. Because this is a wildcard, it
|
||||
doesn't matter if the user does not
|
||||
actually link against crtbegin.o; the
|
||||
linker won't look for a file to match a
|
||||
wildcard. The wildcard also means that it
|
||||
doesn't matter which directory crtbegin.o
|
||||
is in. */
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*crtbegin?.o(.ctors))
|
||||
/* We don't want to include the .ctor section from
|
||||
the crtend.o file until after the sorted ctors.
|
||||
The .ctor section from the crtend file contains the
|
||||
end of ctors marker and it must be last */
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
}
|
||||
.dtors :
|
||||
{
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*crtbegin?.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
}
|
||||
.jcr : { KEEP (*(.jcr)) }
|
||||
.data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
|
||||
.dynamic : { *(.dynamic) }
|
||||
. = DATA_SEGMENT_RELRO_END (0, .);
|
||||
.got : { *(.got.plt) *(.got) }
|
||||
.data :
|
||||
{
|
||||
__data_start = . ;
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
SORT(CONSTRUCTORS)
|
||||
}
|
||||
.data1 : { *(.data1) }
|
||||
_edata = .; PROVIDE (edata = .);
|
||||
__bss_start = .;
|
||||
__bss_start__ = .;
|
||||
.bss :
|
||||
{
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
/* Align here to ensure that the .bss section occupies space up to
|
||||
_end. Align after .bss to ensure correct alignment even if the
|
||||
.bss section disappears because there are no input sections.
|
||||
FIXME: Why do we need it? When there is no .bss section, we don't
|
||||
pad the .data section. */
|
||||
. = ALIGN(. != 0 ? 32 / 8 : 1);
|
||||
}
|
||||
_bss_end__ = . ; __bss_end__ = . ;
|
||||
. = ALIGN(32 / 8);
|
||||
|
||||
.heap : {
|
||||
__heap_start__ = . ;
|
||||
*(.heap);
|
||||
. += HEAP_SIZE;
|
||||
. = ALIGN (4);
|
||||
__heap_end__ = . ;
|
||||
}
|
||||
|
||||
|
||||
. = ALIGN(32 / 8);
|
||||
__end__ = . ;
|
||||
_end = .; PROVIDE (end = .);
|
||||
. = DATA_SEGMENT_END (.);
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section so we begin them at 0. */
|
||||
/* DWARF 1 */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
/* GNU DWARF 1 extensions */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
/* DWARF 1.1 and DWARF 2 */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
/* DWARF 2 */
|
||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
/* SGI/MIPS DWARF 2 extensions */
|
||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
||||
.debug_typenames 0 : { *(.debug_typenames) }
|
||||
.debug_varnames 0 : { *(.debug_varnames) }
|
||||
/* DWARF 3 */
|
||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
||||
.debug_ranges 0 : { *(.debug_ranges) }
|
||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
||||
.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
|
||||
/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) }
|
||||
}
|
64
cpu/mc1322x/mtarch.h
Normal file
64
cpu/mc1322x/mtarch.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: mtarch.h,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file
|
||||
* AVR specific implementation of multithreading architecture
|
||||
* \author
|
||||
* Adam Dunkels <adam@sics.se>
|
||||
* \author
|
||||
* Simon Barner <barner@in.tum.de>
|
||||
*
|
||||
* @(#)$Id: mtarch.h,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#ifndef __MTARCH_H__
|
||||
#define __MTARCH_H__
|
||||
|
||||
#include "contiki-conf.h"
|
||||
|
||||
#ifdef MTARCH_CONF_STACKSIZE
|
||||
#define MTARCH_STACKSIZE MTARCH_CONF_STACKSIZE
|
||||
#else
|
||||
#define MTARCH_STACKSIZE 128
|
||||
#endif
|
||||
|
||||
struct mtarch_thread {
|
||||
unsigned char stack[MTARCH_STACKSIZE];
|
||||
unsigned char *sp;
|
||||
};
|
||||
|
||||
#endif /* __MTARCH_H__ */
|
||||
|
90
cpu/mc1322x/rtimer-arch.c
Normal file
90
cpu/mc1322x/rtimer-arch.c
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: rtimer-arch.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file
|
||||
* mc1322x-specific rtimer code
|
||||
* \author
|
||||
* Mariano Alvira <mar@devl.org>
|
||||
*/
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
/* contiki */
|
||||
#include "sys/energest.h"
|
||||
#include "sys/rtimer.h"
|
||||
|
||||
/* mc1322x */
|
||||
#include "utils.h"
|
||||
|
||||
#define DEBUG 0
|
||||
#if DEBUG
|
||||
#include <stdio.h>
|
||||
#define PRINTF(...) printf(__VA_ARGS__)
|
||||
#else
|
||||
#define PRINTF(...)
|
||||
#endif
|
||||
|
||||
void rtc_isr(void) {
|
||||
PRINTF("rtc_wu_irq\n\r");
|
||||
PRINTF("now is %u\n", rtimer_arch_now());
|
||||
disable_rtc_wu();
|
||||
disable_rtc_wu_irq();
|
||||
rtimer_run_next();
|
||||
clear_rtc_wu_evt();
|
||||
}
|
||||
|
||||
void
|
||||
rtimer_arch_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
rtimer_arch_schedule(rtimer_clock_t t)
|
||||
{
|
||||
volatile uint32_t now;
|
||||
now = rtimer_arch_now();
|
||||
PRINTF("rtimer_arch_schedule time %u; now is %u\n", t,now);
|
||||
if(now>t) {
|
||||
*CRM_RTC_TIMEOUT = 1;
|
||||
} else {
|
||||
*CRM_RTC_TIMEOUT = t - now;
|
||||
}
|
||||
|
||||
clear_rtc_wu_evt();
|
||||
enable_rtc_wu();
|
||||
enable_rtc_wu_irq();
|
||||
PRINTF("rtimer_arch_schedule CRM_RTC_TIMEOUT is %u\n", *CRM_RTC_TIMEOUT);
|
||||
}
|
61
cpu/mc1322x/rtimer-arch.h
Normal file
61
cpu/mc1322x/rtimer-arch.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: rtimer-arch.h,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file
|
||||
* Header file for the mc1322x-specific rtimer code
|
||||
* \author
|
||||
* Mariano Alvira <mar@devl.org>
|
||||
*/
|
||||
|
||||
#ifndef __RTIMER_ARCH_H__
|
||||
#define __RTIMER_ARCH_H__
|
||||
|
||||
/* contiki */
|
||||
#include "sys/rtimer.h"
|
||||
|
||||
/* mc1322x */
|
||||
#include "crm.h"
|
||||
#include "utils.h"
|
||||
|
||||
#if USE_32KHZ_XTAL
|
||||
#define RTIMER_ARCH_SECOND 32768
|
||||
#else
|
||||
#define RTIMER_ARCH_SECOND 2000 /* bogus value --- you should set xmac_config after calibration */
|
||||
#endif
|
||||
|
||||
#define rtimer_arch_now() (*CRM_RTC_COUNT)
|
||||
|
||||
#endif /* __RTIMER_ARCH_H__ */
|
97
cpu/mc1322x/slip-uart1.c
Normal file
97
cpu/mc1322x/slip-uart1.c
Normal file
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* Copyright (c) 2006, Swedish Institute of Computer Science
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: slip-uart1.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* Machine dependent mc1322x SLIP routines for UART1.
|
||||
*/
|
||||
|
||||
#include "contiki.h"
|
||||
#include "dev/slip.h"
|
||||
|
||||
#include "mc1322x.h"
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
slip_arch_writeb(unsigned char c)
|
||||
{
|
||||
uart1_putc(c);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
* The serial line is used to transfer IP packets using slip. To make
|
||||
* it possible to send debug output over the same line we send debug
|
||||
* output as slip frames (i.e delimeted by SLIP_END).
|
||||
*
|
||||
*/
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#if WITH_UIP
|
||||
int
|
||||
putchar(int c)
|
||||
{
|
||||
#define SLIP_END 0300
|
||||
static char debug_frame = 0;
|
||||
|
||||
if (!debug_frame) { /* Start of debug output */
|
||||
slip_arch_writeb(SLIP_END);
|
||||
slip_arch_writeb('\r'); /* Type debug line == '\r' */
|
||||
debug_frame = 1;
|
||||
}
|
||||
|
||||
slip_arch_writeb((char)c);
|
||||
|
||||
/*
|
||||
* Line buffered output, a newline marks the end of debug output and
|
||||
* implicitly flushes debug output.
|
||||
*/
|
||||
if (c == '\n') {
|
||||
slip_arch_writeb(SLIP_END);
|
||||
debug_frame = 0;
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
||||
#endif
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Initalize the RS232 port and the SLIP driver.
|
||||
*
|
||||
*/
|
||||
void
|
||||
slip_arch_init(unsigned long ubr)
|
||||
{
|
||||
uart1_set_input(slip_input_byte);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
63
cpu/mc1322x/watchdog.c
Normal file
63
cpu/mc1322x/watchdog.c
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* Copyright (c) 2010, Mariano Alvira <mar@devl.org> and other contributors
|
||||
* to the MC1322x project (http://mc1322x.devl.org) and Contiki.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the Contiki OS.
|
||||
*
|
||||
* $Id: watchdog.c,v 1.1 2010/06/09 14:43:22 maralvira Exp $
|
||||
*/
|
||||
|
||||
#include "dev/watchdog.h"
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
watchdog_init(void)
|
||||
{
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
watchdog_start(void)
|
||||
{
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
watchdog_periodic(void)
|
||||
{
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
watchdog_stop(void)
|
||||
{
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
watchdog_reboot(void)
|
||||
{
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
Loading…
Reference in a new issue