进修嵌入式须要那些内容?
根本的硬件原理
嵌入式肯定要和硬件打交道的。假如做嵌入式的应用层的话,可能和硬件接触的少一点。但是很多企业在面试的时候,也会问一些根本的硬件知识。
假如,我同学在面试联发科的C++工程师的时候,就问到了他很多关于硬件的知识(中断是什么,轮询是什么,二者有什么差别,一个根本嵌入式系统有什么构成等),所以说硬件知识知道越多越好,就算做应用层,一些最根本的也要知道。
假如是打算做嵌入式底层的话,对于硬件知识的掌握要求就比较高了。假如,LCD是怎么样显示的,IIC协议/SPI协议是什么,怎么样收发数据,不同设备对于IIC的速度有什么要求,IIC协议上拉电阻一般是多少等等。独有明白了硬件原理,在看芯片手册的时候才能明白怎么样去配置各个寄存器。
文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///
此外,常用的设备仪器的运用能掌握就更好了,和硬件工程师扯皮的时候会用到。假如,万用表,示波器,逻辑分析仪等。不会也没关系,这局部不是必需的。
接着前几期关于嵌入式常见的误解
内存分配器
不同的系统有着不同的内存分配的特点。有些要求分配很多小内存,有的则须要经常增长已经分配的内存。一个好的内存分配器对嵌入式的软件的性能有时具有重大的意义。应该在系统设计时保证整个系统运用统一的内存分配器,并且能够随时更换。
内存泄漏
内存泄漏对嵌入式系统有限的内存是非常严重的。通过运用自己的内存分配器,能够很容易的跟踪内存的分配释放情况,从而检测出内存泄漏的情况。
处理器才能有限,性能要求高
这里不探讨实时系统,那是一块很大的专业话题。对一般的嵌入式系统而言,由于处理器才能有限,要特别注意性能的问题。一些很好的架构设计由于不能满足性能要求,最终导致整个项目标失败。
抵御新技术的诱惑
架构师必需明白,新技术常常意味着复杂和更低的性能。即便这不是绝对的,由于嵌入式系统硬件性能所限,弹性较低。一旦发现新技术有和当初构想不同之处,就更难通过修改来适应。假如GWT技术。这是Google推出的Ajax开发工具,它能够让程序员像开发一个桌面应用程序一样开发Web的Ajax程序。这使得在嵌入式系统上用一套代码达到远程和本地操作界面成为了很容易的一件事。但是在嵌入式设备上运行B-S构造的应用,性能上是一个很大的挑战。同时,浏览器兼容方面的问题也很严重,GWT目前的版本还不够完善。
事实证明,嵌入式的远程控制方案还是要采用Activex,VNC或者其他的方案。
不要有太多的层次
分层构造有利于清晰的划分系统职责,达到系统的解耦,但是每多一个层次,就意味着性能的一次损失。尤其是当层和层之间须要传递大量数据的时候。对嵌入式系统而言,在采用分层构造时要控制层次数量,并且尽量不要传递大量数据,尤其是在不同进程的层次之间。假如一定要传递数据,要避免大量的数据格式转换,如XML到二进制,C++构造到Python构造。
嵌入式系统才能有限,一定要将有限的才能用在系统的核心功能上。
存储设备易损坏,速度较慢
受体积和老本的限制,大局部的嵌入式设备运用诸如Compact Flash, SD, mini SD, MMC等作为存储设备。这些设备虽然有着不担忧机械运动损坏的优点,但是其自身的运用寿命都比较短暂。假如,CF卡一般只能写100万次。而SD更短,独有10万次。对于像数码相机这样的应用,兴许是足够的。但是对于须要频繁擦写磁盘的应用,假如历史数据库,磁盘的损坏问题会很快显现。假如有一个应用式每天向CF卡上写一个16M的文件,文件系统是FAT16, 每簇大小是2K,那么写完这个16M的文件,分区表须要写8192次,于是一个100万次寿命的CF现实中能够工作的时长是1000000/8192 = 122天。而损坏的时候,CF卡的其他绝大局部地方的运用次数不过万分之一。
除了由于静态的文件分区表等区块被频繁的读写而提前损坏,一些嵌入式设备还要面对直接断电的挑战,这会在存储设备上产生不完整的数据。
对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就像,免费的,私信我“林老师”就可以拿~点击打开我的头像就能领取。