sw: minor removal of unused code
Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
parent
d6ae51f69b
commit
a9a5f0cc0d
93
sw/src/dfu.c
93
sw/src/dfu.c
@ -29,6 +29,8 @@
|
|||||||
#include <dfu.h>
|
#include <dfu.h>
|
||||||
#include <rgb.h>
|
#include <rgb.h>
|
||||||
|
|
||||||
|
#define RESCUE_IMAGE_OFFSET 262144
|
||||||
|
|
||||||
#define ERASE_SIZE 65536 // Erase block size (in bytes)
|
#define ERASE_SIZE 65536 // Erase block size (in bytes)
|
||||||
#define WRITE_SIZE 256 // Number of bytes we can write
|
#define WRITE_SIZE 256 // Number of bytes we can write
|
||||||
|
|
||||||
@ -113,7 +115,7 @@ static void ftfl_begin_program_section(uint32_t address)
|
|||||||
|
|
||||||
static uint32_t address_for_block(unsigned blockNum)
|
static uint32_t address_for_block(unsigned blockNum)
|
||||||
{
|
{
|
||||||
static const uint32_t starting_offset = 262144;
|
static const uint32_t starting_offset = RESCUE_IMAGE_OFFSET;
|
||||||
return starting_offset + (blockNum * WRITE_SIZE);
|
return starting_offset + (blockNum * WRITE_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,19 +129,9 @@ uint8_t dfu_getstate(void)
|
|||||||
return dfu_state;
|
return dfu_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned last_blockNum;
|
|
||||||
unsigned last_blockLength;
|
|
||||||
unsigned last_packetOffset;
|
|
||||||
unsigned last_packetLength;
|
|
||||||
bool dfu_download(unsigned blockNum, unsigned blockLength,
|
bool dfu_download(unsigned blockNum, unsigned blockLength,
|
||||||
unsigned packetOffset, unsigned packetLength, const uint8_t *data)
|
unsigned packetOffset, unsigned packetLength, const uint8_t *data)
|
||||||
{
|
{
|
||||||
// uint32_t i;
|
|
||||||
last_packetLength = packetLength;
|
|
||||||
last_packetOffset = packetOffset;
|
|
||||||
last_blockLength = blockLength;
|
|
||||||
last_blockNum = blockNum;
|
|
||||||
|
|
||||||
if (packetOffset + packetLength > DFU_TRANSFER_SIZE ||
|
if (packetOffset + packetLength > DFU_TRANSFER_SIZE ||
|
||||||
packetOffset + packetLength > blockLength) {
|
packetOffset + packetLength > blockLength) {
|
||||||
|
|
||||||
@ -179,74 +171,6 @@ bool dfu_download(unsigned blockNum, unsigned blockLength,
|
|||||||
fl_current_addr = address_for_block(blockNum);
|
fl_current_addr = address_for_block(blockNum);
|
||||||
dfu_bytes_remaining = blockLength;
|
dfu_bytes_remaining = blockLength;
|
||||||
|
|
||||||
#if 0
|
|
||||||
// If it's the first block, figure out what we need to do in terms of erasing
|
|
||||||
// data and programming the new file.
|
|
||||||
if (blockNum == 0) {
|
|
||||||
const struct toboot_configuration *old_config = tb_get_config();
|
|
||||||
|
|
||||||
// Don't allow overwriting Toboot itself.
|
|
||||||
if (fl_current_addr < tb_first_free_address()) {
|
|
||||||
set_state(dfuERROR, errADDRESS);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate generation number and hash
|
|
||||||
if (tb_state.version == 2) {
|
|
||||||
struct toboot_configuration *new_config = (struct toboot_configuration *)&dfu_buffer[0x94 / 4];
|
|
||||||
|
|
||||||
// Update generation number
|
|
||||||
new_config->reserved_gen = old_config->reserved_gen + 1;
|
|
||||||
|
|
||||||
// Ensure we know this header is not fake
|
|
||||||
new_config->config &= ~TOBOOT_CONFIG_FAKE;
|
|
||||||
|
|
||||||
// Generate a valid signature
|
|
||||||
tb_sign_config(new_config);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the old configuration requires that certain blocks be erased, do that.
|
|
||||||
tb_state.clear_hi = old_config->erase_mask_hi;
|
|
||||||
tb_state.clear_lo = old_config->erase_mask_lo;
|
|
||||||
tb_state.clear_current = 0;
|
|
||||||
|
|
||||||
// Ensure we don't erase Foboot itself
|
|
||||||
for (i = 0; i < tb_first_free_sector(); i++) {
|
|
||||||
if (i < 32)
|
|
||||||
tb_state.clear_lo &= ~(1 << i);
|
|
||||||
else
|
|
||||||
tb_state.clear_hi &= ~(1 << i);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the newly-loaded program does not conform to Foboot V2.0, then look
|
|
||||||
// for any existing programs on the flash and delete those sectors.
|
|
||||||
// Because of boot priority, we need to ensure that no V2.0 applications
|
|
||||||
// exist on flash.
|
|
||||||
if (tb_state.version < 2) {
|
|
||||||
for (i = tb_first_free_sector(); i < 64; i++) {
|
|
||||||
if (tb_valid_signature_at_page(i) < 0)
|
|
||||||
continue;
|
|
||||||
if (i < 32)
|
|
||||||
tb_state.clear_lo |= (1 << i);
|
|
||||||
else
|
|
||||||
tb_state.clear_hi |= (1 << (i - 32));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we still have sectors to clear, do that. Otherwise,
|
|
||||||
// go straight into loading the program.
|
|
||||||
if (tb_state.clear_lo || tb_state.clear_hi) {
|
|
||||||
tb_state.state = tbsCLEARING;
|
|
||||||
tb_state.next_addr = fl_current_addr;
|
|
||||||
pre_clear_next_block();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tb_state.state = tbsLOADING;
|
|
||||||
ftfl_begin_erase_sector(fl_current_addr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
ftfl_begin_erase_sector(fl_current_addr);
|
ftfl_begin_erase_sector(fl_current_addr);
|
||||||
|
|
||||||
set_state(dfuDNLOAD_SYNC, OK);
|
set_state(dfuDNLOAD_SYNC, OK);
|
||||||
@ -266,15 +190,8 @@ static void fl_state_poll(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case flsERASING:
|
case flsERASING:
|
||||||
// // If we're still pre-clearing, continue with that.
|
|
||||||
// if (tb_state.state == tbsCLEARING) {
|
|
||||||
// pre_clear_next_block();
|
|
||||||
// }
|
|
||||||
// // Done! Move on to programming the sector.
|
|
||||||
// else {
|
|
||||||
fl_state = flsPROGRAMMING;
|
fl_state = flsPROGRAMMING;
|
||||||
ftfl_begin_program_section(fl_current_addr);
|
ftfl_begin_program_section(fl_current_addr);
|
||||||
// }
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flsPROGRAMMING:
|
case flsPROGRAMMING:
|
||||||
@ -299,8 +216,6 @@ bool dfu_getstatus(uint8_t status[8])
|
|||||||
|
|
||||||
case dfuDNLOAD_SYNC:
|
case dfuDNLOAD_SYNC:
|
||||||
case dfuDNBUSY:
|
case dfuDNBUSY:
|
||||||
// Programming operation in progress. Advance our private flash state machine.
|
|
||||||
// fl_state_poll();
|
|
||||||
|
|
||||||
if (dfu_state == dfuERROR) {
|
if (dfu_state == dfuERROR) {
|
||||||
// An error occurred inside fl_state_poll();
|
// An error occurred inside fl_state_poll();
|
||||||
@ -343,6 +258,8 @@ bool dfu_clrstatus(void)
|
|||||||
switch (dfu_state) {
|
switch (dfu_state) {
|
||||||
|
|
||||||
case dfuERROR:
|
case dfuERROR:
|
||||||
|
case dfuIDLE:
|
||||||
|
case dfuMANIFEST_WAIT_RESET:
|
||||||
// Clear an error
|
// Clear an error
|
||||||
set_state(dfuIDLE, OK);
|
set_state(dfuIDLE, OK);
|
||||||
return true;
|
return true;
|
||||||
|
@ -22,6 +22,7 @@ void usb_setup(struct usb_device *dev, const struct usb_setup_request *setup)
|
|||||||
{
|
{
|
||||||
case 0x0500: // SET_ADDRESS
|
case 0x0500: // SET_ADDRESS
|
||||||
case 0x0b01: // SET_INTERFACE
|
case 0x0b01: // SET_INTERFACE
|
||||||
|
dfu_clrstatus();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0900: // SET_CONFIGURATION
|
case 0x0900: // SET_CONFIGURATION
|
||||||
|
Loading…
Reference in New Issue
Block a user