-
嵌入式系统学习———2.嵌入式系统设计过程
2021-01-06 03:53:19我们在做嵌入式设计的时候,首先我们要知道要干什么、我们要实现什么,也就是要实现的目标。规范来说我们第一件要做的事情就是确定设计任务和设计目标,并提炼规格说明书,作为正式设计指导和验收的标准。 系统需求... -
嵌入式系统设计师考试接口技术
2020-08-26 15:34:49接口技术在嵌入式系统设计处于如此重要的位置,是嵌入式系统设计师硬件部分的重要考试范围。目前嵌入式系统中的接口五花百门,每个接口都可以写成一本厚厚的书。面对内容如此之多,范围如此之广的考试部分,应该怎么... -
嵌入式系统功能概要设计说明_嵌入式软件架构设计实际该怎么做?
2020-12-06 14:36:39错误的示范最近公司新招了一个做嵌入式软件开发的同事,该同事是从上海的某一个上市公司出来的,因为我们这边人手不够,因此把他安排了去负责一个新产品的研发,前期让他负责加速度计、NB-IOT、舵机、外置Flash的...一 错误的示范
最近公司新招了一个做嵌入式软件开发的同事,该同事是从上海的某一个上市公司出来的,因为我们这边人手不够,因此把他安排了去负责一个新产品的研发,前期让他负责加速度计、NB-IOT、舵机、外置Flash的功能测试,测试完成之后,准备让他做一个该产品的概要设计。然后他花了2个星期的时间,给我们写出来一个概要设计,说实话,我看到这个概要设计,我就觉得是刚毕业的大学生写的。版本一的架构设计
2.1系统体系结构
系统分为两层:硬件驱动层、应用层。
2.1.1硬件驱动层
硬件驱动层包含板载硬件资源正常运行所需的所有驱动程序。
1)MCU初始化
2)I2C数据存取
3)SPI数据读取
4)加速度计初始化
5)蓝牙模块启动
6)BC95模块启动
7)485通讯模块启动
2.2.2应用层
1)Mcu运行模式切换
2)震动及倾斜
3)数据解析
4)开/关锁
5)数据发送
6)历史数据保存看到版本一的架构设计之后,说实话,我还是第一次见到这样来写架构设计的,居然是以序号来写的,这个让别人读起来,特别的别扭。 版本二的架构设计
看到版本二的架构设计之后,虽然颇感欣慰,但是想到达到我们所要求的,还要很大的一段距离,该架构设计,主要有以下几点问题:
1.对架构的理解还不是很清晰,既然是做架构设计,那就应该从整体来看,而不是仅仅只是局限于一个模块,或者功能里面。
2.还是每个层次的理解也还不是很清晰,比如讲MCU的初始化,归于硬件驱动层里面。MCU的初始化,严格意义上来说,是属于流程的一部分了,而不是驱动。比如电脑的开启启动,把这个归于硬件的驱动里面,肯定是属于牛头不对马嘴的。
3.还有就是各个模块的启动,也是不能属于硬件驱动层的,也都是业务流程的一部分了,都不应该属于驱动层的一部分。
4.还有就是总线数据的读写,虽然驱动的作用也就是读写,但是数据总线的读写不能写成硬件驱动。
5.应用层的系统参数初始化,也还是属于流程。
6.数据的解析和数据的发生,都是属于通信功能里面的,不应该单独独立出来,属于单个的应用。二 更改版基本框架图
(1)架构设计的目的
1.应用的代码逻辑清晰,且避免重复造轮子。
2.如果没有好的架构,移植将会是一件很痛苦的事情,因此一个好的架构设计,方便软件的移植。
3.最大限度地复用。
4.高内聚低耦合。 (2)设计思路
如何把硬件的驱动和一个功能封装成一个个的模块,然后可以像小朋友搭积木一个,一个个模块可以快速的拼接起来,组成一个个不同的模型。
我们的嵌入式架构思路也是来源于此,即功能模块化设计、分层设计。
这个设计和WEB开发的MVC模式类似,都是注重分层设计。
模块化设计:将收集到的需求,进行归类,总结和分析,将这些需求概括为一个个单独的功能,每一个功能,做成一个单独的功能模块。
分层设计一句话不好直接表达,其主要体现在一下几方面:
1.功能模块对外调用的模块封装成一个个API,将底层驱动做个API以供功能模块调用。(各个功能模块可以独立编译(如通信模块纯ANSI C,可在任意平台复用),或者调用驱动层接口(日志库模块调用了驱动读写Flash),总而言之,言而总之,封装出各个功能独立的可复用的功能模块。)
2.API分为驱动层API和应用层API,而不是所有程序都调用驱动层API。(整个应用中都调用驱动层API会导致应用中驱动调用随处可见,无法移植和最大限度的复用)
总体分 硬件驱动层-->功能模块层-->业务逻辑层-->应用层
总体结构示意框图:说明:
1.层与层之间不能跨层调用。
2.模块与模块各自独立,无依赖关系。
3.模块提供统一的接口供上层调用,模块的内外接口分明。
4.模块的功能只能增,不能改。
5.各个功能模块层也还可以进行继续分层,比如接口层、驱动层、硬件层。(3)模块层次说明硬件驱动层
硬件驱动层包含板载硬件资源正常运行所需的所有驱动程序并提供API给功能模块调用。功能模块层
功能模块层包括实现具体功能的函数,通过调用驱动层API实现相应功能,同时提供可调用的API给业务逻辑层。业务逻辑层
业务逻辑层包括产品整体功能的各个业务流程,通过调用功能模块层的API实现。应用层
应用层将各个业务逻辑进行整合调用,完成整个产品的功能。(4)优势
如果驱动变动了,或者换不同平台,只需更改驱动层,应用层不受影响。
如果功能模块变动了,只需升级相应的功能模块,其他的模块不受影响,应用层也不受影响。
按照这种逻辑设计好之后,主要的工作就是在业务逻辑层。应用层则为程序的总体流程和框架,主要调用业务逻辑层实现不同的功能。1.2019年第1期《单片机与嵌入式系统应用》电子刊新鲜出炉!
2.如何评判STM32各个MCU的性能?
3.连好莱坞都在讨论物联网。。。
4.我是MCU开发者,内存屏障和我有关吗?
5.从业15年的电源工程师转身后的哀叹。。。
6.想去Dialog拿2019年终奖不?
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。
-
嵌入式学习路线怎么学,如何学习嵌入式系统
2018-11-20 17:55:59随着互联网的快速发展,嵌入式也越来越火热,更多的人投入到嵌入式开发的行列中来,那么想要学习嵌入式,该从哪里入手学习,嵌入式学习路线图怎么学? 想要学习好嵌入式,想成为嵌入式软件工程师。那么当前企业需要哪些技术...随着互联网的快速发展,嵌入式也越来越火热,更多的人投入到嵌入式开发的行列中来,那么想要学习嵌入式,该从哪里入手学习,嵌入式学习路线图怎么学?
想要学习好嵌入式,想成为嵌入式软件工程师。那么当前企业需要哪些技术呢?
1.嵌入式上层的软件应用开发
需要:精通嵌入式Linux C语言编程、嵌入式Linux C语言数据结构、嵌入式Linux项目开发流程、嵌入式 Linux并发程序设计、嵌入式 Linux应用编程、嵌入式 Linux网络编程、嵌入式数据库开发;若是Android设备的应用开发,那就必须要了解java编程,Android应用编程。
2.嵌入式底层开发
当前底层90%的企业都采用ARM处理器,低功耗、成本低倍受关注。因此你必须要会:ARM处理器编程、ARM硬件接口开发、嵌入式Linux系统开发、嵌入式Linux内核开发、嵌入式Linux驱动开发。其次Android设备越来越多,同样你得了解嵌入式Linux在移动开发的典型应用、ndroid底层系统开发。
目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而企业对于人才招聘的需求上需要的嵌入式人才必须具备C语言编程经验、嵌入式操作系统(嵌入式Linux)经验、内核裁剪经验、驱动程序开发经验,所以想要进入嵌入式行列,嵌入式开发学习书籍推荐给你。
基础学习Ⅰ—Linux入门
Linux基础
1、《Linux与Unix Shell 编程指南》
2、《嵌入式Linux应用程序开发详解》
C语言基础
-
The C programming language 《C程序设计语言》
-
Pointers on C 《C和指针》
-
C traps and pitfalls 《C陷阱与缺陷》
-
Expert C Lanuage 《专家C编程》
5、《高质量程序设计指南:C++/C语言(第3版)》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明着
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O’Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
Expert C Lanuage 《专家C编程》
学习不是一蹴而就的事情,想要学好嵌入式,除了要看书学习以外,实际的操作也很重要,理论结合实践才能更好的学习掌握这门技术。
-
-
嵌入式系统软件架构设计.pdf
2019-07-03 19:45:53比较全面的阐述嵌入式系统软件架构设计的资料,pdf版本,文字版,完整无广告。 本课程是针对嵌入式软件开发的特点,讨论架构设计的思路和方法。试图给大家提供一种思想,启发大家的思维。框架,自动化代码生成和... -
IT 认证考试--软考--(中级项目)嵌入式系统设计师1:嵌入式系统设计师介绍
2013-08-22 20:23:02看了下资格项目,我对 嵌入式系统设计师[中级资格项目] 比较感兴趣。并希望来年能考 系统架构设计师[高级资格项目]。不管怎么样,考了对以后肯定有帮助。自己一定要好好复习!必须一次通过,并且两个都需要过! 二、...一、背景
公司要求应届毕业生必须参加软考,我觉得挺好的。看了下资格项目,我对 嵌入式系统设计师[中级资格项目] 比较感兴趣。并希望来年能考 系统架构设计师[高级资格项目]。不管怎么样,考了对以后肯定有帮助。自己一定要好好复习!必须一次通过,并且两个都需要过!
二、软考介绍
-
中级资格:计算机硬件工程师、信息安全工程师、软件过程能力评估师、系统集成项目管理工程师、软件评测师、软件设计师、网络工程师、多媒体应用设计师、嵌入式系统设计师、电子商务设计师、信息系统监理师、数据库系统工程师、信息系统管理工程师;
-
初级资格:网页制作员、信息处理技术员、信息系统运行管理员、电子商务技术员、网络管理员、程序员。
从2004年开始,每年举行两次考试,上、下半年各举行一次,上半年和下半年考试的级别不尽相同,以全国软考办公布的考试计划为准。每次公布计划的时间大约在考试前后一周。
自2004年至2012年历年的软考情况,所有各科考试合格标准为45分。
三、网友经历
计算机软考本人考过两次,科目选的是系统集成项目管理工程师(含金量比较高),在此和你交流一下,希望对你有帮助。
- 关于报名:到你所在地区软考考试报名网站网上报名即可,用网银交费用78元,全国各省软考报名网站你可以到中国计算机职业技术资格网去查询
- 报名时间:上半年大概在三月下旬到四月上旬,下半年大概在九月下旬到十月上旬。
- 考试时间:上半年 大概在五月下旬的一个周六,下半年 大概在十一月的一个周六。
- 报名方法:登陆报名网站,依次填写报名信息,网银支付费用,成功。
- 打印准考证:考前20天开始密切关注考试报名网站发布的信息,一般考前1--20天可打印准考证,不同省份时间不一样。
- 考试:带身份证和准考证,2B铅笔,答题笔。
大概就是这样,祝你好运啦!
三、嵌入式系统设计师介绍
- 嵌入式系统基础知识,考试时间为150分钟,笔试,选择题;
- 嵌入式系统设计应用技术,考试时间为150分钟,笔试,问答题。
本人更愿意从事原理性的计算机工作,所以第一次选择考这个,至于后面我考什么,等考上“嵌入式系统设计师”后研究选择一个最相关的。
四、考试大纲
见《IT 认证考试--软考--(中级项目)嵌入式系统设计师2》
五、指定教材介绍
见《IT 认证考试--软考--(中级项目)嵌入式系统设计师3》
六、真题下载链接
参考:http://baike.baidu.com/view/8895.htm?fromId=43159
http://baike.baidu.com/view/979455.htm
http://baike.baidu.com/view/1983635.htm
-
-
关于嵌入式系统的设计
2013-07-14 23:14:20嵌入式系统设计的细节很多,对于中小型公司,一不小心就把重要的东西忽视了。中小型公司,开发人员少。需要照顾的东西比较多,每天救火都来不及,谈什么迭代改进?特备是自力更生发展起来的公司,除了一堆需要维护的...中小型公司,需要照顾的东西比较多,每天救火都来不及,谈什么迭代改进?特别是自力更生发展起来的公司,除了一堆需要维护的老产品,还有一堆将要开发的产品特性。怎么弄?整天都在救火, 研发人员疲于奔命。难有心情和时间去总结。这都致使问题从一个版本继承到下一个版本,bug代代传。
类似的项目做多了,也有一些小心得。总结如下:
1.通过合理的设计简化业务模型。我们曾经设计一个RTOS系统的项目,原来的设计中大大小小用到了几十个信号量。通过深入的理解项目的需求,重新优化设计,将信号量的个数降低到十个以内。大大降低了系统同步的复杂度,减小了出错的可能性。 另外一个方面,同步要求的降低,实际上是模块间耦合程度的降低,降低带来的直接好处,调试、开发难度都大大降低。 接下来的好处就是项目交付质量的提高。
2. 过程是工具、方法、技术和人的有机结合。这个结合过程的关键是人。人的素质和格局决定了很多东西。有朋友曾今对我说过,软件的质量是测出来的。我不这么认为,质量应该是一场人民战争。设想一下,程序员的写得质量很糟糕,一堆问题交付到QA,QA测试用例能覆盖到所有问题吗?就算是能覆盖,一堆问题打回给研发,研发再改,又是一堆问题。收敛速度慢,QA面对大量的问题和有限的开发时间。只能是挑选主要的测试用例进行测试。 这么一来,怎么保证最终的质量?况且 QA的测试用例本身也有一个发展的过程,不可能测试到所有的问题。所以发动人民战争,群众的眼睛是雪亮的。
从需求开始,提高每个环节的人员素质。集思广益,不要把问题抛给QA,给兄弟部队减少负担。提高整个团队的战斗力。
3.项目要想缩短时间,就是要合理利用资源。很多企业里资源无法复用,效率较低。可以从一些核心的资源开始做起,如建立统一的业务平台。如应用RTOS的公司,一套RTOS肯定是不够的,产品高端的要用好的系统,低端的可能要用低端的系统。代码可能要维持两套。可以通过构建一套兼容库,或者中心库,完成对两个系统的兼容。中心库慢慢添加,以可靠,通用为前提,慢慢添加自己的业务模型,抽象出标准的业务模型,严格的测试。可以大幅度缩短项目的交付周期。统一的研发流程,统一的开发方法都能规避下个项目中可能出现的风险。
不一定一下子就上CMMI,敏捷。CMMi本身只是一个流程的指导,并不牵涉到具体细节的操作。并且在实践中,由于对cmmi的不熟悉和曲解,造成本浪费,成效甚微。可以从CMMI抽出一些好的方法,逐步去实践,以稳为主,慢慢地迭代改善。
-
嵌入式系统就业前景怎么样?让你意想不到
2018-05-14 15:33:05嵌入式就业前景这是很多想要了解嵌入式的人都想知道的,要知道学完嵌入式人才出来找工作主要是在电子工程、通信工程等,主要从事硬件设计;另一个就是计算机专业出身、学软件编程的,主要从事嵌入式操作系统和应用... -
嵌入式系统/ARM技术中的Windows CE开设计之历史简介
2020-10-21 21:43:53为了理解Windows CE的历史,你...设备首批为Windows CE设计的是手持式“管理器”设备,配有480*240或640*240的屏幕和Chiclet键盘(计算机常用的一种键盘,有一个很小的矩形键盘)。这些设备,称为手持式PC,在1996年首 -
嵌入式系统之常用接口技术
2015-03-18 15:37:49接口技术在嵌入式系统设计处于如此重要的位置,是嵌入式系统设计师硬件部分的重要考试范围。目前嵌入式系统中的接口五花百门,每个接口都可以写成一本厚厚的书。面对内容如此之多,范围如此之广的考试部分,应该怎么... -
一篇讲透嵌入式系统内存分配方式
2020-06-21 20:49:19系列文章:一篇讲透嵌入式操作系统任务调度从需求反推设计方案,假如让你设计嵌入式系统的内存管理,你怎么设计?最简单的,用一个双链表控制,所有已分配和未分配的内存用两个双链表标识: ... -
嵌入式系统/ARM技术中的浅谈单片机程序设计中的“分层思想”
2020-10-16 03:20:03参考了市面上各种各样的嵌入式书籍,MCS-51,AVR ,ARM 等都有看过,但是没有发现有哪本是介绍设计思想的,就算有也是凤毛麟角。写程序不难,但是程序怎么样才能写的好,写的快,那是需要点经验积累的。结构化模块... -
【嵌入式设计】嵌入式低功耗设计
2020-09-27 21:58:14文章目录前言1、低功耗的概念1.1、一种AD采样功耗优化方案2、硬件低...自底向上,顺藤摸瓜5.2、"先搞清楚我们是怎么睡的"5.3、"再搞清楚我们是怎么醒的"6、试探功耗底限的系统配置方式6.1、对AVR来说,不用的引脚怎么. -
DSP嵌入式常用模块与综合系统设计实例精讲
2018-06-13 10:59:50DSP嵌入式常用模块与综合系统设计实例精讲,高清带PDF的电子版,用实例讲解怎么开发DSP项目,市面上难得的DSP好书籍! -
《 嵌入式系统设计与实践》一一2.2 从框图到架构
2017-08-02 17:13:002.2 从框图到架构至此,我们已经有了三种不同的架构设计图,那么下一步怎么做呢?也许会认为开始的时候有些代码没有考虑到,又或者我们会进一步去找出这些模块之间是如何交互的。在开始讨论这些交互(接口)之前,花... -
嵌入式系统/ARM技术中的嵌入式中参数存储的一种方式
2020-10-15 19:33:06如果有几个设置参数需要存储到Flash中,我们一般会怎么存储呢?将不同的参数都存储到不同的页中,还是将这几个参数捆绑成一种结构体,每次修改都同时写入一次呢? 将参数存储到固定的地址,则每个参数... -
嵌入式Linux开发论文开题报告_开题报告设计思路怎么写
2020-01-19 09:11:13嵌入式Linux开发论文开题报告 论文题目基于嵌入式Linux的视频监控系统 课题类型科研论文模拟实践 学生姓名李* 学号* 专业班级计算机科学与技术061班 教学单位计算机科学与工程系 指导教师* 开题时间* 一毕业设计... -
arm7汇编中怎么使用c中的变量_ARM汇编程序设计之:汇编语言文件格式-嵌入式系统-与非网...
2020-12-18 23:54:40其中保留字包括系统内部变量 (built in variable)和系统预定义(predefined symbol)的符号。 (4)符号名不应与指令或伪指令同名。如果要使用和指令或伪指令同名的符号要用双斜杠“||”将其括起来,如“||ASSERT||”... -
深度探索嵌入式操作系统:从零开始设计、架构和开发
2016-03-14 16:24:48相信很多同行和笔者以前一样,阅读过很多操作系统理论方面的书籍,感觉它们所讲述的理论大同小异且比较容易理解,但是真要我们自己去动手开发和实现操作系统时,我们可能连操作系统的第一行代码该怎么写都不知道。... -
一种基于嵌入式的多重识别门禁系统设计方案
2012-04-23 10:49:21由于不同企业对于门禁系统有着不同的要求(怎么选择门禁系统),这就要求工程师必须根据企业对门禁系统的功能要求及结构特点来制定其设计方案。本文介绍了一种基于嵌入式的多重识别门禁系统设计方案,希望其设计思想对... -
嵌入式系统/ARM技术中的USB芯片的选择与评估
2020-11-13 03:39:35但怎么去评估一颗USB芯片的优劣呢?或者是否满足用户设计上的需求呢?用户可以依下面的基本步骤检验一下自己的需求。 ①是否需要异步传输? Yes,采用批量模式。 ②是否需要每隔多少ms传输一次?Yes,采用... -
关于 "ARM嵌入式系统开发--软件设计与优化" 这本书中的一个问题
2011-08-29 16:20:39这本书的第五章第5.10.2节 把除转换为乘(中文版P133页),在这一小节... 第一个问题:请问这里指的错误是什么,又是怎么来的? 接着的例5.13 标题是显示实际上除法是如何转化为乘法的.可我根据它的程序并没有看出它是 -
嵌入式系统/ARM技术中的保证MCU低功耗 这五点很重要
2020-10-15 22:32:33平时我们在做产品的时候,基本的功能实现很简单,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的MCU,而自己设计的低功耗怎么测都是毫安级的,电流竟然能够高出标准几百到上千倍,遇到这种情况... -
嵌入式系统/ARM技术中的沙子变“黄金”! CPU制造全过程
2020-10-21 20:16:49现在市场上产品丰富,琳琅满目,当你使用着配置了最新款CPU的电脑在互联网上纵横驰骋,在各种程序应用之间操作自如的时候,有没有兴趣去想一想这个头不大、功能不小的CPU是怎么制作出来的呢。另外一家号称信息产业的... -
linux 应用层gpio中断_嵌入式系统砖家_gpio和pinctrl子系统的关系和区别
2020-11-28 19:42:13怎么样才能让自己成功一个合格的Linux驱动开发人员,很多人喜欢一头扎进源码里抠各种细节,我自己实践出来的感受是:这样去学习Linux驱动很累,进步很慢。内核里设计的很多驱动框架其实是在不断的完善和抽象的,只有... -
测周法测频率c程序_嵌入式设计须知:MCU怎么在扩展的SDRAM上运行程序?
2021-01-15 02:04:37在使用MCU的嵌入式系统设计中,当程序或者数据内存占用太大而无法放入片上闪存或SRAM时,开发者通常考虑使用SDRAM。别问我为什么你的MCU不支持SDRAMSDRAM是同步动态随机存取存储器的缩写。在微控制器应用中,微控制... -
ARM 嵌入式LINUX 系统构建与驱动开发
2009-06-19 16:23:362 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板1K达底吧。但是还是推荐选ARM9+LINUX 3 UCLINUX 算投机嵌入式系统:)ARM7上... -
[连载]嵌入式实时操作系统TINIUX设计与实现 – 内存管理之实现篇
2017-02-28 07:22:15描述完毕“内存管理”的整个轮廓之后,我们来查看具体的内存管理函数是怎么实现的;首先我们查看一下内存初始化函数OSMemInit,这个函数很简单,主要为全局变量gpOSMemBegin,gpOSMemEnd与gpOSMemLFree分配初始数值...