(tr)uSDX firmware, bootloader, application – an explanation

Introduction

The term firmware means lots of things to lots of people, and you will see so many definitions that it becomes confusing.

It is apparent from postings by people about (tr)uSDX (trusdx) that the rubbery definition prevails in that environment also.

The term firmware came into being 50 odd years ago, about the time that microcomputers appeared. There was a need for a term to describe something that sat between traditional hardware and software, the programming that was ’embedded’ in the system.

ATmega328P memory

In the case of the ATmega328P (as used in the (tr)uSDX), it contains three main blocks of memory and some auxilliary non-volatile storage, the three main types are:

  • RAM (volatile scratch storage used for running programs);
  • FLASH (non-volatile memory used for user programs (instructions and constant data); and
  • EEPROM (non-volatile memory often used to save settings, calibration data etc).

Firmware

We might reasonably regard that all of the contents of FLASH is firmware.

Bootloader

(tr)uSDX uses a bootloader, user code that can be executed on startup to load user programs into FLASH. In the case of the ATmega328P, the bootloader resides in FLASH at the top of the address range. FUSE settings tell the system to start at the boot section on power on reset, and they can be used to protect the bootloader from corruption on reliable systems (this last feature is NOT used on (tr)uSDX).

Above is a map of FLASH memory for an ATmega328P for the configuration used by (tr)uSDX from the chip datasheet. Continue reading (tr)uSDX firmware, bootloader, application – an explanation

SNTP synchronised clock v0.04 – beta release

The SNTP synchronised clock (ssc) is an ESP8266 based time of day clock with an LED display.

Above are two prototypes both using HT16K33 display modules. (The display has a blinking colon, it is off in the pic.) There is a silicon photo transistor just above the display, used to sense day/night and the firmware changes display brightness. Continue reading SNTP synchronised clock v0.04 – beta release

Chinese 9.6V 700mAh Tamiya style battery pack

I had need for a rechargeable 9.6V NiMHbattery to replace a worn out one.

The last was made by fabricating a pack with AA long life cells and it worked well for 10 years… but its time had come.

The above pack on eBay for $12 ($17/Ah) looked interesting, though it would need a wrap of heavier heatshrink. Continue reading Chinese 9.6V 700mAh Tamiya style battery pack

Chinese 3.0V 16340 CR2 Lithium Ion batteries

I had need for a rechargeable CR2 battery. The ‘standard’ CR2 is a non-rechargeable Lithium battery of nominal 3.0V.

I purchased two Ultrafire batteries advertised on eBay as Lithium-ion of 800mAh for $20. Without further qualification, we normally take Lithium Ion to be nominally 3.6V. The batteries are marked Li-ion 3.0V. Continue reading Chinese 3.0V 16340 CR2 Lithium Ion batteries

(tr)uSDX bootloader corruption – a smoking gun – an experiment

At (tr)uSDX bootloader corruption – a smoking gun I proposed that the (tr)uSDX (trusdx) is vulnerable to users attempting to program the initial bootloader file using the (tr)uSDX USB port and its bootloader interface because without protection, that will attempt to overlay the bootloader while it is being executed and that is likely to corrupt the bootloader.

The (tr)uSDX bootloader code is proprietary, ie secret.

This article documents an experiment that demonstrates the vulnerability, and the effect of bootloader section protection.

Below are a series of verbose AVRDUDE logs of the operations to discover / demonstrate the outcomes. Continue reading (tr)uSDX bootloader corruption – a smoking gun – an experiment

(tr)uSDX bootloader corruption – a smoking gun

A common topic of discussion on (tr)uSDX (trusdx) forum is problems in loading firmware (application or bootloader.

A user posting provides evidence for discussion of the problem in this case, probable cause, solution, and a better design to prevent the problem.

Analysis

The type of programmer (Arduino), connection (COM port) are the settings one would use to talk to a bootloader already installed on the mcu to write the application program to flash. They are not the settings one would use to install the bootloader, they are not suitable for talking to the ISP facility burned into silicon. Continue reading (tr)uSDX bootloader corruption – a smoking gun

Digital display for DIY 25W dummy load – part 2

Digital display for DIY 25W dummy load – part 1 described VK4MQ’s build of a DIY 25W dummy load / digital wattmeter with very good performance. As part of the project, Bruce made an exhaustive set of measurements of Prf vs Vdc from 0.001W to 25W. A second order curve fit was calculated and is used in the instrument to transform measured Vdc to Prf for display.

That project was an elaboration of a design worked up at Digital display for QRP labs 20W dummy load – part 1 and following articles. That workup included an LTSPICE model of the half wave detector with BAT46 diode, 0.1µF capacitor and 56k+1k voltage divider. A second order curve fit was calculated and is used to transform measured Vdc to Prf for display.

This article compares the LTSPICE model data set, its curve fit, the measurements of Bruce’s implementation, and its curve fit. Continue reading Digital display for DIY 25W dummy load – part 2

Digital display for DIY 25W dummy load – part 1

Digital display for QRP labs 20W dummy load – part 1 and following articles laid out a initial study into the feasibility of an approach of a similar project. This project uses the same display solution for a DIY 25W dummy load / digital wattmeter with very good performance.

This article describes Bruce, VK4MQ’s, build.

Implementation

Bruce built the dummy load wattmeter into a small die cast box.

Above, the front panel view, the OLED display shows power in watts and dBm, and a bar chart display. The unit is battery powered, and has a on/off switch on the front panel. Continue reading Digital display for DIY 25W dummy load – part 1

NanoVNA source mismatch error

One of the popular ideas online is that the correction process in the NanoVNA does not correct errors in mismatch at Port 1 and Port 2. This article deals with the first case ONLY, Port 1 mismatch.

An experiment with source VSWR nominally 2:1

A NanoVNA was configured with a SMA tee connected to Port 1 and a good 50Ω termination connected to the branch port, see the pic below. The left hand side of the tee becomes the new Port 1 interface, and by virtue of the additional 50Ω shunt termination, if the native Port 1 was indeed well represented by a Thevenin equivalent circuit with Zs close to 50+j0, the Thevenin source impedance is now closer to half that, Zs close to 25+j0.

Some would calculate this mismatch as causing a mismatch loss of 0.512dB that is additional loss in the s21 path.

Above is the test setup. The NanoVNA was SOLT calibrated with cal parts attached to the left hand side of the tee and the 200mm coax jumper from that point to Port 2. Continue reading NanoVNA source mismatch error