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; }
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)) {
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; }