摘要:本文目录一览 1.你家的智能咖啡机可被轻松黑掉,阻止办法只有拔插头 2.是契机,还是下跌中继? 3.详解单片机各大分类 4.夏普家用空调、冰箱和洗衣机维修故障代码解...
- 1.你家的智能咖啡机可被轻松黑掉,阻止办法只有拔插头
- 2.是契机,还是下跌中继?
- 3.详解单片机各大分类
- 4.夏普家用空调、冰箱和洗衣机维修故障代码解读
1.你家的智能咖啡机可被轻松黑掉,阻止办法只有拔插头
近年来,越来越多的家用电器贴上了智能的标签。当看到 “智能” 这两个字的时候,我们可能会觉得这些电器比传统电器更加聪明、便捷。但是,使用这些需要连接网络的智能设备时,你是否考虑过它的安全性呢?
近日,安全公司 Avast 的研究人员马丁 · 霍恩(Martin Hron)进行了一项实验,他对一台 250 美元的智能咖啡机进行了逆向工程。他希望了解,针对这些物联网设备可以进行何种黑客攻击。经过一周的努力,他得出了答案。具体来说,他可以通过黑客攻击使咖啡机打开加热器,让它喷水,开启磨豆机,甚至显示一条勒索信息,同时让咖啡机反复发出哔哔声。并且,想要阻止这些麻烦的唯一方法,只能是拔下电源线。
霍恩在接受采访时说:“智能咖啡机是有可能遭到黑客攻击的。这个实验是为了说明这确实发生了,并且可能会发生在其他物联网设备上。”
大多数物联网设备都是“开箱即用”,用户不需要配置任何东西,通常,卖家也不会考虑这个问题。所以,这是一个很好的例子,让大家了解一些事情。
什么是开箱即用?
当霍恩首次连接到智能咖啡机时,他发现咖啡机充当了 Wi-Fi 热点,而且该热点通过不安全的连接与智能手机 APP 进行通信。该 APP 可用于配置设备,用户可以选择将其连接到家庭 Wi-Fi 网络。由于没有加密,研究人员可以轻松了解手机如何控制咖啡机,同时,由于没有身份验证,黑客软件同样可以控制咖啡机。
这种机制使霍恩只能实现一小部分命令,它们都不是特别有害。随后霍恩检查了咖啡机接收固件更新的机制。事实证明,它们是通过手机接收固件更新的,而且同样没有加密,没有身份验证。
这些明显的漏洞给霍恩创造了进行黑客攻击的机会。由于最新的固件版本存储在 Android 应用程序中,因此他可以将其弄到计算机上,然后使用软件分析器 IDA 进行逆向工程。不费吹灰之力,他破解出可读的代码。
他在博客中写道:“据此,我们可以推断出整个更新机制没有加密,并且固件可能是直接添加到咖啡机闪存中的'明文'图像。”
拆机
为了真正地反汇编固件(即将二进制代码转换为与硬件进行通信的底层汇编语言),霍恩必须知道咖啡机使用的是哪种 CPU。于是他拆开设备内部零件,找到电路板,并识别芯片。以下两张图片显示了他的发现:
1. 带 AT 调制解调器固件的 ESP8266 芯片;2. STM32F05106 ARM Cortex M0 芯片,它是主 CPU;3. 带配置的 I2C EEPROM;4. 调试端口和编程接口。(来源:Avast)
在拆机了解了各部分的功能之后,霍恩将它们重新组装起来。之后,霍恩能够撤消咖啡机最重要的功能,包括检查加热器上是否装有水瓶,使设备发出蜂鸣声。霍恩还能控制咖啡机的固件安装更新。以下是咖啡机主要组件的框图:
最终,霍恩获得了足够的信息来编写模仿更新过程的 python 脚本。他使用固件的略微修改版本,发现它可以正常工作。以下是霍恩编程实现的字符显示:
足以让用户望而却步
下一步是创建修改后的固件,使之做一些不那么友好的事情。
霍恩写道:“最初,我们想证明这个设备可以进行加密货币的挖掘工作。考虑到 CPU 和架构,它当然是可行的,但在 8MHz 的速度下,这没有任何意义,因为这样一个矿机的生产价值可以忽略不计。”
因此,研究人员决定做其他事情来捣乱:如果主人想让咖啡机停止运行,就得交出赎金,就像视频中显示的那样。由于芯片中有还一些未使用的内存空间,霍恩添加了几行代码,就导致了所有的混乱。
“我们认为这足以让用户望而却步。我们能轻易让智能咖啡机的使用体验达到最差,用户唯一能做的就是把咖啡机从电源插座上拔下来。”
如果更新脚本和修改后的固件被重新编写并加载到 Android 手机上(由于 iOS 系统封闭的特性,其攻击难度要大得多),有几种方式可以实施攻击。最简单的方法就是在 Wi-Fi 范围内找到易受攻击的咖啡机。如果设备连接 Wi-Fi 网络时没有进行相关配置,找到它们可以说唾手可得。
黑客攻击主战场
一旦设备连接到家庭网络,这个配置咖啡机和启动任何更新所需的临时 SSID 就不再可用了。但是,如果攻击者知道给定网络上正在使用一台智能咖啡机,他就可以直接绕过这个限制。然后,攻击者将向网络发送一个取消授权包,这将导致咖啡机断开连接。之后,设备将再次开始广播 SSID,让攻击者自由地用恶意固件更新设备。
很多人都知道,这种攻击的局限性在于,只有当攻击者能够定位到一个易受攻击的咖啡机,并且处于咖啡机的 Wi-Fi 范围内时,它才会起作用。霍恩说,解决这个问题的一种方法是入侵一个 Wi-Fi 路由器,用它作为黑客攻击主战场来攻击咖啡机。这种攻击可以远程进行,但如果攻击者已经入侵了路由器,网络所有者就需要担心比咖啡机故障更糟糕的事情了。
霍恩说,无论如何,勒索袭击只是攻击者所能做的开始。他认为,经过更多的工作,攻击者可以对咖啡机进行编程,攻击路由器、计算机或与同一网络相连的其他设备。而且,攻击者能在没有明显迹象的情况下做到这一点。
正确地看待这件事
由于种种限制,这种黑客攻击并不代表真正或直接的威胁,尽管对于某些人而言,这足以使他们远离 “智能” 产品,至少远离没有使用加密和身份验证的设备。
当然,这种黑客攻击只是一项实验,旨在探索连接到互联网的咖啡机、冰箱和其他家用设备的种种可能性。有趣的是,被黑的咖啡机已不能再接收固件更新,因此业主无法采取任何措施来修复霍恩发现的漏洞。
霍恩还提出了一个重要观点:“典型冰箱的使用寿命为 17 年,供应商能为其维持 17 年的软件更新吗?”这是现代物联网设备中最令人关注的问题之一。
当然,即使它不再获得更新,用户仍然可以使用它,但是随着物联网爆炸式的发展速度和并不完善的服务支持,这些设备极易受到攻击,它们可以被滥用于诸如网络破坏、数据泄漏、勒索软件攻击和 DDoS 攻击等。
还有一个问题,那就是如何应对物联网爆炸发展。当我们逐步实现万物互联的时候,我们怎么样才能保障各个设备的安全性呢?这些问题都值得研发人员和商家深思。
2.是契机,还是下跌中继?
交易频率越高犯错的可能性也越高,没有机会就休息。选股显得特别重要。投资者要持有靠谱的公司,要持有能带来优良投资回报的股票。远离那些大股东想开溜的公司,不立于那些仙股的危墙之下。
短线技术层面上看,呈现明显小幅冲高回落的盘局,都是早盘小幅冲高,盘尾再出现分时线低点,然后市场最走越低,最近4个交易日,市场最高分别是3130点、3128点、3121点、3107点,最低分别是3106点、3100点、3085点、3086点,不断下移,周五最低点没有新低,两市个股涨多跌少,红盘3157家,绿盘1699家,涨跌停比44:38,有量有行情,量能的放出是我们希望看到的,目前还需要等一下。
周线走出二连阴,市场成交继续缩量,地量行情。本周市场持续缩量,创出今年内成交量最低的一周,板块无持续性+市场情绪低迷,无量无市的特点显著。本周的方向主要聚焦在了国家大基金三期和6月科技大会的相关方向,其他方向都走势孱弱,市场迟迟未能有效放量,很难不让人联想到五穷六绝的规律,所以地量之后是否能现地价,下周一的走势尤为重要,关注大盘3080点附近支撑力度,下周成交量能否重新放大将是行情出现转折的关键。
沪指来看,已经逼近了前期的强支撑平台3080附近,那里也是一个整理的密集成交区,下周前两天,需要我们重点关注沪指的收盘状态,若3080点平台附近或者支持,那么短期会有企稳上攻的短线机会。
平均股价来看:目前仍处在进入滞涨调整阶段,平均股价不企稳,那么,则意味着市场大部分个股都会延续调整节奏,尤其是前期经历过爆炒的个股品种,会产生较大的亏钱效应,需要注意观察,这是市场大部分题材个股的走势更需要看平均股价的走势。
市场是契机,还是下跌中继,这需要下周去进一步观察!
短期市场呈现高点和低点同步降低的调整回踩格局,如果市场没有突发利好和补量上涨的话,这种调整趋势暂时很难改变,大家珍惜市场反弹中的个股高抛机会!盯紧个股,个股明显放量异动,就注意高抛和止盈机会,回落了再低吸,最近这种行情性质,大部分异动的个股高抛,都有很大概率低吸买回!追高的结果可能会比较难受甚至有点惨。具体选股上,建议可以优先选择月线走势比较好的品种,因为周五是收月线的日子,可能这些品种稳定性相对会更好一些。总之短线并不乐观,需要出现补量上涨,才能改变调整的现状!
策略上,短期,建议关注高分红绩优+低估值+股价超跌类个股的修复性行情。
AI PC只是开始,大模型重构汽车、手机与机器人等各类终端,我们正在全面迎来一轮AI终端硬件创新潮!
AIPC产业链细分梳理:
AIPC产业链
PC整机
华勤技术
全球智能硬件ODM行业第一,智能手机、笔记本电脑、平板电脑出货量超全球的10%
雷神科技
海尔集团旗下,电竞笔记本电脑及台式机市占率国内前匹
亿道信息
外销为主的笔记本、平板电脑等消费电子产品ODM厂商/公众号:金融梦想家
中国长城
金融智能网点解决方案国内市场占有率第一
方正科技
智慧城市软硬件解决方案的综合服务商
同方股份
清华大学为依托的科研成果产业化平台
神州数码
国内领先的云管理服务及数字化方案提供商
CPU
海光信息
自2018年来,浪潮联想、新华三、同方等多家国内知名服务器厂商的产品已经搭载了海光芯片。
龙芯中科
公司产品目前的应用领域包括工控、信息化两个方向,信息化方面应用于PC、笔记本、服务器。
存储
协创数据
目前公司使用的存储芯片包含采购和自研,存储芯片相关技术专利正在申请中。
EC芯片
芯海科技
公司多款芯片成功实现了国产替代,比如高精度ADC芯片,EC系列芯片,PD芯片,BMS芯片,传感器调理芯片等。
散热
思泉新材
业内为数不多能提供消费电子产品系统化散热解决方案的提供商
中石科技
电子设备的热管理及电磁兼容全面解决方案提供商
结构件
春秋电子
国内笔记本电脑精密结构件的行业龙头
光大同创
成功打破垄断,供货联想电脑 公众号:金融梦想家
英力股份
国内笔记本电脑结构件领域的领先企业之一/公众号:金融梦想家
代工
春秋电子
联想10月份在其举办的第九届联想科技创新大会上向全球展示首款革命性产品AIPC,公司与联想集团有多年的业务关系。公众号:金融梦想家
亿道信息
公司曾荣获2019年微软Modern PC创新奖,微软2017年至2020年连续颁发的“年度最佳合作伙伴”
华勤技术
公司2015年开始布局笔电和PC市场,逐步建立起了和英特尔AMD英伟达等上游合作伙伴的密切协作关系。
闻泰科技
公司业务领域涵盖移动终端、智能硬件、笔记本电脑虚拟现实、车联网、汽车电子等物联网领域的研发设计和智能制造
触控
莱宝高科
公司的主导产品为中大尺寸电容式触摸屏,主要应用领域为带有触控功能的笔记本电脑。
软件
中国软件
拥有完整的从操作系统等基础软件、中间件安全产品到应用系统的业务链条
软通动力
软通动力深入参与到鸿蒙生态的共建中,用、生态、可持续发展等维度全线出击,软硬件结合,全场景助力鸿蒙生态。
AIPC的核心增量有两个:
一个是CPU+NPU,另一个是散热。
弹性比较大的是零部件/结构件。
第一,AIPC中,CPU、NPU、内存将封装在一起,三者的合计成本增量在整个AIPC中占比40%-50%。
CPU领域,国内主要公司包括HW、中国长城、海光信息;GPU领域,主要包括HW、寒武纪、海光信息、壁仞科技、燧原科技、摩尔线程等。
NPU领域则主要包括HW、瑞芯微)等,后者已形成一系列内置自研NPU的SoC芯片产品,主要应用于端侧和边缘计算。国科微称其推出的GK76系列IPC芯片集成自研NPU引擎,可配合云端在边缘侧实现部分AI任务,NPU完全源自自研,聚焦边缘计算。
在AIoT领域,芯原股份其用于人工智能的神经网络处理器IP(NPU)业界领先,已被68家客户用于其120余款人工智能芯片中。
同时,内存向DDR5升级,其渗透率有望跟随AIPC渗透率提升,带动内存接口芯片市场。澜起科技在DDR5内存接口芯片领域市场份额全球第三、国内第一,聚辰股份与澜起科技合作开发了配套新一代DDR5内存条的SPD产品,内置SPD EEPROM,用于存储内存模组的相关信息以及模组上内存颗粒和相关器件的所有配置参数。
第二,散热的成本增量占总成本增量的20%-40%。这是A股能蹭上的核心板块。
散热能力是高算力芯片的一个主要瓶颈,随着搭载在AI PC上的模型规格不断提升,NPU性能释放可能会更加激进,相较于传统PC,AI PC可能会给出全新的散热解决方案。
液冷技术占比可能会有所上升,IDC预测到2024年,超过75%的PC将采用液冷散热技术。
此外,散热芯片可能凭借其静音、轻薄、功耗低等优势,在将来可能成为PC轻薄本的主要散热手段。相关企业包含中石科技、思泉新材等。
AIPC盈利能力前十企业:
第10 光大同创
盈利能力:净资产收益率20.68%,毛利率29.50%,净利率12.07%
主营产品:防护类产品为最主要收入来源,收入占比51.99%,毛利率29.59%
公司亮点:光大同创碳纤维产品主要运用在个人电脑外壳,属于硬件部分,碳纤维是一种高性能材料,能够满足减重和高强度的双重要求。
第9 奥海科技
盈利能力:净资产收益率12.51%,毛利率20.74%,净利率8.84%
主营产品:充电器及适配器为最主要收入来源,收入占比76.52%,毛利率20.65%
公司亮点:奥海科技作为在高功率电源具备技术及产品储备的龙头企业,已经在部分AI PC产品中有相关产品应用。
第8 华勤技术
盈利能力:净资产收益率20.81%,毛利率9.64%,净利率2.68%
主营产品:高性能计算为最主要收入来源,收入占比57.52%,毛利率9.41%
公司亮点:华勤技术产品线涵盖智能手机、笔记本电脑、平板电脑、智能穿戴、AIoT产品及服务器等智能硬件产品。
第7 长盈精密
盈利能力:净资产收益率-2.43%,毛利率18.22%,净利率-1.49%
主营产品:消费类电子精密结构件及模组为最主要收入来源,收入占比44.55%,毛利率19.74%
公司亮点:长盈精密是高端PC类产品的重要供应商,公司目前已向头部AI企业提供新型智能终端产品零组件。
第6 胜宏科技
盈利能力:净资产收益率12.55%,毛利率19.74%,净利率9.17%
主营产品:PCB制造为最主要收入来源,收入占比94.04%,毛利率15.85%
公司亮点:在 HPC 领域,胜宏科技实现了 AIPC 产品的批量化作业, 同步开展 AI 手机的产品认证。
第5 澜起科技
盈利能力:净资产收益率9.52%,毛利率51.14%,净利率29.16%
主营产品:互连类芯片为最主要收入来源,收入占比95.57%,毛利率61.36%
公司亮点:澜起科技是目前全球唯二可提供DDR5内存模组及接口芯片全套解决方案的公司。
第4 江波龙
盈利能力:净资产收益率4.74%,毛利率13.52%,净利率1.00%
主营产品:嵌入式存储为最主要收入来源,收入占比43.68%,毛利率3.11%
公司亮点:江波龙的DDR4、DDR5、SSD产品均广泛应用于AI PC等多种场景。
第3 泰嘉股份
盈利能力:净资产收益率15.95%,毛利率29.67%,净利率11.27%
主营产品:电源-消费电子电源为最主要收入来源,收入占比55.86%,毛利率4.46%
公司亮点:泰嘉股份已完成新客户AIPC电源产品的试制工作,并已根据客户订单需求有序生产中。
第2 聚辰股份
盈利能力:净资产收益率10.99%,毛利率50.80%,净利率22.05%
主营产品:存储类芯片为最主要收入来源,收入占比79.84%,毛利率51.82%
公司亮点:聚辰股份与澜起科技合作开发了配套新一代DDR5内存模组的SPD产品,并已在行业主要内存模组厂商中取得大规模应用。
第1 佰维存储
盈利能力:净资产收益率-5.53%,毛利率11.01%,净利率-3.57%
主营产品:存储产品为最主要收入来源,收入占比93.18%,毛利率0.40%
公司亮点:佰维存储推出适用于 PC 应用的 PCIe3.0/4.0 SSD、DDR4 SODIMM/UDIMM、 DDR5 SODIMM/UDIMM、 LPDDR4X/5/5X 产品。
AIPC盈利能力前十企业,近三年净资产收益率、毛利率、净利率:
——————————
颠覆时刻倒计时!萝卜快跑无人驾驶出租车出圈,24小时不间断运营超14倍安全性
公司一、信音电子 301329 :1、公司上市日期为 2023-07-17,主营业务为连接器产品的研发、生产和销售,主要产品包括笔记本电脑连接器、消费电子连接器和汽车及其他连接器。2、3 月 22 日互动:公司有生产 USB4 连接器,另有 DDR5 SO-DIMM 内存卡槽连接器、Mini FAKRA 汽车接口处于设计阶段,DDR 内存卡槽连接器处于样品阶段。3、2023 年 11 月 14 日调研:AI 电脑的推出或可刺激消费者的购买欲,推动换机潮提前,有利于公司笔记本电脑连接器产品的销售。
公司二、天银机电 300342 1、 4 月 8 日互动易回复:上市公司控股子公司天银星际,是国内商业运营的恒星敏感器生产厂商,恒星敏感器是航天器、航空器导航系统的重要组成部分,为航天器的姿态控制和天文导航提供高精度测量数据,主要应用于各种卫星、无人机、飞艇等空天设施。 2、23 年 8 月 30 日互动易:上市公司控股子公司天银星际,目前是国内商业运营的恒星敏感器生产厂商,在国内商业卫星市场占据优势地位。3、公司的主营业务为“冰箱压缩机零配件”和“雷达与航天电子”两大业务。公司的主要产品是冰箱压缩机起动器、吸气消音器、冰箱变频控制器、雷达射频仿真业务、超宽带信号捕获与分析系统、恒星敏感器。公司军工电子领域业务主要包含电磁频谱安全相关产品、高速信号处理系统、航空电子模块、超宽带信号捕获与分析系统、恒星光学敏感器等产品。
公司三、亿道信息 001314 行业原因: 1、5 月 21 日,微软首次全球发布搭载 GPT-4o 的 Copilot+ PC(计划从6 月18日起陆续上市)。同日,联想等电脑制造商也宣布将推出Copilot+ PC。微软的AI PC 产品或引发新的换机需求。 2、6 月 4 日至 7 日将举办台北国际电脑展,这是亚洲第一、全球第二大的IT盛会,众多科技巨头如英伟达、AMD 等将展示其最新的 AI PC 产品和技术。
公司原因: 1、公司已在大语言、AIGC 等主流模型积极跟进,正在研发的专为生成式AI而打造的 PC 平台,可以在 PC 侧通过 StableDiffusion 生成图像,实现“让前沿科技更平易近人”的公司使命。 2、1 月 17 日互动:目前公司鸿蒙版产品包含加固类平板及手持终端,其基于开放原子开源基金会下 OpenHarmony,公司与合作伙伴进行相关国产化操作系统及软件的合作开发、适配。例如公司最新推出的 EM-R51 鸿蒙版加固手持终端基于OpenHarmony 完善的系统能力,能更好的助力智能终端行业的数字化发展。目前该产品业务占比较小,不会对公司经营情况产生重大影响。3、公司主营为笔记本电脑、平板电脑及其他智能硬件等电子设备的研发、设计、生产和销售。 4、亿境虚拟致力于将三维显示及空间计算技术和穿戴计算技术等前沿科技带入寻常百姓家,为早日实现元宇宙自由而努力。2 月 29 日互动:公司在虚拟现实领域曾与英伟达展开了深入探讨,但目前暂无实质性项目在研发中。
华力创通:低空经济+商业航天概念,目前调整到年线关键支撑位,已经企稳,找机会5日线附近低吸。
MSCI中国指数共新纳入10只成分股,其中包括海信家电和五矿资源两只港股,以及中信特钢(000708)、海信家电A、万丰奥威、金诚信(603979)、平煤股份(601666)、南钢股份(600282)、天地科技(600582)和海油发展(600968)共8只A股。
我们来到这个市场上,追求的其实是财富的稳定增长,而不是经常大赚大亏,到年底一看收益才发现是白忙活。
所以要实现稳定盈利,最重要的一点便是,赚的时候多赚,亏的时候少亏,这样才能控制住回撤,实现收益曲线的螺旋式上升!
一直追高和做连板接力的选手,本身模式上就很难成功,一旦出现失误,就很可能是连续跌停,试问这种波动起伏这么大的模式,一万个人里面能走出来几个呢?
我们要做的是每次赚几个点或十几个点,积少成多,稳定盈利,而不是这周赚几十个点,下周又吃了几个跌停,最后一算下来发现还是亏的。
稳定盈利最重要的是什么?那便是多做低位,平衡好盈亏比和确定性,这样才能有效减少回撤。
3.详解单片机各大分类
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit)
单片机芯片常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。
由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列单片机系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM已经发展出了32位的主频超过300M的高端单片机,直到目前基于8031的单片机还在广泛的使用。在很多方面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。事实上单片机是世界上数量最多处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。 汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。
应用分类
单片机作为计算机发展的一个重要分支领域,根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。
通用型/专用型
这是按单片机适用范围来区分的。例如,80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
总线型/非总线型
这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
控制型/家电型
这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
发展历史
单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
基本结构
单片机由运算器、控制器、存储器、输入输出设备构成。
主要阶段
早期阶段
SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。
Micro Controller Unit
中期发展
MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。
Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。
当前趋势
SoC嵌入式系统System on Chip)式的独立发展之路。向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
早期发展史
1971年intel公司研制出世界上第一个4位的微处理器;Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel 4,标志着第一代微处理器问世,微处理器和微机时代从此开始。因发明微处理器,霍夫被英国《经济学家》杂志列为“二战以来最有影响力的7位科学家”之一。
1971年11月,Intel推出MCS-4微型计算机系统(包括1 ROM芯片、2 RAM芯片、3移位寄存器芯片和4微处理器 )其中4(下图)包含2300个晶体管,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,最初售价为200美元。
1972年4月,霍夫等人开发出第一个8位微处理器Intel 8008。由于8008采用的是P沟道MOS微处理器,因此仍属第一代微处理器。
1973年intel公司研制出8位的微处理器8080;1973年8月,霍夫等人研制出8位微处理器Intel 8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生。
主频2MHz的8080芯片运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS(Million Instructions Per Second )。
1975年4月,MITS发布第一个通用型Altair 8800,售价375美元,带有1KB存储器。这是世界上第一台微型计算机。
1976年intel公司研制出MCS-48系列8位的单片机,这也是单片机的问世。
Zilog公司于1976年开发的Z80微处理器,广泛用于微型计算机和工业自动控制设备。当时,Zilog、Motorola和Intel在微处理器领域三足鼎立。
20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机。MCS-51系列单片机无论是片内RAM容量,I/O口功能,系统扩展方面都有了很大的提高。
硬件特性
1、主流单片机包括CPU、4KB容量的ROM、128 B容量的RAM、 2个16位定时/计数器、4个8位并行口、全双工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。
芯片
2、系统结构简单,使用方便,实现模块化;
3、单片机可靠性高,可工作到10^6 ~10^7小时无故障;
4、处理功能强,速度快。
5、低电压,低功耗,便于生产便携式产品
6、控制功能强
7、环境适应能力强。
应用范围
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
智能仪器
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(电压表、功率计,示波器,各种分析仪)。
工业控制
单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
家用电器
现在的家用电器广泛采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备和白色家电等。
网络和通信
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
医用设备领域
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
模块化系统
某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。
在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
汽车电子
单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、abs防抱死系统、制动系统、胎压检测等。
此外,单片机在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分广泛的用途。
学习方法
基础理论
基础理论知识包括模拟电路、数字电路和C语言知识。模拟电路和数字电路属于抽象学科,要把它学好还得费点精神。在你学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。否则,你的单片机学习之路不仅会很艰难和漫长,还可能半途而废。笔者始终认为,扎实的电子技术基础是学好单片机的关键,直接影响单片机学习入门的快慢。有些同学觉得单片机很难,越学越复杂,最后学不下去了。有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。
单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。如果你觉得单片机很难,那就应该先放下单片机教材,去重温数字电路,搞清楚触发器、寄存器、门电路、COMS电路、时序逻辑和时序图、进制转换等理论知识。理解了这些知识之后再去看看单片机的结构和原理,我想你会大彻大悟,信心倍增。
模拟电路是电子技术最基础的学科,她让你知道什么是电阻、电容、电感、二极管、三极管、场效应管、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。一般是先学习模拟电路再去学习数字电路。扎实的模拟电路基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。
C语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。C语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。
当基础打好以后,你会感觉到单片机不再难学了,而且越学越起劲。当单片机乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的世界里。可以这么说,扎实的电子技术基础和C语言基础能增强学习单片机信心,较快掌握单片机技术。
实验实践
这是真正学习单片机的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感。其中的酸甜苦辣只有学过的人深有体会。思想上要有刻苦学习的决心,硬件上要有一套完整的学习开发工具,软件上要注重理论和实践相结合。
1.有刻苦学习的决心
首先,明确学习目的。先认真回答两个问题:我学单片机来做什么?需要多长时间把它学会?这是你学单片机的动力。没有动力,我想你坚持不了多久。其次,端正学习心态。单片机学习过程是枯燥乏味、孤独寂寞的过程。要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫。再次,要多动脑勤动手。单片机的学习具有很强的实践性,是一门很注重实际动手操作的技术学科。不动手实践你是学不会单片机的。最后,虚心交流。在单片机学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间。
2.有一套完整的学习开发工具
学习单片机是需要成本的。必须有一台电脑、一块单片机开发板(如果开发板不能直接下载程序代码的话还得需要一个编程器)、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板用来运行单片机程序,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试。对于单片机初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和C语言教材是理论学习资料,备忘备查。不要为了节约成本不用开发板而光用Protur软件仿真调试,这和纸上谈兵没什么区别。
3. 要注重理论和实践相结合
单片机C语言编程理论知识并不深奥,光看书不动手也能明白。但在实际编程的时候就没那么简单了。一个程序的形成不仅需要有C语言知识,更多需要融入你个人的编程思路和算法。编程思路和算法决定一个程序的优劣,是单片机编程的大问题,只有在实际动手编写的时候才会有深切的感悟。一个程序能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理。如果程序不正常则要反复调试(检查、修改思路和算法),直到成功。这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废。
学习编写程序应该按照以下过程学习,效果会更好。看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程序,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,比较程序运行效果,领会其中的奥妙。每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想。当然,刚开始,看别人的程序源代码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照。只要能坚持下来,学习收获会事半功倍。在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓展,让程序产生更强大的功能。同时,还要懂得通过查阅芯片数据手册(DATASHEET)里有关芯片命令和数据的读写时序来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程序。不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验。
硬件设计
当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的单片机编程水平相当不错了。接下来就应该研究的硬件了。硬件设计包括电路原理设计和PCB板设计。学习做硬件要比学习做软件麻烦,成本更高,周期更长。但是,学习单片机的最终目的是做产品开发----软件和硬件相结合形成完整的控制系统。所以,做硬件也是学习单片机技术的一个必学内容。
电路原理设计涉及到各种芯片的应用,而这些芯片外围电路的设计、典型应用电路和与单片机的连接等在芯片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。电子技术领域的第一手资料(DATASHEET)都是英文,从第一手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不全面,甚至存在翻译上的遗漏和错误。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍单片机学习者晋级的绊脚石。良好的英文阅读能力能让你在单片机技术知识的海洋里自由遨游。
做PCB板就比较简单了。只要懂得使用Protel软件或 AltimDesigner软件就没问题了。但要想做的板子布局美观、布线合理还得费一番功夫了。
娴熟的单片机C语言编程、会使用Protel软件或 AltimDesigner软件设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。[1]
抗干扰设计
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。
软件抗干扰设计
在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。
指令冗余
CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞” 到了三字节指令,出错机率更大。
在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。
此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。
拦截技术
所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。
(1 )软件陷阱的设计
当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:
NOPNOPLJMP 0000H其机器码为0000020000。
(2 ) 陷阱的安排
通常在程序中未使用的EPROM空间填0000020000。最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:
NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。
考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。
软件“看门狗”技术
若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。
“看门狗”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。
笔者在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。这种软件“看门狗”监视原理是:在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch 、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、 T1Watch加1。在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。限于篇幅不赘述。
硬件抗干扰技术
单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。
非正常复位的识别
程序的执行总是从0000H开始,导致程序从 0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、任务正在执行中掉电后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。
(1 )硬件复位与软件复位的识别
此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H, SP=07H,PSW=00H等。而软件复位则对SP、SPW无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。
由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。
(2 )开机复位与看门狗故障复位的识别
开机复位与看门狗故障复位因同属硬件复位, 所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为 AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。
(3 )正常开机复位与非正常开机复位的识别
识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。
非正常复位后系统自恢复运行的程序设计
对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。
当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统运行状态。
应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。
其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题。
系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。
对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充 完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。
基础知识
本段仅针对硬件设计人员和软件设计人员,为了便于对硬件的理解要有一定的汇编语言基础。
总线
我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。
数据地址指令
这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:
1.地址(如MOV DPTR,1000H),即地址1000H送入DPTR。
2.方式字或控制字(如MOV TMOD,#3),3即是控制字。
3.常数(如MOV TH0,#10H)10H即定时常数。
4.实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的值。
理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。
P0/P2/P3功能
初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微处理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。
程序执行过程
单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。
堆栈
堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动减2,每当执行一次POP指令,SP就(在原来值的基础上)自动加2。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
开发过程
这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明:
单片机试验板 ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;设堆栈
LOOP:
NOP
LJMP LOOP ;循环
END ;结束
单片机指令表
一、传送操作
助记符 代码 说明
MOV A,Rn E8~EF 寄存器A
MOV A,direct E5 direct 直接字节送A
MOV A,@Ri ER~E7 间接RAM送A
MOV A,#data 74 data 立即数送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,direct A8~AF direct 直接字节送寄存器
MOV Rn,#data 78~7F data 立即数送寄存器
MOV direct,A F5 direct A送直接字节
MOV direct,Rn 88~8F direct 寄存器送直接字节
MOV direct1,direct2 85 direct1 direct2 直接字节送直接字节
MOV direct,@Ro 86~87 间接RAM送直接字节
MOV direct,#data 75 direct data 立即数送直接字节
MOV @Ri,A F6~F7 A送间接RAM
MOV @Ri,direct 76~77 direct 直接字节送间接RAM
MOV @Ri,#data 76~77 data 立即数送间接RAM
MOV DPTR,#data16 90 data 15~8 16位常数送数据指针
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A
MOVX A,@Ri E2~E3 送外部数据(8位地址)送A
MOVX A,@DPTR E0 送外部数据(16位地址)送A
MOVX @Ri,A F2~F3 A送外部数据(8位地址)
MOVX @DPTR,A F0 A送外部数据(16位地址)
PUSH direct C0 direct 直接字节进栈,SP加1
POP direct D0 direct 直接字节退栈,SP减1
XCH A,Rn C8~CF 交换A和寄存器
XCH A,direct C5 direct 交换A和直接字节
XCH A,@Ri C6~C7 交换A和间接RAM
XCH A,@Ri D6~D7 交换A和间接RAM的低位
SWAP A C4
二、算术操作
(A的二个半字节交换)
ADD A,Rn 28~2F 寄存器加到A
ADD A,direct 25 direct 直接字节加到A
ADD A,@Ri 26~27 间接RAM加到A
ADD A,#data 24data 立即数加到A
ADD A,Rn 38~3F 寄存器和进位位加到A
ADD A,direct 35direct 直接字节和进位位加到A
ADD A,@Ri 36~37 间接字节和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
ADD A,Rn 98~9F A减去寄存器和进位位
ADD A,direct 95 direct A减去直接字节和进位位
ADD A,@Ri 36~37 间接RAM和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
SUBB A,Rn 98~9F A减去寄存器和进位位
SUBB A,direct 95 direct A减去直接字节和进位位
SUBB A,@Ri 96~97 A减去间接RAM和进位位
SUBB A,#data 94 data A减去立即数和进位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC direct 05 direct 直接字节加1
INC @Ri 06~07 间接RAM加1
DEC A 14 A减1
DEC Rn 18~1F 寄存器减1
DEC direct 15 direct 直接字节减1
DEC @Ri 16~17 间接RAM减1
INC DPTR A3 数据指针加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十进制加法调整
三、逻辑操作
ANL A,Rn 58~5F 寄存器“与”到A
ANL A,direct 55 direct 直接字节“与”到A
ANL A,@Ri 56~57 间接RAm“与”到A
ANL A,#data 54 data 立即数“与”到A
ANL direct A 52 direct A“与”到直接字节
ANL direct,#data 53 direct data 立即数“与”到直接字节
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,direct 45 direct 直接字节“或”到A
ORL A,@Ri 46~47 间接RAM“或”到A
ORL A,#data 44 data 立即数“或”到A
ORL direct,A 42 direct A“或”到直接字节
ORL direct,#data 43 direct data 立即数“或”到直接字节
XRL A,Rn 68~6F 寄存器“异或”到A
XRL A,direct 65 direct 直接字节“异或”到A
XRL A,@Ri 66~67 间接RAM“异或”到A
XRL A,#data 64 data 立即数“异或”到A
XRL direct A 62 direct A“异或”到直接字节
XRL direct,#data 63 direct data 立即数“异或”到直接字节
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左环移
RLC A 33 A通过进位左环移
RR A 03 A右环移
RRC A 13 A通过进位右环移
四、控制程序转移
ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用
LCALL addr 16 12 addr(15~8) 长子程序调用
addr(7~0)
RET 22 子程序调用返回
RETI addr 11 32 中断调用返回
AJMP addr 11 △1 addr(a7~a6) 绝对转移
LJMP addr 16 02addr(15~8) 长转移
addr(7~0)
SJMP rel 80 rel 短转移,相对转移
JMP @A+DPTR 73 相对于DPTR间接转移
JZ rel 60 rel A为零转移
JNZ rel 70 rel A为零转移
CJNE A,direct,rel B5 direct rel 直接字节与A比较,不等则转移
CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移
CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移
CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移
DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移
DJNZ direct,rel B5 direct rel 直接字节减1,不为零则转移
NOP 00 空操作
五、布尔变量操作
CLR C C3 清零进位
CLR bit C2 清零直接位
SETB C D3 置位进位
SETB bit D2 置位直接位
CPL C B3 进位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接数“与”到进位
ANL C,/bit B0 直接位的反“与”到进位
ORL C,bit 72 bit 直接位“或”到进位
ORL C,/bit A0 bit 直接位的反“或”到进位
MOV C,bit A2 bit 直接位送进位
MOV bit,C 92 bit 进位送直接位
JC rel 40 rel 进位位为1转移
JNC rel 50 rel 进位位为0转移
JB bit,rel 20 bit rel 直接位为1相对转移
JNB bit,rel 30 bit rel 直接位为0相对转移
JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位
常用单片机芯片简介
STC单片机
STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强.
PIC单片机:
是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片.
EMC单片机:
是台湾义隆公司的产品,有很大一部分与PIC 8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差.
ATMEL单片机(51单片机):
ATMEl公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫AVR单片机.
PHLIPIS 51LPC系列单片机(51单片机):
PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求.
HOLTEK单片机:
台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品.
TI公司单片机(51单片机):
德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合
松翰单片机(SONIX):
是台湾松翰公司的单片,大多为8位机,有一部分与PIC 8位单片机兼容,价格便宜,系统时钟分频可选项较多,有PMW ADC 内振 内部杂讯滤波。缺点RAM空间过小,抗干扰较好。
攻击技术
目前,攻击单片机主要有四种技术,分别是:
(1)软件攻击
该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMEL AT89C 系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。
(2) 电子探测攻击
该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。
(3)过错产生技术
该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。
(4)探针技术
该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特别危险的,但是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。
大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。
加密方法
科研成果保护是每一个科研人员最关心的事情,加密方法有软件加密,硬件加密,软硬件综合加密,时间加密,错误引导加密,专利保护等措施有矛就有盾,有盾就有矛,有矛有盾,才促进矛盾质量水平的提高加密只讲盾,也希望网友提供更新的加密思路,现先讲一个软件加密:利用MCS-51 中A5 指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令A5 功能是二字节空操作指令加密方法在A5 后加一个二字节或三字节操作码,因为所有反汇编软件都不会反汇编A5 指令,造成正常程序反汇编乱套,执行程序无问题仿制者就不能改变你的源程序。
硬件加密:8031/8052 单片机就是8031/8052掩模产品中的不合格产品,内部有ROM,可以把8031/8052 当8751/8752 来用,再扩展外部程序器,然后调用8031 内部子程序当然你所选的同批8031 芯片的首地址及所需用的中断入口均应转到外部程序区。
硬件加密
用高电压或激光烧断某条引脚,使其读不到内部程序,用高电压会造成一些器件损坏重要RAM 数据采用电池(大电容,街机采用的办法)保护,拔出芯片数据失去机器不能起动,或能初始化,但不能运行。
用真假方法加密
擦除芯片标识
把8X52 单片机,标成8X51 单片机,并用到后128B的RAM 等方法,把AT90S8252 当AT89C52,初始化后程序段中并用到EEPROM 内容,你再去联想吧!
用激光(或丝印)打上其它标识如有的单片机引脚兼容,有的又不是同一种单片机,可张冠李戴,只能意会了,这要求你知识面广一点 。
用最新出厂编号的单片机,如2000 年后的AT89C 就难解密,或新的单片机品种,如AVR 单片机。
DIP 封装改成PLCC,TQFP,SOIC,BGA等封装,如果量大可以做定制ASIC,或软封装,用不需外晶振的单片机工作(如AVR 单片机中的AT90S1200),使用更复杂的单片机,FPGA+AVR+SRAM=AT40K系列。
硬件加密与软件加密只是为叙说方便而分开来讲,其实它们是分不开的,互相支撑,互相依存的软件加密:其目的是不让人读懂你的程序,不能修改程序,你可以………….....
利用单片机未公开,未被利用的标志位或单元,作为软件标志位,如8031/8051 有一个用户标志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址处加二字节或三字节操作码,在无程序的空单元也加上程序机器码,最好要加巧妙一点用大容量芯片,用市场上仿真器不能仿真的芯片,如内部程序为64KB 或大于64KB 的器件,如:AVR 单片机中ATmega103 的Flash 程序存储器为128KBAT89S8252/AT89S53 中有EEPROM,关键数据存放在EEPROM 中,或程序初始化时把密码写到EEPROM 中,程序执行时再查密码正确与否,尽量不让人家读懂程序。
4.夏普家用空调、冰箱和洗衣机维修故障代码解读
一、夏普空调
(一)型号CS-G90KC 、 CU-G120KC
H11 室内机与室外机通信异常
H14 室内吸入口温度传感器异常
H15 室外压缩机温度传感器异常
H16 室外 CT 断线
H19 室内风扇电动机异常
H23 室内热交换器温度传感器异常
H27 外部气温传感器异常
H28 室外热交换器温度传感器异常
H98 室内压力过高保护(暧气时)
H99 室内热交换器冻结保护(冷气、除湿时)
F11 冷、暧气更换异常
F91 冷媒循环异常
F96 室外电源晶体管温度过高保护
F97 压缩机温度过高保护
F98 总电流保护
F99 DC 峰值电流控制
(二)JA系列
1、红灯亮
2、LED数码显示空调 (KA、LA、MB、NA、NB) 故障诊断
可诊断的四个项目 KA数码显示
MB、NB数码显示LA液晶显示 50.60LJ NA、PGM、PYL
热敏电阻开路异常 10 21 21 21
热敏电阻短路异常 11 20 20 20
室内风机转速异常 12 19 / 19
压缩机堵转异常 27 4 4 04
导风板脱落、清净开关异常(全部LED闪烁) 21
3、LCD显示变频空调(LX)故障,液晶显示
1 热敏电阻短路异常
2 压缩机高温异常
3 AC电流异常
4 压缩机堵转异常
5 热敏电阻开路异常
6 功率模块异常
7 AC过电流
14 动态滤波器异常
17 串行信号开路
18 串行信号短路
19 室内风机转速异常
4、柜机GS-120LJ
E1 低温保护:≤ -6℃ 1分钟
E2 过热保护,管温≥53℃,卸载,63℃停机
E3 低压保护(3.5±0.05Mpa)
二、夏普冰箱:BCD-246/286WMD BCD-242/246WDX,故障代码显示优先顺序为“E9”-“E5”-“E3”-“E2”-“E1”-“EE。
E9 超温报警:箱内温度超过+55℃,“冷冻”、“冷藏”传感器短路
E5 化霜已达120分钟,化霜温控开关仍未断开
E3 冷藏、冷冻温度传感器都开路均断开
E2 冷冻温度传感器开路
E1 冷藏温度传感器开路
EE EEPROM芯片读写错误
三、夏普洗衣机
C2 水位传感器异常
C5 更换电路DK
E1 不进水,进水时间超过15分钟
E2 洗涤后不脱水,上盖
E3 不排水,6分钟未降到最小水位
E4 不平衡状态不脱水
END!