-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from esp8266/esp8266
asd
- Loading branch information
Showing
11 changed files
with
178 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
47 changes: 47 additions & 0 deletions
47
hardware/esp8266com/esp8266/bootloaders/eboot/eboot_command.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
#include "eboot_command.h" | ||
|
||
uint32_t crc_update(uint32_t crc, const uint8_t *data, size_t length) | ||
{ | ||
uint32_t i; | ||
bool bit; | ||
uint8_t c; | ||
|
||
while (length--) { | ||
c = *data++; | ||
for (i = 0x80; i > 0; i >>= 1) { | ||
bit = crc & 0x80000000; | ||
if (c & i) { | ||
bit = !bit; | ||
} | ||
crc <<= 1; | ||
if (bit) { | ||
crc ^= 0x04c11db7; | ||
} | ||
} | ||
} | ||
return crc; | ||
} | ||
|
||
uint32_t eboot_command_calculate_crc32(const struct eboot_command* cmd) | ||
{ | ||
return crc_update(0xffffffff, (const uint8_t*) cmd, | ||
offsetof(struct eboot_command, crc32)); | ||
} | ||
|
||
void eboot_command_read(struct eboot_command* cmd) | ||
{ | ||
const uint32_t dw_count = sizeof(struct eboot_command) / sizeof(uint32_t); | ||
uint32_t* dst = (uint32_t *) cmd; | ||
for (uint32_t i = 0; i < dw_count; ++i) { | ||
dst[i] = RTC_MEM[i]; | ||
} | ||
|
||
uint32_t crc32 = eboot_command_calculate_crc32(cmd); | ||
if (cmd->magic & EBOOT_MAGIC_MASK != EBOOT_MAGIC || | ||
cmd->crc32 != crc32) { | ||
|
||
cmd->action = ACTION_LOAD_APP; | ||
cmd->args[0] = 0; | ||
} | ||
} | ||
|
29 changes: 29 additions & 0 deletions
29
hardware/esp8266com/esp8266/bootloaders/eboot/eboot_command.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#ifndef EBOOT_COMMAND_H | ||
#define EBOOT_COMMAND_H | ||
|
||
#include <stdint.h> | ||
#include <stddef.h> | ||
#include <stdbool.h> | ||
|
||
#define RTC_MEM ((volatile uint32_t*)0x60001200) | ||
|
||
enum action_t { | ||
ACTION_COPY_RAW = 0x00000001, | ||
ACTION_LOAD_APP = 0xffffffff | ||
}; | ||
|
||
#define EBOOT_MAGIC 0xeb001000 | ||
#define EBOOT_MAGIC_MASK 0xfffff000 | ||
|
||
struct eboot_command { | ||
uint32_t magic; | ||
enum action_t action; | ||
uint32_t args[29]; | ||
uint32_t crc32; | ||
}; | ||
|
||
|
||
void eboot_command_read(struct eboot_command* cmd); | ||
|
||
|
||
#endif //EBOOT_COMMAND_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters