Browse Source

bootloader: change flash_cache addresses to uintptr_t

To fix comilation errors on 64 bit platforms

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
release/1.12
Jukka Laitinen 4 years ago committed by David Sidrane
parent
commit
675a5a2b2c
  1. 8
      platforms/nuttx/src/bootloader/common/bl.h
  2. 8
      platforms/nuttx/src/bootloader/common/lib/flash_cache.c
  3. 6
      platforms/nuttx/src/bootloader/common/lib/flash_cache.h
  4. 10
      platforms/nuttx/src/bootloader/stm/stm32_common/main.c

8
platforms/nuttx/src/bootloader/common/bl.h

@ -106,10 +106,10 @@ extern uint32_t board_get_devices(void); @@ -106,10 +106,10 @@ extern uint32_t board_get_devices(void);
extern void clock_deinit(void);
extern uint32_t flash_func_sector_size(unsigned sector);
extern void flash_func_erase_sector(unsigned sector);
extern void flash_func_write_word(uint32_t address, uint32_t word);
extern uint32_t flash_func_read_word(uint32_t address);
extern uint32_t flash_func_read_otp(uint32_t address);
extern uint32_t flash_func_read_sn(uint32_t address);
extern void flash_func_write_word(uintptr_t address, uint32_t word);
extern uint32_t flash_func_read_word(uintptr_t address);
extern uint32_t flash_func_read_otp(uintptr_t address);
extern uint32_t flash_func_read_sn(uintptr_t address);
extern void arch_flash_lock(void);
extern void arch_flash_unlock(void);
extern void arch_setvtor(const uint32_t *address);

8
platforms/nuttx/src/bootloader/common/lib/flash_cache.c

@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
#include <nuttx/progmem.h>
extern ssize_t arch_flash_write(size_t address, const void *buffer, size_t buflen);
extern ssize_t arch_flash_write(uintptr_t address, const void *buffer, size_t buflen);
flash_cache_line_t flash_cache[FC_NUMBER_LINES];
@ -57,7 +57,7 @@ inline void fc_reset(void) @@ -57,7 +57,7 @@ inline void fc_reset(void)
flash_cache[0].start_address = APP_LOAD_ADDRESS;
}
static inline flash_cache_line_t *fc_line_select(uint32_t address)
static inline flash_cache_line_t *fc_line_select(uintptr_t address)
{
for (unsigned w = 0; w < FC_NUMBER_LINES; w++) {
if (flash_cache[w].start_address == (address & FC_ADDRESS_MASK)) {
@ -86,7 +86,7 @@ int fc_flush(flash_cache_line_t *fl) @@ -86,7 +86,7 @@ int fc_flush(flash_cache_line_t *fl)
return rv;
}
int fc_write(uint32_t address, uint32_t word)
int fc_write(uintptr_t address, uint32_t word)
{
flash_cache_line_t *fc = fc_line_select(address);
flash_cache_line_t *fc1 = &flash_cache[1];
@ -129,7 +129,7 @@ int fc_write(uint32_t address, uint32_t word) @@ -129,7 +129,7 @@ int fc_write(uint32_t address, uint32_t word)
return rv;
}
uint32_t fc_read(uint32_t address)
uint32_t fc_read(uintptr_t address)
{
// Assume a cache miss read from FLASH memory

6
platforms/nuttx/src/bootloader/common/lib/flash_cache.h

@ -58,12 +58,12 @@ @@ -58,12 +58,12 @@
// Cache line
typedef struct flash_cache_line_t {
uint32_t index; // Index of word written
uint32_t start_address; // cache tag (address in FLASH this is buffering)
uintptr_t start_address; // cache tag (address in FLASH this is buffering)
uint32_t words[FC_NUMBER_WORDS]; // Buffered data
} flash_cache_line_t;
// Resets the cache - all lines flashed and cache_line[0] start_address == APP_LOAD_ADDRESS
void fc_reset(void);
// Cache operations
uint32_t fc_read(uint32_t address);
int fc_write(uint32_t address, uint32_t word);
uint32_t fc_read(uintptr_t address);
int fc_write(uintptr_t address, uint32_t word);

10
platforms/nuttx/src/bootloader/stm/stm32_common/main.c

@ -437,7 +437,7 @@ void arch_flash_unlock(void) @@ -437,7 +437,7 @@ void arch_flash_unlock(void)
stm32h7_flash_unlock(STM32_FLASH_BANK2);
}
ssize_t arch_flash_write(size_t address, const void *buffer, size_t buflen)
ssize_t arch_flash_write(uintptr_t address, const void *buffer, size_t buflen)
{
return up_progmem_write(address, buffer, buflen);
}
@ -475,13 +475,13 @@ flash_func_erase_sector(unsigned sector) @@ -475,13 +475,13 @@ flash_func_erase_sector(unsigned sector)
}
void
flash_func_write_word(uint32_t address, uint32_t word)
flash_func_write_word(uintptr_t address, uint32_t word)
{
address += APP_LOAD_ADDRESS;
fc_write(address, word);
}
uint32_t flash_func_read_word(uint32_t address)
uint32_t flash_func_read_word(uintptr_t address)
{
if (address & 3) {
@ -494,7 +494,7 @@ uint32_t flash_func_read_word(uint32_t address) @@ -494,7 +494,7 @@ uint32_t flash_func_read_word(uint32_t address)
uint32_t
flash_func_read_otp(uint32_t address)
flash_func_read_otp(uintptr_t address)
{
return 0;
}
@ -550,7 +550,7 @@ int check_silicon(void) @@ -550,7 +550,7 @@ int check_silicon(void)
}
uint32_t
flash_func_read_sn(uint32_t address)
flash_func_read_sn(uintptr_t address)
{
// read a byte out from unique chip ID area
// it's 12 bytes, or 3 words.

Loading…
Cancel
Save