From c7147f3805d7e567462da221154804369e037517 Mon Sep 17 00:00:00 2001 From: skarg Date: Tue, 25 Oct 2016 13:42:13 +0000 Subject: [PATCH] Fixed ports for Atmega8, Atmega168, and Xmega to compile. --- bacnet-stack/demo/handler/s_rp.c | 3 +- bacnet-stack/ports/atmega168/h_whois.c | 2 +- bacnet-stack/ports/atmega8/Makefile | 5 +- bacnet-stack/ports/atmega8/hardware.h | 21 +- bacnet-stack/ports/xplained/bacnet.c | 2 +- bacnet-stack/ports/xplained/bacnet.cproj | 317 +++++++++++++++++++---- bacnet-stack/ports/xplained/dlmstp.c | 2 +- 7 files changed, 284 insertions(+), 68 deletions(-) diff --git a/bacnet-stack/demo/handler/s_rp.c b/bacnet-stack/demo/handler/s_rp.c index 7213317f..b9104bd5 100644 --- a/bacnet-stack/demo/handler/s_rp.c +++ b/bacnet-stack/demo/handler/s_rp.c @@ -110,11 +110,12 @@ uint8_t Send_Read_Property_Request_Address( bytes_sent = datalink_send_pdu(dest, &npdu_data, &Handler_Transmit_Buffer[0], pdu_len); + if (bytes_sent <= 0) { #if PRINT_ENABLED - if (bytes_sent <= 0) fprintf(stderr, "Failed to Send ReadProperty Request (%s)!\n", strerror(errno)); #endif + } } else { tsm_free_invoke_id(invoke_id); invoke_id = 0; diff --git a/bacnet-stack/ports/atmega168/h_whois.c b/bacnet-stack/ports/atmega168/h_whois.c index dced9c60..8e5a4c0e 100644 --- a/bacnet-stack/ports/atmega168/h_whois.c +++ b/bacnet-stack/ports/atmega168/h_whois.c @@ -58,7 +58,7 @@ void handler_who_is( } else if (len != BACNET_STATUS_ERROR) { /* is my device id within the limits? */ target_device = Device_Object_Instance_Number(); - if (((target_device >= low_limit) && (target_device <= high_limit)) { + if ((target_device >= low_limit) && (target_device <= high_limit)) { Send_I_Am_Flag = true; } } diff --git a/bacnet-stack/ports/atmega8/Makefile b/bacnet-stack/ports/atmega8/Makefile index 2d41c583..a53c8374 100644 --- a/bacnet-stack/ports/atmega8/Makefile +++ b/bacnet-stack/ports/atmega8/Makefile @@ -16,6 +16,7 @@ SIZE = avr-size # Source locations BACNET_CORE = ../../src BACNET_INCLUDE = ../../include +BACNET_OBJECT_INCLUDE = ../../demo/object BACNET_DEMO = ../../demo # local files for this project @@ -27,7 +28,7 @@ CSRC = apdu.c \ timer.c # common demo files needed -DEMOSRC = +DEMOSRC = \ $(BACNET_DEMO)/handler/h_rp.c \ $(BACNET_DEMO)/handler/txbuf.c \ $(BACNET_DEMO)/handler/h_npdu.c \ @@ -73,7 +74,7 @@ CORESRC = \ # $(BACNET_CORE)/address.c \ ## Include Directories -INCLUDES = -I. -I$(BACNET_INCLUDE) +INCLUDES = -I. -I$(BACNET_INCLUDE) -I$(BACNET_OBJECT_INCLUDE) # Source to Object conversion COBJ = $(CSRC:.c=.o) diff --git a/bacnet-stack/ports/atmega8/hardware.h b/bacnet-stack/ports/atmega8/hardware.h index 4b08faff..ef5f9b4e 100644 --- a/bacnet-stack/ports/atmega8/hardware.h +++ b/bacnet-stack/ports/atmega8/hardware.h @@ -31,20 +31,19 @@ #endif #if defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ASM__) -#include -#define WATCHDOG_INIT() {BIT_CLEAR(MCUSR, WDRF); WDTCSR = 0;} + #include + #define WATCHDOG_INIT() {BIT_CLEAR(MCUSR, WDRF); WDTCSR = 0;} #else -#if !defined(__AVR_ATmega168__) -#error Firmware is configured for ATmega168 only (-mmcu=atmega168) - -#if defined(__AVR_ATmega168__) -#define WATCHDOG_INIT() {BIT_CLEAR(MCUSR, WDRF); WDTCSR = 0;} -#else -#define WATCHDOG_INIT() {BIT_CLEAR(MCUCSR, WDRF); WDTCR = 0;} + #if !defined(__AVR_ATmega168__) + #error Firmware is configured for ATmega168 only (-mmcu=atmega168) + #endif + #if defined(__AVR_ATmega168__) + #define WATCHDOG_INIT() {BIT_CLEAR(MCUSR, WDRF); WDTCSR = 0;} + #else + #define WATCHDOG_INIT() {BIT_CLEAR(MCUCSR, WDRF); WDTCR = 0;} + #endif #endif -#endif -#endif #include "iar2gcc.h" #include "avr035.h" diff --git a/bacnet-stack/ports/xplained/bacnet.c b/bacnet-stack/ports/xplained/bacnet.c index 086c49ed..92d6a2d4 100644 --- a/bacnet-stack/ports/xplained/bacnet.c +++ b/bacnet-stack/ports/xplained/bacnet.c @@ -118,7 +118,7 @@ void bacnet_task_timed( memcpy(pkt->buffer, PDUBuffer, MAX_MPDU); bacnet_address_copy(&pkt->src, &src); pkt->length = pdu_len; - Ringbuf_Data_Put(&Receive_Queue, pkt); + Ringbuf_Data_Put(&Receive_Queue, (volatile uint8_t *)pkt); } } } diff --git a/bacnet-stack/ports/xplained/bacnet.cproj b/bacnet-stack/ports/xplained/bacnet.cproj index 9049248d..6de395d3 100644 --- a/bacnet-stack/ports/xplained/bacnet.cproj +++ b/bacnet-stack/ports/xplained/bacnet.cproj @@ -2,7 +2,7 @@ 2.0 - 6.2 + 7.0 com.Atmel.AVRGCC8.C {ea031b72-ce11-41cc-bfdc-00625d02a537} ATxmega256A3BU @@ -160,7 +160,7 @@ - + @@ -213,69 +213,213 @@ + -mmcu=atxmega256a3bu -B "%24(PackRepoDir)\atmel\XMEGAA_DFP\1.0.36\gcc\dev\atxmega256a3bu" True True True True True False - - IOPORT_XMEGA_COMPAT - BACDL_MSTP - MAX_APDU=128 - MAX_TSM_TRANSACTIONS=1 - MSTP_PDU_PACKET_COUNT=2 - BACNET_VENDOR_ID=293 - MAX_ADDRESS_CACHE=32 - MAX_ANALOG_INPUTS=8 - BOARD=XMEGA_A3BU_XPLAINED - NDEBUG - - ..../config../ASF/xmega/drivers/rtc32../ASF/xmega/drivers/pmic../ASF/xmega/boards/xmega_a3bu_xplained../ASF/xmega/utils/preprocessor../ASF/common/utils../ASF/common/services/sleepmgr../ASF/xmega/drivers/sleep../ASF/common/services/gpio../ASF/xmega/drivers/tc../ASF/xmega/drivers/adc../ASF/xmega/drivers/cpu../ASF/common/boards../ASF/common/services/ioport../ASF/xmega/drivers/nvm../ASF/xmega/boards../ASF/xmega/utils../ASF/xmega/drivers/wdt../ASF/common/services/clock../ASF/common/services/delay../ASF/xmega/drivers/usart../ASF/xmega/services/pwm../ASF/common/drivers/nvm../ASF/common/services/serial/xmega_usart../ASF/common/services/serial../ASF/common/utils/stdio/stdio_serial../ASF/xmega/services/timeout../../../include../../../demo/object + + + IOPORT_XMEGA_COMPAT + BACDL_MSTP + MAX_APDU=128 + MAX_TSM_TRANSACTIONS=1 + MSTP_PDU_PACKET_COUNT=2 + BACNET_VENDOR_ID=293 + MAX_ADDRESS_CACHE=32 + MAX_ANALOG_INPUTS=8 + BOARD=XMEGA_A3BU_XPLAINED + NDEBUG + + + + + .. + ../config + ../ASF/xmega/drivers/rtc32 + ../ASF/xmega/drivers/pmic + ../ASF/xmega/boards/xmega_a3bu_xplained + ../ASF/xmega/utils/preprocessor + ../ASF/common/utils + ../ASF/common/services/sleepmgr + ../ASF/xmega/drivers/sleep + ../ASF/common/services/gpio + ../ASF/xmega/drivers/tc + ../ASF/xmega/drivers/adc + ../ASF/xmega/drivers/cpu + ../ASF/common/boards + ../ASF/common/services/ioport + ../ASF/xmega/drivers/nvm + ../ASF/xmega/boards + ../ASF/xmega/utils + ../ASF/xmega/drivers/wdt + ../ASF/common/services/clock + ../ASF/common/services/delay + ../ASF/xmega/drivers/usart + ../ASF/xmega/services/pwm + ../ASF/common/drivers/nvm + ../ASF/common/services/serial/xmega_usart + ../ASF/common/services/serial + ../ASF/common/utils/stdio/stdio_serial + ../ASF/xmega/services/timeout + ../../../include + ../../../demo/object + %24(PackRepoDir)\atmel\XMEGAA_DFP\1.0.36\include + + + Optimize for size (-Os) -fdata-sections True True True -std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax - libm + + + libm + + -Wl,--relax -Wl,--section-start=.BOOT=0x40000 -mrelax -DBOARD=XMEGA_A3BU_XPLAINED -DIOPORT_XMEGA_COMPAT - ../ASF/xmega/drivers/rtc32../ASF/xmega/drivers/pmic../ASF/xmega/boards/xmega_a3bu_xplained../ASF/xmega/drivers/nvm../ASF/xmega/utils/preprocessor../ASF/common/utils../ASF/common/services/sleepmgr../ASF/xmega/drivers/sleep../ASF/common/services/gpio../ASF/xmega/drivers/tc../ASF/xmega/drivers/adc../ASF/xmega/drivers/cpu../ASF/common/boards../ASF/common/services/ioport../ASF/xmega/boards../ASF/xmega/utils../ASF/common/services/clock../ASF/common/services/delay../ASF/xmega/drivers/wdt../ASF/xmega/drivers/usart../config.../ASF/xmega/services/pwm../ASF/common/drivers/nvm../ASF/common/services/serial/xmega_usart../ASF/common/services/serial../ASF/common/utils/stdio/stdio_serial../ASF/xmega/services/timeout - Optimize for size (-Os) + + + ../ASF/xmega/drivers/rtc32 + ../ASF/xmega/drivers/pmic + ../ASF/xmega/boards/xmega_a3bu_xplained + ../ASF/xmega/drivers/nvm + ../ASF/xmega/utils/preprocessor + ../ASF/common/utils + ../ASF/common/services/sleepmgr + ../ASF/xmega/drivers/sleep + ../ASF/common/services/gpio + ../ASF/xmega/drivers/tc + ../ASF/xmega/drivers/adc + ../ASF/xmega/drivers/cpu + ../ASF/common/boards + ../ASF/common/services/ioport + ../ASF/xmega/boards + ../ASF/xmega/utils + ../ASF/common/services/clock + ../ASF/common/services/delay + ../ASF/xmega/drivers/wdt + ../ASF/xmega/drivers/usart + ../config + . + ../ASF/xmega/services/pwm + ../ASF/common/drivers/nvm + ../ASF/common/services/serial/xmega_usart + ../ASF/common/services/serial + ../ASF/common/utils/stdio/stdio_serial + ../ASF/xmega/services/timeout + + + -mmcu=atxmega256a3bu -B "%24(PackRepoDir)\atmel\XMEGAA_DFP\1.0.36\gcc\dev\atxmega256a3bu" True True True True True False - - IOPORT_XMEGA_COMPAT - BACDL_MSTP - MAX_APDU=128 - MAX_TSM_TRANSACTIONS=1 - MSTP_PDU_PACKET_COUNT=2 - BACNET_VENDOR_ID=293 - MAX_ADDRESS_CACHE=32 - MAX_ANALOG_INPUTS=8 - DEBUG - - ..../config../ASF/xmega/drivers/rtc32../ASF/xmega/drivers/pmic../ASF/xmega/boards/xmega_a3bu_xplained../ASF/xmega/utils/preprocessor../ASF/common/utils../ASF/common/services/sleepmgr../ASF/xmega/drivers/sleep../ASF/common/services/gpio../ASF/xmega/drivers/tc../ASF/xmega/drivers/adc../ASF/xmega/drivers/cpu../ASF/common/boards../ASF/common/services/ioport../ASF/xmega/drivers/nvm../ASF/xmega/boards../ASF/xmega/utils../ASF/xmega/drivers/wdt../ASF/common/services/clock../ASF/common/services/delay../ASF/xmega/drivers/usart../ASF/xmega/services/pwm../ASF/common/drivers/nvm../ASF/common/services/serial/xmega_usart../ASF/common/services/serial../ASF/common/utils/stdio/stdio_serial../ASF/xmega/services/timeout../../../include../../../demo/object + + + IOPORT_XMEGA_COMPAT + BACDL_MSTP + MAX_APDU=128 + MAX_TSM_TRANSACTIONS=1 + MSTP_PDU_PACKET_COUNT=2 + BACNET_VENDOR_ID=293 + MAX_ADDRESS_CACHE=32 + MAX_ANALOG_INPUTS=8 + DEBUG + + + + + .. + ../config + ../ASF/xmega/drivers/rtc32 + ../ASF/xmega/drivers/pmic + ../ASF/xmega/boards/xmega_a3bu_xplained + ../ASF/xmega/utils/preprocessor + ../ASF/common/utils + ../ASF/common/services/sleepmgr + ../ASF/xmega/drivers/sleep + ../ASF/common/services/gpio + ../ASF/xmega/drivers/tc + ../ASF/xmega/drivers/adc + ../ASF/xmega/drivers/cpu + ../ASF/common/boards + ../ASF/common/services/ioport + ../ASF/xmega/drivers/nvm + ../ASF/xmega/boards + ../ASF/xmega/utils + ../ASF/xmega/drivers/wdt + ../ASF/common/services/clock + ../ASF/common/services/delay + ../ASF/xmega/drivers/usart + ../ASF/xmega/services/pwm + ../ASF/common/drivers/nvm + ../ASF/common/services/serial/xmega_usart + ../ASF/common/services/serial + ../ASF/common/utils/stdio/stdio_serial + ../ASF/xmega/services/timeout + ../../../include + ../../../demo/object + %24(PackRepoDir)\atmel\XMEGAA_DFP\1.0.36\include + + -fdata-sections True True + Maximum (-g3) True -std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax - libm + + + libm + + -Wl,--relax -Wl,--section-start=.BOOT=0x40000 -mrelax -DBOARD=XMEGA_A3BU_XPLAINED -DIOPORT_XMEGA_COMPAT - ../ASF/xmega/drivers/rtc32../ASF/xmega/drivers/pmic../ASF/xmega/boards/xmega_a3bu_xplained../ASF/xmega/drivers/nvm../ASF/xmega/utils/preprocessor../ASF/common/utils../ASF/common/services/sleepmgr../ASF/xmega/drivers/sleep../ASF/common/services/gpio../ASF/xmega/drivers/tc../ASF/xmega/drivers/adc../ASF/xmega/drivers/cpu../ASF/common/boards../ASF/common/services/ioport../ASF/xmega/boards../ASF/xmega/utils../ASF/common/services/clock../ASF/common/services/delay../ASF/xmega/drivers/wdt../ASF/xmega/drivers/usart../config.../ASF/xmega/services/pwm../ASF/common/drivers/nvm../ASF/common/services/serial/xmega_usart../ASF/common/services/serial../ASF/common/utils/stdio/stdio_serial../ASF/xmega/services/timeout - Maximum (-g3) + + + ../ASF/xmega/drivers/rtc32 + ../ASF/xmega/drivers/pmic + ../ASF/xmega/boards/xmega_a3bu_xplained + ../ASF/xmega/drivers/nvm + ../ASF/xmega/utils/preprocessor + ../ASF/common/utils + ../ASF/common/services/sleepmgr + ../ASF/xmega/drivers/sleep + ../ASF/common/services/gpio + ../ASF/xmega/drivers/tc + ../ASF/xmega/drivers/adc + ../ASF/xmega/drivers/cpu + ../ASF/common/boards + ../ASF/common/services/ioport + ../ASF/xmega/boards + ../ASF/xmega/utils + ../ASF/common/services/clock + ../ASF/common/services/delay + ../ASF/xmega/drivers/wdt + ../ASF/xmega/drivers/usart + ../config + . + ../ASF/xmega/services/pwm + ../ASF/common/drivers/nvm + ../ASF/common/services/serial/xmega_usart + ../ASF/common/services/serial + ../ASF/common/utils/stdio/stdio_serial + ../ASF/xmega/services/timeout + + Default (-Wa,-g) @@ -284,36 +428,107 @@ bin\Debug-XPLAINED\ - False + -mmcu=atxmega256a3bu -B "%24(PackRepoDir)\atmel\XMEGAA_DFP\1.0.36\gcc\dev\atxmega256a3bu" True True True True False - - IOPORT_XMEGA_COMPAT - BACDL_MSTP - MAX_APDU=128 - MAX_TSM_TRANSACTIONS=1 - MSTP_PDU_PACKET_COUNT=2 - BACNET_VENDOR_ID=293 - MAX_ADDRESS_CACHE=32 - MAX_ANALOG_INPUTS=8 - BOARD=XMEGA_A3BU_XPLAINED - CONF_BOARD_ENABLE_RS485_XPLAINED - DEBUG - - ..../config../ASF/xmega/drivers/rtc32../ASF/xmega/drivers/pmic../ASF/xmega/boards/xmega_a3bu_xplained../ASF/xmega/utils/preprocessor../ASF/common/utils../ASF/common/services/sleepmgr../ASF/xmega/drivers/sleep../ASF/common/services/gpio../ASF/xmega/drivers/tc../ASF/xmega/drivers/adc../ASF/xmega/drivers/cpu../ASF/common/boards../ASF/common/services/ioport../ASF/xmega/drivers/nvm../ASF/xmega/boards../ASF/xmega/utils../ASF/xmega/drivers/wdt../ASF/common/services/clock../ASF/common/services/delay../ASF/xmega/drivers/usart../ASF/xmega/services/pwm../ASF/common/drivers/nvm../ASF/common/services/serial/xmega_usart../ASF/common/services/serial../ASF/common/utils/stdio/stdio_serial../ASF/xmega/services/timeout../../../include../../../demo/object + + + IOPORT_XMEGA_COMPAT + BACDL_MSTP + MAX_APDU=128 + MAX_TSM_TRANSACTIONS=1 + MSTP_PDU_PACKET_COUNT=2 + BACNET_VENDOR_ID=293 + MAX_ADDRESS_CACHE=32 + MAX_ANALOG_INPUTS=8 + BOARD=XMEGA_A3BU_XPLAINED + CONF_BOARD_ENABLE_RS485_XPLAINED + DEBUG + + + + + .. + ../config + ../ASF/xmega/drivers/rtc32 + ../ASF/xmega/drivers/pmic + ../ASF/xmega/boards/xmega_a3bu_xplained + ../ASF/xmega/utils/preprocessor + ../ASF/common/utils + ../ASF/common/services/sleepmgr + ../ASF/xmega/drivers/sleep + ../ASF/common/services/gpio + ../ASF/xmega/drivers/tc + ../ASF/xmega/drivers/adc + ../ASF/xmega/drivers/cpu + ../ASF/common/boards + ../ASF/common/services/ioport + ../ASF/xmega/drivers/nvm + ../ASF/xmega/boards + ../ASF/xmega/utils + ../ASF/xmega/drivers/wdt + ../ASF/common/services/clock + ../ASF/common/services/delay + ../ASF/xmega/drivers/usart + ../ASF/xmega/services/pwm + ../ASF/common/drivers/nvm + ../ASF/common/services/serial/xmega_usart + ../ASF/common/services/serial + ../ASF/common/utils/stdio/stdio_serial + ../ASF/xmega/services/timeout + ../../../include + ../../../demo/object + %24(PackRepoDir)\atmel\XMEGAA_DFP\1.0.36\include + + -fdata-sections True True + Maximum (-g3) True -std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax - libm + + + libm + + -Wl,--relax -Wl,--section-start=.BOOT=0x40000 -mrelax -DBOARD=XMEGA_A3BU_XPLAINED -DIOPORT_XMEGA_COMPAT - ../ASF/xmega/drivers/rtc32../ASF/xmega/drivers/pmic../ASF/xmega/boards/xmega_a3bu_xplained../ASF/xmega/drivers/nvm../ASF/xmega/utils/preprocessor../ASF/common/utils../ASF/common/services/sleepmgr../ASF/xmega/drivers/sleep../ASF/common/services/gpio../ASF/xmega/drivers/tc../ASF/xmega/drivers/adc../ASF/xmega/drivers/cpu../ASF/common/boards../ASF/common/services/ioport../ASF/xmega/boards../ASF/xmega/utils../ASF/common/services/clock../ASF/common/services/delay../ASF/xmega/drivers/wdt../ASF/xmega/drivers/usart../config.../ASF/xmega/services/pwm../ASF/common/drivers/nvm../ASF/common/services/serial/xmega_usart../ASF/common/services/serial../ASF/common/utils/stdio/stdio_serial../ASF/xmega/services/timeout - Maximum (-g3) + + + ../ASF/xmega/drivers/rtc32 + ../ASF/xmega/drivers/pmic + ../ASF/xmega/boards/xmega_a3bu_xplained + ../ASF/xmega/drivers/nvm + ../ASF/xmega/utils/preprocessor + ../ASF/common/utils + ../ASF/common/services/sleepmgr + ../ASF/xmega/drivers/sleep + ../ASF/common/services/gpio + ../ASF/xmega/drivers/tc + ../ASF/xmega/drivers/adc + ../ASF/xmega/drivers/cpu + ../ASF/common/boards + ../ASF/common/services/ioport + ../ASF/xmega/boards + ../ASF/xmega/utils + ../ASF/common/services/clock + ../ASF/common/services/delay + ../ASF/xmega/drivers/wdt + ../ASF/xmega/drivers/usart + ../config + . + ../ASF/xmega/services/pwm + ../ASF/common/drivers/nvm + ../ASF/common/services/serial/xmega_usart + ../ASF/common/services/serial + ../ASF/common/utils/stdio/stdio_serial + ../ASF/xmega/services/timeout + + Default (-Wa,-g) diff --git a/bacnet-stack/ports/xplained/dlmstp.c b/bacnet-stack/ports/xplained/dlmstp.c index 5e336f31..9017c587 100644 --- a/bacnet-stack/ports/xplained/dlmstp.c +++ b/bacnet-stack/ports/xplained/dlmstp.c @@ -1283,7 +1283,7 @@ int dlmstp_send_pdu(BACNET_ADDRESS * dest, /* destination address */ } else { pkt->destination_mac = dest->mac[0]; } - if (Ringbuf_Data_Put(&PDU_Queue, pkt)) { + if (Ringbuf_Data_Put(&PDU_Queue, (volatile uint8_t *)pkt)) { bytes_sent = pdu_len; } }