hallo all,
following up an earlier question (see below) I encounter the following problem:
STM8 flash block write & erase operations need to be executed from RAM. I (hope
I) correctly followed the below proposal by Klaus and Maarten, as well as the
SDCC manual. However, when compiling any source file with option “--codeseg
MYSEG“ I get this error message:
sdcc -mstm8 --std-sdcc99 -DSTM8S207 --codeseg MYSEG -c RAM_routines.c
-o RAM_routines.rel
RAM_routines.asm:96: Error: <u> undefined symbol encountered during
assembly
The respective error line in file RAM_routines.asm reads
.area MYSEG (CODE)
I have prepared a simple example (toggles GPIO from RAM), which is available
under http://www.cream-tea.de/tmp/RAM_Code.zip
<http://www.cream-tea.de/tmp/RAM_Code.zip> . For any help on this topic thanks
a lot in advance!
PS: the SDCC version is 3.5.0, and the error occurs under MacOSX and Win7
Regards,
Georg Icking-Konert
> ------------------------------
>
> Message: 2
> Date: Sat, 05 Apr 2014 23:09:05 +0200
> From: "Maarten Brock" <[email protected]>
> Subject: Re: [Sdcc-user] SDCC/STM8 questions
> To: [email protected]
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=US-ASCII
>
>>> 4) code in RAM: actually I don?t need it for performance but to log
>>> data to the program flash, because the EEPROM is too small for my
>>> needs. To my understanding the program flash of the STM8 doesn?t
>>> support execute-while-write, so I need the actual flash write&erase
>>> routines in RAM?? At least the Cosmic compiler (and STM8 boot
>>> loader) require that. The Cosmic compiler supports that via #pragma
>>> and linker settings. Can this be done in SDCC as well and, if yes,
>>> how? A small example would be highly welcome? ;-)
>>
>> It should be possible e.g. by having the code that goes into RAM in a
>> separate file and using the --codeseg option to sdcc and -b option to
>> the linker.
>
> I don't think this is enough. It will be located and linked at the
> destination address. But you probably need a copy in flash that at
> startup is copied to ram. So you need to post-process the linked
> object (hex-file) to move it. And then you need a routine for making
> the copy.
>
> Maarten
>
------------------------------------------------------------------------------
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user