Difference between revisions of "AXIOM Remote/Development"

From apertus wiki
Jump to: navigation, search
Line 38: Line 38:
[[File:Axiom-remote-uart-pins.jpg|200px]] [[File:FT4232H-pinout-uart-portc.jpg|200px]]
[[File:Axiom-remote-uart-pins.jpg|200px]] [[File:FT4232H-pinout-uart-portc.jpg|200px]]


==JTAG Connection==
==JTAG connection==
 
===Flashing===
 
It is possible to flash the PIC32 firmware through '''pic32prog''' and '''FT2232H''' and '''FT4232H''' adapters (amongst others, like PICkit3). Multiple devices which use ''FT2232H'' are already supported in ''pic32prog'', but not ''FT4232H''. We've forked ''pic32prog'', added ''FT4232H'' support and adjusted the build to reduce problems there (NOT PUSHED YET!).
 
https://github.com/apertus-open-source-cinema/pic32prog
 
 
===Debugging===
 
Our tests with '''OpenOCD''' and '''FT4232H''' were only partially successful, PIC32 could be accessed, resetted and halted, also registers and disassembled code inspected, but breakpoints could not be set properly or were not stopping the execution. Luckily there is a tool called '''ejtagproxy''', which can be used instead of ''OpenOCD''. Also the connection from '''gdb-multiarch''' is working properly and breakpoints are stopping the execution.
 
''ejtagproxy'' supports same devices as ''pic32prog''. We've forked ''ejtagproxy' too and added ''FT4232H'' support (NOT PUSHED YET!).
 
TODO: Add example usage of ''ejtagproxy'' and ''GDB''
 


===FT4232H wiring===
===FT4232H wiring===

Revision as of 17:24, 8 July 2021

1 UART Connection

Any UART to USB adapter should work. We use an FT4232H adapter that is available from distributors for around 28€. You require a USB-A to USB-Mini-B cable to connect the FT4232H to your computer and 3 dupont cables to connect the FT4232H to the AXIOM Remote.

1.1 FT4232H Pinout

FT4232H.jpg FT4232H-pinout.jpg

Chip Datasheet: https://ftdichip.com/wp-content/uploads/2020/08/DS_FT4232H.pdf

Mini Module Datasheet: https://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_FT4232H_Mini_Module.pdf

1.2 FT4232H wiring

FT4232H features 4 UART ports, in this example we utilize port C. Under Linux the FT4232H should simply show up as ports /dev/ttyUSB0 to /dev/ttyUSB3 where port C from the above example would correspond to /dev/ttyUSB2.

Note that the Transmit (TXD) and Receive (RCD) lines need to be cross wired meaning TXD needs to be connected to RXD and RXD to TXD. You can choose any GND pin though.

Name FT4232H pin Remote pin
GND GND GND
TXD CD0 RXD
RXD CD1 TXD

Axiom-remote-uart-pins.jpg FT4232H-pinout-uart-portc.jpg

2 JTAG connection

2.1 Flashing

It is possible to flash the PIC32 firmware through pic32prog and FT2232H and FT4232H adapters (amongst others, like PICkit3). Multiple devices which use FT2232H are already supported in pic32prog, but not FT4232H. We've forked pic32prog, added FT4232H support and adjusted the build to reduce problems there (NOT PUSHED YET!).

https://github.com/apertus-open-source-cinema/pic32prog


2.2 Debugging

Our tests with OpenOCD and FT4232H were only partially successful, PIC32 could be accessed, resetted and halted, also registers and disassembled code inspected, but breakpoints could not be set properly or were not stopping the execution. Luckily there is a tool called ejtagproxy, which can be used instead of OpenOCD. Also the connection from gdb-multiarch is working properly and breakpoints are stopping the execution.

ejtagproxy supports same devices as pic32prog. We've forked ejtagproxy' too and added FT4232H support (NOT PUSHED YET!).

TODO: Add example usage of ejtagproxy and GDB


2.3 FT4232H wiring

Name FT4232H pin Remote pin
GND GND GND
VCC (optional) 3V3 3V3
TCK AD0 TCK
TDI AD1 TDI
TDO AD2 TDO
TMS AD3 TMS

Jtag.png FT4232H-jtag.jpg FT4232H-jtag-pinout.jpg Jtag-ft4232h-pinout.jpg