嵌入式软件编程的基础
主要是学习编程语言、开发环境和形成自己的编程逻辑,为嵌入式软件开发打下良好的基础,编程语言建议为C和C++语言。书籍中的例子都是比较经典的程序实例,尽量去搞懂,不要觉得太长或者太难了而放弃,对自己理解相应的知识点非常有帮助,最后时间充裕的话,可以选做章节后面的习题。也可以结合教学视频进行学习,配合相应的教材书籍学习。
C语言:
1、C程序结构、C数据类型和基本语法
2、数组、字符串、指针、函数
3、结构体、宏定义、枚举
4、C输入和输出
C++语言:
1、熟悉面向对象的语言概述(封装、继承、多态)
2、熟练掌握C++语言的基本知识和类与对象及其高级应用
3、作用域运算符、内联函数、强制类型转换
4、new、delete内存管理
5、对象成员、成员函数
6、构造函数、析构函数、拷贝构造函数、函数重载
7、对象数组、this指针、枚举、
8、静态成员、静态成员函数
9、对象成员
10、友元
11、虚函数、纯虚函数、抽象类、虚析构函数等
推荐书籍:
《C程序设计》
《C和指针》
《C Primer Plus》
《C++ Primer Plus》
推荐视频:
《C语言程序设计》——翁恺
《C++语言程序设计》——郑莉
有了C/C++的基础,可以进一步学习数据结构与算法。
1、数据结构:字符串、数组、链表、堆、栈、队列、树、哈希、图
2、算法:查找、排序
推荐书籍:
《大话数据结构》
《数据结构》——陈越
推荐视频:
《数据结构》——陈越
嵌入式开发与应用基础
一般会以特定的嵌入式平台、裸机和嵌入式操作系统为依托,熟悉这个系统平台上的编程方法和流程。最常见的51单片机和stm32,或arduino和树莓派等,可以购买开发板,根据教学视频或开发指南进行学习,同时可以学习RTOS操作系统,为Linux学习打下基础。
嵌入式裸机开发:
1、GPIO:典型电路、工作模式、相关寄存器
2、中断:工作模式、优先级、嵌套、中断处理程序、外部中断
3、定时器:时钟体系和结构、关键寄存器、PWM定时器、看门狗定时器、定时器中断、实时时钟
4、AD/DA:工作原理、寄存器操作、相关的传感器使用
5、协议/接口/总线:UART、IIC、SPI、485、CAN、USB
6、无线模块:蓝牙、WiFi
7、存储器:Flash、外部ROM、外部RAM、SD卡
8、显示模块:LCD、触摸屏
在学习Linux之前,建议先学习微机原理、操作系统、计算机网络,有了这些基础能促进自己对Linux系统的理解。
开发板推荐:
韦东山或者正点原子的嵌入式Linux开发板
推荐书籍:
《操作系统导论》
《网路是怎么连接的》
《图解TCP/IP》
《鸟哥的Linux私房菜》
《Linux设备驱动开发详解》
Linux操作系统介绍:
Linux系统平台编程:
嵌入式底层开发:
1、Bootloader裁剪和移植、Linux内核配置/编译/调试/裁剪/移植、根文件系统创建、文件系统移植;
2、Linux内核编程;
3、Linux驱动开发(总线设备驱动、网络设备驱动、块设备驱动等)
软硬件项目实战
嵌入式技术关键在于理论和实践的结合,在实践中学习和巩固,能解决实际开发中的问题,实践过程中掌握核心知识是什么,什么时候用,如何用,为什么这么设计,达到触类旁通效果。
通过参加竞赛或者实验室课题项目进行实践,或者利用网络资源GitHub,视频网站b站或油管上有很多有趣的开源实战项目,可以选自己感兴趣的进行实践,例如:《14个电子专业必做的优秀实战项目》《稚晖君的开源项目》《RoboInventor机甲学院》《GIE工作室》等等。