嵌入式程序设计
开发流程
要想某个功能要用硬件还是软件实现(硬件快,但是耗资源)?BSP?裸机还是OS?
硬件的设计与实现-》设备驱动软件的设计与实现-》os的选择,移植,api接口函数的设计-》支撑软件的设计与调试-》应用程序的设计与调试-》系统联调,样机交付。
程序下载流程
诸多程序文件编译生成 .obj 文件,链接生成二进制文件,下载到开发板上。
特点:
- 交叉编译,即在一个平台上生成在另一个平台上运行的代码(PC上生成开发板上的程序)。
- 仿真调试。
- 开发板是中间目标机。
- 资源有限。
开发模式:本机开发(如以前的计算机,二进制直接编程),交叉开发(宿主机开发,下载到目标机),模拟开发(宿主机上模拟目标平台)。
程序设计语言
低级语言:机器语言,asm。
高级语言:c,c++.
汇编语言包括:指令语句,伪指令语句(给编译器看的),宏指令语句(重复执行的多个指令合并为一个宏指令)。
表达式
前缀:+ab
中缀:a+b
后缀:ab-
ab-c5+*
编译
解释:不产生目标文件,边分析解释执行。
编译:产生
编译过程中相关符号信息要存入符号表。
词法:非法字符,关键字。
语法:如 if else
语义:如死循环。
C语言
预处理
简单的用途:可以代替函数,如#define square_1(x) x*x
预定义宏
数据类型
存储管理
函数:入栈。
动态申请的数据:在堆中申请。
全局变量在最开始申请,程序结束时释放。static声明的全局变量只在本文件中可见。
面向对象
对象:现实世界中的实体,封装了属性和操作。
分类:把对象抽象成一个类。
通过消息的通信:类之间的通信。
继承:拓展。
三个特点:多态,重载,覆盖。
private:本类中可以访问。
缺省(default):本包内可以访问。
protected:其他包里的子类可访问。
public:都能访问。
例题:
*p的值是字符串str的起始地址。
A,字符串地址不能改。
B,把p重新指向字符串ABC,可以。
C,给数组第一个元素赋值为ABC,不行。
D,和A一样。
例题:
A错了,脚本语言也可以使用。
例题:
A,符号表是编译语言处理符号用的。
B,对。
C,不受机器影响。生成目标代码时才受机器影响。