What is IAP in microcontroller?
In microcontroller context, IAP almost always means In-Application Programming.
1. Basic idea
In-Application Programming (IAP) =
The MCU can re-program its own Flash while your application code is running, without needing an external programmer (ST-Link, J-Link, etc.) or going into a separate factory programming mode.
So instead of:
PC → programmer → MCU (ISP / SWD / JTAG)
you can do:
PC / other device → your firmware → MCU’s Flash (via IAP)
Your code acts as its own flash programmer.
2. IAP vs ISP vs bootloader
-
ISP (In-System Programming)
-
Usually means programming via a debug/programmer tool (JTAG/SWD, UART, etc.)
-
Often uses a bootloader mode that runs instead of your application.
-
-
Bootloader
-
Small piece of code that runs first after reset.
-
It may:
-
Check for a new firmware image,
-
Receive it over UART/USB/CAN/etc.,
-
Program it into Flash (using IAP services),
-
Then jump to the main application.
-
-
-
IAP
-
The mechanism by which code already running on the MCU calls special routines (ROM functions or library calls) to erase/program Flash.
-
Often used inside a bootloader or the main application.
-
In practice:
-
The ROM (or vendor library) provides low-level IAP functions (erase sector, program word/page).
-
Your bootloader or app calls these IAP routines to update firmware or store configuration.
3. Typical uses of IAP
-
Firmware update in the field
-
Device receives new firmware via:
-
USB, UART, CAN, Ethernet, BLE, etc.
-
-
Stores received image in a buffer area / separate flash bank.
-
Uses IAP to:
-
Erase old firmware area.
-
Program new image.
-
-
Optionally verifies checksum/CRC.
-
Jumps to the new firmware.
-
-
Dual-bank / fail-safe updates
-
Bank A = running firmware
-
Bank B = new firmware image
-
IAP swaps which bank is “active” or copies new image over.
-
If update fails, device can still boot from the old image.
-
-
Storing parameters / logs in Flash
-
Using part of Flash as simple NVM.
-
Your code uses IAP to erase/program parameter blocks, calibration data, usage counters, etc.
-
4. How it looks in code (conceptually)
Exact API depends on vendor, but the pattern is typically:
Important details:
-
You CANNOT execute from Flash while erasing/programming that same region.
Common solutions:-
Run IAP routines from ROM (provided by vendor).
-
Or copy a small flash-programming routine to RAM and execute from there.
-
-
Interrupts may need to be disabled or moved to RAM-based vectors to avoid executing from Flash mid-operation.
5. Key safety considerations
When using IAP for firmware updates:
-
Never erase the only copy of your working code before verifying the new image.
-
Use CRC/Checksum on the received firmware to ensure integrity.
-
Ideally implement a:
-
Bootloader partition (never overwritten in normal updates).
-
Application partition (the part you update via IAP).
-
-
Have a rollback or recovery strategy:
-
E.g., if update fails, bootloader detects invalid app image and stays in update mode.
-
6. One-sentence summary
IAP (In-Application Programming) is the ability of a microcontroller to rewrite its own Flash memory under control of the running firmware, typically used for self-updates and storing non-volatile data, without needing an external programmer.
.jpg)
评论
发表评论