
Install the toolchain and IDE, follow the setup for the development environment, download and install the required files, then review the introduction to the Codex.
Explore the ARM Cortex-M architecture and its 32-bit addressing, and learn how ARM designs with architectural specifications and instructions are implemented by manufacturers.
Understand how 32-bit processors use register banks and a data path with the ALU, leading to memory addressing up to 4.2 gigabytes.
Explore the Cortex-M family of 32-bit processors, from M3 to M7, highlighting energy efficiency, digital signal control, floating point support, a flexible memory system, and 240 interrupt sources.
Explore the difference between microprocessors and microcontrollers, focusing on how processors provide computation power while microcontrollers integrate memory (ROM and RAM) and interfaces into a single system.
Explain how the Cortex-M uses load-store architecture with Harvard’s separate data and instruction buses, moving operands from memory into the register bank before operations.
Explore the cortex register bank, detailing 16 registers (13 general purpose and 3 special), including lower and higher groups, the link register at 14 and program counter at 15.
Explore the arm cortex-m program status register (psr) and its apsr, ipsr, and epsr components, and see how bit ranges like 0-8 and 27-31 map to these subregisters.
Learn how Arm Cortex-M processors use a mixed 16- and 32-bit instruction set, from Thumb to Thumb-2, to balance performance and code density in assembly programming.
The Cortex-M family offers both 16- and 32-bit instructions, with upward compatibility ensuring code compiled for earlier members runs on newer ones like M3, M4, and M7.
Explore assembly language syntax by examining label, opcode, operand, and optional comment fields. Learn how directives differ from instructions and guide the assembler in compiling programs.
Explore the 14 frequently used ARM Cortex-M assembly directives, including thump at the top, code and data sections, export and end, and memory constants with dc and dcd.
Overview of tm4c123 tiva c launchpad, microcontroller board with 256 kilobytes flash, 2 kilobytes RAM, and 80 megahertz, including a jtag debugger, reset button, usb, and rgb led with lcd.
Learn to use microcontroller data sheets and the launchpad guide to write your first arm cortex-m assembly program, keeping the red LED on, and document requirements.
Learn the seven core opcodes for the first ARM cortex-m program: move, load, store, branch, branch and link, bx lr, and end. Grasp immediate limits and memory access.
Inspect the source code for a Cortex-M assembly program, examining directives, port initialization, and a loop, and understand how initialization and returns enable turning on the light.
Create a vision project, organize your folder, select a Texas Instruments microcontroller, include startup files (.c and .s), and set target options to 16 megahertz with the ICD II driver.
Create and save a new assembly file (extension .s), add it to the project, and use the board's pin labels to connect input and output devices correctly.
initialize a port by activating its clock, unlocking PD7 if needed, setting its direction (0 input, 1 output) in the dir register, and enabling the pin per the data sheet.
Export assembly directives to make the program callable from C, using dot text and export commands. Initialize gpio port f by loading the system clock address and enabling the port.
Master logical operations in ARM Cortex-M assembly, including and, or, and exclusive or, with bit enablement, binary-hex conversions, and register addressing using base and offsets; learn symbolic names via equ.
Learn to activate the clock by storing the rc gpio register value, then configure the direction register and enable pf1, using str and move operations and bslr for subroutine return.
Create a looping subroutine in ARM Cortex-M assembly using labels and data and destination registers to control a light, then verify reset handler and main start for Project 1 final.
Learn new ARM Cortex-M opcodes, including compare and conditional branches, and how the update of status flags affects control flow, with a delay countdown example.
Add a button input to the Arm Cortex-M assembly project, enable pull-up, unlock registers, and turn on the red led.
Develop and test a loop-driven program in ARM Cortex-M assembly by implementing a delay loop, calling a delay subroutine, reading a pull-up switch, and driving LEDs through registered comparisons.
Toggle red, blue, and green LEDs by setting the direction register and enabling pins, then test with switches to illuminate the blue LED and verify binary and hex values.
Learn to configure an arm cortex-m board by enabling pins and registers, then drive blue, green, and red leds, test color changes, and extend with an additional color controller.
Implement conditional logic for two input switches using compare instructions to set red or green, then compile and download to the board, with a color-mixing homework toward white.
Learn how to turn on white by pressing both buttons in an ARM Cortex-M assembly project, by enabling blue and green components within the RGB color scheme.
Learn how to export an assembly function to C and mix assembly with C to boost performance, including a simple number function, calling conventions, and debugging on Cortex-M.
Learn how to write a C function and import it into assembly, enabling peripheral access such as lcd controls and calling the function from assembly with a practical add-a-number example.
Explore declaring and exporting variables in ARM Cortex-M assembly by defining a data area, creating a 32-bit variable amount, and interfacing with C to read and display its value.
Explore the complete list of Cortex-M assembly instructions, organized into arithmetic, logical, branch, memory access, and interrupt categories with explanations and comments.
Analyze the reference manual and RCC to enable the GPIO clock, then consult the data sheet to configure GPIO mode and drive pins 12–15 via the output data register.
Configure gpio pins on a Cortex-M microcontroller by defining symbolic pin names, enabling the port clock, and setting mode and output data registers to drive pins as outputs.
Rebuild the project, test it works, connect the board, download, and ensure all four LDS are on, then create a simple API to control editors on and off.
Develop a blinky program for the sdm 32 board in arm cortex-m assembly, configuring rcc and gpiod, enabling pins, and looping green, blue, red, and orange LEDs with timed delays.
Explore the STM32F4-Discovery board, featuring a microcontroller with 512 kilobyte flash memory, built-in accelerometer and magnetometer, audio sensor, USB connectivity, an on-board debugger, and user and reset buttons.
Explore the tm4c123 tiva c launchpad, its Texas Instruments microcontroller, 256 kilobytes of flash memory, and the debugging and reset features, laying the groundwork for Cortex-M assembly programming.
Explore the stm32f4-nucleo board and the discovery board, focusing on the main mcu, flash memory, reset button, and onboard debugger. Understand the boot process for running code in real time.
Download Keil uVision5, install the IDE, and enable CMSIS and F-Series support to prepare a Windows environment for ARM Cortex-M development.
Connect a Tiva C microcontroller to a Windows PC, install USB drivers from Texas Instruments, and use the Windows device manager to update driver software for programming and debugging.
Explore the Keil uVision 5 development environment, configure the runtime and startup files, manage packages, and customize the editor font size and color for assembly and C code.
This course assumes no prior knowledge of assembly programming. All it requires from students is curiosity.The course covers the ARM instruction set architecture , assembly syntax and programming and provides bonus chapters on introduction to the ARM Cortex-M. The main aim of this course is to provide learners with practical skills and a strong foundation to be able to build upon to start producing well written code with a good blend of assembly and C.