|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/arm-cortex-m4-bare-metal-development-with-stm32f411/
课程评论:没有评论
课程名称:掌握ARM Cortex-M4嵌入式编程 课程概述:本课程适合已经在嵌入式系统领域工作的专业人员和具有经验的爱好者。通过深入讲解ARM Cortex-M4架构及系统编程,结合STM32F411 Discovery板和GNU ARM交叉工具链进行学习。课程内容包括程序员模型、集成开发环境(IDE)、数据手册和参考手册的详细讨论,以及有关内存访问、编译和链接过程、输入/输出子系统、中断(包括非浮点和浮点)和时钟树配置的深入研究。 课程特色: - 完整的第一章以预览形式提供,帮助学习ARM Cortex-M4微控制器的基本概念。 - 深入探讨嵌入式系统中高级微控制器所面临的独特挑战,如内存操作、指针使用和中断处理过程。 - 多种教学方式,包括幻灯片、代码讲解、白板和调试环节,确保理论与实践相结合。 主要内容: 1. 内存访问方式(宏和结构体)及其潜在问题。 2. 链接和Make过程的详细讲解,包括符号解析和对象文件格式。 3. 输入/输出引脚配置和电路理解。 4. 时钟树配置和PLL电路的讲解,包括高频信号的设置和处理。 5. 启动过程的详细演示,涵盖内存初始化和重置处理程序的配置。 课程目标:通过理论、图示、动画和大量实例,帮助学员深入理解ARM Cortex-M4的编程细节,解决在嵌入式固件开发中遇到的各种技术挑战。课程还将通过实际调试会话,清楚地阐明不同子系统的实时检查及其操作。 学习者将获得对嵌入式编程高度复杂部分的清晰理解,为后续的开发工作打下坚实基础。
Important Note: Please go through the 'Requirements' section before taking up this course. This course is for professionals already working on Embedded Systems and for experienced hobbyists and enthusiasts only.Description A deep dive into the ARM Cortex M4 architecture and Systems programming with the STM32F411 Discovery board with the GNU ARM Cross Toolchain. Understanding the programmers model, IDE (Integrated Development Environment). Detailed discussions, In depth study of Datasheets and Reference Manuals, Demos and Case Studies on Memory access and its pitfalls (Different methods like Macros with offsets and Structures), Compilation and Linking process, Input/Output Subsystem, Interrupts (Both non-floating and floating point) and Clock Tree Configuration with in depth discussion on PLL circuitry and operation. Slideshows, Code Walkthroughs, Whiteboard and Debug Sessions are an integral part of the course. I have kept the complete first chapter with preview enabled for you to learn some basic concepts of ARM Cortex-M4 microcontrollers There are certain topics in Embedded Systems especially for advanced microcontrollers which pose unique challenges The process of manipulating the memory directly on a microcontroller either through macros or through structure pointersPointers for embedded systems. Though looking similar to their workstation counterparts, there are subtle differences which could mess up the application if not carefully handledIn embedded firmware development since application efficiency, determinism, power efficiency, memory size, writing efficient C programs and keeping track of the assembly code compiled from C/C++ are of paramount importance.The Interrupt Handling Process is complicated and the stack frames created, vary between implementations like Floating point and Non Floating point Stacking and Unstacking. Interrupt preemption is a complicated feature and needs to be handled with care. The process of Linking and Make is grossly misunderstood as well. The topics of object files, relocation, symbol resolution pose unique challenges and consolidated information on these is scarce. Object File Formats are a grey area as well which causes much distress when the process of linking is to be understood. The different tables in the object file like the Symbol Table, Relocation Table are difficult to comprehend without proper guidance. Input/Output pin configuration also pose challenges if the electricals and circuitry of the pins are not understood well. There are multiple configuration in which each pin of a microcontroller can operate like open drain, push-pull, high impedance etc. The Clock Tree for a high end microcontroller is quite complex as well. Multiple clock sources feeding clocks to different subsystems make the initial learning curve quite steep. Over and above that the high frequency clocks are driven by PLLs which are complex circuits themselves and need a good deal of understanding when configuring them. The processor startup could be tricky especially the part where the memory is set up after every reset. The understanding of.text,.data,.bss sections and setting them up properly during boot up poses unique challenges.In this course I strive to address all of the challenges above with theory, diagrams, animation and code. There are plenty of demos to explain difficult to understand concepts. I have cleared all concepts through extensive debugging sessions on the IDE while inspecting the different subsystems of the controller in real time. I have taken the following steps to address the challengesApproached memory access and operations in different ways like Macros and Structures. I have built up the concepts gradually until I arrived at the final form of the expressions. I have shown examples of misaligned accessing of memory through structures and their mitigation. Bitwise operations have been dealt with in real time on the debugger.For understanding the Linking process, I created code examples and first manually compile each source file and look into the ELF object files, the symbol tables and relocation tables along with the disassembly. Once the files are compiled into a single object file by the linker, the symbol resolution and code and symbol relocation are clearly explained by looking into the final object file. The linker script file is explained in detail with before and after initialisation diagrams of memory.An extensive debug session of the startup process explaining how the processor sets up memory, in real time. The reset handler is explained and demonstrated in C. The process of initialising the.data section in the RAM and setting up the.bss section and stack are demonstrated in exhaustive detail. The Make process is explained using multiple Makefiles each with slightly increasing complexity in each, until the final 'cryptic' makefile is written and fully explained. The make dependency graph is explained and many possible error scenarios are discussed on make so as to explain how make tackles Makefiles. It's a decently exhaustive treatment of Make which will facilitate developers to write makefles for deeply embedded systems. Interrupt Handling is demonstrated in detail along with theory. Demonstration and Theory of Interrupt Handling and preemption for both non-floating and floating point configuration. Concepts like lazy stacking are explained and demonstrated on the debugger. The Clock Tree is explained in detail. PLL calculations for setting frequency. Theory of PLL operation with explanation of different PLL sub systems such as the Voltage Controller Oscillator, Frequency Divider, Phase Frequency Detector, Low Pass Filter with illustrations, animations and timing diagrams. Demonstration of initialisation of registers in the clock tree subsystem on the debugger. I/O circuitry and then configuring the I/O pins. All pin modes explained like push-pull, open drain, analog and alternate functions.