Zeroing Out the RAM

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Zeroing Out the RAM

2,639 Views
TheBroadLea
Contributor I

I am porting some code from Cosmic to CW.  On reset, this code zeroes out all RAM variable space using the micro_clear_ram function:

void micro_clear_ram(void){   byte *i;   if (&_ubsct_start != &_ubsct_end)   {      for (i = &_ubsct_start; i < &_ubsct_end; i++)      {         i = 0;      }   }   if (&_nzpages_start != &_nzpages_end)   {      for (i = &_nzpages_start; i < &_nzpages_end; i++)      {         i = 0;      }   }}

Here is an excerpt from the Cosmic linker file that assigns names to portions of memory and evidently maps those memory locations to the start/end variables above:

+seg .ubsct    -b0x0050    -nZPAGE     -m0x0100-0x0050+seg .nzpages  -b0x0100    -nNZPAGES   -m0x0430-0x0100+def __ubsct_start=start(ZPAGE)+def __ubsct_end=end(ZPAGE)+def __nzpages_start=start(NZPAGES)+def __nzpages_end=end(NZPAGES)

Anything like that in CodeWarrior?  Using either the SECTIONS or PLACEMENT names, can I do something like this?

void micro_clear_ram_CW(void){   byte *i;   for (i = &START(MY_ZEROPAGE); i < &END(MY_ZEROPAGE); i++)   {      *i = 0;   }   for (i = &START(DEFAULT_RAM); i < &END(DEFAULT_RAM); i++)   {      *i = 0;   }}

Or, is there a setting somewhere (perhaps a bean setting) that zeroes out RAM on reset?

Thanks much for your help.

Labels (1)
0 Kudos
2 Replies

357 Views
rhinoceroshead
Contributor I
If you create a project and use ANSI C, then the CodeWarrior automatically generated startup code will clear all of your global variables for you.  It won't clear all of the RAM though.  Why would you need to?
0 Kudos

357 Views
TheBroadLea
Contributor I

That's essentially it: to reset variables to zero.

Thanks for the tip.  With your comment, I've been able to find that code.  It's in the Init function in Start08.c for anyone who's curious.

Thanks again.

Message Edited by The Broad Lea on 04-28-200610:31 AM

0 Kudos