[Tinyos-beta-commits]
CVS: tinyos-1.x/beta/Deluge/Deluge/TOSBoot/at45db
ExtFlashC.nc, NONE, 1.1
Jonathan Hui
jwhui at users.sourceforge.net
Sun Jul 17 13:53:20 PDT 2005
Update of /cvsroot/tinyos/tinyos-1.x/beta/Deluge/Deluge/TOSBoot/at45db
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20677/at45db
Added Files:
ExtFlashC.nc
Log Message:
- Added support for at45db flash chip and telosa platform.
--- NEW FILE: ExtFlashC.nc ---
module ExtFlashC {
provides {
interface StdControl;
interface TOSBootExtFlash as ExtFlash;
}
}
implementation {
uint32_t addr;
command result_t StdControl.init() { return SUCCESS; }
command result_t StdControl.start() { return SUCCESS; }
command result_t StdControl.stop() { return SUCCESS; }
uint8_t SPIByte(uint8_t out) {
uint8_t in = 0;
uint8_t i;
for ( i = 0; i < 8; i++, out <<= 1 ) {
// write bit
if (out & 0x80)
TOSH_SET_FLASH_OUT_PIN();
else
TOSH_CLR_FLASH_OUT_PIN();
// clock
TOSH_SET_FLASH_CLK_PIN();
// read bit
in <<= 1;
if (TOSH_READ_FLASH_IN_PIN())
in |= 1;
// clock
TOSH_CLR_FLASH_CLK_PIN();
}
return in;
}
command void ExtFlash.startRead(uint32_t newAddr) {
uint8_t cmdBuf[4];
uint8_t i;
addr = newAddr;
cmdBuf[0] = 0x68;
cmdBuf[1] = (addr >> 15) & 0xff;
cmdBuf[2] = (addr >> 7) & 0xfe;
cmdBuf[3] = addr & 0xff;
TOSH_CLR_FLASH_CLK_PIN();
TOSH_CLR_FLASH_CS_PIN();
for(i = 0; i < 4; i++)
SPIByte(cmdBuf[i]);
for(i = 0; i < 4; i++)
SPIByte(0x0);
TOSH_SET_FLASH_CLK_PIN();
TOSH_CLR_FLASH_CLK_PIN();
}
command uint8_t ExtFlash.readByte() {
if (!(addr & 0xff)) {
call ExtFlash.stopRead();
call ExtFlash.startRead(addr);
}
addr++;
return SPIByte(0);
}
command void ExtFlash.stopRead() {
TOSH_SET_FLASH_CS_PIN();
}
}
More information about the Tinyos-beta-commits
mailing list