Hi all, > Ideally, there would be some kind of fmemcpy function that dealt with > 'far' pointers. This is what the docs for ST's SPL instructs Raisonance > users to use, but I don't think any such thing exists in SDCC's standard > C library. Would it be possible to write an equivalent in assembly?
Further to this, having now done some experimentation, it appears to me that with the current state of SDCC it is not actually possible to write plain C code that will read from or write to flash memory past 32KB, due to the limitation of memory pointers being 16-bit even in large memory model mode. Using an STM8S208RB, which has 128KB of flash, I attempted writing to the last block of flash, at address 0x27F7F. It didn't work, and just hung the processor. I presume this was because the pointer to this address got truncated to 0x7F7F, which is not within the flash memory range, and is actually a reserved area (with the SWIM and debug registers following). Would it be possible for SDCC to add 'far' pointers? Then, when using large memory model, one could choose between conventional 'near' 16-bit pointers and 'far' 24-bit pointers as and when the code dictates. I will have to see if I can put together some inline assembly code to deal with reading and writing from memory locations that need a 24-bit address, because at present it doesn't seem to be possible with just C code. Does anyone have any suggestions for that? Regards, Basil _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user