d50c190957
* moving folders and files and adjust server demo build * Fix Makefile for apps/server on Linux * fix unit test source file folders * fix datetime convert UTC functions. Add Code::Blocks project for datetime testing * added some ignore extensions * disable parallel make option * fix build for abort, dcc, and epics apps * fix build for dcc, epics, error, and getevent apps. * Fixed building of all apps * fix the ipv4 to ipv6 router app build * Change indent style from Google to Webkit * make pretty to re-format style * removed common Makefile since we already had one and two was too many * remove scripts from root folder that are no longer maintained or used * remove mercurial EOL and ignore files for git repo * remove .vscodeconfig files from repo * tweak clang-format style * clang-format src and apps with tweaked style * added clang-tidy to fix readability if braces in src * result of make tidy for src and apps * fix clang-tidy mangling * Added code::blocks project for BACnet server simulation * added code::blocks linux project for WhoIs app * update text files for EOL * fix EOL in some files * fixed make win32 apps for older gcc * Removed Borland C++ Makefile in apps. Unable to maintain support for Borland C++ compiler. * created codeblocks project for apps/epics for Windows * fixing ports/xplained to work with new data structure. * fix ports/xplained example for Atmel Studio compile * fix ports/stm32f10x example for gcc Makefile compile * fix ports/stm32f10x example for IAR EWARM compile * fix ports/xplained timer callback * fix ports/bdk_atxx_mspt build with subdirs * fix ports/bdk_atxx_mspt build with subdirs * updated git ignore for IAR build artifacts * updated gitignore for non-tracked files and folders * fixed bdk-atxx4-mstp port for Rowley Crossworks project file * fixed bdk-atxx4-mstp port for GCC AVR Makefile * fixed atmega168 port for IAR AVR and GCC AVR Makefile * fixed at91sam7s port for IAR ARM and GCC ARM Makefile * removed unmaintainable DOS, RTOS32, and atmega8 ports. Updated rx62n (untested). * changed arm7 to uip port
This port was done with the Atmel ATmega168 using two tools: 1. The WinAVR compiler avr-gcc (GCC) 4.1.2 (WinAVR 20070525) and tools from <http://winavr.sourceforge.net/>, hints and sample code from <http://www.avrfreaks.net/> and <http://savannah.gnu.org/projects/avr-libc/>. "avr-binutils, avr-gcc, and avr-libc form the heart of the Free Software toolchain for the Atmel AVR microcontrollers." 2. AVR Studio from Atmel <http://atmel.com/> Alternatively, the project also builds using IAR Embedded Workbench AVR. The hardware is expected to utilize the signals as defined in the spreadsheet hardware.ods (OpenOffice.org calc). Attach a DS75176 RS-485 transceiver (or similar) to the USART. DS75176 ATmega168 ------ --------- RO RXD /RE --choice of I/O DE --choice of I/O DI TXD GND GND DO --to RS-485 wire DO --to RS-485 wire +5V From 5V Regulator The makefile allows you to build just the dlmstp or a simple server. dlmstp is the datalink layer for MS/TP over RS-485. I used the makefile from the command line on Windows: C:\code\bacnet-stack\ports\atmega168> make clean all CStack check for GCC is included in the device object as property 512. The compile shows 648 bytes of RAM used, and the ATmega168 has 1024 bytes of RAM, leaving 376 for the CStack. Property 512 index 0 returns 376 from a ReadProperty request. My understanding is that the remaining unallocated RAM is used for the CStack. Keep this in mind when developing. After some ReadProperty and WriteProperty requests, the CStack shows 159 CStack bytes free, meaning that 216 bytes of CStack are used. Note that the value 0xC5 (197) was used to paint the CStack. I also used the bacnet.aps project file in AVR Studio to make the project and simulate it, but have not kept it updated (FIXME). Compiler settings for IAR Embedded Workbench (FIXME: makefile?): General Options --------------- Target Processor configuration: --cpu=m168. ATmega168 Memory Model: Small System configuration: Configure system using dialogs (not in .XCL file) Output Executable Output Directories: Debug\Exe, Debug\Obj, Debug\List Library Configuration Library: CLIB Library Options Printf formatter: Small Scanf formatter: Medium Heap Configuration CLIB heap size: 0x10 System CSTACK: 0x200 RSTACK: 32 Initialize unused interrupt vectors with RETI instructions (enabled) Enable bit defnitions in I/O-Include files. (enabled) MISRA C not enabled C/C++ Compiler -------------- Language Language: C Require prototypes (not enabled) Allow IAR extensions Plain 'char' is Signed Enable multibyte support (not enabled) Code Memory utilization: Place aggregate initializers in flash memory (enabled) Force generation of all global and static variables (not enabled) Register utilization: Number of registers to lock for global variables: 0 Use ICCA90 1.x calling convention (not enabled) Optimizations Size: High (Maximum optimization) Number of cross-call passes: Unlimited Always do cross call optimization (not enabled) Output Module type: Override default (not enabled) Object module name (not enabled) Generate debug information (enabled) No error messages in output files (not enabled) List Output list file (not enabled) Output assembler file (enabled) Preprocessor Ignore standard include paths (not enabled) Include paths: $PROJ_DIR$ $PROJ_DIR$\..\..\include Preinclude file: (none) Defined symbols: BACDL_MSTP MAX_APDU=50 BIG_ENDIAN=0 MAX_TSM_TRANSACTIONS=0 BACAPP_REAL BACAPP_UNSIGNED BACAPP_ENUMERATED BACAPP_CHARACTER_STRING BACAPP_OBJECT_ID WRITE_PROPERTY Diagnostics (not enabled) MISRA C (not enabled) Extra Options Use command line options (not enabled) Note: The BACnet Stack at Sourceforge source code has to be built with lots of different compilers. The IAR compiler has particularly strong (pedantic) source checking and generates several warnings when compiling the source code. Unfortunately not all warnings can be fixed by modifying the source code. Some warnings have therefore been disabled in the project file. Compiler Diagnostics: (Pe550) I initilize all local variables as a best practice. Linker Diagnostics: (w31) The supplied standard libraries expect char parameters to be unsigned (in functions such as strncpy(), etc.). It may be possible to recompile the libraries with signed plain char's. The BACnet Capabilities include WhoIs, I-Am, ReadProperty, and WriteProperty support. The BACnet objects include a Device object, 10 Binary Value objects, and 10 Analog Value objects. An LED is controlled by Binary Value object instance 0. All required object properties can be retrieved using ReadProperty. The Present_Value property of the Analog Value and Binary Value objects can be written using WriteProperty. The Object_Identifier, Object_Name, Max_Info_Frames, Max_Master, and baud rate (property 9600) of the Device object can be written using WriteProperty. With full optimization, the statistics on the demo are: IAR Atmel AVR C/C++ Compiler V5.10A/W32 12 732 bytes of CODE memory (+ 36 range fill ) 955 bytes of DATA memory (+ 24 absolute ) (includes CStack=0×200) avr-gcc (GCC) 4.2.2 (WinAVR 20071221rc1) Program: 15790 bytes (96.4% Full) Data: 414 bytes (40.4% Full) (does not include CStack=0×262) Hopefully you find this code useful! Steve Karg <skarg@users.sourceforge.net>