projects
/
simavr
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert "Merge pull request #12 from ponty/logger2"
[simavr]
/
simavr
/
sim
/
avr_flash.c
diff --git
a/simavr/sim/avr_flash.c
b/simavr/sim/avr_flash.c
index
fd0609a
..
5b8a615
100644
(file)
--- a/
simavr/sim/avr_flash.c
+++ b/
simavr/sim/avr_flash.c
@@
-28,17
+28,10
@@
static avr_cycle_count_t avr_progen_clear(struct avr_t * avr, avr_cycle_count_t
{
avr_flash_t * p = (avr_flash_t *)param;
avr_regbit_clear(p->io.avr, p->selfprgen);
{
avr_flash_t * p = (avr_flash_t *)param;
avr_regbit_clear(p->io.avr, p->selfprgen);
-
printf("
avr_progen_clear - SPM not received, clearing PRGEN bit\n");
+
AVR_LOG(avr, LOG_WARNING, "FLASH:
avr_progen_clear - SPM not received, clearing PRGEN bit\n");
return 0;
}
return 0;
}
-static uint8_t avr_flash_read(struct avr_t * avr, avr_io_addr_t addr, void * param)
-{
- avr_flash_t * p = (avr_flash_t *)param;
- uint8_t v = avr_core_watch_read(avr, addr);
- printf("avr_flash_read %02x\n", v);
- return v;
-}
static void avr_flash_write(avr_t * avr, avr_io_addr_t addr, uint8_t v, void * param)
{
static void avr_flash_write(avr_t * avr, avr_io_addr_t addr, uint8_t v, void * param)
{
@@
-61,6
+54,8
@@
static int avr_flash_ioctl(struct avr_io_t * port, uint32_t ctl, void * io_param
avr_t * avr = p->io.avr;
uint16_t z = avr->data[R_ZL] | (avr->data[R_ZH] << 8);
avr_t * avr = p->io.avr;
uint16_t z = avr->data[R_ZL] | (avr->data[R_ZH] << 8);
+ if (avr->rampz)
+ z |= avr->data[avr->rampz] << 16;
uint16_t r01 = avr->data[0] | (avr->data[1] << 8);
// printf("AVR_IOCTL_FLASH_SPM %02x Z:%04x R01:%04x\n", avr->data[p->r_spm], z,r01);
uint16_t r01 = avr->data[0] | (avr->data[1] << 8);
// printf("AVR_IOCTL_FLASH_SPM %02x Z:%04x R01:%04x\n", avr->data[p->r_spm], z,r01);
@@
-68,18
+63,18
@@
static int avr_flash_ioctl(struct avr_io_t * port, uint32_t ctl, void * io_param
avr_regbit_clear(avr, p->selfprgen);
if (avr_regbit_get(avr, p->pgers)) {
z &= ~1;
avr_regbit_clear(avr, p->selfprgen);
if (avr_regbit_get(avr, p->pgers)) {
z &= ~1;
-
printf("
Erasing page %04x (%d)\n", (z / p->spm_pagesize), p->spm_pagesize);
+
AVR_LOG(avr, LOG_TRACE, "FLASH:
Erasing page %04x (%d)\n", (z / p->spm_pagesize), p->spm_pagesize);
for (int i = 0; i < p->spm_pagesize; i++)
avr->flash[z++] = 0xff;
} else if (avr_regbit_get(avr, p->pgwrt)) {
z &= ~1;
for (int i = 0; i < p->spm_pagesize; i++)
avr->flash[z++] = 0xff;
} else if (avr_regbit_get(avr, p->pgwrt)) {
z &= ~1;
-
printf("
Writing page %04x (%d)\n", (z / p->spm_pagesize), p->spm_pagesize);
+
AVR_LOG(avr, LOG_TRACE, "FLASH:
Writing page %04x (%d)\n", (z / p->spm_pagesize), p->spm_pagesize);
} else if (avr_regbit_get(avr, p->blbset)) {
} else if (avr_regbit_get(avr, p->blbset)) {
-
printf("Set
tting lock bits (ignored)\n");
+
AVR_LOG(avr, LOG_TRACE, "FLASH: Se
tting lock bits (ignored)\n");
} else {
z &= ~1;
avr->flash[z++] = r01;
} else {
z &= ~1;
avr->flash[z++] = r01;
- avr->flash[z
++
] = r01 >> 8;
+ avr->flash[z] = r01 >> 8;
}
return 0;
}
}
return 0;
}
@@
-98,6
+93,5
@@
void avr_flash_init(avr_t * avr, avr_flash_t * p)
avr_register_vector(avr, &p->flash);
avr_register_io_write(avr, p->r_spm, avr_flash_write, p);
avr_register_vector(avr, &p->flash);
avr_register_io_write(avr, p->r_spm, avr_flash_write, p);
-// avr_register_io_read(avr, p->r_spm, avr_flash_read, p);
}
}