FreeCalypso > hg > freecalypso-tools
comparison doc/Target-boot-control @ 582:deda54106c0e
doc/Target-boot-control: first draft
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 03 Feb 2020 01:25:31 +0000 |
| parents | |
| children | d3e2b23ebf1d |
comparison
equal
deleted
inserted
replaced
| 581:d43dc6dfb44c | 582:deda54106c0e |
|---|---|
| 1 There is a new feature in loadtools (fc-loadtool & friends) and rvinterf as of | |
| 2 fc-host-tools-r12: target boot control. In a typical development environment | |
| 3 where FC host tools run on a general-purpose PC or laptop and communicate with | |
| 4 various Calypso targets via general-purpose serial or USB-serial ports, adapters | |
| 5 and cables, there is generally no way for the host computer running FC host | |
| 6 tools to directly command the Calypso target to power on and/or reboot - instead | |
| 7 such control must be performed "out of band" by the operator pressing the PWON | |
| 8 or RESET button on the target device; some targets may even require complex | |
| 9 battery manipulations. However, there may be more elaborate (less casual) | |
| 10 setups where FC host tools run on a special kind of host system which does have | |
| 11 some means to directly control power and reset to an associated Calypso target: | |
| 12 | |
| 13 * The Mother has a plan to produce a special FreeCalypso UART+JTAG Adapter, or | |
| 14 FC-UJA. This FC-UJA will be a special FT2232D adapter whose Channel A will | |
| 15 operate in MPSSE mode, connecting to the Calypso target's JTAG and nTESTRESET | |
| 16 signals, whereas Channel B will act as a standard UART, i.e., a ttyUSB device. | |
| 17 This FC-UJA needs to be built as a prerequisite before embarking on the | |
| 18 ambitious HSMBP (Handset Motherboard Prototype) project, as the special | |
| 19 adapter will be required for working with the HSMBP in development. When | |
| 20 FC-UJA becomes a reality, FC host tools running on a development host with | |
| 21 this adapter will need to be given the ability to issue nTESTRESET pulses to | |
| 22 the target through the adapter's MPSSE+GPIO channel; this nTESTRESET pulse | |
| 23 will cause the Calypso target to deep-reset, power on and boot. | |
| 24 | |
| 25 * FC host tools (particularly fc-loadtool) may run on the application processor | |
| 26 of a smartphone such as Openmoko GTA02. In such environments the AP will have | |
| 27 special ad hoc control signals (typically GPIOs) to the modem, at the minimum | |
| 28 controlling the modem's PWON line. OM GTA02 added an overriding control of | |
| 29 overall power to the modem; other designs may reasonably add control of the | |
| 30 modem's RESET line. | |
| 31 | |
| 32 * There may be special commercial applications in which one or more Calypso | |
| 33 modems are subservient to a control processor that acts similarly to the AP | |
| 34 of a smartphone, with that control processor not only communicating with its | |
| 35 slave modems via UARTs, but also controlling their power and reset. | |
| 36 | |
| 37 Where does the desire for target boot control in loadtools and rvinterf come | |
| 38 from? Consider the conventional usage model where no target boot control | |
| 39 exists: you first run fc-loadtool or fc-iram or fc-xram or rvinterf on your | |
| 40 target /dev/ttyXXX, then press the PWON or RESET button on the target. Now | |
| 41 suppose that the finger-actuated button has been replaced with some magic | |
| 42 command that can be executed on the host system to produce the same effect - | |
| 43 now what? If the usage model stays the same, then you have to first run your | |
| 44 fc-loadtool or fc-iram or fc-xram or rvinterf command same as before, then as | |
| 45 it sits there waiting for the target to boot, you have to open another terminal | |
| 46 window, get another ssh session into the system or whatever, and run the magic | |
| 47 command that replaces the manual button press. Very cumbersome, hence the | |
| 48 desire for a better way. | |
| 49 | |
| 50 Support for target boot control in FC host tools consists of a new -P option | |
| 51 implemented in all of loadtools programs and in rvinterf, as well as a special | |
| 52 configuration file which needs to be manually created. The working model is as | |
| 53 follows: | |
| 54 | |
| 55 * There exist one or more "magic commands": a magic command is any shell command | |
| 56 (anything that can be passed to /bin/sh -c) whose execution causes a connected | |
| 57 Calypso target device to power on and boot. Naturally these commands will be | |
| 58 very specific to your custom system; they are NOT part of FC host tools! | |
| 59 | |
| 60 * These magic commands may be long, and requiring the user to include each magic | |
| 61 command in full on fc-loadtool, rvinterf etc invokation lines is undesirable. | |
| 62 To save typing, we associate a short name (which you choose yourself as you | |
| 63 see fit) with each magic command, and we have a configuration file (which you | |
| 64 need to create) that defines the mapping. | |
| 65 | |
| 66 * The argument to the new -P option is the short name to be looked up in the | |
| 67 configuration file. | |
| 68 | |
| 69 The configuration file needs to be created in /opt/freecalypso/bootctrl.conf; | |
| 70 let us illustrate it with some examples. | |
| 71 | |
| 72 Example 1: FC-UJA | |
| 73 ================= | |
| 74 | |
| 75 When FC-UJA becomes a reality, there will be a program called fc-testreset that | |
| 76 will locate the attached FC-UJA by its USB ID, connect to FT2232D Channel A and | |
| 77 generate the desired reset pulse on its output. The configuration in | |
| 78 /opt/freecalypso/bootctrl.conf may look as follows: | |
| 79 | |
| 80 uja fc-testreset | |
| 81 | |
| 82 This configuration associates boot control name 'uja' with shell command | |
| 83 fc-testreset. A developer would then run fc-loadtool like this: | |
| 84 | |
| 85 fc-loadtool -h fcfam -Puja /dev/ttyUSB0 | |
| 86 | |
| 87 if ttyUSB0 is where FC-UJA's UART channel ended up. fc-loadtool would run | |
| 88 normally, sending beacons to /dev/ttyUSB0 and waiting for a Calypso boot ROM | |
| 89 response, but it would also execute the fc-testreset command listed in the | |
| 90 configuration file, and if everything is connected correctly, the resulting | |
| 91 nTESTRESET pulse will cause the target to boot. | |
| 92 | |
| 93 The possibility of a single host talking to multiple Calypso targets is fully | |
| 94 supported: if you have multiple FC-UJA adapters with different USB descriptor | |
| 95 serial numbers programmed in their EEPROMs connected to respective Calypso | |
| 96 targets, you could have a /opt/freecalypso/bootctrl.conf setup like this: | |
| 97 | |
| 98 uja1 fc-testreset -d serial1 | |
| 99 uja2 fc-testreset -d serial2 | |
| 100 | |
| 101 and then run fc-loadtool accordingly: | |
| 102 | |
| 103 fc-loadtool -h fcfam -Puja1 /dev/ttyUSB3 | |
| 104 fc-loadtool -h fcfam -Puja2 /dev/ttyUSB4 |
