View previous topic :: View next topic |
Author |
Message |
ncdoody
Joined: 30 May 2023 Posts: 12
|
#reserve warning/error difference between compiler versions |
Posted: Thu Oct 05, 2023 5:14 pm |
|
|
Updated from 5.075 to 5.115 and what used to be a warning is now an error, i.e. on the line
Code: | #RESERVE 0x0C0, 0x0C1, ... |
I get:
>>> Warning 228 "C:\Users\...\def_file.h" Line 100(2,9): Memory not available at requested location
with version 5.075
and get:
*** Error 174 "C:\Users\...\def_file.h" Line 100(2,9): Memory not available at requested location
with version 5.115
Tips? |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19358
|
|
Posted: Fri Oct 06, 2023 1:26 am |
|
|
Would help if you told us what chip?.
However it really should be an error, since obviously the compiler cannot
reserve memory where it does not exist, and since it does not exist, will not
use it, so the statement does nothing.
What is the point of this?. What are you actually doing?. |
|
![](templates/subSilver/images/spacer.gif) |
ncdoody
Joined: 30 May 2023 Posts: 12
|
|
Posted: Fri Oct 06, 2023 9:35 am |
|
|
Apologies, it's legacy code that I'm still trying to understand myself. It's running on a 18C252.
From what I understand so far, they were reserving a ram location for rx/tx buffers. They were using addresses 0x0C0 to 0x0FF, so I believe that means in the general purpose registers of the Bank 0. |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19358
|
|
Posted: Fri Oct 06, 2023 1:51 pm |
|
|
The addresses from 0x80 to 0xFF, are the upper part of the access bank.
This talks to SFR's, so cannot be used as RAM. This is why the
reserve is not being allowed..... These addresses are the Bank 15
SFR's.
Suspect somebody thought these were part of the low half of this
which is normal RAM. |
|
![](templates/subSilver/images/spacer.gif) |
ncdoody
Joined: 30 May 2023 Posts: 12
|
|
Posted: Fri Oct 06, 2023 2:31 pm |
|
|
So, it seems to me that 0x080h to 0x0FF is in the GPR range of Bank 0 whereas 0xF80 to 0xFFF are in bank 15, i.e. the SFR. From the data sheet "The Access Bank is comprised of the upper 128 bytes in Bank 15 (SFRs) and the lower 128 bytes in Bank 0", but 0x0C0 to 0x0FF is within the upper range of bank 0, i.e. the GPR region. Right? |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19358
|
|
Posted: Sat Oct 07, 2023 4:15 am |
|
|
Exactly.
This allows the port lathes and status registers to be accessed without
needing to do a bank switch.
Ypu can though see why the com[iler cannot let you prevent it from
accessing these!....
You need to find the bit of code that is trying to use these addresses,
and work out what it is actually up to. |
|
![](templates/subSilver/images/spacer.gif) |
|