mirror of
https://github.com/EdgeTX/edgetx.git
synced 2025-07-23 00:05:13 +03:00
Code moved
This commit is contained in:
parent
896ff1e386
commit
96aa54ac77
3 changed files with 21 additions and 38 deletions
|
@ -356,7 +356,7 @@ int menuFlashFile(uint32_t index, uint8_t event)
|
||||||
fr = openFirmwareFile(index);
|
fr = openFirmwareFile(index);
|
||||||
fr = f_close(&FlashFile);
|
fr = f_close(&FlashFile);
|
||||||
Valid = 1;
|
Valid = 1;
|
||||||
if (isFirmwareStart(Block_buffer) == 0) {
|
if (!isFirmwareStart(Block_buffer)) {
|
||||||
Valid = 2;
|
Valid = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -648,6 +648,13 @@ int main()
|
||||||
// Commit to flashing
|
// Commit to flashing
|
||||||
uint32_t blockOffset = 0;
|
uint32_t blockOffset = 0;
|
||||||
lcd_putsLeft(4*FH, "\032Loading...");
|
lcd_putsLeft(4*FH, "\032Loading...");
|
||||||
|
|
||||||
|
if (firmwareAddress == FIRMWARE_ADDRESS + BOOTLOADER_SIZE) {
|
||||||
|
if (!isFirmwareStart(Block_buffer)) {
|
||||||
|
state = ST_FLASH_DONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
while (BlockCount) {
|
while (BlockCount) {
|
||||||
writeFlash((uint32_t *)firmwareAddress, &Block_buffer[blockOffset]);
|
writeFlash((uint32_t *)firmwareAddress, &Block_buffer[blockOffset]);
|
||||||
blockOffset += FLASH_PAGESIZE/4; // 32-bit words
|
blockOffset += FLASH_PAGESIZE/4; // 32-bit words
|
||||||
|
@ -659,6 +666,7 @@ int main()
|
||||||
BlockCount = 0;
|
BlockCount = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
firmwareWritten += 4; // 4K blocks
|
firmwareWritten += 4; // 4K blocks
|
||||||
|
|
||||||
lcd_rect( 3, 6*FH+4, 204, 7);
|
lcd_rect( 3, 6*FH+4, 204, 7);
|
||||||
|
|
|
@ -7,18 +7,6 @@ void writeFlash(uint32_t *address, uint32_t *buffer) // size is 256 bytes
|
||||||
uint32_t FlashSectorNum;
|
uint32_t FlashSectorNum;
|
||||||
uint32_t flash_cmd = 0;
|
uint32_t flash_cmd = 0;
|
||||||
|
|
||||||
/* Initialize the function pointer (retrieve function address from NMI vector) */
|
|
||||||
if ((uint32_t) address == FIRMWARE_START+BOOTLOADER_SIZE) {
|
|
||||||
if (isFirmwareStart(buffer))
|
|
||||||
FlashBlocked = 0;
|
|
||||||
else
|
|
||||||
FlashBlocked = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (FlashBlocked) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always initialise this here, setting a default doesn't seem to work
|
// Always initialise this here, setting a default doesn't seem to work
|
||||||
IAP_Function = (uint32_t (*)(uint32_t, uint32_t)) *(( uint32_t *)0x00800008);
|
IAP_Function = (uint32_t (*)(uint32_t, uint32_t)) *(( uint32_t *)0x00800008);
|
||||||
FlashSectorNum = (uint32_t) address;
|
FlashSectorNum = (uint32_t) address;
|
||||||
|
|
|
@ -43,47 +43,34 @@ void eraseSector(uint32_t sector)
|
||||||
FLASH->CR &= SECTOR_MASK;
|
FLASH->CR &= SECTOR_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeFlash(uint32_t *address, uint32_t *buffer) // size is 256 bytes
|
void writeFlash(uint32_t *address, uint32_t *buffer) // page size is 256 bytes
|
||||||
{
|
{
|
||||||
static uint8_t FlashBlocked = 1;
|
if ((uint32_t) address == 0x08000000) {
|
||||||
|
eraseSector(0);
|
||||||
uint32_t i;
|
|
||||||
|
|
||||||
if ((uint32_t) address == 0x08008000) {
|
|
||||||
if (isFirmwareStart(buffer)) {
|
|
||||||
FlashBlocked = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
FlashBlocked = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else if ((uint32_t) address == 0x08004000) {
|
||||||
if (FlashBlocked) {
|
eraseSector(1);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else if ((uint32_t) address == 0x08008000) {
|
||||||
if ((uint32_t) address == 0x08008000) {
|
|
||||||
eraseSector(2);
|
eraseSector(2);
|
||||||
}
|
}
|
||||||
if ((uint32_t) address == 0x0800C000) {
|
else if ((uint32_t) address == 0x0800C000) {
|
||||||
eraseSector(3);
|
eraseSector(3);
|
||||||
}
|
}
|
||||||
if ((uint32_t) address == 0x08010000) {
|
else if ((uint32_t) address == 0x08010000) {
|
||||||
eraseSector(4);
|
eraseSector(4);
|
||||||
}
|
}
|
||||||
if ((uint32_t) address == 0x08020000) {
|
else if ((uint32_t) address == 0x08020000) {
|
||||||
eraseSector(5);
|
eraseSector(5);
|
||||||
}
|
}
|
||||||
if ((uint32_t) address == 0x08040000) {
|
else if ((uint32_t) address == 0x08040000) {
|
||||||
eraseSector(6);
|
eraseSector(6);
|
||||||
}
|
}
|
||||||
if ((uint32_t) address == 0x08060000) {
|
else if ((uint32_t) address == 0x08060000) {
|
||||||
eraseSector(7);
|
eraseSector(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now program the 256 bytes
|
for (uint32_t i=0; i<FLASH_PAGESIZE/4; i++) {
|
||||||
|
|
||||||
for (i = 0; i < 64; i += 1) {
|
|
||||||
/* Device voltage range supposed to be [2.7V to 3.6V], the operation will
|
/* Device voltage range supposed to be [2.7V to 3.6V], the operation will
|
||||||
be done by word */
|
be done by word */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue