1. 如何学习嵌入式软件开发
做嵌入式软件开发一定要结合开发板来学习,所有的知识都可以在开发板上实现,我的嵌入式学习主要分为两个主要阶段。
1.1 对于MCU的学习:
这个阶段主要学习基础的硬件知识,因为MCU没有复杂操作系统的封装,可以直接了解硬件特性,是学习硬件和协议的最好的平台。另外基于MCU也可以掌握RTOS系统,LWIP等基础知识。
1.2 对于SOC的学习
这个阶段主要学习bootloader, Linux,文件系统,buildroot, yocto等基于linux系统的衍生技术。主要包括bootloader的开发,Linux驱动的开发,构建嵌入式文件系统,系统管理及配置等。由于Linux平台过于复杂,可以根据自己的兴趣爱好来分块研究。
2. 学习嵌入式开发的准备
嵌入式开发板:
MCU: 我用的是正点原子的STM32F407的板子,烧录工具使用的是STLINK
SOC:我用的是正点原子的IMX6ULL开发板,这个不需要烧录工具,有USB线就可以烧录
虽然我使用的都是开发板,当然网上也有相应的教程,但我后面的内容还是跟网上的教程很不一样的。我会更多的去分享更深入的知识,以及结合我多年工作经验的总结,希望与大家共同交流,共同进步。
3. 第一阶段的学习
接下来的第一阶段我会基于STM32来展开我的博客,包括Cortex-M4的基础知识,基础硬件的知识,STM32的软件构造,启动逻辑,烧写逻辑,功能开发,系统移植,协议栈适配等内容。
由于STM32使用比较广泛,文档也相对比较全面,网上还有很多基于STM32的DIY,所以使用STM32来做嵌入式入门的学习非常适合。
4. 第二阶段的学习
第二阶段的内容我会基于IMX6ULL来展开我的博客,本身我对IMX6/8系列就非常熟悉,到时会分享我在工作中所遇到的问题及相关经验的总结。
主要的内容围绕bootloader的开发,驱动的开发,使用yocto或buildroot定制嵌入式文件系统,systemd系统管理,Linux驱动架构等内容展开。
Note:
由于我是一个Linux的狂热者,所以我的所有开发环境都是基于Linux系统(ubuntu), 我不会去使用KEIL等IDE,因为IDE会屏蔽软件的构造及芯片的原理,所以会很难真正了解它底层的原理。
我的博客会很随意,涉及到什么知识就简单展开相关的内容和大家讨论,由于个人技术能力有限,希望大家不要吝啬您的评价,谢谢