Profileimage by Steve Johnson Embedded Firmware Engineer with Digital PCB Skills from

Steve Johnson

available

Last update: 06.09.2022

Embedded Firmware Engineer with Digital PCB Skills

Graduation: not provided
Hourly-/Daily rates: show
Languages: English (Native or Bilingual)

Attachments

stevej-cv_2020.docx

Skills

Jira, Jenkins, C#, AVR, 6502 variants, Z80 variants, 68xx variants, FPGA, Verilog, FreeRTOS, Programming, C, C++ and OOP concepts, Assembler, scripting languages, bash, python, php, multithreading, interrupts, state machines, rtos, MISRA, Linux, Gentoo, Interfaces, SPI, I2C, CANBus, Modbus, RS232/422/485, TCP/UDP (all layers), Bluetooth, BLE, Ethernet, Wifi, Zigbee, digital and analogue circuits, microcontroller, Fuzzy Logic, Neural Networks, Machine Learning, Firmware, bootloader, coding, bugs, Raspberry Pi, IoT, C++, wrapper, state machine, ARM7, Atmel, TCP/IP, RS232, touch screen, IMX6, eclipse, hardware interface, user interaction, embedded system, udp, decoding, GPU, continuous integration, embedded code, GPS, Android, iOS, smart phones, debugging, backend, Python testing scripts, hardware interfaces, Git, source control, codebase, RS485, code structure, 8bit, OMAP, cloud, data centres, video display, daemons, Apache, device driver, GPIO, Java, LAN, GPRS, x86, Cobol, Pascal, C/C++, large data, embedded microcontrollers

Project history

04/2019 - 08/2019
Firmware Engineer
Aeristech, Warkwicj

Aeristech produce electric turbo systems for the automotive and industrial sectors. At the
heart of the system is an electric motor controlled a TI microcontroller and their latest
product was an all new design with a significantly smaller TI part.

I bought up (and reworked) the prototype while moving the code base from a relatively large
and fast TI chip to a substantially smaller and slower variant. Once that was complete I moved
my attention to creating a bootloader over CAN for the new device.

To round off the project I created a small/simple application written in Qt and designed a
prototype USB to CAN box for use by their customers.

08/2018 - 02/2019
Firmware Engineer
Plexus

Working on a medical device for a Plexus client following an Agile type methodology with Misra
coding standards. The project involved a device to heat water to a precise temperature and
produce a predefined water flow rate to mix with a dehydrated solution for further analysis
and experimentation.

Initially joined this project to finish off the last major item needed to store and report
machine data to the spi flash. I then went on to analyse the temperature control and finished
that by implementing and pid controller.

12/2017 - 06/2018
Firmware Engineer
Gardasoft

My second contract working at this company who produce lighting controllers for industry. This
time I was bought in to complete a new controller that interfaces with a liquid lense.

The device under development was a PIC microcontroller running at 30Mhz and in a very small
form factor. All coding was done at a bare metal level using the standard Microchip tools.

The project was made it bit more difficult due to the microcotnroller having a number of
firmware bugs relating to it's I2C master and slave routines. The issue was further
complicated with customer who was running a Raspberry Pi which has its own firmware bugs with
the on board chipset.

Project was completed on time and I saw the development through to final release and initial
support with end clients. There was some problems with the clients expectations of what the
unit was capable of, but a resolution was found and the customers were happy at the end of the
day.

10/2017 - 11/2017
Firmware Engineer
Felcana

An IoT project for dog and cat owners to track their pets walking, sleeping and feeding
habits. I was bought in the code up an driver for a SubGHz communications chips.

The system was built on top of an ESP32 running FreeRtos and C++ with the Idf framework. The
core of the driver was written in C with a wrapper in C++ and then a state machine running in
it's own thread to manage the communications protocol.

03/2017 - 09/2017
Contact Firmware Engineer
Petards

Originally taken on for 6 months to help develop their safety critical train door control
systems running under microcontroller control that were running ARM7 [Atmel Framework] and
FreeRTOS software layers. Various code bashing for drivers and communication, including GNSS,
TCP/IP, RS232/485, I2C and the odd LED and boot loader into the mix.

Together with the other members of the team [managers, hardware and testing], the
microcontroller part of the project was completed within three months. After completing the
microcontroller work, I spent another month working on integrating a resistive touch screen
[one of Petards standard parts] into the IMX6 and yocto kernel/system with mixed results
depending on the prototype hardware throw at me.

After an extended holiday to the states to see the eclipse returned to Petards to work on
their microcontroller police vehicle camera system. Needed to add daylight savings to a 80C41
chip (16K) which was already 99+% full in program space. Bit of optimisation, testing, fixing
and the daylight savings was in place and a few other features were introduced with the space
afterwards.

11/2016 - 02/2017
Various Freelance

Completed a sub project for an ARM M4 to control an oven temperature for a biological
instrument via a thermocouple with accurate temperature readings. Used a pid controller to
reference a interpolated lookup table to calculate the temperature. The module was integrated
into a final prototype after my own testing and later verification. My own test routines
involved a quick bit of prototype hardware with a simple test environment with the necessary
calibration work involved.

Another project I completed was to create a test rig from conception, build and on to
implementation for a device containing a 9DoF chip with capacitive touch interface. The test
rig comprised of a bed of nails with a single board computer and a hardware interface that I
built a one off prototype circuit for. The SBC was running python to control the testing of
the board by putting the target chip in reset, diagnosing the I2C devices, bringing the target
chip out of reset and listening to the I2C communications to verify the target microcontroller
was operating correctly. A final report of pass/fail was reported with the area of the board
that may have failed.

07/2016 - 10/2016
Firmware Engineer
Hollywood Gaming

From July 2016 to Oct 2016 I was working for a company in the gaming industry that were
contracted by a major gaming company to redesign one of their major arcade machines with more
user interaction. I was responsible for creating the embedded system that took user web camera
images from up to four arcade gaming machines and display them to people outside of the gaming
pod.

The system was coded in C on Linux with each video udp stream and jpeg decoding in separate
process spaces, locked to a specific processor, that interact with a central process to
communicate with the on board GPU. Besides the main process a full continuous integration
environment was setup in Python to test the embedded code along every stage of the process.

02/2016 - 06/2016
Firmware Engineer
TomTom

As the leader in the personal GPS device market their latest product is a remote device
connected via bluetooth to Android and iOS smart phones. The device is primarily aimed at
motor scooters within the Asian and European markets. The main system chip was a ARM7 from
Atmel..

Bought in near the end of the project to sort out some of the deep underlying problems with
timings in the RTOS, Bluetooth/BLE and GPS/GNSS interactions, these were completed within a
timely manor before helping with the general debugging of the rest of the system.

The project was run in an Agile manner using Jira with Jenkins as a backend with Python
testing scripts. I was involved with creating a number of the hardware interfaces to enable
direct control of the device from Python. Git was used as the source control environment with
full code reviews for all checked in code.

11/2015 - 02/2016
Contact Embedded Engineer
Edesix

Esesix are the leading provider of wearable camera modules used by police forces and emergency
services throughout the world. The units consist of a ccd camera coupled to a SoC running
linux with a controlling 8 bit Atmel microcontroller.

The work I completed was primarily on the Avr controller to reduce the power usage of the
system so the units lasted longer while in standby and develop new features via the otg usb
connection. Some of the work involved changing the codebase for the main Linux system to
enable deep sleep when the system was inactive.

The project was run under an Agile environment which I was required to attend but I reported
directly to people above the project lead of this environment. Git was the source control
repository.

12/2013 - 07/2015
Embedded Engineer
Gardasoft Vision

Gardasoft are the leading worldwide industrial manufacturer of LED controllers and lighting
systems. Their product range run mostly on Pic33 and Arm microcontrollers and have recently
been looking at larger systems based around embedded Linux processors.

I joined the company just before the last permanent software engineering left and was
initially responsible for finished off their current product in development and getting it to
market. After the initial piece of work I helped with the transition to a new development team
and putting into place a quality code structure for future development besides helping with
the placement of a new development manager and training of two new permanent employees.

Most of the embedded work has centered around I2C/SPI control of DAC controllers within their
systems tightly coupled with timing down to a nano second level. Feedback loops are used from
ADC to monitor the voltages supplied within the controllers and I have enhanced the speed and
feedback control loops with PID and fuzzy logic mechanisms.

During prototype development of the master Linux controller I have written an I2C kernel
module that was later changed to a CanBus interface to meet the needs of the industrial
environment it would be working in. At the current time the Linux system is still in prototype
awaiting a company decision on whether it will be released.

11/2012 - 07/2013
Senior Software
Tunstall Healthcare

Tunstall Healthcare are the leading provider in assisted living for the elderly. Their main
product is a custom communication system for sheltered housing with associated ancillary
devices that support the care functions of the facility.

During my time with Tunstall I was involved with upgrading the main system through two
development cycles, providing new features to the speech control unit, the wearable fall
detector and a new nurse call unit. The main system was based on an Arm processor, the speech
control system was based on a variant of the 6502 processor (with a PIC chip controlling the
communication with the main unit) and the fall detector was based on an Arm with communications
via a custom RF protocol.

Besides doing the above development for their mainline product I also spent some time bringing
up a Linux board, with the OMAP chipset, and writing the initial kernel driver to decode their
custom communications protocol.

07/2010 - 10/2012
Senior Software Engineer
Gage Networks

Gage Networks provide hosted internet and cloud communication IPT services. These services are
hosted in data centres worldwide running on Linux and using Asterisk for telephony services for
customers.

I was initially employed to investigate building a teleconferencing system based upon an
integrated TI Arm chip and touch screen. During this build I needed to tweak the kernel drivers
for the video display and build a Linux system from the ground up, integrate this with the
Asterisk platform for telephony and connect a 3G interface as an alternative to the network
interface. The company decided in the end to sell an off the shelf Polycom unit instead.

I then went on to start a development department to produce a remote monitoring and control
system for use by customer support. The monitor provides data about the telephone platform,
Linux system state and allows the support department to control the telephony platform.

The monitoring daemons were written in C++ running under Linux and one daemon was deployed per
service instance. These daemons are accessed from a server running Apache/PHP that communicates
via sockets and stores a representative state of the data for viewing and control via a web
browser.

10/2009 - 06/2010
Senior Embedded Developer
Clenaware

I joined this company to develop and implement a monitoring board for a commercial dishwasher
used within such places as hospitals. The system was based on a PC104 board taking it's signal
from a diagnostics port available within the dishwasher. The port uses a non standard
communications protocol and required a kernel device driver to be written to enable the signals
to be read through the GPIO pins on the board. The data collected was then passed to a user
space application for transfer to a central server for real time monitoring.

When I started on the project initially, the hardware was already specified and there were a
collection of non working scripts written in a mixture of Bash, Java and Python. I took the
logic from this collection and wrote a kernel device driver and a user space daemon in C to
report back to their main website.

06/2006 - 10/2009
Senior Embedded Developer
SnakClick

SnakClick was a startup company in the the vending machine market. I joined this company near
the start of the venture until their demise in the countrywide financial situation.

There was a combination of three chips in the machine; the main chip was an Arm that was
responsible for the communications with the server and logic processing, the other two chips
were PICs and were responsible for the LED display, keypad and coin mechanism.

The main Arm chip was setup to communicate with the server via LAN, Wifi or GSM/GPRS via
on-board modules. When the LAN or Wifi was available, the machine also offered end users the
ability to check-up on the machines stock levels and show pricing information.

Local Availability

Only available in these countries: United Kingdom
Profileimage by Steve Johnson Embedded Firmware Engineer with Digital PCB Skills from Embedded Firmware Engineer with Digital PCB Skills
Register