Skip to content

Bootloader Platform Differences #2

@oclyke

Description

@oclyke

Intro

Some initial investigation indicates that there may be a dependency on timing of the accompanying Python script on the host computer. On Windows the timing is sufficient to successfully bootload, but on MacOSX (and possibly Linux) the timing causes a failure when using the Artemis Bootloader.

Background

  • Most testing of the Artemis Bootloader (also called "SparkFun Variable Loader" or SVL) has occurred on Windows machines.
  • Deploying the Apollo3 Arduino Core increased the amount of testing that could be done on Mac and Linux, many thanks to helpful users
  • This issue was found after looking into this issue: Upload issue SparkFun Edge

Details

  • Differences between Windows and MacOSX (and perhaps Linux) within SVL Python script: (Can be observed in Logic LA captures SecondResetCapture (Mac) and GoodWindowsRef (Windows)
    • Time to switch USB-serial baud rate. (Windows: ~15 ms, MacOSX: ~37 ms)
    • Control lines toggle on change baud rate. (Windows: no control toggle on baud change, MacOSX: Control lines toggle causing another reset after changing baud rate)

Explanation

The differences above cause the bootload process to fail, each for their own reasons.

  • The time to switch can cause the bootloader to hang if the computer does not send"BL_COMMAND_COMPUTER_READY" before the bootloader sends "BL_COMMAND_NEXT_FRAME"
  • The second reset will wreak havoc on the baud rate negotiation by losing volatile baud rate data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions