嵌入式系统设计阶段笔记

2024-01-07 21:38

本文主要是介绍嵌入式系统设计阶段笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

设计阶段

1审查分析资料

整理自己的记忆,审查约束条件,这些条件将决定你可作何选择以及如何建立系统。

 

2规定硬件部件

将硬件分成各部件,画出一张或多张硬件部件的框图。用一个框图标识一个单独的电路板,外设等。

决定到底用硬件还是软件来实现某个功能一般来说就是一个性能和成本间的权衡,或者开发成本(多些时间)与制造成本(多些硬件)间的权衡。

 

3定义硬件接口

I/O端口硬件所用到的所有端口,端口地址,能写入各端口的所有命令和命令序列。

硬件寄存器位分配,如何读写的说明,以及使用该寄存器的时序要求或其他约束。

共享内存或内存映像I/O的地址进行每个可能的I/O操作的读写序列

硬件中断---列出所有的硬件中断号和分配到其上的硬件事件

 

4规定软件子系统

分成一些适当定义好的子系统,目的是找出自成一体的模块或子系统。

自上而下,较大的:接口,从硬件设备的数据采集,数据处理等等

 

5定义软件接口

规定各个子系统配备的软件接口。详细规定说明API(应用程序编程接口);用函数原型、数据结构声明、类声明等来建立头文件。

规定软件接口可提供一公共参考基点,定义子系统的接口常常能帮助你细化和澄清对子系统所提供功能的理解。

 

6规定启动和关闭过程

事件发生的顺序,对于启动,说明硬件和软件子系统初始化的细节,以及初始化的顺序。对于关闭,说明每个子系统必须完成的动作,如保存文件到磁盘上,断开网络连接。

 

7规定出错处理方案

在设计阶段监理出错处理策略,在实现阶段尽早建立出错处理程序。给出一些着眼点:

1)  你的用户界面如何?能否对系统操作人员报告错误?或者你会把错误记录到某个文件中供事后分析吗?

2)  你的系统有同其他设备通信的功能吗?你能用这个功能向远程站点报告错误吗?

3)  系统关闭或崩溃的后果是什么?若关闭是不可接受的,得有致命性出错条件出发系统重新启动。看门狗监视器功能?watchdog timer

 

8检查你的设计

检查设计文档的正确性

 

一些选择决定

1选择处理器

判别标准:

1)  设计需要多快的处理速度

性能取决因素:时钟频率、内部寄存器大小、寄存器是否被公平对待(即指令对等处理所有的寄存器)、有助于耗时操作的特殊的内置硬件(如一个硬件乘法单元)等

数据8位或者更大?

2)  你的人员对处理器是否专业

主要考虑进度要求是否允许花精力去摆弄新的处理器

3)  设计的I/O技术指标是什么

你的应用程序所要求的硬件能否连接到这个处理器,而无需过多的胶合逻辑和笨重的硬件驱动程序。考虑该处理器的一些支持芯片(如DMA控制器、内存管理芯片、中断控制器等)的配套。调研所掌握的处理器供货商。

4)  处理器可用到哪些软件支持工具

5)  处理器是否内置调试支持

6)  处理器制造商的支持可信度如何

 

2选择硬件部件

自制或购买

1)  你打算做几套系统

2)  你的目标市场的机会如何

3)  是否软件开发极大的依赖于硬件的到位,或者,是否大多数的软件开发都能在一个实验系统(如PC机)上进行。

 

3选择操作系统

1)  你需要一个操作系统提供多少功能

2)  操作系统有哪些开发工具可用

3)  操作系统到你的硬件到接口移植的难度如何

4)  操作系统是否包括特殊的调试支持

5)  操作系统的内存要求如何

6)  你的程序员是否熟悉此操作系统,或此操作系统通常提供的API

7)  是否操作系统包括所有你需要的部件

8)  操作系统是否有你目标硬件的驱动程序

9)  操作系统是否有可伸缩性

 

4选择编程语言

1)  你的人员最熟悉的语言是什么

2)  该软件应用广泛吗

3)  该语言是否提供你应用程序所要求的性能

 

5选择软件开发工具

1)  系统调试器的功能如何

2)  你已选择一个编译器,是否包括一汇编程序——应用程序要访问系统级的指令,汇编是必要的

3)  有哪些可支持的库函数可用

库函数和样板代码。如C++的模版库,提供一套用于定义各种有用的集装,存储,搜寻,排序对象。

4)  编译器开发商保持对编译器升级吗

也适用于解释程序

5)  连接程序是否支持你的其他工具所用的所有文件格式和符号格式

6)  是否有某种便于使用的,用于选配操作系统的系统构建工具

7)  是哪个开发商产的开发系统

 

6选择硬件调试工具

1)  电路内仿真器(ICE

2)  逻辑分析仪

3)  带硬件支持的软件调试器

4)  ROM仿真器

 

7选择软件组件

一些授权软件

 

这篇关于嵌入式系统设计阶段笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581309

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作