进修嵌入式须要那些内容?

C语言

C语言是嵌入式的重中之重,Linux操作系统就是用C达到的,包含安卓系统的底层也是C语言达到的,根底不牢,地动山摇,一定要打好根底。

C语言进修过程中重点要放在指针,构造体,文件的处理,数组等。在进修过程中,一定要多写代码,代码只看是看不会的。

遇到错误不要怕麻烦,善于运用搜索工具。要知道,你遇到的问题他人肯定也会遇到过,一般在网上一搜就会有答案。

最后,要多调试程序,熟悉调试的过程。程序三分写,七分调,没有谁的程序是能够一遍写对的。而且,多调试程序也能够让我们了解程序详细是怎么样执行的。

文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///

接着前几期关于嵌入式常见的误解

稳定性要求高

大局部嵌入式软件都对程序的长期稳定运行有较高的要求。假如手机经常几个月开机,通讯设备则要求24*7正常运行,即便是通讯上的测试设备也要求至少正常运行8小时。为了稳定性的宗旨,有一些比较常用的设计伎俩:

1.将不同的任务分布在独立的进程中。优秀的模块化设计是重要关键

2.Watch Dog, Heart beat,重新启动失效的进程。

3.完善而统一的日志系统以快捷定位问题。嵌入式设备一般缺少乏有力的调试器,日志系统尤其重要。

将错误孤立在最小的范围内,避免错误的扩散和连锁反应。核心代码要经过充分的验证,对非核心代码,能够在监控或者沙盒中运行,避免其破坏整个系统。

举例,Symbian上的GPRS访问受不同硬件和操作系统版本影响,功能不是非常稳定。其中有一个版本上当关闭GPRS连接时一定会崩溃,而且属于known issue。将GPRS连接,HTTP协议处理,文件下载等操作独立到一个进程中,虽然每次操作完毕该进程都会崩溃,对用户却没有影响。

双备份这样的伎俩较少采用

内存不足

虽然当今的嵌入式系统的内存比之以K计数的时代已经有了很大的提高,但是随着软件规模的增长,内存不足的问题依然时时困扰着系统架构师。有一些原则,架构师在进行设计决策的时候能够参照:

虚拟内存技术

有一些嵌入式设备须要处理宏大的数据量,而这些数据不可能全部装入内存中。一些嵌入式操作系统不提供虚拟内存技术,假如WinCE4.2每个程序最多只能运用32M内存。对这样的应用,架构师应该特别设计自己的虚拟内存技术。所谓的虚拟内存技术的核心是,将暂时不太可能运用的数据移出内存。这波及到一些技术点:

1.引用计数,正在运用的数据不能移出。

2.运用预测,预测下一个阶段某个数据的运用可能性。基于预测移出数据或者提前装入数据。

3.占位数据/对象。

4.高速缓存。在复杂数据结果下缓存高频次运用的数据,直接访问。

5.快捷的持久化和装载。

下图是一个全国电信机房管理系统的界面示意图:

每个节点下都有大量的数据须要装载,能够运用上述技术将内存占用降到最低。

两段式构造

在内存有限的系统里,对象构造失败是必需要处理的问题,失败的理由中最常见的则是内存不足(现实中上这也是对PC平台的要求,但是在现实中中往往忽略,由于内存实在便宜)。两段式构造就是一种常用而有效的设计。举例来说:

当创建CMyCompoundClass的时候会发生什么呢?

CMyCompoundClass* myCompoundClass = new CMyCompoundClass;

1.为CMyCompoundClass的对象分配内存

2.调用CMyCompoundClass对象的构造函数

3.在构造函数中创建一个CMySimpleClass的实例

4.构造函数完毕返回

一切看起来都很简略,但是假如第三步创建CMySimpleClass对象的时候发生内存不足的错误怎么办呢?构造函数没法返回任何错误信息以提示调用者构造没有成功。调用者于是获得了一个指向CMyCompoundClass的指针,但是这个对象并没有构造完整。

假如在构造函数中抛出异常会如何呢?这是个著名的噩梦,由于析构函数不会被调用,在创建CMySimpleClass对象之前假如分配了资源就会泄露。关于在构造函数中抛出异常能够单讲一个小时,但是有一个建议是:尽量避免在构造函数中抛出异常。

所以,运用两段式构造法是一个更好的选择。简略的说,就是在构造函数避免任何可能产生错误的动作,假如分配内存,而把这些动作放在构造完成之后,调用另一个函数。

假如:

这样能够保证当Construct不成功的时候释放已经分配的资源。

在最重要的手机操作系统Symbian上,二段式构造法普遍运用。

对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就像,免费的,私信我“林老师”就可以拿~点击打开我的头像就能领取。

学习嵌入式单片机需要学习哪些内容?相关推荐

  1. 零基础怎么学习嵌入式?怎样学习嵌入式更有效率?

    嵌入式学习的爱好者,针对嵌入式学习的话,我想大家心里是否有这样的一个疑问呢,零基础怎么学习嵌入式?怎样学习嵌入式更有效率?学习嵌入式linux之前必须要做好心理准备: 第一,要明白学好嵌入式linux ...

  2. 嵌入式开发需要学mysql吗_学习嵌入式开发需要学习哪些课程?如何学习?

    针对很多的大学生嵌入式开发初学者来说,对嵌入式开发的学习还很迷茫.今天信盈达嵌入式培训老师给出参考建议:首先:嵌入式开发需要学习哪些课程?因为嵌入式开发的方向不同,所学习的内容会有所区别,但是无论是哪 ...

  3. 学习嵌入式的开发线路,新手怎么学习嵌入式?

    作为新人,要如何学习嵌入式Linux?首先您要具备基本的C语言基础,然后,您要想好学习嵌入式Linux目标是什么,是想做底层系统.还是应用开发.如果是关于底层开发,是学习Linux驱动,还是项目应用. ...

  4. 学习嵌入式必读十本书,从C语言到ARM

    学习嵌入式必读的十本书籍,按照C语言.数据结构.Linux.C++.QT.单片机.ARM的顺序给大家推荐. 01 C语言 凡是计算机.电子.通信.自动化.机械专业的同学,大一的时候必学C语言,而且大部 ...

  5. 很朴素的学习嵌入式系统的经验

    学习嵌入式,该学习什么基本的知识呢? 首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言, ...

  6. 如何学习嵌入式开发必备技能

    嵌入式是当下最流行的开发模式,从今天看,不管是从行业应用,还是智能硬件的爆发,物联网时代的来临,大数据等等嵌入式技术都得到了史无前例的发展.那要如何学习嵌入式开发呢?下面来简单来了解下嵌入式开发的一些 ...

  7. 51单片机入门学习 第八天

    提示:今天是学习51单片机的第八天,以下就是今天的笔记(我买的是普中的开发板,学习笔记是根据普中的视频进行学习)今天学习的内容是中断和串口通信. 目录 中断系统 1.中断 1.1中断介绍 1.2中断结 ...

  8. 新手怎么学习嵌入式?什么人适合转行学习嵌入式?

    转行想学嵌入式的朋友是越来越多,那么真正付出行动转行学嵌入式的朋友也不少,但是还有很多的朋友都在反复的去思考自己转行学嵌入式适合吗?到底什么样的人适合转行学嵌入式? 首先必须是热爱编程,对嵌入式相当感 ...

  9. 记录一下学习嵌入式的方法和小窍门

    假期在家忙着闲闲没事做,就趁机把我这一段时间学习嵌入式编程的学习心得在这里分享一下! 1.学习动机建立 单纯的去学习嵌入式中的某一个东西(除了最基础的点灯按键啥的反馈比较明显的东西)都是很枯燥无味的, ...

  10. 嵌入式课程学习 嵌入式硬件工程师需要学习哪些内容?

    嵌入式硬件开发工程师主要编写嵌入式系统硬件总体方案和详细方案,要求理解嵌入式系统架构,有一定的C语言基础,熟悉ARM.PROTEL设计软件,有四层板开发经验. 嵌入式硬件工程师主要职责是为产品设计硬件 ...

最新文章

  1. LeetCode简单题之有序数组的平方
  2. 盘点CVPR 2019影响力最大的20篇论文
  3. 初始angular框架(1)
  4. 数据采集与分析的那些事——从数据埋点到AB测试
  5. 形变立体跟踪-基于稠密运动估计和力学仿真(2)
  6. 利用python创建一个新本地文件
  7. C#之out和ref区别
  8. anime studio的本质特性
  9. 什么样的流_量最容易变现?
  10. 天龙八部八部显示服务器堵塞,天龙八部服务端各目录说明
  11. 树的最大连通分支问题
  12. 强凸性带来的 距离最优值的上下界
  13. IoT大门上的鲁班锁:华为所铸的分布式安全
  14. 开放式办公室最符合高管而非公司的利益
  15. 6种难以启齿的离职原因,最好这么说
  16. YUV420P格式分析
  17. 华为AP4050DN-HD使用tftp、uboot瘦转胖
  18. [黑马程序员课程记录]C++基础部分4
  19. C++实现无头结点单链表
  20. Python实现经典机器学习案例——良/恶性性乳腺癌肿瘤完整数据预测

热门文章

  1. 躺平国历险记:两个超平面之间距离的计算
  2. 【计算几何各种小模板总结贴】[不定期更新]
  3. win10蓝牙怎么开_摩托罗拉对讲机蓝牙写频方法
  4. Mob免费短信验证教程
  5. 【去水印】最简单的百度图片去水印
  6. CrazyTalk Animator 3 for Mac破解版永久激活方法附破解补丁
  7. 基于opengl的2d机器人双人格斗游戏
  8. Python | MD5爆破及Base64/Base32爆破解密脚本
  9. Win7 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足
  10. MySQL分库分表及中间件Mycat