1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 嵌入式软件与设计 学习笔记总结一

嵌入式软件与设计 学习笔记总结一

时间:2022-04-23 09:27:42

相关推荐

嵌入式软件与设计 学习笔记总结一

参考视频:慕课 嵌入式软件与设计

参考书本: 田泽 编著 《嵌入式系统 开发与应用教程(第2版)》

1.概述

1.1 嵌入式系统概述

嵌入式系统:是以应用为中心,以计算机技术为基础,软件硬件可裁减,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

分为软件(嵌入式应用软件、*嵌入式图像系统、嵌入式操作系统)和硬件(处理器、外围电路)。

特点:固化存储、实时性、可靠稳定

1.2嵌入式软件设计概述

嵌入式系统的开发语言从低到高:

汇编语言、C语言、C++语言、JAVA语言、Objective C/Swift、C#

开发语言越低执行效率越高,开发效率越低

嵌入式系统的开发模式:

应用软件、硬件:利用C、汇编等直接在硬件上编程,用在硬件资源有限的场合

应用软件、操作系统、硬件:基于操作系统编程

###采用嵌入式操作系统的好处是程序员可专注于问题

###直接针对硬件编程,不可以利用操作系统的调度机制

2.嵌入式C编程综述

2.1软件架构

/1 模块划分

**模块是一个.c源文件和一个.h头文件的结合,头文件里声明该模块接口

**某模块提供给其他模块调用的外部函数及数据需要在头文件中以extern关键词声明

**仅在模块内使用的函数和全局变量需要在源文件开头以static关键词声明‘

**不能在头文件中定义变量,会分配内存

嵌入式系统通常包括

硬件驱动模块(一个特定硬件对应一个模块)和软件功能模块(模块划分满足 低耦合高内聚)。

/2 任务模式

单任务:微观串行、宏观串行

多任务:微观串行、宏观并行

/3 中断服务程序

标准C不含中断,现在提供了__interrupt关键词用于标识 中断服务程序ISR

当一个函数被定义为ISR,编译器会自动增加其需要的中断现场入栈、出栈代码

中断服务程序没有返回值,不传参,尽可能短小精悍

2.2 C的面向对象化

利用函数指针将结构体struct模拟成一个包含 数据和操作 的“类”。

### 关于无操作系统嵌入式系统的中断模型,中断程序中仅作中断登记

### 在采用C语言模拟面向对象特性时,通过结构体包含实现继承

### 采用C语言进行“面向对象编程”,可以实现部分“类”的功能,可以实现更好的程序结构,可以有效的组织汉字显示。

3.ARM C程序优化

3.1思路优化

空间优化、时间优化

平衡代码优化与可读性

最先优化频繁使用的代码

通过研究编译器如何把C代码转换成ARM汇编代码,以帮助程序员区分 快速和慢速的C代码,进而指导程序员进行C程序设计。

3.2 变量的数据类型选择

采用整型变量效率最高

3.3 次数固定的循环优化采用减计数改变循环变量

3.4 次数不定的循环优化

使用do...while 但是要保证至少循环一次

3.5 循环展开

每次循环都有 减法指令 和跳转指令 两个开销

3.6 指针别名

别名:两个指针指向同一个对象,这两个指针称为该对象的别名

LDR两次 重复读取 可以人为增加局部变量

3.7 结构体

结构体的问题:地址对齐和数据存取效率问题

在结构体中,短的成员先定义,长的成员后定义

使用关键字__packed对齐,但是会影响效率,大小端不一致也有同样问题,采用字符型指针char*可以实现天然对齐

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。