Writing your first embedded program is less about the code and more about the toolchain around it. This session is a hands-on introduction to embedded C with Arm Keil MDK (µVision) — from an empty project to a blinking LED on an ARM Cortex-M3.
We start with what Keil MDK is and why it suits everything from a tiny MCU to a high-end system, then walk through downloading it from Arm and touring the µVision IDE. From there: creating a project, selecting your device (LPC1768, Cortex-M3 — 512 KB flash, 64 KB RAM), and why the IDE adds startup code (the interrupt vector table) and a system-initialisation file that sets up clocks, stack, and heap. We demystify the compiler, assembler, and linker — how C becomes op codes, what the linker locates, and what the map and listing files tell you — then write a Blinky LED program in C, build it to a HEX file, and run it in the µVision simulator with no hardware attached. Finally we rewrite the same program in assembly for full control of the Cortex-M3, and debug it with breakpoints and single-stepping.
Tools used: Arm Keil MDK, µVision IDE & simulator, ARM Cortex-M3 (LPC1768).
Build next: start small on a Cortex-M0, then move up to M4/M7 with USB, Ethernet, or an RTOS as your application needs grow. GSAS Micro Systems is India's embedded engineering partner — certified toolchains and engineering support across the product lifecycle. Learn more at gsasindia.com.
Timestamps:
00:00 What this video covers: embedded C & the toolchain
00:54 Why Keil MDK matters for embedded learners
01:23 What is Keil MDK (µVision)? Compiler, simulator, debugger
02:03 Downloading & installing the software (from Arm)
02:49 µVision IDE tour: project, editor & build output
03:47 Creating a new project (use a folder per project)
04:39 Selecting your device — LPC1768, Cortex-M3
07:34 Adding startup code & the interrupt vector table
10:39 System initialization file; stack & heap
19:00 Device header files & register definitions
22:12 Demystifying compiler, assembler & linker
23:19 What the compiler does: C to op codes
27:57 Using intrinsics (NOP) directly in C
31:22 Why assembly still matters
33:36 Writing a C program: the Blinky LED example
35:41 Configuring software components in the project
38:02 Building: HEX file, listing & map file
38:25 What the linker does — locating your code
39:35 The optimizing compiler
43:09 Testing in the µVision simulator (no hardware)
45:09 Writing the same program in assembly
48:19 Startup & system init for assembly on hardware
50:13 Debugging with breakpoints & single-step
52:40 Recap: project setup, C & assembly
53:05 Key takeaways: from Cortex-M0 to M4/M7
53:52 What's next: timers, PWM, ADC & UART
Hashtags
#EmbeddedC #KeilMDK #EmbeddedSystems
#ARM #CortexM3 #uVision #GPIO #Microcontroller #LPC1768 #Assembly #EmbeddedProgramming #FirmwareDevelopment #EmbeddedEngineering #LearnEmbedded #GSAS