| Newsgroups |
gmane.comp.hardware.rabbit-semiconductor |
| Message-ID |
<[email protected]> |
After allocating +13kB in xmem using _xalloc(&tempsz, 0, XALLOC_BB) and itializing it, how do I prevent reallocating memory with default data(which are out-of-date) after a power cycle? is there something I'm missing?
// begin quasi pseudo-code...
#define BLOCK_START_MEMBER ((long)0x3A8446F7)
#define BLOCK_END_MEMBER ((long)0x7F6448A3)
#define BLOCK_START_NODE ((long)0x3A8446F8)
#define BLOCK_END_NODE ((long)0x7F6448A4)
#define BLOCK_START_DIGITAL ((long)0x3A8446F9)
#define BLOCK_END_DIGITAL ((long)0x7F6448A5)
#define BLOCK_START_ANALOG ((long)0x3A8446FA)
#define BLOCK_END_ANALOG ((long)0x7F6448A6)
void main(void)
{
long tempsz;
far char *pMemBlock_Member, *pMemBlock_Node, *pMemBlock_Digital,*pMemBlock_Analog;
far long *pStartAddrMark_Member, *pStartAddrMark_Node, *pStartAddrMark_Digital, *pStartAddrMark_Analog;
far long *pStopAddrMark_Member, *pStopAddrMark_Node, *pStopAddrMark_Digital, *pStopAddrMark_Analog;
//--------------------------Allocate Memory Block for Members----------------
//_xalloc the data block and calculate marker locations
tempsz = (MAX_MEMBERS * sizeof(Member_t));
tempsz += 2 * sizeof(long); //add room for start/end address
pMemBlock_Member = (far char *) _xalloc(&tempsz, 0, XALLOC_BB);
if(pMemBlock_Member == NULL)
{
printf("\n _xalloc failed for MEMBER \n");
//reboot
}
pStartAddrMark_Member = (far long *)pMemBlock_Member;
pStopAddrMark_Member = (far long *)(pMemBlock_Member + tempsz - sizeof(long) );
//check to see if the block is initialized (look for the beginning & ending marker)
if ((*pStartAddrMark_Member != BLOCK_START_MEMBER) || (*pStopAddrMark_Member != BLOCK_END_MEMBER))
{
// zero the memory block
_f_memset(pMemBlock_Member, 0, tempsz);
Initialize with default data.
InitializeWithDefaultData();
// put markers at start and end of the memory block
*pStartAddrMark_Member = BLOCK_START_MEMBER;
*pStopAddrMark_Member = BLOCK_END_MEMBER;
}
PtrToFamilyMemberFile = (far Member_t *)(pMemBlock_Member + sizeof(long));
while (1)
{
}
}