嵌入式系统设计师学习笔记五

合集下载

嵌入式Linux学习笔记(五)通讯协议制定和下位机代码实现

嵌入式Linux学习笔记(五)通讯协议制定和下位机代码实现

嵌⼊式Linux学习笔记(五)通讯协议制定和下位机代码实现⽬录 通讯协议可以理解为约束多设备通讯的⼀套规则,像Modbus,TCP/IP, BLE都是在⽣产⽣活常⽤的协议。

不过协议落实到实际应⽤后,就可以理解为对数据的结构化处理,我之前写的串⼝点亮LED的实现就涉及了简单的协议制定,对于嵌⼊式Linux来说,那⼀套协议当然也可以实践,但是那套协议有个重要的缺陷,协议内部从起始端的数据接收,⼀直到发送端的数据接收,都是和硬件强耦合的,这就造成如果我们由多种途径修改内部数据,协议很难被复⽤,另外每⼀次最后的执⾏都是直接操作硬件,当然只有串⼝控制时没有问题,但当有多个渠道(如⽹络,CAN,BLE等模块)同时操作硬件时,涉及硬件的同步问题繁琐且很难约束,因此本节就改进之前的协议,进⾏代码的实现。

参考资料 1. 2.《C++ Primer Plus》协议制定 协议的制定在⼤致的数据发送和返回数据结构上可以与原有的协议⼤致⼀致。

上位机发送指令包含起始位,地址位(⽤于多机通讯),数据长度(指⽰内部后⾯的数据长度),实际数据,CRC校验位这些基础结构,不过增加了数据编号位,它是2字节的随机数,在处理完成后可以⽤于上位机验证返回的数据是否正常,不过对⽐可以发现,原先协议⾥⾯的指令不在上位机数据结构,这个后⾯会提到。

下位机返回指令也是起始位,地址位,ACK应答状态,数据长度,数据区和CRC校验位,同时包含编号⽤于上位机的校验, 上位机发送数据结构: 下位机返回数据结构: 确认了通讯的结构后,下位机代码就可以实现了,其中接收数据代码如下:1int protocol_info::check_receive_data(int fd)2 {3int nread;4int CrcRecv, CrcCacl;5struct req_frame *frame_ptr;67/*从设备中读取数据*/8 nread = this->device_read(fd, &this->rx_ptr[this->rx_size],9 (this->max_buf_size-this->rx_size));10if(nread > 0)11 {12this->rx_size += nread;13 frame_ptr = (struct req_frame *)this->rx_ptr;1415/*接收到头不符合预期*/16if(frame_ptr->head != PROTOCOL_REQ_HEAD) {17 USR_DEBUG("No Valid Head\n");18this->rx_size = 0;19return RT_FAIL;20 }2122/*已经接收到长度数据*/23else if(this->rx_size > 5){24int nLen;2526/*设备ID检测*/27if(frame_ptr->id != PROTOCOL_DEVICE_ID)28 {29this->rx_size = 0;30 USR_DEBUG("Valid ID\n");31return RT_FAIL;32 }3334/*获取接收数据的总长度*/35this->rx_data_size = LENGTH_CONVERT(frame_ptr->length);3637/*crc冗余校验*/38 nLen = this->rx_data_size+FRAME_HEAD_SIZE+CRC_SIZE;39if(this->rx_size >= nLen)40 {41/*计算head后到CRC尾之前的所有数据的CRC值*/42 CrcRecv = (this->rx_ptr[nLen-2]<<8) + this->rx_ptr[nLen-1];43 CrcCacl = this->crc_calculate(&this->rx_ptr[1], nLen-CRC_SIZE-1);44if(CrcRecv == CrcCacl){45this->packet_id = LENGTH_CONVERT(frame_ptr->packet_id);46return RT_OK;47 }48else{49this->rx_size = 0;50 USR_DEBUG("CRC Check ERROR!. rx_data:%d, r:%d, c:%d\n", this->rx_data_size, CrcRecv, CrcCacl);51return RT_FAIL;52 }53 }54 }55 }56return RT_EMPTY;57 }View Code 因为是嵌⼊式Linux开发,因此推荐使⽤C++, 封装可以让代码结构更加清晰,从代码的实现可以看到实现包含:硬件的数据接收,起始位检测,数据编号的获取,以及后续数据的接收和数据的CRC校验,⾄于发送数据,则主要是创建发送数据的接⼝,代码如下:1/**2 * ⽣成发送的数据包格式3 *4 * @param ack 应答数据的状态5 * @param size 应答有效数据的长度6 * @param pdata 应答有效数据的⾸指针7 *8 * @return 执⾏执⾏的结果9*/10int protocol_info::create_send_buf(uint8_t ack, uint16_t size, uint8_t *pdata)11 {12 uint8_t out_size, index;13 uint16_t crc_calc;1415 out_size = 0;16this->tx_ptr[out_size++] = PROTOCOL_ACK_HEAD;17this->tx_ptr[out_size++] = PROTOCOL_DEVICE_ID;18this->tx_ptr[out_size++] = (uint8_t)(this->packet_id>>8);19this->tx_ptr[out_size++] = (uint8_t)(this->packet_id&0xff);20this->tx_ptr[out_size++] = ack;21this->tx_ptr[out_size++] = (uint8_t)(size>>8);22this->tx_ptr[out_size++] = (uint8_t)(size&0xff);2324if(size != 0 && pdata != NULL)25 {26for(index=0; index<size; index++)27 {28this->tx_ptr[out_size++] = *(pdata+index);29 }30 }3132 crc_calc = this->crc_calculate(&this->tx_ptr[1], out_size-1);33this->tx_ptr[out_size++] = (uint8_t)(crc_calc>>8);34this->tx_ptr[out_size++] = (uint8_t)(crc_calc&0xff);3536return out_size;37 }View Code 这部分即为通讯相关的结构数据实现,通关协议的发送和接收结构的剥离,此时我们已经能够处理实际的数据,下⾯也是主要改进内容。

软考嵌入式系统设计师学习笔记

软考嵌入式系统设计师学习笔记

目录第一章嵌入式系统需求分析与体系结构设计 (5)1.1软件需求分析 (5)1.1.1 关于选择裸机开发还是基于实时操作系统 (5)1.1.2 实时操作系统优点 (5)1.1.3 实时操作系统的时间性能评估 (5)1.2体系结构设计 (5)1.2.1系统需求 (5)1.2.2 规格说明书 (5)1.2.3 体系结构设计 (6)1.3项目进度管理 (6)1.3.1 快速原型开发法的优缺点 (6)1.3.2 项目管理的内容 (6)1.3.3 PERT图及关键路径 (6)1.4 UML(统一建模语言)建模技术 (6)1.4.1面向对象方法的优点 (6)1.4.2类图概念及六种关系 (7)1.4.3序列图概念 (7)1.4.4基于UML嵌入式软件开发环境 (7)第二章接口电路设计及编程 (8)2.1外接Flash Memory (8)2.1.1 关于NOR Flash 和NAND Flash的选型 (8)2.1.2 关于大小端问题 (8)2.2 键盘接口电路 (8)2.1.2 键盘结构的分类 (8)2.3 LCD接口电路设计及编程 (9)2.3.1 LCD显示方式 (9)2.3.2 LCD显示方法 (9)2.3.3 VCLK计算方法 (9)2.4 串口通信技术 (10)2.4.0 同步和异步传输的区别 (10)2.4.2 异步串行总线 (10)2.4.3 零调制解调器(Null Modem) (11)2.4.5 UART波特率 (11)2.4.6 CAN总线 (11)2.5 网络接口技术 (12)2.5.1网络协议层次结构 (12)2.5.2各协议特点 (12)2.5.3嵌入式系统下以太网接口实现的方法 (13)2.5.4 IEEE 802.3标准MAC帧结构 (13)2.5.5网络接口控制芯片RTL8019的复位方式 (13)第三章嵌入式软件程序设计 (14)3.0软件开发模型 (14)3.1任务实现技术 (14)3.1.1 任务状态转换图 (14)3.1.2 任务的创建 (15)3.1.3 任务的切换 (15)3.2任务管理技术 (15)3.2.1 选择嵌入式软件平台时考虑的因素 (15)3.2.2嵌入式系统存储方案 (15)3.2.3如何区分进程和线程 (16)3.3程序设计技术 (16)3.3.1 初始化模块 (16)3.4软件分析技术 (16)3.4.1 选择嵌入式实时操作系统主要考虑的方面 (16)3.4.2 选择数据IO处理方法要考虑的方面 (16)3.5文件系统管理 (16)3.5.1 嵌入式文件系统的功能 (16)3.5.2 文件控制块 (17)3.5.3 文件的物理结构 (17)3.5.4 FAT文件系统 (17)第四章嵌入式系统测试与维护 (18)4.1单元模块测试技术 (18)4.1.1 嵌入式软件的特点 (18)4.1.2 对嵌入式软件进行测试的特点 (18)4.1.3单元测试的内容 (19)4.1.4嵌入式软件测试的内容 (19)4.2覆盖测试技术 (19)4.2.1 嵌入式软件的测试活动步骤 (19)4.2.2 覆盖测试 (20)4.2.3程序的环路复杂度V(G) (20)4.2.4 利用工具软件对嵌入式软件进行动态覆盖测试 (20)4.3可移植性技术 (21)4.3.1 嵌入式软件开发原则 (21)4.3.2嵌入式软件移植 (21)4.3.2嵌入式Boot Loader (21)4.3.3函数的可重入性 (22)4.3.3系统移植测试 (22)4.4可靠性分析技术 (22)4.4.1 软件固有错误数预测方法(蒙特卡罗错误随机植入法) (22)4.4.2 平均无故障时间MTBF (22)4.4.3负载压力测试 (22)4.5性能评价技术 (23)4.5.1嵌入式系统性能度量指标 (23)4.5.2资源利用率 (23)4.5.3系统传输数据的峰值流量 (23)第五章嵌入式Linux系统技术 (24)5.1 inittab配置文件 (24)5.1.1 inittab文件记录项 (24)5.1.2 运行级别 (25)5.1.3 Linux分区 (25)5.2 RPM操作技术 (26)5.2.2 RPM软件包名组成 (26)5.2.3 RPM软件包命令选项 (26)5.2.4 RPM软件包的校验方法 (27)5.3 内核移植与编译 (28)5.3.1 内核移植一般步骤 (28)5.3.2 嵌入式Linux系统的组成 (28)5.3.3 编译过程 (28)5.3.4 交叉编译方法 (28)5.3.5 init.S文件完成的工作 (28)5.3.6 内核的配置(裁剪)和编译 (29)5.4 Samba配置技术 (30)5.4.1 smb.conf (30)5.4.2 配置Samba使用加密口令步骤 (30)5.4.3 Samba安全级别 (30)5.4.4 其他Samba配置语句 (31)5.4.5 Samba的启动和停止 (31)5.5 TCP/IP网络配置 (34)5.5.1 基本配置语句 (34)5.5.2 基本关机/重启语句 (34)5.5.3路由协议 (34)5.5.4静态路由设置 (34)5.5.5网络连通命令 (35)第六章常考知识点 (36)第一章嵌入式系统需求分析与体系结构设计1.1软件需求分析描述了系统做什么的问题。

(软考嵌入式系统设计师)基础知识复习笔记

(软考嵌入式系统设计师)基础知识复习笔记

嵌入式系统设计师考试笔记之嵌入式系统基础知识一、引言自《嵌入式系统设计师考试复习笔记之存储管理篇》在嵌入式在线的博客出现后,意外的得到很多朋友的关注和评论,收到不少朋友的邮件,问一些有关考试的问题,希望得到我的复习笔记的其他部分。

我非常感谢他们,他们的热切关注,使我有了继续往下写的无限动力,使我萌生了将我以前的复习笔记、考试经验结合大纲教程并重新按《教程》的章节顺序整理一份适合考生复习的笔记手册,笔记后面再分析历年的真题,按章节考点找出相关的考题进行分析,希望能和有兴趣的人们一起讨论讨论。

嵌入式系统设计师的一天考试分为上午和下午部分,两部分的考试方式、试题难度、考点分布和复习方法都是不同的。

这次我们讨论的是嵌入式系统基础知识,我本人觉得,这部分出下午大题的可能性不大,主要是分布在上午的75道选择题之中。

从历年的真题和考试大纲来看,上午的选择题主要考查一些基本概念,重要原理的理解,一些关键技术和一些重要的原理引申出来的简单计算。

根据这些考试特点,复习的时候可以采用适当的策略,当然每个人的方法都是不一样的,适合自己的办法才是最好的办法。

方法大家可以自己慢慢去体会,我的也不多说了,通过笔记和真题分析就可以体现处理。

对于很多关键的知识点和基本概念,除了记住之外还要彻底理解,否则出题的时候会进行一些变换,或者引申一些计算,那么就算你知道考那个考点,可能你也做不好。

在复习的过程中,你要记住:你不是要考一个很高的分数,而是要考一个通过的分数,在复习过程中可以放弃一些内容,只要保证在大部分基本概念,关键技术,重要原理和历年考点上都把握住,能够拿到需要的分数就可以了。

二、复习笔记1、嵌入式系统的定义(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。

软考嵌入式系统设计师考试学习笔记

软考嵌入式系统设计师考试学习笔记

目录一、嵌入式软件开发概述.................................................................................................................. - 1 -1.嵌入式应用软件开发步骤:.................................................................................................... - 1 -2、嵌入式软件开发的特点:..................................................................................................... - 1 -3、嵌入式开发遇到的问题:..................................................................................................... - 1 -二、嵌入式程序设计语言.................................................................................................................. - 1 -1、程序设计语言概述................................................................................................................. - 1 -2、汇编语言................................................................................................................................. - 1 -3、面向过程的语言..................................................................................................................... - 2 -4、面向对象的语言..................................................................................................................... - 2 -5、汇编、编译、解译程序的基本原理..................................................................................... - 2 -三、嵌入式软件开发环境.................................................................................................................. - 2 -四、嵌入式软件开发.......................................................................................................................... - 2 -1、嵌入式平台选型..................................................................................................................... - 2 -2、软件设计................................................................................................................................. - 3 -3、嵌入式程序设计..................................................................................................................... - 3 -4、编码......................................................................................................................................... - 3 -5、测试......................................................................................................................................... - 3 -6、下载运行................................................................................................................................. - 4 -五、嵌入式软件移植.......................................................................................................................... - 4 -一、嵌入式软件开发概述1.嵌入式应用软件开发步骤:⑴、硬件的设计与实现;⑵、设备驱动软件的设计与实现;⑶、嵌入式操作系统的选择,移植,以及API 接口函数的设计;⑷、支撑软件的设计与调试;⑸、应用程序的设计与调试;⑹、系统联调、样机交付。

关于嵌入式系统的读书笔记

关于嵌入式系统的读书笔记

关于嵌入式系统的读书笔记第一篇:关于嵌入式系统的读书笔记关于嵌入式系统的读书笔记在对嵌入式ARM和Linux的进一步深入学习中,我们对相关软件的应用程序的设计编写与开发,以及对硬件结构图的构建、绘制、修改都有了更深入更全面的研究与了解,并且对嵌入式的数据采集与网络传输操作进行调试和运行。

下面简要介绍一下通过最近几个月的学习心得。

一、开发模式应用程序的开发有两种模式:1.先在宿主机(Intel CPU)上调试通过后,再移植到目标板(HHARM2410)上。

移植的工作包括两个方面:A.函数库的问题。

B.修改Makefile以选择适合目标板的编译工具2.直接在目标板上进行开发(通用开发模式,建议采用该模式)。

将宿主机和目标板通过以太网连接,在宿主PC 机上运行minicom 作为目标板的显示终端,在目标板上通过NFS(网络文件系统)来mount 宿主机硬盘,让应用程序直接运行在目标板上进行调试。

第一步:用串口和以太网将宿主机和目标板连接起来第二步:在宿主机上编辑(目录下,如hello),在hello目录下进行编译/opt/host/armv4l/bin/armv4l-unknown-linux-gcc –o hello hello.c第三步:将编译好的hello移至根目录,然后chmod 777 hello第四步:在宿主机上启动minicom作为目标板的仿真终端192.168.2.111:/ /mnt第六步:进入开发板的mnt目录: cd /mnt 运行hello程序./hello 调试信息通过串口打印在宿主机的minicom屏幕上这样便可进行应用程序的调试。

有问题,便切换去编辑编译,重新在开发板上运行,直至程序工作正常。

二、实验概述近期我们做了A/D接口实验、D/A接口实验、串口实验、中断实验、WEB SERVICE/CGI实验等等一系列实验。

我们从最初最基本的入门实验,会使用Make和Makefile。

(软考嵌入式系统设计师)之操作系统基础复习笔记

(软考嵌入式系统设计师)之操作系统基础复习笔记

嵌入式系统设计师考试笔记之操作系统基础一、引言原定于11月8号的嵌入式系统设计师考试由于某种原因推迟,得以让我有时间再写几篇文章,在最后的时刻为大家提供最后的帮助。

我觉得,嵌入式系统设计主要包含系统设计、硬件设计和软件设计。

其中大部分工作是嵌入式软件方面,包括操作系统的移植、系统体系架构设计、设备驱动程序编写、用户应用程序设计等等。

所以在嵌入式系统设计师的考试中也应该集中在这几点上面。

前面的几篇文章对嵌入式硬件方面做了几个总结,现在对嵌入式软件方面做一些个人的归纳,再结合历年真题分析一下,对我认为常见的考点梳理了一下,不知道对大家有没有用处。

在嵌入式软件设计中,操作系统基础尤为重要,可以考查的考点也特别的多。

我觉得它的地位就跟四六级英语考试中的阅读部分一样。

这部分内容不能吃透,很难将这个考试拿下来,当然也有例外的。

我只是想说明这部分的重要性。

闲话少数,进入正题。

二、复习笔记1、嵌入式软件基础(1)嵌入式软件的特点:A、规模较小。

B、开发难度大。

C、实时性和可靠性要求高。

D、要求固化存储。

(2)嵌入式软件分类:A、系统软件:控制和管理嵌入式系统资源,如嵌入式操作系统、驱动程序、中间件等。

B、应用软件:定义嵌入式设备的主要功能和用途,负载与用户进行交互。

C、支撑软件:辅助软件开发的工具软件。

(3)无操作系统的嵌入式软件的两种实现方式:A、循环轮转优点:简单、直观、开销小、可预测。

缺点:过于简单,所有代码顺序执行,无法处理异步事件,缺乏并行处理能力。

B、前后台系统(在循环轮转的基础上增加了中断处理功能)前台(事件处理级):中断服务程序,负载处理异步事件。

后台(任务级):一个无限循环,负载资源分配、任务管理和系统调度。

(4)有操作系统的三大优点:A、提高系统的可靠性。

B、提高了系统的开发效率,降低了开发成本,缩短了开发周期。

C、有利于系统的扩展与移植。

(5)设备驱动层(也叫板级支持包BSP:包含了嵌入式系统中所有与硬件相关的代码)大多数的嵌入式硬件设备都需要某种类型软件的初始化和管理。

嵌入式系统设计师考试重点记忆

嵌入式系统设计师考试重点记忆

嵌入式系统设计师考试重点记忆
嵌入式系统设计师考试的重点记忆包括以下内容:
1. 嵌入式系统的基本原理和概念:重点记忆嵌入式系统的基本
概念、嵌入式系统的组成、嵌入式系统的性能指标等。

2. 实时操作系统:重点记忆实时操作系统的基本概念、实时调度算法、实时内存管理、中断处理等内容。

3. 嵌入式微控制器:重点记忆嵌入式微控制器的基本原理、寄存器、指令集、存储器等。

4. 嵌入式系统设计与开发:重点记忆嵌入式系统设计的基本流程、嵌入式系统软件开发的基本方法、C语言编程、汇编语言编程等内容。

5. 嵌入式系统的信号处理:重点记忆信号处理的基本理论、时域和频域信号处理方法、滤波器、采样与量化等内容。

6. 嵌入式系统的通信协议:重点记忆嵌入式系统的通信协议、串口通信原理、协议分类、通信控制等内容。

7. 嵌入式系统的硬件设计:重点记忆嵌入式系统的硬件设计方法、存储器层次结构、处理器选择、外设接口等内容。

8. 嵌入式系统的调试与测试:重点记忆嵌入式系统的调试方法、故障排除、性能测试等内容。

以上是嵌入式系统设计师考试的重点记忆内容,需要考生仔细备考。

同时,还需要熟悉相关的考试标准和题型,掌握应试技巧和方法。

嵌入式笔记

嵌入式笔记

嵌入式笔记第一讲:1.嵌入式系统的基本概念:以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能/可靠性/成本/体积/功耗严格要求的专用计算机系统。

2.嵌入式系统组成:嵌入式系统由嵌入式硬件平台和嵌入式软件组成。

硬件平台:嵌入式微处理器为中心,包含电源电路、时钟电路、IO设备和存储器电路等外围硬件设备。

嵌入式软件:包括设备驱动层、实时操作系统RTOS(Real-time Operation System)和实际应用层。

3.Linux版本:内核版本号格式:x.y.z-www,主版本号.次版本号-扩展版本号,如最新稳定版4.18.14。

4.发行版本:将Linux内核与外围实用程序(Utilities)和文档包装起来,并提供一些系统安装界面和系统管理工具,即构成了一种发行版本。

发行版举例:debian、ubuntu、redhat、arch、gentoo(重要)5.Linux各目录存放的内容:/bin:Linux常用操作命令的执行文件,如mv、ls等。

/boot:操作系统启动时用到的文件。

如grub,u-boot。

/dev:包含Linux系统中使用的所有外部设备;外部设备的端口;设备文件。

/etc:系统管理配置文件。

系统在启动过程中需要读取其参数进行相应的配置。

/home:Linux系统默认用户根目录。

/lib:系统动态链接共享库。

大多应用程序都会用到该目录下的共享库。

/mnt:软驱、光驱、硬盘的挂载点,也可临时将别的文件系统挂载到此目录下。

/usr:用户应用程序和文件。

6.Linux文件类型分为4种:⑴普通文件⑵目录文件⑶链接文件⑷设备文件。

7.多个链接文件可与一个i节点关联。

分为硬链接和符号链接。

硬链接(hard link):硬链接指向i节点;不可跨越文件系统;不能创建目录的硬链接。

符号链接(symbolic link):仅含有目标文件路径名的简单文件->系统通过其中的目标文件路径找到最终文件。

嵌入式系统设计读书笔记

嵌入式系统设计读书笔记

嵌入式系统设计读书笔记目录第一章嵌入式系统基础知识 (1)1.1嵌入式系统定义及组成 (1)1.1.1嵌入式系统的定义 (1)1.1.2嵌入式系统发展概述 (1)1.1.3嵌入式系统的组成 (3)1.1.4实时系统 (5)1.2微处理器体系结构 (6)1.2.1冯.诺依曼与哈佛结构 (6)1.2.1.1冯.诺依曼结构 (6)1.2.1.2哈佛结构 (7)1.2.2 CISC与RISC (7)1.2.2.1复杂指令集计算机CISC (7)1.2.2.2精简指令集计算机RISC (9)1.2.2.3 CISC和RISC的特点 (10)1.2.3 流水线技术 (10)1.2.4 信息存储的字节顺序 (11)1.3嵌入式系统的硬件基础 (12)1.3.1 组合逻辑电路基础 (12)1.3.2时序逻辑电路 (13)1.3.3 总线电路及信号驱动 (14)1.3.3.1总线 (14)1.3.3.2 三态门 (15)1.3.3.3 总线的负载能力 (15)1.3.3.4 总线复用 (15)1.3.3.5总线通信协议 (16)1.3.3.6 总线仲裁 (16)1.3.4 电平转换电路 (17)1.3.4.1 数字集成电路的分类 (17)1.3.4.2 常用数字集成电路逻辑电平接口技术 (17)1.3.4.3 可编程逻辑器件基础 (18)1.3.4.4 现场可编程器件分类 (19)1.4嵌入式系统中信息表示与计算基础 (24)1.4.1 计算机中数的表示 (24)1.4.2 非数值数据编码 (25)1.4.3 语音编码 (25)1.4.4 差错控制码 (25)1.4.5 嵌入式系统的性能评价 (26)1.4.5.1 度量项目 (26)1.4.5.2 评估嵌入式系统处理器的主要指标 (26)第二章嵌入式微处理器与接口知识 (27)2.1嵌入式微处理器的结构和类型 (27)2.1.1 嵌入式微处理器的分类 (27)2.1.2 典型的8位微处理器的结构和特点 (28)2.1.3 典型的16位微处理器的结构和特点 (28)2.1.4 典型的32位微处理器的结构和特点 (29)2.1.5 DSP处理器的结构和特点 (30)2.1.6 多核处理器的结构和特点 (31)2.2嵌入式系统的存储体系 (32)2.2.1 存储器系统的概述 (32)2.2.1.1 存储器系统的层次结构 (32)2.2.1.2 高速缓存cache (32)2.2.1.3存储管理单元 (35)2.2.2嵌入式系统存储设备分类 (37)2.2.2.1存储器部件的分类 (37)2.2.2.2存储器的组织和结构 (38)2.2.3ROM的种类与选型 (38)2.2.3.1常见的ROM的种类 (38)2.2.3.2各类型ROM的特点和不同点 (38)2.2.4Flash Memory的种类与选型 (39)2.2.4.1Flash Memory的种类 (39)2.2.4.2NOR 和NAND 型的Flash Memory 各自的典型特征和不同点 (40)第一章嵌入式系统基础知识1.1嵌入式系统定义及组成1.1.1嵌入式系统的定义1.可以说除了桌面计算机和服务器外所有计算设备都属于嵌入式系统,例如从便携式音乐播放器到航天飞机上的实时系统控制都属于嵌入式。

软考嵌入式系统设计师学习笔记

软考嵌入式系统设计师学习笔记

软考嵌⼊式系统设计师学习笔记⽬录第⼀章嵌⼊式系统需求分析与体系结构设计 (5)1.1软件需求分析 (5)1.1.1 关于选择裸机开发还是基于实时操作系统 (5)1.1.2 实时操作系统优点 (5)1.1.3 实时操作系统的时间性能评估 (5)1.2体系结构设计 (5)1.2.1系统需求 (5)1.2.2 规格说明书 (5)1.2.3 体系结构设计 (6)1.3项⽬进度管理 (6)1.3.1 快速原型开发法的优缺点 (6)1.3.2 项⽬管理的内容 (6)1.3.3 PERT图及关键路径 (6)1.4 UML(统⼀建模语⾔)建模技术 (6)1.4.1⾯向对象⽅法的优点 (6)1.4.2类图概念及六种关系 (7)1.4.3序列图概念 (7)1.4.4基于UML嵌⼊式软件开发环境 (7)第⼆章接⼝电路设计及编程 (8)2.1外接Flash Memory (8)2.1.1 关于NOR Flash 和NAND Flash的选型 (8)2.1.2 关于⼤⼩端问题 (8)2.2 键盘接⼝电路 (8)2.1.2 键盘结构的分类 (8)2.3 LCD接⼝电路设计及编程 (9)2.3.1 LCD显⽰⽅式 (9)2.3.2 LCD显⽰⽅法 (9)2.3.3 VCLK计算⽅法 (9)2.4 串⼝通信技术 (10)2.4.0 同步和异步传输的区别 (10)2.4.2 异步串⾏总线 (10)2.4.3 零调制解调器(Null Modem) (11)2.4.5 UART波特率 (11)2.4.6 CAN总线 (11)2.5 ⽹络接⼝技术 (12)2.5.1⽹络协议层次结构 (12)2.5.2各协议特点 (12)2.5.3嵌⼊式系统下以太⽹接⼝实现的⽅法 (13)2.5.4 IEEE 802.3标准MAC帧结构 (13)2.5.5⽹络接⼝控制芯⽚RTL8019的复位⽅式 (13)第三章嵌⼊式软件程序设计 (14)3.0软件开发模型 (14)3.1任务实现技术 (14)3.1.1 任务状态转换图 (14)3.1.2 任务的创建 (15)3.1.3 任务的切换 (15)3.2任务管理技术 (15)3.2.1 选择嵌⼊式软件平台时考虑的因素 (15)3.2.2嵌⼊式系统存储⽅案 (15)3.2.3如何区分进程和线程 (16)3.3程序设计技术 (16)3.3.1 初始化模块 (16)3.4软件分析技术 (16)3.4.1 选择嵌⼊式实时操作系统主要考虑的⽅⾯ (16) 3.4.2 选择数据IO处理⽅法要考虑的⽅⾯ (16)3.5⽂件系统管理 (16)3.5.1 嵌⼊式⽂件系统的功能 (16)3.5.2 ⽂件控制块 (17)3.5.3 ⽂件的物理结构 (17)3.5.4 FAT⽂件系统 (17)第四章嵌⼊式系统测试与维护 (18)4.1单元模块测试技术 (18)4.1.1 嵌⼊式软件的特点 (18)4.1.2 对嵌⼊式软件进⾏测试的特点 (18)4.1.3单元测试的内容 (19)4.1.4嵌⼊式软件测试的内容 (19)4.2覆盖测试技术 (19)4.2.1 嵌⼊式软件的测试活动步骤 (19)4.2.2 覆盖测试 (20)4.2.3程序的环路复杂度V(G) (20)4.2.4 利⽤⼯具软件对嵌⼊式软件进⾏动态覆盖测试 (20)4.3可移植性技术 (21)4.3.1 嵌⼊式软件开发原则 (21)4.3.2嵌⼊式软件移植 (21)4.3.2嵌⼊式Boot Loader (21)4.3.3函数的可重⼊性 (22)4.3.3系统移植测试 (22)4.4可靠性分析技术 (22)4.4.1 软件固有错误数预测⽅法(蒙特卡罗错误随机植⼊法) (22) 4.4.2 平均⽆故障时间MTBF (22)4.4.3负载压⼒测试 (22)4.5性能评价技术 (23)4.5.1嵌⼊式系统性能度量指标 (23)4.5.2资源利⽤率 (23)4.5.3系统传输数据的峰值流量 (23)第五章嵌⼊式Linux系统技术 (24)5.1 inittab配置⽂件 (24)5.1.1 inittab⽂件记录项 (24)5.1.2 运⾏级别 (25)5.1.3 Linux分区 (25)5.2 RPM操作技术 (26)5.2.2 RPM软件包名组成 (26)5.2.3 RPM软件包命令选项 (26)5.2.4 RPM软件包的校验⽅法 (27)5.3 内核移植与编译 (28)5.3.1 内核移植⼀般步骤 (28)5.3.2 嵌⼊式Linux系统的组成 (28)5.3.3 编译过程 (28)5.3.4 交叉编译⽅法 (28)5.3.5 init.S⽂件完成的⼯作 (28)5.3.6 内核的配置(裁剪)和编译 (29)5.4 Samba配置技术 (30)5.4.1 smb.conf (30)5.4.2 配置Samba使⽤加密⼝令步骤 (30)5.4.3 Samba安全级别 (30)5.4.4 其他Samba配置语句 (31)5.4.5 Samba的启动和停⽌ (31)5.5 TCP/IP⽹络配置 (34)5.5.1 基本配置语句 (34)5.5.2 基本关机/重启语句 (34)5.5.3路由协议 (34)5.5.4静态路由设置 (34)5.5.5⽹络连通命令 (35)第六章常考知识点 (36)第⼀章嵌⼊式系统需求分析与体系结构设计1.1软件需求分析描述了系统做什么的问题。

嵌入式系统设计读书笔记

嵌入式系统设计读书笔记

嵌入式系统设计读书笔记目录第一章嵌入式系统基础知识 (1)1.1嵌入式系统定义及组成 (1)1.1.1嵌入式系统的定义 (1)1.1.2嵌入式系统发展概述 (1)1.1.3嵌入式系统的组成 (3)1.1.4实时系统 (5)1.2微处理器体系结构 (6)1.2.1冯.诺依曼与哈佛结构 (6)1.2.1.1冯.诺依曼结构 (6)1.2.1.2哈佛结构 (7)1.2.2 CISC与RISC (7)1.2.2.1复杂指令集计算机CISC (7)1.2.2.2精简指令集计算机RISC (9)1.2.2.3 CISC和RISC的特点 (10)1.2.3 流水线技术 (10)1.2.4 信息存储的字节顺序 (11)1.3嵌入式系统的硬件基础 (12)1.3.1 组合逻辑电路基础 (12)1.3.2时序逻辑电路 (13)1.3.3 总线电路及信号驱动 (14)1.3.3.1总线 (14)1.3.3.2 三态门 (15)1.3.3.3 总线的负载能力 (15)1.3.3.4 总线复用 (15)1.3.3.5总线通信协议 (16)1.3.3.6 总线仲裁 (16)1.3.4 电平转换电路 (17)1.3.4.1 数字集成电路的分类 (17)1.3.4.2 常用数字集成电路逻辑电平接口技术 (17)1.3.4.3 可编程逻辑器件基础 (18)1.3.4.4 现场可编程器件分类 (19)1.4嵌入式系统中信息表示与计算基础 (24)1.4.1 计算机中数的表示 (24)1.4.2 非数值数据编码 (25)1.4.3 语音编码 (25)1.4.4 差错控制码 (25)1.4.5 嵌入式系统的性能评价 (26)1.4.5.1 度量项目 (26)1.4.5.2 评估嵌入式系统处理器的主要指标 (26)第二章嵌入式微处理器与接口知识 (27)2.1嵌入式微处理器的结构和类型 (27)2.1.1 嵌入式微处理器的分类 (27)2.1.2 典型的8位微处理器的结构和特点 (28)2.1.3 典型的16位微处理器的结构和特点 (28)2.1.4 典型的32位微处理器的结构和特点 (29)2.1.5 DSP处理器的结构和特点 (30)2.1.6 多核处理器的结构和特点 (31)2.2嵌入式系统的存储体系 (32)2.2.1 存储器系统的概述 (32)2.2.1.1 存储器系统的层次结构 (32)2.2.1.2 高速缓存cache (32)2.2.1.3存储管理单元 (35)2.2.2嵌入式系统存储设备分类 (37)2.2.2.1存储器部件的分类 (37)2.2.2.2存储器的组织和结构 (38)2.2.3ROM的种类与选型 (38)2.2.3.1常见的ROM的种类 (38)2.2.3.2各类型ROM的特点和不同点 (38)2.2.4Flash Memory的种类与选型 (39)2.2.4.1Flash Memory的种类 (39)2.2.4.2NOR 和NAND 型的Flash Memory 各自的典型特征和不同点 (40)第一章嵌入式系统基础知识1.1嵌入式系统定义及组成1.1.1嵌入式系统的定义1.可以说除了桌面计算机和服务器外所有计算设备都属于嵌入式系统,例如从便携式音乐播放器到航天飞机上的实时系统控制都属于嵌入式。

嵌入式系统设计师笔记

嵌入式系统设计师笔记

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

(2)嵌入式系统发展的4 个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet 阶段。

(3)知识产权核(IP 核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。

(4)IP 核模块有行为、结构和物理3 级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。

2、嵌入式系统的组成:硬件层、中间层、系统软件层和应用软件层(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O 接口。

嵌入式核心模块=微处理器+电源电路+时钟电路+存储器Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。

它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。

(2)中间层(也称为硬件抽象层HAL 或者板级支持包BSP):它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP 层提供的接口开发即可。

BSP 有两个特点:硬件相关性和操作系统相关性。

设计一个完整的BSP 需要完成两部分工作:A、嵌入式系统的硬件初始化和BSP 功能。

片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。

板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。

系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。

B、设计硬件相关的设备驱动。

(3)系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。

RTOS 是嵌入式应用软件的基础和开发平台。

(4)应用软件:由基于实时系统开发的应用程序组成。

嵌入式系统设计师考试完美笔记解读

嵌入式系统设计师考试完美笔记解读

嵌入式系统设计师考试笔记之嵌入式系统基础知识1、嵌入式系统的定义(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。

(3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。

(4)IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。

2、嵌入式系统的组成:硬件层、中间层、系统软件层和应用软件层(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。

嵌入式核心模块=微处理器+电源电路+时钟电路+存储器Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。

它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。

(2)中间层(也称为硬件抽象层HAL或者板级支持包BSP):它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。

BSP有两个特点:硬件相关性和操作系统相关性。

设计一个完整的BSP需要完成两部分工作:A、嵌入式系统的硬件初始化和BSP功能。

片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。

板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。

系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。

B、设计硬件相关的设备驱动。

(3)系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。

RTOS是嵌入式应用软件的基础和开发平台。

(4)应用软件:由基于实时系统开发的应用程序组成。

嵌入式知识点总结6篇

嵌入式知识点总结6篇

嵌入式知识点总结嵌入式知识点总结6篇嵌入式知识点总结1学习嵌入式是我的梦想,我很羡慕能够在嵌入式方面独档一面的高手,希望有一天我也能像他们那样自信自如的在嵌入式这片热土上挥洒着自己的青春和浪漫。

带着无比豪迈的心情和缤纷的梦想来到易嵌学习嵌入式,在新的老师、新的同学和新的环境中,我开始了我的嵌入式学习,开始了新一轮的拼搏。

在易嵌短暂的两个月,我们从linux基础入手,强化了c语言编程,学习了linux系统编程和网络编程。

时间虽短,但成长很快,无论是理论知识还是实践能力都得到了大幅度的提高。

在这里将理论和实践相结合,相互促进,相互补充,使得学习更加透彻。

通过用不同方法实现同一个项目,不断深入,层层推进,学以致用!在易嵌的这个暑假,我过得充实而快乐。

在这里有着同学间的探讨、师生间的互动和魔鬼般的训练!在我丰富多彩的人生路上留下了永远亮丽与难忘的记忆!实践报告正文:看着四年的大学生活就快要结束了,心中隐隐有一种伤感与失落,我陷入了沉思:该挺直腰杆走自己的路了!学习嵌入式是我的梦想,我很羡慕能够在嵌入式方面独档一面的高手,希望有一天我也能像他们那样自信自如的在嵌入式这片热土上挥洒着自己的青春和浪漫。

当我决定好好利用这个暑假,学习我一直都想去学的嵌入式的时候,就注定要在我丰富多彩的人生路上留下永远亮丽与难忘的记忆!算算毕业的时间,我已经闻到了离别的气息,在这即将远离大学时代的时刻,才真正懂得回眸的意义。

想想走过的路,想想现在的路,想想来时的路,不知道未来能否成功,既然选择了远方,就注定要风雨兼程!带着无比豪迈的心情和缤纷的梦想来到易嵌学习嵌入式,希望在这崭新的一页留下人生的美好!在新的老师、新的同学和新的环境中,我开始了我的嵌入式学习,开始了新一轮的拼搏。

无论现在多么努力都无法追回失去的金色年华,所以在开班典礼的时候,我便为自己制定了目标!我将好好利用最后一个暑假,多学些知识锻炼自己,为自己储备一些精神食粮并不断开拓视野和提升自己的能力,让自己能够在毕业的时候成为学校的骄傲!通过对linux操作系统的学习,我初步掌握了linux基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A、位图法。
B、链表法。
C、索引法。
(2)I/O控制方式:
A、程序循环检测:要一直占用CPU,浪费CPU的时间。
B、中断驱动方式:前后台系统。
C、直接内存访问:DMA控制,减少了中断的次数。
(3)I/O软件
A、中断处理程序:当一个用户程序需要某种I/O服务时,它会去调用相应的系统函数,而这个函数又会去调用相应的设备驱动程序,在驱动程序中会启动相应的I/O操作,并且被阻塞起来,直到这个I/O操作完成后,产生一个中断程序,并跳到相应的中断处理程序,在这里将会唤醒被阻塞的驱动程序。
a、与用户程序进行链接的库函数:例如C语言中与I/O相关的库函数。
b、完全运行在用户空间当中的程序:例如Spooling技术。
注:Spooling技术
Spooling是“外围设备联机操作”的所写,spooling技术也叫假脱机技术或虚拟设备技术,它可以把一个独占的设备转变为具有共享特征的虚拟设备。在多道系统中,对于一个独占设备,专门利用一道程序来增强该设备的I/O功能。优点有二:能提供高速的虚拟I/O服务;能实现对独占设备的共享。
(2)文件和目录
A、当一个文件被创建时,必须给它指定一个名字,用户就是通过文件名来访问这个文件的。
B、文件命是一个有限长度的字符串,由两部分组成:文件名和扩展名。
C、文件的逻辑结构主要有三种:无结构、简单的记录结构和复杂结构。现代文件系统通常采用的是无结构的形式。
D、除了文件名之外,操作系统会给每个文件附加一些其他信息,称为文件的属性。
B、设备驱动程序:直接同I/O设备打交道,直接对它们进行控制的软件模块。上层的I/O软件通过抽象的函数接口与设备驱动程序打交道,这些接口是标准的、稳定不变的,而硬件设备的具体细节被封装在设备驱动程序里面。设备驱动程序的管理通过驱动程序地址表来实现。驱动程序表中存放了各个设备驱动程序的入口地址,可以通过此表来实现设备驱动的动态安装与卸载。
带有文件分配表的链表结构:在链表结构的基础上,把每一个物理块当中的链表指针抽取出来,单独组成一个表格,就是文件分配表(FAT)。如果要随机访问文件的地n个逻辑块,可以先从FAT表中查到相应的物理块地址,然后根据这个地址直接去访问磁盘。
索引结构:把文件当中每一个逻辑块所对应的物理块编号直接记录在这个文件的文件控制块当中,这样的文件控制块称为是I节点,或索引节点。这样,对于系统中的每一个文件,都有一个自己的索引节点,通过这个索引节点就能够直接实现逻辑块与物理块之间的映射关系。
连续结构:把文件的各个逻辑块按照顺序存放在若干个连续的物理块当中。主要用于CD-ROM等一次性写入的光学存储介质当中。
链表结构:把文件的各个逻辑块依次存放在若干个物理块当中,这些物理块既可以是连续的,也可以是不连续的,然后在各个块之间通过指针连接起来,前一个物理块指向下一个物理块,从而形成一条链表。
B、内存映象编址:把各种设备控制器当中的每一个寄存器都映射为一个内存单元,这内存单元专门用于I/O操作。端口地址空间与内存地址空间是统一编址的,端口地址空间是内存地址空间的一部分。
C、混合编址:对于设备控制器当中的寄存器采用独立编址的方法,每个寄存器有一个独立的I/O端口地址;而对于设备的数据缓冲区,则采用内存映象编址的方法,把他们统一到内存地址空间当中。
35. 文件系统
(1)嵌入式文件系统概述
文件系统就是操作系统中用以组织、存储、命名、使用和保护文件的一套管理机制。
常见的嵌入式文件系统有:
A、 FAT:VxWorks、QNX、Windows CE等
B、 NFS:网络文件系统,基于远程调用和扩展数据表示。
C、 FFS:用于Flash存储器的文件系统。
B、文件何描述一个文件。
b、如何存储一个文件。
C、文件控制块(FCB):它是文件的描述方法,是操作系统为了管理文件而设置的一种数据结构,里面存放了与文件有关的所有管理信息,FCB是文件存在的标志。
D、文件的物理结构:连续结构、链表结构和索引结构。
33. 存储管理
见嵌入式系统设计师学习笔记二。
34. 设备管理
(1)设备管理基础
一个I/O单元通常由两个部分组成:
A、 机械部分:I/O设备本身。
B、 电子部分:设备控制器或设备适配器。
硬件寄存器的编址方式有三种:
A、I/O独立编址:对于各种设备控制器中的每一个寄存器,分配一个唯一的I/O端口编号,也叫I/O端口地址,然后用专门的I/O指令对这些端口进行操作。这些端口地址构成的地址空间是完全独立的,与内存地址空间没有任何关系。
C、设备独立I/O软件:这部分软件在设备驱动程序的上面,是独立的I/O软件,也是系统内核的一部分,主要任务是实现所有设备都需要的一些通用I/O功能,并向用户级的软件提供一个统一的访问接口。
D、用户空间的I/O软件:大部分的I/O软件都是包含在操作系统当中的,也有一小部分运行在系统内核之外。主要可以分为下面两种:
E、文件的存取方法有两种:顺序存取和随机存取。
F、目录也称为文件夹,它是一张表格,记录了在该目录下每个文件名和其他的一些管理信息。
G、在多级目录结构中,访问文件或目录主要有两种方法:绝对路径名和相对路径名。
(3)文件系统的实现
A、数据块:在磁盘中以扇区为单元进行读写操作。对文件系统而言,把磁盘空间划分为一个个大小相同的块,称为物理块,每个物理块包含若干个连续的扇区,同时把文件的字节流也分成大小相同的逻辑块。在文件系统内部,以块为单位来进行操作,把每一个逻辑块保存在一个物理块中。
(4)目录的实现
A、直接法:把文件控制块的内容直接保存在目录项当中,因此每个目录项就等于某个文件名加上它的FCB。
B、间接法:目录项里面只有文件名和该文件的FCB所在地址。
不管是那一种类型的实现方法,目录的基本功能都一样,即用户给出一个文件名,就返回相应文件的FCB。
(5)空闲空间管理方法:
相关文档
最新文档