Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to use PropLoader instead of Propeller-Load to achieve Wi-Fi and faster serial loads #28

Closed
PropGit opened this issue Jan 23, 2017 · 2 comments

Comments

@PropGit
Copy link

PropGit commented Jan 23, 2017

Update BlocklyProp Client to support the latest loader submodule.

The Propeller download protocol has been greatly enhanced to support

  • 6x faster downloads and,
  • wireless (Wi-Fi) downloads

The old Propeller-Load command-line tool must be replaced with the new PropLoader command-line tool to achieve this. The source can be found in the PropLoader Repository and the precompiled release files in the PropLoader Releases area.

Some of the command-line options (switches) and most of the output messages for PropLoader are different than for Propeller-Load; care must be taken to invoke the correct options for the intended purpose and to interpreter the responses properly. The full list is in the next post. Below are some important distinctions.

Options:

  • Listing all serial ports
-------Old--------    -------New-------
propeller-load -Q       proploader -P
  • Listing all Wi-Fi ports
-------Old--------    -------New-------
 <not applicable>       proploader -W
  • Downloading via a serial port
-------Old--------    -------New-------
      <same>                <same>
  • Downloading via a Wi-Fi port
-------Old--------    -----------------New-----------------
 <not applicable>     proploader -i <ip_address> <app_name>
  • Enter terminal mode after download
-------Old--------    -------New-------
propeller-load -t       proploader -T

NOTE: The -T option is for a Parallax Serial Terminal compatible mode which is likely the best option for BlocklyProp; however, -t may be used if the results are better with BlocklyProp's terminal.

Message Output
The PropLoader features the -c option to output a unique Message ID code for specific messages. Use the -c feature to easily determine if the download was successful or not. Parse the start of messages from PropLoader for certain codes; See Simple IDE Issue #260.

For example: message 005 means the download was successful, and 006 means it is now switching to terminal mode. Anything in the 100 range means the download failed (when the intent was to download, of course).

@PropGit
Copy link
Author

PropGit commented Jan 23, 2017

"Old" Propeller-Load Options

usage: propeller-load
         [ -b <type> ]     select target board (default is 'default:default')
         [ -p <port> ]     serial port (default is to auto-detect the port)
         [ -P ]            list serial ports with Propeller chips
         [ -Q ]            list available serial ports
         [ -I <path> ]     add a directory to the include path
         [ -D var=value ]  define a board configuration variable
         [ -e ]            write the program into EEPROM
         [ -r ]            run the program after loading
         [ -s ]            write a spin .binary file for use with the Propeller Tool
         [ -x ]            write a .pex binary file for use with the SD loader or SD cache
         [ -l ]            write a program to the sd card and use the SD loader
         [ -z ]            write a program to the sd card and use the SD cache
         [ -f ]            write a file to the SD card
         [ -t ]            enter terminal mode after running the program
         [ -t<baud> ]      enter terminal mode with a different baud rate
         [ -q ]            quit on the exit sequence (0xff, 0x00, status)
         [ -v ]            verbose output
         [ -S ]            slow down the loader by adding 5 microseconds delay
         [ -S<n> ]         slow down the loader by adding <n> microseconds delay
         [ -? ]            display a usage message and exit
         <name>            elf or spin binary file to load

Target board type can be either a single identifier like 'propboe' in which case the subtype

defaults to 'default' or it can be of the form <type>:<subtype> like 'c3:ram'.

Variables that can be set with -D are:
  clkfreq clkmode baudrate reset rxpin txpin tvpin
  cache-driver cache-size cache-param1 cache-param2
  sd-driver sdspi-do sdspi-clk sdspi-di sdspi-cs
  sdspi-clr sdspi-inc sdspi-start sdspi-width spdspi-addr
  sdspi-config1 sdspi-config2 eeprom-first

Value expressions for -D can include:
  rcfast rcslow xinput xtal1 xtal2 xtal3 pll1x pll2x pll4x pll8x pll16x k m mhz true false
  an integer or two operands with a binary operator + - * / % & | or unary + or -
  all operators have the same precedence

The -b option defaults to the value of the environment variable PROPELLER_LOAD_BOARD.
The -p option defaults to the value of the environment variable PROPELLER_LOAD_PORT
if it is set. If not the port will be auto-detected.

The 'sd loader' loads AUTORUN.PEX from an SD card into external memory.
It requires a board with either external RAM or ROM.

The 'sd cache' arranges to run AUTORUN.PEX directly from the SD card.
It can be used on any board with an SD card slot.

"New" PropLoader Options

PropLoader v1.0-24 (2017-01-05 10:03:49 g40ee527)

usage: proploader [options] [<file>]

options:
    -b <type>       select target board and subtype (default is 'default:default')
    -c              display numeric message codes
    -D var=value    define a board configuration variable
    -e              program eeprom (and halt, unless combined with -r)
    -f <file>       write a file to the SD card
    -i <ip-addr>    IP address of the Parallax Wi-Fi module
    -I <path>       add a directory to the include path
    -n <name>       set the name of a Parallax Wi-Fi module
    -p <port>       serial port
    -P              show all serial ports
    -r              run program after downloading (useful with -e)
    -R              reset the Propeller
    -s              do a serial download
    -t              enter terminal mode after the load is complete
    -T              enter pst-compatible terminal mode after the load is complete
    -v              enable verbose debugging output
    -W              show all discovered wifi modules
    -?              display a usage message and exit

file:               binary file to load (.elf or .binary)

Target board type can be either a single identifier like 'propboe' in which case the subtype

defaults to 'default' or it can be of the form <type>:<subtype> like 'c3:ram'.

Module names should only include the characters A-Z, a-z, 0-9, or '-' and should not begin o
r
end with a '-'. They must also be less than 32 characters long.

Variables that can be set with -D are:
  clkfreq clkmode baudrate reset rxpin txpin tvpin
  sdspi-do sdspi-clk sdspi-di sdspi-cs
  sdspi-clr sdspi-inc sdspi-start sdspi-width spdspi-addr
  sdspi-config1 sdspi-config2

Value expressions for -D can include:
  rcfast rcslow xinput xtal1 xtal2 xtal3 pll1x pll2x pll4x pll8x pll16x k m mhz true false
  an integer or two operands with a binary operator + - * / % & | or unary + or -
  or a parenthesized expression.

@PropGit PropGit added this to the Enhance For Wireless Downloads milestone Jan 24, 2017
@PropGit PropGit changed the title Update to use PropLoader instead of Propeller-Load Update to use PropLoader instead of Propeller-Load to achieve Wi-Fi and faster serial loads Mar 16, 2017
@PropGit
Copy link
Author

PropGit commented Apr 4, 2017

Work complete for USB (serial) downloads + debugging, and Wi-Fi downloads (but not debugging).

@PropGit PropGit closed this as completed Apr 4, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant