Ejemplo n.º 1
0
static int flash_toggle(struct flash_info *info, flash_sect_t sect,
		unsigned int offset, u8 cmd)
{
	void *addr;
	cfiword_t cword;
	int retval;

	addr = flash_make_addr (info, sect, offset);
	flash_make_cmd (info, cmd, &cword);

	if (bankwidth_is_1(info)) {
		retval = flash_read8(addr) != flash_read8(addr);
	} else if (bankwidth_is_2(info)) {
		retval = flash_read16(addr) != flash_read16(addr);
	} else if (bankwidth_is_4(info)) {
		retval = flash_read32(addr) != flash_read32(addr);
	} else if (bankwidth_is_8(info)) {
		retval = ( (flash_read32( addr ) != flash_read32( addr )) ||
			   (flash_read32(addr+4) != flash_read32(addr+4)) );
	} else {
		retval = 0;
	}

	return retval;
}
Ejemplo n.º 2
0
static int amd_flash_write_cfibuffer(struct flash_info *info, unsigned long dest,
		const u8 *cp, int len)
{
	flash_sect_t sector;
	int cnt;
	void *src = (void *)cp;
	void *dst = (void *)dest;
	cfiword_t cword;

	sector = find_sector (info, dest);

	flash_unlock_seq(info);
	flash_make_cmd (info, AMD_CMD_WRITE_TO_BUFFER, &cword);
	flash_write_word(info, cword, (void *)dest);

	if (bankwidth_is_1(info)) {
		cnt = len;
		flash_write_cmd(info, sector, 0, (u32)cnt - 1);
		while (cnt-- > 0) {
			flash_write8(flash_read8(src), dst);
			src += 1, dst += 1;
		}
	} else if (bankwidth_is_2(info)) {
		cnt = len >> 1;
		flash_write_cmd(info, sector, 0, (u32)cnt - 1);
		while (cnt-- > 0) {
			flash_write16(flash_read16(src), dst);
			src += 2, dst += 2;
		}
	} else if (bankwidth_is_4(info)) {
Ejemplo n.º 3
0
void MCU_init(void)
{
  PM7_bit.no7 = 0;  // P7.7 como saída
  PM6_bit.no3 = 0;  // P6.3 como saída
  LED_RPB = 1;      // led da RPB desligado
  LED3_RSK = 1;     // led 3 da RSK desligado
  // configura o LOCO (15kHz) como fonte de clock do IT/RTC
  OSMC = bWUTMMCK0;
  RTCEN = 1;        // habilita o RTC e o IT  
  // Configura o IT para uma interrupção a cada 150 contagens, ou seja:
  // 150/15000 = 10ms -> uma interrupção a cada 10ms
  ITMC = bRINTE | 149;
  ITMK = 0;         // habilita a interrupção do IT
  __enable_interrupt(); // habilita as interrupções do RL78
  // restaura o estado do led conforme o conteúdo da flash  
  if (flash_read8(0xFC00)==0) LED_RPB = LED3_RSK = 0; else
    LED_RPB = LED3_RSK = 1;
}