Available for consulting

Anderson Costa

Senior Embedded Systems Developer

Systems programming, communication protocols, and firmware architecture for agricultural & industrial automation. Coding since 1997.

Based in Maringá, PR — Brazil · Speciality ISOBUS · J1939 · CAN · Experience 28+ years
GitHub LinkedIn

About

I'm a Senior Software Developer with a deep focus on Embedded Systems and software development. My career spans nearly three decades, from the early days of PIC assembly to modern C/C++ on ARM Cortex-M microcontrollers.

I specialize in agricultural and industrial automation, building robust firmware and communication stacks for environments where reliability is not optional. My work regularly involves CAN-based protocols at the hardware-software boundary — where bugs have physical consequences.

When I'm not deep in register-level debugging, I enjoy building open-source simulation tools for the embedded community and mentoring developers entering the systems programming world.

28+Years coding
15+Years in embedded
30+Repos & contributions
Coffee consumed

Skills

Languages

  • C / C++ Advanced
  • Python Advanced
  • Node.js Intermediate
  • Shell / Bash Advanced
  • HTML / CSS / JS Intermediate

Embedded

  • Embedded Linux Intermediate
  • FreeRTOS Intermediate
  • Firmware Architecture Advanced
  • HAL / LL / Bare Metal Advanced

Protocols

  • ISOBUS (ISO 11783) Advanced
  • SAE J1939 Advanced
  • CAN / CANopen Advanced
  • I2C / SPI / UART Advanced
  • LIN / FlexRay / MIL Intermediate

Hardware

  • ARM Cortex-M
  • STM32 (F / H / U series)
  • ESP32 / ESP-IDF
  • XMC 47XX / 48XX (Infineon)
  • Atmel AVR / Microchip PIC

Tools & Dev

  • Vector CANoe / CANalyzer
  • Git / Docker / CMake
  • PCAN-Explorer / Oscilloscope / Logic Analyzer
  • VSCode / GCC / Clang / LLVM

Code Review

Simulate a Code Review

I frequently review PRs addressing race conditions, memory leaks, and architectural flaws in embedded C/C++ projects.

Click below to reveal a subtle bug in this snippet of C++ code, similar to those found in multi-threaded firmware stacks.

sensors/imu_driver.cpp
void readImuData(void* arg) {
    ImuSensor* sensor = static_cast<ImuSensor*>(arg);
    while(1) {
        if (sensor->isDataReady()) {
            uint8_t buffer[64];
            sensor->readRegisters(buffer);
            
            xSemaphoreTake(sensor->mutex, portMAX_DELAY);
            memcpy(sensor->sharedBuffer, buffer, 64);
            xSemaphoreGive(sensor->mutex);
            
            sensor->notifySubscribers();
        }
        vTaskDelay(pdMS_TO_TICKS(10));
    }
}
@arcostasi Senior Review

Race Condition Risk: notifySubscribers() is called outside the mutex lock. Subscribers might start reading sharedBuffer while another thread modifies it.

Suggested fix: Move this inside the lock, or better, pass the data via a thread-safe Queue instead of a shared buffer to avoid long mutex holds during notifications.

Experience

2016 — Present

Senior Embedded Systems Developer

Agricultural & Industrial Automation

Leading firmware architecture and protocol stack development for ISOBUS-compliant agricultural machinery. Designed and implemented ISO 11783 / SAE J1939 communication layers, device drivers for CAN-bus peripherals, and field-proven RTOS integrations on ARM Cortex-M platforms.

C/C++XMC 47XXISOBUSJ1939STM32
2008 — 2015

Software Developer

Industrial Automation Projects

Developed firmware and communication drivers for industrial control systems. Worked with Modbus, RS-485, and TCP/UDP networks. Implemented robust HAL layers and bare-metal drivers for Microchip and Atmel microcontrollers.

CBare MetalRS-485ModbusMicrochip
1997 — 2008

Software Developer

General Software Development

Started programming in Clipper and Pascal. Progressively moved through Delphi, C, and early web technologies. Built desktop applications, database tools, and early embedded projects — laying the foundation for a deep systems-level career.

CClipperDelphiPascal

Projects

Contact

Interested in working together, discussing embedded systems, or just saying hi? Reach out through any of the channels below.