RAYMING PCB & ASSEMBLY
What is IC programming and IC Programmer
IC programming refers to the process of loading firmware, software
code, or configuration data into programmable integrated circuits (ICs)
like microcontrollers, FPGAs, CPLDs, and various memory devices. An IC
programmer is a specialized hardware tool used to write the program
code into the IC’s memory.
This article provides an in-depth overview of IC programming covering
the need for programming, programmer types, device interfaces,
programming methods, file formats, and key considerations for
selecting programmers suited to production needs.
Request IC Programming Service Quote
Contact Us
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
What is IC Programming?
Programmable ICs do not function out-of-box but need to be
programmed with firmware or configuration data to define their
behavior and functionality. For example, a microcontroller IC from the
factory is a blank slate. The user needs to load a compiled machine
code program using a programmer tool to make it execute the desired
tasks.
Key types of programmable ICs:
Microcontrollers – Used in most electronic devices and
appliances. Programmed with embedded firmware code.
FPGAs – Field Programmable Gate Array. Configured with
hardware behavior design files.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
CPLDs – Complex Programmable Logic Devices. Programmed
with logic equations.
Flash Memories – Store firmware code. Can be reprogrammed.
EEPROMs – Non-volatile memory programmed with data.
Without proper IC programming, such devices are non-functional. So
programming is an essential step before deploying programmable ICs
into products.
Why is IC Programming Needed?
Below are some key reasons why programming is an essential
step in the IC and PCB assembly process:
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Boot up – ICs need an initial program loaded in order to
boot up and begin functioning.
Define functionality – The program code determines the IC
behavior. For example, a microcontroller can be made to
run a motor control algorithm or a wireless protocol stack
based on the programmed firmware.
Configure settings – Programming is used to set parameters
like IDs, baud rates, addresses, encryption keys etc.
Adaptability – Programs can be updated in the field to add
new features or modify functionality.
IP protection – Keeping the program code separate from
chip fabrication protects the intellectual property of
designers.
Inventory – One generic IC can be programmed in many
ways for different customer orders from stock.
End-of-line production – ICs are programmed as the last
step before shipping finished boards.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Without programming, ICs are non-functional blanks.
Programming brings the chips to life with the intended behaviors
and capabilities.
Request IC Programming Service Quote
Contact Us
IC Programmer Types
Various types of IC programmers are available to meet different
usage scenarios:
Desktop Programmers
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Small portable units used by engineers for prototyping needs in
R&D environments. Support a wide range of ICs but lower
production volumes.
Production Programmers
Bench-top systems focused on high volume programming needs
in manufacturing environments. Optimized for speed, reliability,
and simple changeovers between IC types.
Gang Programmers
Special production grade programmers with multiple sockets
allowing concurrent programming of several identical ICs.
Dramatically increases throughput.
Automated Handlers
Sophisticated robotic IC handling mechanisms for automated
pick-and-place from component reels/trays, insertion into
programmer, and programmed ICs back to output reels/trays.
Field Programmers
Portable, battery-powered units that allow programming or
reprogramming deployed ICs in the field for maintenance needs.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
In-System Programmers
Allow programming ICs without physical removal from system
boards by connecting via test points or circuits on the PCBs.
Selecting the right category of programmer depends on the stage
of use – development, production, or field maintenance.
IC Device Interfaces
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Programmers need compatible physical interfaces to connect with
ICs for loading code. Common interfaces include:
Joint Test Action Group (JTAG) – Serial interface using
dedicated test pins on ICs. Used to program and debug
microcontrollers, FPGAs. High signal integrity but requires
test points routed in PCBs.
Serial Peripheral Interface (SPI) – Commonly available 4-wire
serial interface on microcontrollers. No test pads needed.
Can be restricted access. Lower signal integrity over
distance.
Inter-Integrated Circuit (I2C) – 2-wire serial interface bus
used to access peripherals and memory. Widely used for
field programming EEPROMs in monitors, displays etc.
Universal Asynchronous Receiver/Transmitter (UART) –
Asynchronous serial interface using TX and RX pins.
Ubiquitous debug and bootloader interface on
microcontrollers. Requires just two test pins.
Single Wire Debug (SWD) – Two pin serial debug interface
on ARM Cortex MCUs routed to board test points. Supports
real-time debugging/programming.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Serial Wire Debug (SWD) – Alternative to JTAG using just two
wires for ARM debugging.
Background Debug Mode (BDM) – Proprietary two pin
debug interface on Freescale/NXP MCUs.
Direct ISP – Many microcontrollers support direct in-system
programming via bootloader code over UART or I2C without
debugger hardware.
IEEE 1149.1 JTAG – Older deprecated JTAG standard still used
on some legacy ICs.
Selecting programmers with interfaces matching deployed ICs
enables proper programming access.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Request IC Programming Service Quote
Contact Us
IC Programming Methods
There are two main methods used for loading program code into
devices:
In-Circuit Programming
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
The IC is programmed while still physically mounted on the PCB.
This requires test points or pads connected to programming
interface pins on the IC. Programmer connects to board interface
to access the chip. Useful for development, field upgrades,
repairs.
Offline Programming
ICs are programmed in bulk before being assembled onto boards
using dedicated production programmers. ICs are inserted into
sockets on the programmer which loads code into each chip
sequentially. Enables high volume automated production
programming.
Some programmers support both on-board and offline
programming capabilities. The method chosen depends on the
phase of use – design validation, manufacturing, or field
maintenance.
Programmer File Formats
Programmers need the program code files in specific formats like:
Hex Files – Contain executable machine code in ASCII hex
byte format for directly programming into memory.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
JEDEC Files – Industry standard file for programming
firmware into memory and flash ICs.
SVF/STAPL Files – Serial vector format files for describing
JTAG sequences for microcontroller programming.
BIT Files – Encoder bitstream files for configuring FPGA and
CPLD devices.
BIX Files – Bytecraft format used to program
microcontrollers via JTAG interface.
IEEE 1532 Files – Files describing programming sequences
for IEEE 1149.1 JTAG compliant devices.
PDB Files – Program database files containing debug data
used by programmers and debuggers.
Various toolchains output firmware and code in these formats
which are then imported into programmers before loading into
ICs.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Below are the key parameters and features to evaluate when
selecting an IC programmer for usage needs:
Supported ICs
Microcontrollers – ARM Cortex, PIC, AVR, 8051 etc.
FPGAs – From vendors like Xilinx, Intel/Altera etc.
Flash/EEPROMs – SPI, I2C, and quad I/O devices.
Processor types – AMD, Intel, Qualcomm etc.
Interfaces
JTAG, ISP, SWD, I2C, SPI, UART – Review supported interfaces.
PCB connector – Adapters for board-level programming via
internal or test board connectors.
Throughput
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Programming time – Chips/hour rating. Parallel gang
programmers are faster.
Support for multi-site programming.
Automated handler integration for turnkey solution.
File Formats
Code files – Intel Hex, Motorola S-record, TEK HEX, Binary,
JEDEC etc.
Configuration files – SVF, STAPL, BIT, PDB etc.
Additional Functionality
In-circuit debugging capability.
Blank check, read, and verify functions.
Memory buffer editing and viewing.
Production environment durability and features.
Standalone offline operation.
Software Interface
Command line, menu-driven, or GUI interface.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Program generator wizards and production control
software.
Library of manufacturer device specs and programming
algorithms.
Warranty and Support
Length of warranty period.
Availability of remote technical assistance.
Device library and software updates over lifetime.
Carefully evaluating technical criteria ensures the programmer
reliably meets both current and future programming
requirements.
IC Programming Best Practices
Below are some guidelines to follow for smooth IC programming:
Use pulsed ZIF sockets or pogo pin contacts for reliable
temporary connections to ICs during production
programming.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Include test points on PCB designs upfront to enable field
reprogramming of deployed systems if needed.
Validate programmer device libraries before use by
demonstrating successful programming of sample ICs.
For prototype debugging, invest in desktop programmers
that offer comprehensive interfaces and device support.
Budget for production grade gang programmers with
handlers for high volume manufacturing needs.
Build in bootloader code on custom microcontroller designs
to facilitate field firmware updates.
Characterize programming time budgets and optimize code
sizes during development to meet production throughput
targets.
Perform blank checks of new ICs before use to identify faulty
or counterfeit devices.
Audit programmed device samples from production using
checksums or test equipment to confirm data integrity.
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
Investing in the right programmer toolsets prevents issues and
bottlenecks across the IC and PCB assembly workflow – from
prototype validation to end product deployment.
Conclusion
Request IC Programming Quote
Contact Us
FAQ
What are some common programmable ICs that need programming?
Common programmable ICs include microcontrollers, FPGAs,
CPLDs, flash memory, EEPROMs, and various integrated circuits
containing non-volatile memories or digital logic blocks.
What are the typical differences between a desktop vs production IC
programmer?
Desktop programmers prioritize wide device support and
interfaces for R&D while production programmers focus on speed,
PCB Manufacturing & Assembly Services https://www.raypcb.com/
RAYMING PCB & ASSEMBLY
volume, and reliability for manufacturing. Production
programmers support automated handlers.
How are microcontrollers typically programmed during PCB assembly?
Microcontrollers are normally programmed in bulk offline using
gang programmers before being assembled onto boards as the
programming step can be a time consuming process unsuitable
for inline production.
What are the options for field programming deployed ICs?
For field firmware updates, designers can leverage in-system
programming capability using JTAG or bootloader code over
standard interfaces like UART, I2C, SPI. Dedicated test points
provide access.
How do you ensure the programmer has full capability for an IC?
The simplest check is to acquire sample ICs and validate that the
programmer can successfully read, blank check, program, and
verify the device using the intended file formats. This verifies
compatibility before procurement.
https://www.raypcb.com/how-to-do-ic-programming-during-pcba-processing/
PCB Manufacturing & Assembly Services https://www.raypcb.com/