From 33dfc386c9f9ccf4507125c8109f114a1292c5c9 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sun, 7 May 2017 14:08:34 -0400 Subject: [PATCH] avr: Merge misc.c into main.c Signed-off-by: Kevin O'Connor --- src/avr/Makefile | 2 +- src/avr/main.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++- src/avr/misc.c | 54 ----------------------------------------------- 3 files changed, 55 insertions(+), 56 deletions(-) delete mode 100644 src/avr/misc.c diff --git a/src/avr/Makefile b/src/avr/Makefile index ee3da1b5..444df365 100644 --- a/src/avr/Makefile +++ b/src/avr/Makefile @@ -8,7 +8,7 @@ dirs-y += src/avr lib/pjrc_usb_serial CFLAGS-y += -mmcu=$(CONFIG_MCU) # Add avr source files -src-y += avr/main.c avr/timer.c avr/gpio.c avr/misc.c +src-y += avr/main.c avr/timer.c avr/gpio.c src-$(CONFIG_AVR_WATCHDOG) += avr/watchdog.c src-$(CONFIG_AVR_USBSERIAL) += avr/usbserial.c ../lib/pjrc_usb_serial/usb_serial.c src-$(CONFIG_AVR_SERIAL) += avr/serial.c diff --git a/src/avr/main.c b/src/avr/main.c index 4a3f871a..a210300f 100644 --- a/src/avr/main.c +++ b/src/avr/main.c @@ -1,9 +1,13 @@ // Main starting point for AVR boards. // -// Copyright (C) 2016 Kevin O'Connor +// Copyright (C) 2016,2017 Kevin O'Connor // // This file may be distributed under the terms of the GNU GPLv3 license. +#include // AVR_STACK_POINTER_REG +#include // __malloc_heap_end +#include // memset +#include // _crc_ccitt_update #include "autoconf.h" // CONFIG_MCU #include "command.h" // DECL_CONSTANT #include "irq.h" // irq_enable @@ -11,6 +15,55 @@ DECL_CONSTANT(MCU, CONFIG_MCU); + +/**************************************************************** + * Memmory allocation + ****************************************************************/ + +// Allocate an area of memory +void * +alloc_chunk(size_t size) +{ + void *data = malloc(size); + if (!data) + shutdown("alloc_chunk failed"); + memset(data, 0, size); + return data; +} + +// Allocate an array of chunks +void * +alloc_chunks(size_t size, size_t count, size_t *avail) +{ + uint16_t memend = ALIGN(AVR_STACK_POINTER_REG, 256); + __malloc_heap_end = (void*)memend - CONFIG_AVR_STACK_SIZE; + extern char *__brkval; + uint16_t maxsize = __malloc_heap_end - __brkval - 2; + if ((int16_t)maxsize < 0) + maxsize = 0; + if (count * size > maxsize) + count = maxsize / size; + if (!count) + shutdown("alloc_chunks failed"); + *avail = count; + return alloc_chunk(count * size); +} + + +/**************************************************************** + * Misc functions + ****************************************************************/ + +// Optimized crc16_ccitt for the avr processor +uint16_t +crc16_ccitt(char *buf, uint8_t len) +{ + uint16_t crc = 0xFFFF; + while (len--) + crc = _crc_ccitt_update(crc, *buf++); + return crc; +} + // Main entry point for avr code. int main(void) diff --git a/src/avr/misc.c b/src/avr/misc.c deleted file mode 100644 index 9740a806..00000000 --- a/src/avr/misc.c +++ /dev/null @@ -1,54 +0,0 @@ -// AVR miscellaneous platform code -// -// Copyright (C) 2016,2017 Kevin O'Connor -// -// This file may be distributed under the terms of the GNU GPLv3 license. - -#include // AVR_STACK_POINTER_REG -#include // __malloc_heap_end -#include // memset -#include // _crc_ccitt_update -#include "autoconf.h" // CONFIG_AVR_STACK_SIZE -#include "board/misc.h" // alloc_maxsize -#include "command.h" // shutdown -#include "compiler.h" // ALIGN -#include "sched.h" // sched_shutdown - -// Optimized crc16_ccitt for the avr processor -uint16_t -crc16_ccitt(char *buf, uint8_t len) -{ - uint16_t crc = 0xFFFF; - while (len--) - crc = _crc_ccitt_update(crc, *buf++); - return crc; -} - -// Allocate an area of memory -void * -alloc_chunk(size_t size) -{ - void *data = malloc(size); - if (!data) - shutdown("alloc_chunk failed"); - memset(data, 0, size); - return data; -} - -// Allocate an array of chunks -void * -alloc_chunks(size_t size, size_t count, size_t *avail) -{ - uint16_t memend = ALIGN(AVR_STACK_POINTER_REG, 256); - __malloc_heap_end = (void*)memend - CONFIG_AVR_STACK_SIZE; - extern char *__brkval; - uint16_t maxsize = __malloc_heap_end - __brkval - 2; - if ((int16_t)maxsize < 0) - maxsize = 0; - if (count * size > maxsize) - count = maxsize / size; - if (!count) - shutdown("alloc_chunks failed"); - *avail = count; - return alloc_chunk(count * size); -}