mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-31 18:47:21 +08:00
fix(bootloader): remove broken PROTO_SET_DELAY boot-delay feature (#27081)
The bootloader boot-delay feature has been mechanically broken on every modern FMU board since the STM32F7/H7 transition. It has three independent bugs that prevent it from ever working: 1. Offset mismatch: BOOT_DELAY_ADDRESS is hardcoded to 0x1a0, but the NuttX vector table is 504 B (F76x) to 664 B (H743) long. The linker places _bootdelay_signature at ALIGN(32) past end of vectors (e.g. 0x2a0 on CubeOrange), never at 0x1a0. The bootloader reads random exception_common pointers in place of the magic and never matches BOOT_DELAY_SIGNATURE1/2. Verified on CubeOrange with objdump of cubepilot_cubeorange_default.elf. 2. Flash cache never flushes: fc_write() stores arbitrary writes in cache line 1 and only flushes on a very specific condition tied to the sequential firmware upload flow. A standalone write during PROTO_SET_DELAY is cached forever. fc_read() then returns the cached value, so the post-write verify lies and the bootloader reports success. Nothing ever reaches flash. 3. H7 write granularity: the STM32H7 flash controller requires a full 32-byte program cycle per write. Single 32-bit writes from flash_func_write_word() would not be accepted by the controller even if they reached it. The feature has been silently dead on every H7/F7 FMU board for years and no one noticed, which is strong evidence nothing actually depends on it. Rather than fix it (which would mean rewriting PROTO_SET_DELAY, the flash cache path, and the H7 flash programming path), remove it. Changes: - bl.c: PROTO_SET_DELAY case now immediately NACKs (goto cmd_bad) so clients that still send the command get a clear rejection instead of the previous silent fake-success. The opcode stays in the protocol enum for backwards compatibility. - bl.h: drop BOOT_DELAY_SIGNATURE1/2 and BOOT_DELAY_MAX. - stm/stm32_common/main.c, nxp/imxrt_common/main.c: drop the startup boot-delay sig check block. - image_toc.c: decouple find_toc() from BOOT_DELAY_ADDRESS. BOARD_IMAGE_TOC_OFFSET is now the required define when BOOTLOADER_USE_TOC is enabled. The body is wrapped in #ifdef BOOTLOADER_USE_TOC and falls back to a stub returning false when the TOC is not in use (no upstream board currently enables it). - Linker scripts: strip EXTERN(_bootdelay_signature) and the FILL/. += 8 block from all 142 affected .ld files across boards/. - hw_config.h: strip the #define BOOT_DELAY_ADDRESS and its comment block entry from all 48 affected boards. - Tools/px4_uploader.py, Tools/teensy_uploader.py: remove --boot-delay, set_boot_delay(), and SET_BOOT_DELAY client-side counterpart. Smoke-built on cubepilot_cubeorange_default and cubepilot_cubeorange_bootloader; no link errors, no unresolved symbols, flash usage unchanged. Tested: - New BL, new FW - Old BL, old FW - Old BL, new FW - New BL, old FW
This commit is contained in:
@@ -198,7 +198,6 @@ class BootloaderCommand(IntEnum):
|
|||||||
GET_OTP = 0x2A # rev4+, get a word from OTP area
|
GET_OTP = 0x2A # rev4+, get a word from OTP area
|
||||||
GET_SN = 0x2B # rev4+, get a word from SN area
|
GET_SN = 0x2B # rev4+, get a word from SN area
|
||||||
GET_CHIP = 0x2C # rev5+, get chip version
|
GET_CHIP = 0x2C # rev5+, get chip version
|
||||||
SET_BOOT_DELAY = 0x2D # rev5+, set boot delay
|
|
||||||
GET_CHIP_DES = 0x2E # rev5+, get chip description in ASCII
|
GET_CHIP_DES = 0x2E # rev5+, get chip description in ASCII
|
||||||
GET_VERSION = 0x2F # rev5+, get bootloader version in ASCII
|
GET_VERSION = 0x2F # rev5+, get bootloader version in ASCII
|
||||||
REBOOT = 0x30
|
REBOOT = 0x30
|
||||||
@@ -1148,20 +1147,6 @@ class BootloaderProtocol:
|
|||||||
else:
|
else:
|
||||||
self.verify_read(firmware, progress_callback)
|
self.verify_read(firmware, progress_callback)
|
||||||
|
|
||||||
def set_boot_delay(self, delay_ms: int) -> None:
|
|
||||||
"""Set boot delay in flash (v5+).
|
|
||||||
|
|
||||||
Args:
|
|
||||||
delay_ms: Boot delay in milliseconds
|
|
||||||
"""
|
|
||||||
if self.bl_rev < 5:
|
|
||||||
logger.warning("Boot delay requires bootloader v5+")
|
|
||||||
return
|
|
||||||
|
|
||||||
self._send_command(BootloaderCommand.SET_BOOT_DELAY, struct.pack("b", delay_ms))
|
|
||||||
self._get_sync()
|
|
||||||
logger.info(f"Boot delay set to {delay_ms}ms")
|
|
||||||
|
|
||||||
def reboot(self) -> None:
|
def reboot(self) -> None:
|
||||||
"""Reboot into the application.
|
"""Reboot into the application.
|
||||||
|
|
||||||
@@ -1569,7 +1554,6 @@ class UploaderConfig:
|
|||||||
baud_flightstack: list[int] = field(default_factory=lambda: [57600])
|
baud_flightstack: list[int] = field(default_factory=lambda: [57600])
|
||||||
force: bool = False
|
force: bool = False
|
||||||
force_erase: bool = False
|
force_erase: bool = False
|
||||||
boot_delay: Optional[int] = None
|
|
||||||
use_protocol_splitter: bool = False
|
use_protocol_splitter: bool = False
|
||||||
retry_count: int = 3
|
retry_count: int = 3
|
||||||
windowed: bool = False
|
windowed: bool = False
|
||||||
@@ -1924,10 +1908,6 @@ class Uploader:
|
|||||||
# Verify
|
# Verify
|
||||||
protocol.verify(firmware, progress_callback=progress.update_verify)
|
protocol.verify(firmware, progress_callback=progress.update_verify)
|
||||||
|
|
||||||
# Set boot delay if requested
|
|
||||||
if self.config.boot_delay is not None:
|
|
||||||
protocol.set_boot_delay(self.config.boot_delay)
|
|
||||||
|
|
||||||
# Reboot and show summary
|
# Reboot and show summary
|
||||||
protocol.reboot()
|
protocol.reboot()
|
||||||
progress.finish()
|
progress.finish()
|
||||||
@@ -2009,9 +1989,6 @@ Examples:
|
|||||||
action="store_true",
|
action="store_true",
|
||||||
help="Force full chip erase (v6+ bootloader)",
|
help="Force full chip erase (v6+ bootloader)",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
|
||||||
"--boot-delay", type=int, help="Boot delay in milliseconds to store in flash"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--use-protocol-splitter-format",
|
"--use-protocol-splitter-format",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
@@ -2068,7 +2045,6 @@ Examples:
|
|||||||
baud_flightstack=baud_flightstack,
|
baud_flightstack=baud_flightstack,
|
||||||
force=args.force,
|
force=args.force,
|
||||||
force_erase=args.force_erase,
|
force_erase=args.force_erase,
|
||||||
boot_delay=args.boot_delay,
|
|
||||||
use_protocol_splitter=args.use_protocol_splitter_format,
|
use_protocol_splitter=args.use_protocol_splitter_format,
|
||||||
windowed=args.windowed,
|
windowed=args.windowed,
|
||||||
noninteractive=args.noninteractive or args.noninteractive_json,
|
noninteractive=args.noninteractive or args.noninteractive_json,
|
||||||
|
|||||||
@@ -80,7 +80,6 @@ def main():
|
|||||||
parser = argparse.ArgumentParser(description="Firmware uploader for the PX autopilot system.")
|
parser = argparse.ArgumentParser(description="Firmware uploader for the PX autopilot system.")
|
||||||
parser.add_argument('--port', action="store", required=True, help="Comma-separated list of serial port(s) to which the FMU may be attached")
|
parser.add_argument('--port', action="store", required=True, help="Comma-separated list of serial port(s) to which the FMU may be attached")
|
||||||
parser.add_argument('--force', action='store_true', default=False, help='Override board type check, or silicon errata checks and continue loading')
|
parser.add_argument('--force', action='store_true', default=False, help='Override board type check, or silicon errata checks and continue loading')
|
||||||
parser.add_argument('--boot-delay', type=int, default=None, help='minimum boot delay to store in flash')
|
|
||||||
parser.add_argument('--vendor-id', type=lambda x: int(x,0), default=None, help='PX4 USB vendorid')
|
parser.add_argument('--vendor-id', type=lambda x: int(x,0), default=None, help='PX4 USB vendorid')
|
||||||
parser.add_argument('--product-id', type=lambda x: int(x,0), default=None, help='PX4 USB productid')
|
parser.add_argument('--product-id', type=lambda x: int(x,0), default=None, help='PX4 USB productid')
|
||||||
parser.add_argument('firmware', action="store", nargs='+', help="Firmware file(s)")
|
parser.add_argument('firmware', action="store", nargs='+', help="Firmware file(s)")
|
||||||
|
|||||||
@@ -130,20 +130,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,20 +131,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -53,8 +53,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -95,7 +93,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 1124
|
#define BOARD_TYPE 1124
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (15)
|
#define BOARD_FLASH_SECTORS (15)
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -70,7 +68,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 7120
|
#define BOARD_TYPE 7120
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (15)
|
#define BOARD_FLASH_SECTORS (15)
|
||||||
|
|||||||
@@ -65,20 +65,12 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -70,7 +68,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 57
|
#define BOARD_TYPE 57
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (15)
|
#define BOARD_FLASH_SECTORS (15)
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -70,7 +68,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,921600"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,921600"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 59
|
#define BOARD_TYPE 59
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (14)
|
#define BOARD_FLASH_SECTORS (14)
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -70,7 +68,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS5,921600"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS5,921600"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 58
|
#define BOARD_TYPE 58
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (14)
|
#define BOARD_FLASH_SECTORS (14)
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -90,7 +90,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(_main_toc)
|
EXTERN(_main_toc)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -99,12 +98,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xb4ecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.main_toc)
|
*(.main_toc)
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -64,7 +62,6 @@
|
|||||||
#define INTERFACE_USB 0
|
#define INTERFACE_USB 0
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 60
|
#define BOARD_TYPE 60
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (15)
|
#define BOARD_FLASH_SECTORS (15)
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -65,7 +63,6 @@
|
|||||||
#define INTERFACE_USB 0
|
#define INTERFACE_USB 0
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 53
|
#define BOARD_TYPE 53
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (15)
|
#define BOARD_FLASH_SECTORS (15)
|
||||||
|
|||||||
@@ -89,20 +89,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -72,12 +72,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -71,12 +71,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -130,20 +130,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,20 +131,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -53,8 +53,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -95,7 +93,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 1189
|
#define BOARD_TYPE 1189
|
||||||
#define BOARD_FLASH_SECTORS (14)
|
#define BOARD_FLASH_SECTORS (14)
|
||||||
#define BOARD_FLASH_SIZE (16 * 128 * 1024)
|
#define BOARD_FLASH_SIZE (16 * 128 * 1024)
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -70,7 +68,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 7000
|
#define BOARD_TYPE 7000
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (15)
|
#define BOARD_FLASH_SECTORS (15)
|
||||||
|
|||||||
@@ -65,8 +65,6 @@ EXTERN(_vectors) /* force the vectors to be included in the output */
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
EXTERN(board_get_manifest)
|
EXTERN(board_get_manifest)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
@@ -140,12 +139,6 @@ SECTIONS
|
|||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
|
||||||
* delay provided by an APP FW
|
|
||||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||||
@@ -70,7 +68,6 @@
|
|||||||
//#define USE_VBUS_PULL_DOWN
|
//#define USE_VBUS_PULL_DOWN
|
||||||
#define INTERFACE_USART 1
|
#define INTERFACE_USART 1
|
||||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
#define INTERFACE_USART_CONFIG "/dev/ttyS0,1500000"
|
||||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
|
||||||
#define BOARD_TYPE 7001
|
#define BOARD_TYPE 7001
|
||||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||||
#define BOARD_FLASH_SECTORS (15)
|
#define BOARD_FLASH_SECTORS (15)
|
||||||
|
|||||||
@@ -132,20 +132,12 @@ ENTRY(_stext)
|
|||||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||||
*/
|
*/
|
||||||
EXTERN(abort)
|
EXTERN(abort)
|
||||||
EXTERN(_bootdelay_signature)
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
.text : {
|
.text : {
|
||||||
_stext = ABSOLUTE(.);
|
_stext = ABSOLUTE(.);
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
/*
|
|
||||||
This signature provides the bootloader with a way to delay booting
|
|
||||||
*/
|
|
||||||
_bootdelay_signature = ABSOLUTE(.);
|
|
||||||
FILL(0xffecc2925d7d05c5)
|
|
||||||
. += 8;
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user