0
\$\begingroup\$

I am trying to reflash a microcontroller.

An instruction in the manual states that:

  • Power up the owa4x and press the space bar to enter the bootloader prompt
  • Insert the uSD card with the images to flash
  • Confirm a FAT32 formatted SD card is accessible

I only SSH into this microcontroller and as such it does not have a keyboard to press the space bar or a screen to see anything. If I am able to SSH I assume it's already booted up and too late to go to the bootloader, but prior to it I can't do anything because it's not booted yet.

How can I do an equivalent of that operation through SSH route?

Manual doesn't provide anymore insight.

Thank you for your help.

\$\endgroup\$
  • 1
    \$\begingroup\$ The owa4x has several serial (RS232) ports, does one act as a console port so you can access the boot loader that way? \$\endgroup\$ – Steve G Nov 18 '19 at 16:44
  • 4
    \$\begingroup\$ This sounds nothing like a microcontroller. \$\endgroup\$ – Hearth Nov 18 '19 at 17:03
5
\$\begingroup\$

What you have is not a "microcontroller" but rather an Embedded Linux System built around an Arm Cortex A8 "System on a Chip" (SOC)

Pressing space at startup is typically the behavior of a human-interactive bootloader, for example the very common Das U-Boot or proprietary alternatives of similar functionality. These are much like the startup / configuration menu of a desktop PC, in that they are small programs that run first on startup and allow selecting the source and configuration flags of the primary operating system to be run, in your case typically a Debian Linux. In addition to booting an operating system from removable media, in the case of more compact systems they may be configured with the capability to copy a new image to internal storage - though Debian systems are often large and complex enough that a (perhaps smaller) instance of the OS is booted and used to do the full copy.

Generally speaking the communication channel used is a serial port to be connected to a serial terminal. On the SoC itself this would be logic level (3v3 or quite possibly even lower) but on a finished product it may or may not be inverted and translated to RS232 levels.

You will probably need a serial terminal program and a suitable electrical interface - typically an adapter from your PC's USB port to either RS232 serial or logic level serial. You will also need to set an appropriate baud rate, though 115200 is quite common except for a few SOCs with serial timing issues that cause 57600 to be chosen instead (Additional settings of N81 with no flow control are nearly universal)

Ultimately the documentation for the product you are trying to use is hidden behind a registration portal. You'll probably need to jump through the necessary hoops to register, then study the documentation. This will help clarify if you will be interacting with U-Boot or some other bootloader, and if you will be doing the copy at that level, or if you will be allowing some instance of Linux to boot and then have that perform the copy to internal storage.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ I am reading the documentation from behind the portal, and it is not very helpful. "Updating firmware" has only two options "uSD" and "TFTP server" and both involve pressing the space to initiate process. Thanks for your answer. \$\endgroup\$ – mega_creamery Nov 18 '19 at 16:55
  • 2
    \$\begingroup\$ The mention of TFTP makes it highly likely to be U-Boot. You need to find and read the details of how to connect a serial terminal. Or at least find out the safe I/O voltages. Looking at the electrical aspects of boot output messages with a scope would be an approach in reverse engineering, but you have a product with documentation, so do not need to fly blind. \$\endgroup\$ – Chris Stratton Nov 18 '19 at 16:57

Not the answer you're looking for? Browse other questions tagged or ask your own question.