/************************************************************************/ /* */ /* AMD CFI Enabled Flash Memory Drivers */ /* File name: CFIDRIVE.C */ /* Revision: 1.0 5/07/98 */ /* */ /* Copyright (c) 1998 ADVANCED MICRO DEVICES, INC. All Rights Reserved. */ /* This software is unpublished and contains the trade secrets and */ /* confidential proprietary information of AMD. Unless otherwise */ /* provided in the Software Agreement associated herewith, it is */ /* licensed in confidence "AS IS" and is not to be reproduced in whole */ /* or part by any means except for backup. Use, duplication, or */ /* disclosure by the Government is subject to the restrictions in */ /* paragraph (b) (3) (B) of the Rights in Technical Data and Computer */ /* Software clause in DFAR 52.227-7013 (a) (Oct 1988). */ /* Software owned by */ /* Advanced Micro Devices, Inc., */ /* One AMD Place, */ /* P.O. Box 3453 */ /* Sunnyvale, CA 94088-3453. */ /************************************************************************/ /* This software constitutes a basic shell of source code for */ /* programming all AMD Flash components. AMD */ /* will not be responsible for misuse or illegal use of this */ /* software for devices not supported herein. AMD is providing */ /* this source code "AS IS" and will not be responsible for */ /* issues arising from incorrect user implementation of the */ /* source code herein. It is the user's responsibility to */ /* properly design-in this source code. */ /* */ /************************************************************************/ #include #include #include "cfiflash.h" #include "libsys.h" #define TEST_SIZE (1024*1024) #define FLASH_OFFSET 0x700000 int main(void) { int i; flash_t flash; UINT8 *pFlash = (UINT8*)0xA4000000; UINT32 result; UINT8 *pBuf; setbuf(stdout, NULL); result = flash_find(&flash, 0xA4000000); if (result < 0) { printf("flash_find() error!\n"); return 1; } printf("Found Flash at %8.8X\n", (UINT32)flash.pBase); pBuf = (UINT8*)malloc(TEST_SIZE); for (i=0; i < TEST_SIZE; i++) pBuf[i] = i; printf("Flash erase from %8.8X to %8.8X...", FLASH_OFFSET, FLASH_OFFSET+TEST_SIZE); result = flash_erase(&flash, FLASH_OFFSET, TEST_SIZE); if (result < 0) { printf("error!\n"); return 1; } printf("OK\n"); printf("Flash program from %8.8X to %8.8X...", FLASH_OFFSET, FLASH_OFFSET+TEST_SIZE); result = flash_program(&flash, FLASH_OFFSET, pBuf, TEST_SIZE); if (result < 0) { printf("error!\n"); return 1; } printf("OK\n"); printf("Flash verify from %8.8X to %8.8X...", FLASH_OFFSET, FLASH_OFFSET+TEST_SIZE); result = flash_verify(&flash, FLASH_OFFSET, pBuf, TEST_SIZE); if (result < 0) { printf("error!\n"); return 1; } printf("OK\n"); // PrintBuffer8((UINT8*)pFlash, 16, TEST_SIZE); return 0; }