URL
https://opencores.org/ocsvn/plasma/plasma/trunk
Subversion Repositories plasma
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 299 to Rev 300
- ↔ Reverse comparison
Rev 299 → Rev 300
/trunk/kernel/flash.c
0,0 → 1,52
/*-------------------------------------------------------------------- |
* TITLE: Plasma Flash |
* AUTHOR: Steve Rhoads (rhoadss@yahoo.com) |
* DATE CREATED: 12/17/05 |
* FILENAME: plasma.h |
* PROJECT: Plasma CPU core |
* COPYRIGHT: Software placed into the public domain by the author. |
* Software 'as is' without warranty. Author liable for nothing. |
* DESCRIPTION: |
* Plasma flash controller |
* Only the lower 16-bits of each 32-bit word are connected -- |
* this changes the address mapping to the flash. |
* ByteOffset and bytes must be a multiple of two. |
*--------------------------------------------------------------------*/ |
#include "plasma.h" |
#include "rtos.h" |
|
|
void FlashRead(uint16 *dst, uint32 byteOffset, int bytes) |
{ |
volatile uint32 *ptr=(uint32*)(FLASH_BASE + (byteOffset << 1)); |
*ptr = 0xff; //read mode |
while(bytes > 0) |
{ |
*dst++ = (uint16)*ptr++; |
bytes -= 2; |
} |
} |
|
|
void FlashWrite(uint16 *src, uint32 byteOffset, int bytes) |
{ |
volatile uint32 *ptr=(uint32*)(FLASH_BASE + (byteOffset << 1)); |
while(bytes > 0) |
{ |
*ptr = 0x40; //write mode |
*ptr++ = *src++; //write data |
while((*ptr & 0x80) == 0) //check status |
; |
bytes -= 2; |
} |
} |
|
|
void FlashErase(uint32 byteOffset) |
{ |
volatile uint32 *ptr=(uint32*)(FLASH_BASE + (byteOffset << 1)); |
*ptr = 0x20; //erase block |
*ptr = 0xd0; //confirm |
while((*ptr & 0x80) == 0) //check status |
; |
} |