mirror of
https://github.com/oliverschmidt/contiki.git
synced 2024-12-22 10:30:13 +00:00
Deleted the old Sensinode 'read mac from flash' routine.
Since the introduction of a purpose-written routine, the old generic one (which was written in asm) was never being used. There was a configuration directive which allowed us to switch between the two. All references to this configuration directive have also been removed.
This commit is contained in:
parent
5d8f63a61b
commit
d958ee3125
@ -57,79 +57,3 @@ bus_init (void)
|
||||
clock_init();
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Read a block of code memory.
|
||||
* The code must be placed in the lowest bank of flash.
|
||||
*
|
||||
* \param address address to read from flash
|
||||
* \param buffer buffer to store data
|
||||
* \param size number of bytes to read
|
||||
*/
|
||||
#if !SHORTCUTS_CONF_FLASH_READ
|
||||
void
|
||||
flash_read(uint8_t *buf, uint32_t address, uint8_t size)
|
||||
{
|
||||
buf; /*dptr0*/
|
||||
address; /*stack-6*/
|
||||
size; /*stack-7*/
|
||||
|
||||
buf;
|
||||
|
||||
DISABLE_INTERRUPTS();
|
||||
__asm
|
||||
mov dpl, r2
|
||||
mov dph, r3
|
||||
mov a, r0
|
||||
push acc
|
||||
mov a, r2
|
||||
push acc
|
||||
mov a, _MEMCTR
|
||||
push acc
|
||||
|
||||
mov a, _bp
|
||||
add a, #0xf9 ;stack - 7 = size
|
||||
mov r0,a
|
||||
mov a, @r0 ;r2 = size
|
||||
mov r2, a ;r2 = size
|
||||
|
||||
inc r0
|
||||
mov a, @r0
|
||||
mov _DPL1, a ;DPTR1 = address & 0x7FFF | 0x8000
|
||||
inc r0
|
||||
mov a, @r0
|
||||
orl a, #0x80
|
||||
mov _DPH1, a
|
||||
inc r0 ;MEMCTR = ((address >> 15 & 3) << 4) | 0x01 (bank select)
|
||||
mov a, @r0
|
||||
dec r0
|
||||
rrc a
|
||||
mov a, @r0
|
||||
rrc a
|
||||
rr a
|
||||
rr a
|
||||
anl a, #0x30
|
||||
orl a, #1
|
||||
mov _MEMCTR,a
|
||||
lp1:
|
||||
mov _DPS, #1 ;active DPTR = 1
|
||||
clr a
|
||||
movc a, @a+dptr ;read flash (DPTR1)
|
||||
inc dptr
|
||||
mov _DPS, #0 ;active DPTR = 0
|
||||
movx @dptr,a ;write to DPTR0
|
||||
inc dptr
|
||||
djnz r2,lp1 ;while (--size)
|
||||
|
||||
pop acc
|
||||
mov _MEMCTR, a ;restore bank
|
||||
|
||||
pop acc
|
||||
mov r2,a
|
||||
pop acc
|
||||
mov r0,a
|
||||
__endasm;
|
||||
ENABLE_INTERRUPTS();
|
||||
DPL1 = *buf++;
|
||||
}
|
||||
#endif
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
@ -49,9 +49,6 @@
|
||||
#define inline
|
||||
|
||||
void bus_init(void);
|
||||
#if !SHORTCUTS_CONF_FLASH_READ
|
||||
void flash_read(uint8_t *buf, uint32_t address, uint8_t size);
|
||||
#endif
|
||||
void clock_ISR( void ) __interrupt (ST_VECTOR);
|
||||
|
||||
#endif /* __BUS_H__ */
|
||||
|
@ -95,12 +95,6 @@
|
||||
*/
|
||||
#define SHORTCUTS_CONF_NETSTACK 1
|
||||
|
||||
/*
|
||||
* Directly read mac from flash with a __code pointer, instead of using the
|
||||
* generic flash_read() routine. This reduces HOME code size
|
||||
*/
|
||||
#define SHORTCUTS_CONF_FLASH_READ 1
|
||||
|
||||
/*
|
||||
* Sensors
|
||||
* It is harmless to #define XYZ 1
|
||||
|
@ -99,12 +99,7 @@ set_rime_addr(void)
|
||||
uint8_t *addr_long = NULL;
|
||||
uint16_t addr_short = 0;
|
||||
char i;
|
||||
|
||||
#if SHORTCUTS_CONF_FLASH_READ
|
||||
__code unsigned char * macp;
|
||||
#else
|
||||
static uint8_t ft_buffer[8];
|
||||
#endif
|
||||
|
||||
PUTSTRING("Rime is 0x");
|
||||
PUTHEX(sizeof(rimeaddr_t));
|
||||
@ -112,7 +107,6 @@ set_rime_addr(void)
|
||||
|
||||
if(node_id == 0) {
|
||||
PUTSTRING("Reading MAC from flash\n");
|
||||
#if SHORTCUTS_CONF_FLASH_READ
|
||||
/*
|
||||
* The MAC is always stored in 0x1FFF8 of our flash. This maps to address
|
||||
* 0xFFF8 of our CODE segment, when BANK3 is selected.
|
||||
@ -138,18 +132,6 @@ set_rime_addr(void)
|
||||
/* Remap 0x8000 – 0xFFFF to BANK1 */
|
||||
FMAP = 1;
|
||||
ENABLE_INTERRUPTS();
|
||||
#else
|
||||
/*
|
||||
* Or use the more generic flash_read() routine which can read from any
|
||||
* address of our flash
|
||||
*/
|
||||
flash_read(ft_buffer, 0x1FFF8, 8);
|
||||
|
||||
/* Flip the byte order and store MSB first */
|
||||
for(i = (RIMEADDR_SIZE - 1); i >= 0; --i) {
|
||||
rimeaddr_node_addr.u8[RIMEADDR_SIZE - 1 - i] = ft_buffer[i];
|
||||
}
|
||||
#endif
|
||||
|
||||
} else {
|
||||
PUTSTRING("Setting manual address from node_id\n");
|
||||
|
Loading…
Reference in New Issue
Block a user