Hello, Has anybody already generated the Embedded Filesystem Library (libefsl.a) with date-and-time support using the ARM-GCC? I'm getting 6 times "Macro usage error for macro time_get...." . Without date and time support, everything is fine. I would not expect to get errors or warnings generating that library. Am I missing anything ? Is there a code example with date/time support anywhere around ? Thanks for comments.
roty wrote: > Has anybody already generated the Embedded Filesystem Library > (libefsl.a) > with date-and-time support using the ARM-GCC? Yes. > I'm getting 6 times "Macro usage error for macro time_get...." . > Without date and time support, everything is fine. The interface-functions have to be implemented. There is currently no default implemantation. The basic methode when using the LPC RTC could be for example something like this (for efsl V0.2.x): #include "LPC2xxx.h" // registers //... euint8 efsl_getHour(void) { return (euint8)(RTCHOUR); } The other functions can be implemented follwing this example. See time.h. > I would not expect to get errors or warnings generating that library. > Am I missing anything ? Yes, the library does not know how to interface the RTC. RTC could be implemented in verious ways (on LPC2000 there is a RTC-Hardware-"Cell" with "real" Date/Time-Support, AVRs for example do not offer this) You have to provide the interface to the real-time-clock. But it is not difficult using the LPC2k RTC. > Is there a code example with date/time support anywhere around ? Currently not "around" from my side. Work in progress. Martin Thomas
Hello and thank you for your answer. I appreciate it very much! Please see below. > Martin Thomas wrote: > The interface-functions have to be implemented. There is currently no > default implemantation. The basic methode when using the LPC RTC could > be for example something like this (for efsl V0.2.x): > I expected 6 unresolved dependencies during linking the lib to my project as it stated in config.h comment. /* ... *If the functions are not present when linking your * program with the library you will get unresolved dependencies. */ But I didn't expect macro usage errors during generating the lib, but anyway. > #include "LPC2xxx.h" // registers > //... > euint8 efsl_getHour(void) > { > return (euint8)(RTCHOUR); > } > That's what I already did without success. (Just with a certain return value for testing). Nevertheless, I'm getting the warnings. > Yes, the library does not know how to interface the RTC. RTC could be > implemented in verious ways (on LPC2000 there is a RTC-Hardware-"Cell" > with "real" Date/Time-Support, AVRs for example do not offer this) You > have to provide the interface to the real-time-clock. But it is not > difficult using the LPC2k RTC. > I understand what you are saying, but I expected to provide the RTC routines in my project code and not in the lib code. Maybe the precise message is helpful to recognize what's wrong. Here is exactly one of the messages I'm seeing: C/C++ Indexer Problem: Macro usage error for macro : time_getHour in file: C:\test\EFSL\efsl_027\src\time.c on line: 69. If you have any further idea, please let me know. Thanks a lot. roty
roty wrote: > ... > Maybe the precise message is helpful to recognize what's wrong. Here is > exactly > one of the messages I'm seeing: > > C/C++ Indexer Problem: Macro usage error for macro : time_getHour in > file: C:\test\EFSL\efsl_027\src\time.c on line: 69. Hmm, I have tried to reproduce this error-message without success. There is also a chapter about time-support in the efsl-manual which may provide useful information. Anyway. I have just tested the time-support with the library (The code I had already here has been rather old). The steps done: 1. used the efsl-source-code from my web-page http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/efsl_arm/arm7_efsl_0_2_7_mt_20060531b.zip This is a slightly modified version of the official source but the method should work for the official code too. 2. renamed config-sample-lpc2000.h to config.h 3. removed the comment before #define DATE_TIME_SUPPORT in config.h - so the support is enabled. Keep in mind that when using the library compiled with this option the "interface"-functions efsl_* have to be provided in every project which gets linked with the library. Maybe dummys will do when no real RTC is available or time-support should not be used. 4. compiled the library with the Makefile-LPC2000 from the archive 5. modified the example application for LPC2138 which comes in the archive: 5a. created an additional file efsl_time_LPC.c in the same directory is the main.c - see below 5b. added the file to the source-list in the example's makefile 5c. "make all" for the example-application with the supplied makefile -> no errors (output below) So far not tested with the hardware or a simulator. Hope this helps Martin Thomas --- file efsl_time_LPC.c --- /* efsl Time-Support for Philips LPC21xx Controllers Martin THOMAS, 2006 */ #include "LPC213x.h" #include "types.h" #include "time.h" euint16 efsl_getYear(void) { return (euint16)(YEAR); } euint8 efsl_getMonth(void) { return (euint8)(MONTH); } euint8 efsl_getDay(void) { return (euint8)(DOM); } euint8 efsl_getHour(void) { return (euint8)(HOUR); } euint8 efsl_getMinute(void) { return (euint8)(MIN); } euint8 efsl_getSecond(void) { return (euint8)(SEC); } --- output of make all --- "make.exe" all -------- begin -------- arm-elf-gcc (GCC) 4.1.1 (WinARM) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Assembling (ARM-only): crt0.S arm-elf-gcc -c -mcpu=arm7tdmi-s -mthumb-interwork -I. -x assembler-with-cpp -DROM_RUN -Wa,-adhlns=crt0.lst,-gdwarf-2 crt0.S -o crt0.o Compiling C: main.c arm-elf-gcc -c -mthumb -mcpu=arm7tdmi-s -mthumb-interwork -I. -gdwarf-2 -DROM_RUN -Os -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=main.lst -I../../inc -I../../conf -MD -MP -MF .dep/main.o.d -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -std=gnu99 main.c -o main.o In file included from ../../inc/efs.h:42, from main.c:17: ../../inc/fs.h:169:2: warning: #warning "mt ATTR_PACKED active" Compiling C: uart.c arm-elf-gcc -c -mthumb -mcpu=arm7tdmi-s -mthumb-interwork -I. -gdwarf-2 -DROM_RUN -Os -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=uart.lst -I../../inc -I../../conf -MD -MP -MF .dep/uart.o.d -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -std=gnu99 uart.c -o uart.o Compiling C: efsl_time_LPC.c arm-elf-gcc -c -mthumb -mcpu=arm7tdmi-s -mthumb-interwork -I. -gdwarf-2 -DROM_RUN -Os -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=efsl_time_LPC.lst -I../../inc -I../../conf -MD -MP -MF .dep/efsl_time_LPC.o.d -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -std=gnu99 efsl_time_LPC.c -o efsl_time_LPC.o Linking: main.elf arm-elf-gcc -mthumb -mcpu=arm7tdmi-s -mthumb-interwork -I. -gdwarf-2 -DROM_RUN -Os -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=crt0.lst -I../../inc -I../../conf -MD -MP -MF .dep/main.elf.d crt0.o main.o uart.o efsl_time_LPC.o --output main.elf -nostartfiles -Wl,-Map=main.map,--cref -lc -lm -lc -lgcc -lefsl -L../../ -TLPC2138-ROM.ld Creating load file for Flash: main.hex arm-elf-objcopy -O ihex main.elf main.hex Creating Extended Listing: main.lss arm-elf-objdump -h -S -C main.elf > main.lss Creating Symbol Table: main.sym arm-elf-nm -n main.elf > main.sym Size after: main.elf : section size addr .text 16636 0 .data 12 1073741824 .bss 4168 1073741836 .stack 1024 1073746176 .comment 594 0 .debug_aranges 800 0 .debug_pubnames 3779 0 .debug_info 29725 0 .debug_abbrev 6469 0 .debug_line 5559 0 .debug_frame 4644 0 .debug_str 4931 0 .debug_loc 18823 0 .debug_ranges 200 0 Total 97364 Errors: none -------- end -------- > Process Exit Code: 0 > Time Taken: 00:02
Thanks again for helping me to find the reason for my problem. However I found that > C/C++ Indexer Problem: Macro usage error for macro : time_getHour in > file: C:\test\EFSL\efsl_027\src\time.c on line: 69. is not an ARM-GCC error message , it possibly belongs to Eclipse which I'm using on top of GCC. So it seems I have to move to a different forum first. If I know the reason, I'll post it here. Thanks
Just a further important information. Despite the (Eclipse) error messages, ARM-GCC generates correct code! The errors can be ignored for the moment.
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.