orx logo

ORX serial loader

What is ORX ?

ORX defines an extremely basic protocol to easily exchange data between a host (generally a computer) and a device through a simple serial link, primarily RS232. It is fairly flexible and provides room for future use. The utility programs provided show how to implement it across multiple host platforms (MS Windows, MacOSX, Linux, BSD...). Currently, the primary application is to send code to a very primitive bootloader on the device side.

Latest updates

may 10 2012: win32 version successfully tested on MS Windows 7 64-bit. [orx_win7-64_051012.png]
may 02 2012: win32 version released.
mar 17 2012: unix_libftdi version successfully tested on Linux. [orx_linux_armv7l.png]
mar 12 2012: unix_libftdi version released (MacOS X tested). [orx_macosx_ppc.png]


--- releases ---
orx_win32_031912.zip [release notes]
orx_unix_libftdi_031212.tar.gz [release notes]

__binaries__
orx_macosx_ppc_libftdi_031212.gz [MacOSX 10.4 ppc]


--- protocol ---
HOST                                           DEVICE

|D|L|a3|a2|a1|a0|-|s3|s2|s1|s0|-|-|-|-|DT|  =>

                                            <= |A|C|K|0x00|
                                            <= |N|A|K|0x00|

SEND S bytes (if ACK received)              =>

                                               DT = C ? yes = jump and execute at address [a3 ... a0]
                                               DT = D ? yes = wait for new frames
----------------

request is 16bytes long.
response is 4bytes long.

|D|L| ascii (|0x44|0x4c|)

[a3 ... a0] download address
[s3 ... s0] dowload size (bytes)

DT = 'C' => code
DT = 'D' => data

- = don't care

----------------

example: request a 2kbytes (0x800) application code download at address 0xa0000800.

|44h|4ch|a0h|00h|08h|00h|-|00h|00h|08h|00h|-|-|-|-|43h|

jump to | tiny | classicvg | orion 

[07/2012] Copyright (c) 2010-2012 Noel Lemouel
vim logo