|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
Possible bug in memory initialization?
In ifi_startup.c, the routine _do_cinit() has some static variables defined with:
<<<<<<<<<<<< _do_cinit (void) { /* we'll make the assumption in the following code that these statics * will be allocated into the same bank. */ static short long prom; static unsigned short curr_byte; static unsigned short curr_entry; static short long data_ptr; >>>>>>>>>>>> This is followed by a bunch of asm statements that are used to initialize static/extern memory locations. Since we have had lots of problems with static memory not behaving like it was initialized properly, I am wondering if the stated assumption in the comment, that the four static variables are allocated in the same bank, might not be valid, depending on just how much static memory is allocated in other files. Can anyone shed some light on this issue? Last edited by eugenebrooks : 08-04-2006 at 01:22. |
|
#2
|
||||
|
||||
|
Re: Possible bug in memory initialization?
Doc,
Are you saying that explicit or implicit initializations are corrupted? I have seen no issues with explicit initializations and have strongly advised everyone who cares to listen to avoid them. JMHO. Mike |
|
#3
|
|||
|
|||
|
Re: Possible bug in memory initialization?
Quote:
|
|
#4
|
|||
|
|||
|
Re: Possible bug in memory initialization?
I have never seen a problem with variable initialization that wasn't my own fault (mainly not recognizing how the compiler will sometimes cast constants). But as for your question, I would say that the assumption is true. Since the compiler places all static uninitilized variables within a file in the same UDATA section (assuming you don't use a #pragma statement to change that) the compiler/linker would generate a section error if it overflows a single DATABANK since a single UDATA section must fit within a single DATABANK. That being said, if you've modified the linker file so that a single DATABANK spans multiple memory banks, then I suppose it would be possible for the same bank assumption to be false.
You should also be able to check the .map file to verify that all the variables have been placed in the same bank. Mike Last edited by Mike Bortfeldt : 08-04-2006 at 09:28. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Older computer memory trouble | sanddrag | IT / Communications | 9 | 02-12-2005 21:43 |
| Nasty Compiler Bug | Matt Leese | Programming | 5 | 18-02-2005 18:44 |
| initialization program and speed controllers | rosebud | Programming | 15 | 05-10-2004 03:35 |
| printf bug - beware! | WizardOfAz | Programming | 8 | 10-03-2004 09:50 |
| Whacky C Complier behavior | Larry Barello | Programming | 12 | 26-01-2004 22:15 |