Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Mastering SD Card Bootloader Development
Introduction
Welcome (1:13)
The Need for a Bootloader (6:34)
MUST READ: About the Course Structure
Course Requirements
Setting Up
Downloading CubeIDE (2:34)
Installing CubeIDE (2:38)
Getting the required documentation (7:41)
Getting the required package for bare-metal development (21:19)
Testing the project setup (15:54)
Introduction to Embedded Systems Storage Media
Introduction to Storage Media (3:43)
Comparison of Different Storage Media (2:26)
Introduction to File Systems
Introduction to File Systems (3:03)
Considerations of File Systems for Embedded Systems (2:34)
Implementing File Systems on Embedded Devices (4:54)
File System Allocation Algorithms (3:20)
Strategies for Minimizing Fragmentation on File Systems (2:51)
Complete Source Code Download
File Allocation Table (FAT)
Understanding the FAT File System (4:15)
Variants of the FAT File System (1:34)
Developing Required Generic Drivers
Important information about this section
Programming : Enabling the Floating Point Unit (FPU) (18:00)
Programming : Developing a UART Driver - Analyzing the Documentation (11:35)
Programming : Developing a UART Driver - Listing out the steps (4:00)
Programming : Developing a UART Driver - Implementing the Init. function (22:13)
Programming : Developing a UART Driver - Implementing the Write function (5:39)
Programming : Developing a UART Driver - Testing the Driver (6:39)
Programming : Developing the System Timebase - Analyzing the Documentation (8:28)
Programming : Developing the System Timebase - Implementing the Init. function (9:52)
Programming : Developing the System Timebase - The rest of the functions (12:15)
Programming : Developing the System Timebase - Testing the Timebase (5:34)
Programming : BSP : Listing the out the Required Functions (7:55)
Programming : Writing the LED Driver (5:01)
Programming : Writing the PushButton Driver (4:00)
Programming : Testing the Board Support Package (3:35)
Programming : Analyzing the Documentation (5:21)
Programming : Listing out the steps for developing the ADC Driver (5:27)
Programming : Writing the ADC Initialization function (13:21)
Programming : Writing the ADC Read function (14:05)
Programming : Analyzing the Documentation for the SPI Driver (7:34)
Programming : Intializing the GPIO Pins for SPI (11:00)
Programming : Implementaing Structures for Configruation Parameters (15:29)
Programming : Configuring the Parameters (15:41)
Programming : Writing the SPI Initialization function (14:55)
Programming : Writing the SPI Transmit Function (Pt.1) (9:27)
Programming : Writing the SPI Transmit Function (Pt.2) (10:26)
Programming : Transmitting 16-bit Data (17:54)
Programming : Transmitting 8-bit Data (6:46)
Programming : Receiving Data (11:05)
Programming : Testing the SPI Driver (15:47)
The FatFs File System for Embedded Devices
Overview of the FatFs File System (4:14)
The FatFs Architecture (3:24)
Common FatFs APIs (5:01)
The Generic Low Level Driver (2:37)
Programming : Integerating the FatFs Middleware (Pt.1) (19:39)
Programming : Integerating the FatFs Middleware (Pt.2) (3:15)
Secure Digital (SD) Card Drivers
Overview of Secure Digital(SD) Cards (4:14)
The SD Card Data Transfer Protocol (2:28)
Understanding the SD Protocol Command Structure (4:56)
The SD Protocol Response Types and CRC (2:44)
Categories of SD Cards based on Size (2:06)
Developing the Bare-Metal SD Card Driver
Programming : Listing out the required functions (4:24)
Programming : Implementing the SD SPI Initialization function (7:28)
Programming : Configuring the Slave Select Pin (6:50)
Programming : Analyzing the Disk I/O Layer (10:45)
Programming : Implementing the Timeout Callback (10:20)
Programming : Implementing the Slave Select and DeSelect functions (2:37)
Programming : Transmitting Bytes to the SD Card (5:32)
Programming : Receiving Bytes from the SD Card (3:54)
Programming : Defining the SD Commands (7:08)
Programming : Implementing the PowerOn function (17:12)
Programming : Waiting for the SD Card to be Ready (4:13)
Programming : Receiving Data Blocks (4:36)
Programming : Transmitting Data Blocks (11:27)
Programming : Implementing the Send Command function (9:37)
SD Card Driver Disk I/O Functions
Programming : Implementing the DiskIO Initialization function(Pt.1) (18:27)
Programming : Implementing the DiskIO Initialization function(Pt.2) (14:07)
Programming : Implementing the DiskIO Read function (11:16)
Programming : Implementing the DiskIO Write function (10:25)
Programming : Analyzing the SDC Protocol Documentation (9:09)
Programming : Implementing the DiskIO Control function (Pt.1) (13:23)
Programming : Implementing the DiskIO Control function (Pt.2) (8:31)
The FatFs Layer
Programming : Implementing the Target I/O file (16:33)
Programming : Linking the SD Card Layer to FatFs (10:32)
Developing File System Applications
Programming : Initializing the SD Card and FatFs (9:11)
Programming : Mounting the Drive (10:25)
Programming : Getting the Capacity and Free Size (13:09)
Programming : Writing to Files and Reading from Files (15:30)
Programming : Writing to Files and Reading from Files using f_read/write (13:18)
Programming the Embedded Flash Memory in STM32F411xC/E Microcontrollers
Understanding the STM32F4xx Flash Memory Organisation (5:03)
Programming : Aanalyzing the Documentation on the STM32 Flash Memory (8:36)
Programming : Implementing Configuration ENUM types (4:29)
Programming : Implementing Configuration Structures (6:59)
Programming : Implementing the Sector Erase function (19:50)
Programming : Implementing the Mass Erase function (6:10)
Programming : Waiting for Last Operation to Complete (11:52)
Programming : Programming different Data Sizes (15:21)
Programming : Implementing the Flash Program function (12:17)
Programming : Flushing the Instruction and Data Cache (8:35)
Programming : Implementing the a function for both Sector and Mass Erase (13:49)
Programming : Unlocking the Flash Write Access (5:56)
Programming : Getting the Sector Number from the Address (5:28)
Programming : Implementing the Write Data function (6:17)
Programming : Implementing the Read Data function (4:27)
Programming : Creating Helper Functions for Conversion between Floats and Bytes (6:49)
Programming : Converting Integer to Strings (8:19)
Programming : Implementing the Write and Read Number Functions (9:28)
Programming : Debugging Techniques for the Internal Flash Memory Driver (34:52)
Programming : Testing the Internal Flash Memory Driver (11:32)
The Embedded Build Process and Memory Model
A closer look at the Embedded Build Process (6:10)
Overview of the Embedded Build Process (2:34)
Overview of the STM32F4 Memory Model (10:21)
Understanding the Linkerscript and Linking Process (8:12)
Analyzing the Linkerscript and Memory Layout (9:45)
Developing the SD Card Bootloader
Programming: Updating the Workspace (1:35)
Programming: Mounting the Filesystem (6:25)
Programming: Reading the Firmware File and Allocating Memory (6:13)
Programming: Allocating Memory for the Firmware Words (5:08)
Programming: Converting the Firmware Bytes to Words (8:18)
Programming: Integrating the FLASH Driver and Unlocking the FLASH (4:42)
Programming: Writing the Firmware to the FLASH Memory (7:28)
Programming: Jumping to the New Firmware (12:59)
Programming: Cleaning Up the Project (9:11)
Testing the SD Card Bootloader
Programming: Developing the Main Application (12:28)
Programming: Putting the Binary File into the microSD Card (2:01)
Programming: Testing the SD Card Bootloader (5:49)
Working with Multiple Binary(.bin) Files
Programming: Implementing the Handle Firmware Update Function (7:16)
Programming: Working with Two Binary Files (4:15)
Programming: Implementing the System Diagnostics Firmware (7:38)
Programming: Developing the Logic for Selecting the Firmware (10:31)
Programming: Testing the Multi-Firmware System (3:49)
Teach online with
Analyzing the Linkerscript and Memory Layout
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock