This is a basic terminal example implemented on an Arduino. The purpose is to provide an easy way to be able to GET/SET various settings/registers and execute functions from a terminal program such as RealTerm, Tera Term, or Putty.
Category: Firmware
C# Example – Hash Checker
In part of an effort to push documentation, traceability, and verification to the production and engineering workflows I created a simple WPF calculator and comparator for MD5 and SHA1 cryptographic hashes. The program currently supports MD5 and SHA1 hashes. Running the software Download the repository from the GitHub link below. Run the EXE file located […]
Creating a Low-Level Serial Protocol
When developing systems of any complexity we’re tasked with either making multiple modules inside a system talk to each other, or the system itself talks to the outside world. It’s at this point that we need to develop a protocol to be able to send any amount of coherent data back and forth. Whether you’re […]
Hashes in the Firmware Development Workflow
Hashes are like checksums in that it takes an individual binary file and uses an algorithm based on the original file to generate an individual number. This number can then be compared to a reference number to determine integrity and authenticity of the file. These hashes play an integral part in production releases of a […]
The CRC8 Checksum
The Cyclic Redundancy Check (CRC) byte in a serial packet is used for error detection. The method covered in this post is identical to the Maxim/Dallas 1-wire devices called Dow CRC. This is done through the following formula: Lucky for us, this data can be compressed to a simple Look Up Table (LUT) for efficient […]
RealTerm and CSV Debugging
What if what you’re debugging is a little more complicated than verifying a serial packet? That you’re not just tracking down an issue with a couple bytes or words of sensor, variable, or EEPROM data, but a more complex algorithm. In doing so, you may want to know the critical values involved in each step […]
Software: Octave
GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also […]
Timer Module on PIC18 Microcontrollers (in mikroC)
Timers are a fundamental building block in embedded programming and are integral when implementing an RTOS or an RTOS like solution. The high-level basic premise is that the internal module counts “ticks” either from an internal clock source or an external oscillator. When this count overflows an interrupt is thrown. Depending on how you configure […]
Visual Studio Code
Microsoft’s new Visual Studio offering isn’t a full IDE but a light-weight (and cross-platform) text editor. Packed with intellisense, version control, and debug tools it can be a powerful addition to your tool-box. The Good VS Code is simple, clean, and easy to use. Since I don’t tend to program a substantial amount of C# […]
DFU Mode on a STM32 Microcontroller
DFU (Device Firmware Update) mode is an incredibly useful feature on modern microcontrollers. It allows for quick and easy updates to a device’s firmware without the need of extra piece of hardware. This can be critical if you need to update the firmware of a device in the field or to streamline a production or […]