MCU

MCU是Microcontroller Unit(微控制器单元)的缩写,它是一种集成了中央处理器(CPU)、存储器(ROM、RAM)、输入/输出端口(I/O)、定时器(Timer)、串行通信接口(UART、SPI、I2C等)和其他外围设备控制器的单个芯片。MCU通常用于嵌入式系统中,用于控制各种电子设备和系统。

由于其集成度高、体积小、功耗低以及成本相对较低等特点,MCU被广泛应用于各种嵌入式系统中,例如智能家居设备、医疗设备、汽车电子系统、工业自动化等。MCU的选择通常基于应用的需求,如处理性能、功耗、外设接口等因素。

电子产品的低功耗问题经常让产品设计者头痛而又不得不面对。以单片机(MCU)为核心的系统,其功耗主要由单片机功耗和单片机外围电路功耗组成。要降低单片机系统的功耗,需要从硬件和软件两方面入手。
  
硬件设计考虑因素
  
要满足单片机系统的低功耗要求,选用具有低功耗特性的单片机可以很容易实现。因为具有低功耗特性的单片机可以大大降低系统功耗,这可以从单片机的供电电压、内部结构、系统时钟和低功耗模式等几方面来考察一款单片机的低功耗特性。一般来讲,用户在选择技术供应商和产品过程中,需要对下面的一些重要硬件参数进行更加深入的考量:
  
选择简单的CPU内核
  
选择CPU内核时切忌一味追求性能,以“够用就好”为原则。8位机够用,就没有必要选用16位机、32位机;单片机的运行速度越快,往往其功耗也越大。一个CPU越复杂、集成度越高、功能越强,片内晶体管越多,总漏电流也越大,即使进入STOP状态,漏电流也会变得不可忽视;而简单的CPU内核不仅功耗低,成本也低。
  
选择低电压供电的单片机系统
  
单片机系统的供电电压低,可以有效地降低其系统功耗。由于半导体制造工艺的发展,现在单片机的供电电压从5V供电降低到3.3V、3V、2V乃至1.8V。供电电压低,不紧可以降低单片机的功耗,还可以降低单片机外围电路的功耗。
  
选择带有低功耗模式的单片机系统
  
低功耗模式指的是系统的Idle、Stop和Suspend等模式。处于这些模式下的功耗将远远小于正常运行下的功耗。Idle模式下,CPU停止工作,但内部系统时钟并不停止,单片机的外围I/O模块也不停止工作;系统功耗一般降低有限,相当于工作模式功耗的50%左右。
  
如果在CPU进入Stop模式时,将各个模拟外设关掉,这时的功耗可以降低到nA级。但是在Stop模式下,CPU被唤醒后要重新对系统作初始化,所有特殊功能寄存器的内容将被重新初始化。这在某些低功耗应用场合需要注意。
  
Suspend模式下,CPU、内部系统时钟停止工作,I/O模块等被悬挂起来,片内RAM中存储的数据将被保持,CPU的功耗可以降低到nA级,由唤醒事件唤醒。当CPU被唤醒后,系统不会被CPU复位,继续从进入Suspend模式的地方开始执行程序。这是一种非常理想的低功耗模式。
  
在硬件层面来说,对上面的这些参数进行仔细衡量是十分必要的,除此之外,选择合适的时钟方案和使用每MIPS功耗来衡量MCU的低功耗性能也是非常关键的。

应用软件考虑因素
  
应用软件设计对于一个低功耗系统的重要性常常被人们忽略。一个重要的原因是,软件设计上的缺陷并不像硬件那样容易发现,同时也没有一个严格的标准来判断一个软件的低功耗特性。但是设计者如果能尽量将应用的低功耗特性反映在软件中,就可以避免那些“看不见”的功耗损失:
  
用“中断”代替“查询”
  
在没有要求低功耗的场合,程序使用中断方式还是查询方式并不重要。但在要求低功耗场合,这两种方式相差甚远。使用中断方式,CPU可以什么都不做,甚至可以进入等待模式或停止模式;而查询方式下,CPU必须不停地访问I/O寄存器,这会带来很多额外的功耗。
  
用“宏”代替“子程序”
  
子程序调用的入栈出栈操作,要对RAM进行两次操作,会带来更大的功耗。宏在编译时展开,CPU按顺序执行指令。使用宏,会增加程序的代码量,但对不在乎程序代码量大的应用,使用宏无疑会降低系统的功耗。
  
尽量减少CPU的运算量
  
减少CPU的运算工作量,可以有效地降低CPU的功耗。减少CPU运算的工作可以从很多方面入手:用查表的方法替代实时的计算;不可避免的实时计算,算到精度够了就结束,避免“过度”的计算;尽量使用短的数据类型,例如,尽量使用字符型的8位数据替代16位的整型数据,尽量使用分数运算而避免浮点数运算等。
  
让I/O模块间歇运行
  
在系统运行过程中,不用的I/O模块要关掉,间歇使用的I/O模块要及时关掉,以节省电能。同时,不用的I/O引脚要设置成输出或设置成输入,用上拉电阻拉高。
  
总之,在单片机系统设计过程中,需要深入理解单片机低功耗的特性,并在硬件和应用软件的设计过程中充分利用单片机的低功耗特性,从而设计出符合低功耗要求的产品。

(直接点击图片可进入调查页面)

开发板测评图片
围观 341

全球物联网(IoT)应用热潮方兴未艾,然却已有不少MCU供应商铩羽而归,面对物联网应用集成控制/电源管理及无线连结的系统级解决方案需求,部分芯片供应商不是被迫待价而沽,就是面临被市场及客户边缘化危机,加上矽智财大厂安谋(ARM)版图正快速扩展到全球MCU市场,大幅降低进入门槛,并造成MCU市场杀价混战,全球MCU版图大洗牌已箭在弦上。
  
继恩智浦(NXP)购并飞思卡尔(Freescale),近期高通(Qualcomm)传出有意买下恩智浦,加上微芯(Microchip)从戴乐格(Dialog)手上抢亲艾特梅尔(Atmel),接著赛普拉斯(Cypress)购并博通(Broadcom)旗下物联网业务,以及瑞萨(Renesas)宣布合并英特矽尔(Intersil),凸显全球MCU大厂纷砸大钱布局物联网市场,全球MCU战火一触即发。
  
不过,全球物联网市场大饼仍不是很具体,加上众多竞争对手凭借ARM的IP大刀,积极砍价抢攻市占率,对于过去擅长于少量、多样接单模式的中型MCU供应商,似乎愈来愈难找到生存空间,这亦让全球MCU产业除了排名前5大厂之外的其它MCU供应商,近期业绩表现呈现走滑趋势,并面临一波波的产业整并风暴。
  
芯片业者坦言,物联网市场商机其实并不容易吃到,除了各路人马全面加入战局外,ARM亦不断渗透全球MCU产业IP版图,甚至快速集成不少应用、产品及市场,让MCU供应商出现腹背受敌的危机,毕竟ARM透过全系列的高、中、低阶MCU IP,已大大降低全球MCU市场进入障碍。
  
由于各家芯片业者均可藉由ARM IP及软件程序资源,开发自家高度客制化的MCU解决方案,对于老字号MCU供应商而言,过去拥有的客户基础及熟悉相关开发工具等竞争优势,已难抵挡新进业者积极杀价的进攻策略,迫使老字号MCU供应商成长动能疲软,尤其是中型MCU供应商受影响最明显,陷入被迫退出竞争行列的困境。
  
事实上,近期很多芯片业者为加速取得全球物联网市场参赛权,投入大笔资金进行购并,相较于过去MCU供应商提供客户包括芯片、软/韧体、公版及产品开发平台等资源,在物联网应用世代,MCU供应商更必须备齐控制/电源管理及无线连结等解决方案,不仅竞争压力大增,MCU供应商若不砸大钱,恐怕就只能退出这场竞赛。
  
在物联网市场快速萌芽,以及ARM IP掀起全面攻势的过程中,中型MCU供应商生存空间正持续遭到挤压,业者预期未来全球MCU产业版图将大幅变化,呈现大型、甚至超大型MCU供应商独占特定产品、应用及市场龙头情况。
  
由于这些大型MCU供应商多专注在领先的技术领域,让小型MCU供应商得以拿下一些利基及更少量、多样的产品市场商机,反而是夹在中间的中型MCU供应商,恐将面临一波波的产业淘汰赛。

来源: DIGITIMES中文网

(直接点击图片可进入调查页面)

开发板测评图片
围观 276

作者:刘丹

随着物联网和智能硬件等新兴市场打开,MCU的应用范围进一步扩大,在此市场环境下,外资MCU厂商具有较大优势,尤其是在处理性能更强大的32位MCU上,呈现垄断状态。要打破这一僵局国产MCU还有哪些路要走?国产MCU如何才能紧跟市场步伐在新领域下跑马圈地?

32位MCU主导市场大势所趋 物联网应用需求强劲

得益于物联网的快速发展,市场研究机构预测在2016~2019年间,整体MCU市场营收成长率将逐渐增强(2019年成长率预测为9%),直到2020年仍有4%的成长率,MCU出货量则预测在该期间以CAGR为3.9%的幅度成长。在如此利好的形势下,本土MCU厂商纷纷加紧布局物联网领域,其中绝大部分MCU厂商看好32位MCU的发展。

上海灵动微电子股份有限公司总经理娄方超

上海灵动微电子股份有限公司总经理娄方超在接受本刊采访时表示,8位比较具有代表性的内核就是PIC8、80C51等,与32位核在运算能力上、结构上、存储器的类型上有非常大的不同,8位最常见的就是OGP型,存储空间在1K-4K之间居多,32位大部分都是Flash型,存储空间在16K-128K甚至更高不等。不同的存储结构MCU的程序编程方法、程序容量,处理业务的复杂程度也不一样。

正是由于上述结构上的不同,娄方超指出,8位、16位、32位MCU面向的终端市场非常不一样。娄方超进一步介绍道:“8位更多的是做一些简单控制或者程序控制,比如说像电饭锅小家电。而32位就可以应用于带流量、传感器、运动电机等这样一些比较复杂的场景中。”

上海微技术工业研究院设计服务市场总监孙新泰

上海微技术工业研究院设计服务市场总监孙新泰也表示:“现在8位元由于功耗和价格原因,市场方面已经很固定,也没有什么争议的,就是集中在玩具还有一些基本的家电。然而32位元的MCU产品就会越来越多,比如说玩具做得比较智慧一点,像玩具型的无人机就要用到32位元,或是一些比较复杂的遥控玩具。”

中天微系统有限公司技术总监陈昊

来自中天微系统有限公司的技术总监陈昊对此也表示赞同,此外他告诉记者,由于中天是做MCU的IP的,并与阿里巴巴有合作因此专门做了一些自主的市场分析,分析结果显示8位MCU目前仍有一定市场,但被32位MCU替代也很有可能。

陈昊称:“一个很可观的现实就是随着物联网的壮大,中天基于物联网的应用会与阿里巴巴做一个嵌入式阿里云的应用。基于此我们认为8位MCU不太能满足这种市场应用的发展需求,所以我个人认为8位未来可能还是在一些低端、成本要求低的应用领域上有一些量,但是要应用在物联网上,只要是跟“云”有一些关联的话,8位MCU可能就不太能满足市场需求。此外像中天现在32位的MCU从能耗比上可以做到跟8051直接竞争,因此如果32位MCU能在能耗比上做到跟8位MCU差不多的话,那8位MCU在市场上的生存空间也是会被进一步压缩的。”

除陈昊提到的能耗比这一问题外,孙新泰表示,8位MCU的优势主要还是在于价格方面。同时他也提出,只要任何带有智能、智慧标签的产品都会用到32位元,从目前来看64位目前还不太需要。因此孙新泰总结道,在家电部分,如果只是仪表控制那么8位元就够了,但如果智能到联网的话就需要32位的MCU来控制了。

对于32位MCU目前市场出货量比8位MCU低的问题,娄方超告诉记者,一方面是32位MCU推广时间相对晚,像8051从1981年发布到现在已经35年了,而且像PIC8位的集成度高,节约成本。但32位主要还是从2007年ST推广Cortex-M3这个系列才逐渐被人们接受,这几年市场增速才逐渐上来。

另一方面,从销售市场来对比,娄方超表示,一颗8位的MCU假设是0.1美金,一颗32位的MCU售价可能是在0.6美金,有数据表明2016年所有的4位、8位、16位售价总和小于32位MCU的售价总和,换句话说就是32位MCU出货量只是4位、8位、16位的1/6,但是因为其单价更贵,所以总价会更高。由此可以看出,从数量上32位并不能完全取代8位但取代的势头非常明显。如果大家能够定义出一个合适的32位MCU成本恰好能够取代成熟8位MCU市场,那么这个取代将是不可逆的。32位确实具有很多易用性、维护性、周边函数非常丰富,就像高级语言取代机器语言是不可逆的一样。未来这种趋势可能会很明显。

娄方超进一步表示:“目前很多人还是认为32位MCU处于高价、高性能的地位,但是随着加工的成熟,设计的优化,32位也有效往高集成度、高性价比的方向在走,像我们P011系列就是一个32位内核的产品,但是是定义在8位市场做竞争的,它有32位内核大量的优良特性,同时在其他方面也可以与其他8位MCU相媲美,此外P011一推出就接到很多客户的咨询。”最后娄方超告诉记者在同样外设情况下,32位内核本身并不会比8位MCU内核占的面积更大,成本更高。

抢滩物联网市场 本土MCU厂商的核心技术储备

既然32位MCU在市场空间上既有物联网这块大蛋糕,又大有取代目前出货量庞大的8位MCU的趋势,那么要在市场竞争中占有一席之地,本土MCU厂商在做何技术储备呢?

由于在架构上中天采用的是本土架构,因此与ARM有所不同,陈昊告诉记者:“ARM前期比中天耕耘时间更长,中天在架构上采用的是自研且向所有厂商开放的一种MCU架构,因此具有自主知识产权,而且大家也是希望看到有国产的MCU这种架构出来,客观上来说,从合作方式、研发方式以及性价比等方面,从市场推广的效果来看还是蛮受大家欢迎的。当然这两年的出货量也是突飞猛进的。所以我们是有自主知识产权的一个MCU的IP core,这个IP core从整个的工具链到软件编程方式再到与客户的合作都是开放性的。”

陈昊强调,中天自主研发的MCU IP core不仅得到市场的良好反馈,同时得到得到时任浙江省委书记张德江同志的首肯以及支持。“研发自己的MCU核,这也是我们一直坚持的一个方向,此外我们不仅仅是做一个产品,我们也是在做一个平台,虽然我们之前很多年一直很低调的在做产品和研发,但在市场上仍然有不少公司和我们合作,而且从客户反馈都还挺不错。”陈昊告诉记者。

对于中天目前要做的改变,陈昊形容现在的社会为一个“网红”时代,所以中天接下来不仅要在技术上继续耕耘,在市场上也会有所行动。陈昊表示,要让客户在使用中天的产品或者中天的IP后就认可中天这便是其努力的方向。对于中天微现在的市场情况,陈昊介绍目前已有60多家客户在和中天进行合作,有上百个得到License授权的项目,目前会与阿里巴巴进行YunOS的合作,针对阿里巴巴提出的Internet device的ID已经通过ITU-T(国际电信联盟通信标准化组织)并确立为首个物联网国际标准。

“由于ARM被软银收购,因此ARM接下来是不是会继续走IP这条路这是整个行业的人都十分关注的事情,反过来说,这对中天反而是个非常大的机会,因为继MIX被收购后ARM也被收购了,目前也就中天还在独立运作,而中国作为IC最大的产出与消耗国,中天希望能够抓住这次机会,立足国内行业,将客户利益放在第一位由此取得成功。”陈昊告诉记者。

当然自主研发MCU IP的挑战远比上述几个方面复杂,孙新泰表示,因为ARM是走一个生态路线,且已经形成一个完整的产业链闭环。如果今天有另外一家要进来,从一个小圈子里建立这样一个庞大的生态系统是非常具有挑战性的,其开发难度很大且推广难度也非常大,但是对于国内MCU厂商来说其授权费也会大大降低。

正是由于开发及维护一个MCU IP需大量资源,而市场上已有成熟的8位MCU及32位MCU生态,因此本土厂商更多选择基于已有的MCU IP并根据市场应用领域的不同推出不同的MCU产品。

娄方超表示,作为一个像灵动这样的专业的MCU厂商,如果去开发和维护一套8位的处理器系统,总的投入远大于去购买32位的ARM授权。娄方超告诉记者,有一些厂商会省去ARM授权这一环节,但同时也失去了支持最为广泛的全球MCU的生态。因此虽然采用ARM内核可能单颗芯片是会有额外成本,但就整个生态资源而言厂商实际上是赚了。

娄方超进一步表示,因为所使用的内核都是来源于ARM公司,所以本土MCU产品和欧美大厂是在同一个起跑线上,因此对本土MCU厂商而言,采用ARM内核不仅开发周期短,资源更成熟,最重要的是可以在产品一推出就直接与国际厂商竞争,这也是本土MCU厂商的一大机遇。

然而在实际产品开发过程中,由于32位MCU主打与物联网相关的领域,但是对于物联网,哪怕是专家也很难去定义清楚物联网的具体形态是什么。娄方超告诉记者:“物联网本来就是物与物相连的一种形态,所以目前的物联网给人的感觉还是比较笼统比较虚化的,但是我们在看到的是一个个新的应用出现,比如说无线POS机等,因此MCU厂商要做的更多时候是将应用的底层需求抽象出来,针对新的应用定义好一款产品。”

娄方超表示,灵动在攻克嵌入式闪存技术时花了很大精力,因为灵动认为嵌入式闪存技术取代原有的OGP技术,EEPROM技术是不可逆的。他进一步解释称,因为嵌入式闪存更符合开发工程师的开发习惯,可以很容易的直接采用C语言做开发,这就改变了以前采用汇编去开发的方式,而且现在已经有部分厂商开始进入图像化编程的时代,这将对存储系统要求更高,而迎合大众的编程习惯才是目前最重要的事情。

同样做MCU产品的SITRI,针对MCU低功耗做了多种省电模式,对于其中的挑战,孙新泰表示,首先晶圆工艺上的一个挑战就是当关掉MCU的时候,漏电流低。例如台积电采用的工艺0.18um的ULL(Ultra Low Leakage)工艺,也正是SITRI所采用的,华虹宏力也在推出一种低功耗的工艺,中芯国际也专门为IoT推了一个55nm的工艺,因此当MCU不使用的时候省电多少主要依赖于工艺上晶圆漏电能做到多低;其次,当MCU在使用过程中,MCU厂商需做到在不需要微处理器运行的时候就尽量不要用,因为以低功耗的角度来讲的话,不用才是最省电的,因此要设计各种不同的省电模式,比如有时候只开RTC不开CPU,或是只开SENSOR不开RTC之类的情况。而设计这些省电模式的目的就是为了尽量不唤醒CPU,在确实需要唤醒的时候做到短时唤醒。

产品定义决定产品“生死”

在技术上,由于内核由现成的MCU IP公司提供,因此MCU厂商更多的只需将外设进行完善,而这一完善就涉及到产品的定义。

“定义决定生命!”娄方超这样告诉记者,“产品定义非常敏感,一般是经过多方调研后慎重决定的,所以今天所见灵动微电子每款MCU产品留下来的规格都有其很长的故事。”

“首先我们在内核选择上,看中了ARM成熟的生态,选择成熟生态后就可以很快与欧美大厂进行竞争,第二就是我们会去选择领域,去分析判断哪个领域的MCU卖得最好,比如M0卖得最好的就是带4K SRAM,32K Flash的,M3因为性能更强,所以SRAM要加倍,Flash也要加倍,然后将成本核算好并将其与目标市场做一个对比之后,如果有机会那就进行投入。再加上我们自己开发的函数、参数进行评估等使得我们产品被行业所接受。”娄方超强调,灵动与其他MCU公司最大的区别就在于一直在思考如何定义好一个产品,即要把MCU做成什么样子,要销往何处。

对此孙新泰也表示,由于目前SITRI主要做低功耗的MCU产品,而低功耗一个突出的特点就是采用电池,即无源设备(主要包含一些便携消费类电子),而这些设备主要用到的还是M0/M3/M4这个三种内核,因此SITRI推出的是基于ARM Cortex M0+的MCU产品。

因为做MCU基本上一半的成本都决定在产品的定义上,因此对于MCU厂商来说,产品定义非常重要,所谓产品定义并不是说做得多就好,而是要看准一个对的方向。因此孙新泰表示,SITRI仍然会沿着M0继续做优化。

“因为我们定义在物联网,而物联网的每个节点都需要带一个MCU,而每个节点都需要去收集数据,MCU就是在数据收集完成后做第一期的处理,再把有用的数据送到云端。”孙新泰告诉记者。

对于如何结合产品定义选择内核这一问题,孙新泰告诉记者,其主要的技术就在于Library,Library写得比较完整的话对上面写应用程序的人来说就会比较方便,而ARM的话库函数非常齐全,且许多属于开放源码,因此国内厂商在采用ARM系列芯片的话会非常方便。所以国内厂商基本都是基于ARM内核对MCU外设存储等进行的一些扩充,所以对系统开发来讲,一种就是应用场景,就是根据对使用者经验的了解做最好的软件,另外一种就是针对某种特殊应用开发一种自己的算法,例如最近炒得最多的就是指纹辨识,而识别算法则是由一些专门的算法公司提供。

为切合上述要求,陈昊告诉记者:“中天的MCU IP是具有灵活度的CPU,是可以灵活裁剪的core。比如做一个基础的IP core上面有一些基础指令集,基于基础指令集我们可以帮助客户去设计一些专用的客选指令集,另外一些运算单元也可以做比如DSP或者浮点单元等的引擎,架构也是与中天的核绑定在一起,做成一个屏幕核的模块,基于客户需求,我们将这些可配置的紧耦合模块进行逐步累加,以此来实现组合和裁剪。”

由此可以看出中天由于采用了具有自主知识产权的架构,因此与ARM的指令集不同,但是中天微作为一种开放的MCU开放平台,陈昊表示可支持标准C的开发甚至可提供底层开发包,因此客户用起来也十分方便也感受不到与ARM内核的差别。

组合模块为MCU锦上添花

在未来的物联网应用领域,陈昊告诉记者,市场上MCU+传感、MCU同核异构等方式中天均可以像ARM一样实现通用。此外,陈昊还强调,中天的CPU或MCU可以做一个复合式的SOC,例如有客户的SOC中采用了中天微的高性能的CPU用以计算处理,而传感器管理或功耗、安全管理则是采用的中天的MCU。

娄方超也表示,MCU未来肯定是要与WIFI/传感器组合在一起的,而且灵动目前也已经往这个方向发展。娄方超称:“目前已有公司提出将MCU提供给他们然后将传感器与MCU组合在一起,这样传感器将不再与外部处理器做信号传输,而是直接传给MCU,MCU处理好以后直接将处理结果传到外部去。”

“这是一定会发生的,并且好几种无线+MCU的模式我们都已经在做了,年底就会送样了,MCU+FPGA也已经有公司在做,但是FPGA难度比较大,且FPGA往往内部也有内置一颗MCU,所以灵动在这一块并没有涉猎。而大小核目前已经有M系列的核加A系列的核,我认为这是一个非常好的idea,之前也有厂商有这样的诉求,所以这一组合灵动接下来也会有所考虑。此外MCU+DSP可见于ARM的Cortex-M7系列便已集成。”针对未来不同的应用组合方式,娄方超做出上述总结。

而孙新泰则告诉记者,因为要推出一种新的组合方式,其开发成本很高,时间投入也会非常大,如果产量不够大很有可能之前的开发费都赚不回来。因此这主要是一个经济上的考量并不是技术上的障碍。

面对“万物互联”这一趋势,本土MCU厂商深耕细作,从产品定义出发,贴合市场不断进行自主IP架构、低功耗、外设扩展性能等方面的技术创新,发挥本土服务支持优势,相信在物联网广阔的应用空间下定有一方热土。

文章来源:华强微电子

(直接点击图片可进入调查页面)

开发板测评图片
围观 461

在上一篇文档中,我们向大家分享了如何使用IAR本身自带半主机(semihost)模式来调试程序,但是每10ms输出一个字符的速度实在让人难以接受。今天就向大家介绍一个输出速率更快的,使用同样方便的调试方法-SWO引脚的使用。

在Cortex-M3\M4系列MCU中,内核的调试组件都有一个仪器化跟踪单元(ITM)。ITM的一个主要的用途,就是支持调试信息的输出(例如,printf格式输出)。ITM包含了32个刺激端口,允许不同的软件把数据输出到不同的端口,从而让调试主机可以把它们的信息分离开。每个端口都可以独立的使能/除能,还可以允许或禁止用户进程对它执行写操作。那么这些与MCU的SWO引脚有什么关系呢?刚才我们有说ITM包含了32个端口,其中SWO引脚,就是ITM模块的端口0,我们可以直接用它来输出一些调试信息。那么现在就看看如何使用它吧。

把MCU的SWO引脚同J-link等调试工具连接在一起,因为K64开发板已经直接引出SWD接口了,所以我们就直接连接了J-Link。如图 2所示,第6脚就是SWO引脚。

图 2 SWD接口

当MCU连接好J-link之后,我们在工程中的主函数起始处添加stdio.h文件,如下所示。

#include

接下来为了能直接调用printf函数格式化输出,又需要用到我们之前提到的重定向技术了,只是这次不是重定向到串口,而是ITM模块的0通道,即SWO引脚。如程序清单 1所示。

程序清单 1 重定向代码
int fputc(int ch, FILE *f) {
ITM_SendChar(ch);
return(ch);
}

其中ITM_SengChar函数是core_cm4.h内核文件里定义的内联函数,我们可以直接调用。

完成重定向之后,我们写了个定时打印HelloWorld的程序。打开Keil工程的【Options for Target】->【debug】->【settings】->【Trace】,对Trace选项卡进行如图 3所示的配置。

图 3 Trace选项卡配置

点击确定之后,进入调试模式,打开【View】->【Serial Windows】->【Debug(printf) Viewer】,这时我们就可以看到MCU通过J-link向编译器输出的打印信息了,如图 4所示。打印速度还很快哦。

图 4 Debug Viewer窗口

到此我们算是学会了使用SWO引脚来调试输出了,是不是很酷哦。细心的网友可能会发现为什么Cortex-M0\M0+内核的MCU没有找到SWO引脚呢?这是因为它们采用的还是ARM-V6的老架构,内核的调试组件没有ITM模块。

又是一个遗憾,本来以为找到了最合适的调试方法,却对MCU的内核有限制。那么有没有一种调试方同时具有SWO的优点,并同时能在Cortex系列内核的MCU中使用呢?

围观 1908

摘要:近年来,便携式电池供电应用的日益普及促使设计人员致力于将更多功能集成至更小的产品中。这些增添的功能,尤其是无线通信功能,对系统电源提出了更高要求。如何在实现所需系统功能的同时延长电池的寿命成为设计人员需要解决的一大挑战。单片机特性近年来的发展,包括各种集成特性和外设,嵌入式设计电源管理的实施变得更加简单灵活。同时,这些 MCU 也推进了设计技术的进步。

更多功能、更少功耗

也许您不曾注意到,我们周围的一切似乎都变得越来越智能,几乎所有东西都能联网。鞋子装上了传感器,您可以根据智能手机上显示的步数来调整跑步时间。体重秤不仅可以将您的体重数据自动保存至云端跟踪应用程序,它还能通过智能手机发送提醒,告诉你为什么上次吃甜甜圈不是好主意。只要在锅炉旁边安装一个小型无线传感器,您的家居安防系统就可以在车库出现漏水时用手机短信通知你。

随着技术的不断进步,便携式电池供电应用的普及程度迅速提高。因此,工程师们一直力争让自己设计的每个产品都能在升级换代时增加更多的功能并缩小整体的尺寸。然而,这些新增的性能对系统电源提出了更高的要求。如何在更小的空间内添加这些新功能并延长电池的寿命,给设计人员出了个难题。

传统的电池供电应用设计理念就是让尽量多的模块在尽量长的时间里保持在低功耗状态,偶尔需要执行任务时才被唤醒,任务完成后又再返回到休眠模式。在一个包含多个MCU/MPU 和元器件的复杂设计中,低引脚数 8 位单片机经常被用于系统监控功能,根据需要来执行一些类似打开和关闭模块之类的管理任务,这样能最大程度的提高功效。然而,大多数的设计仍然是采用一个主单片机搭配许多集成外设来实现所需的系统功能。在这种情况下,主单片机的功耗就成为关键的参数。然而并非所有单片机均具有良好的低功耗性能。在这一方面,许多应用中 8 位单片机比 32 位器件更胜一筹。部分 8 位单片机在最低功耗设置时电流消耗可低至 20 nA,而同样情况下 32 位器件的电流消耗最低也比 8位单片机高 10 到 20 倍左右。

将单片机从休眠状态中唤醒的方法有许多种。一种常见的做法是使用单片机的内部定时器定期唤醒系统。这个定时器经过配置可以在溢出发生时触发中断。一个带 1:8 预分频器的16 位定时器,外加一个独立运行的 31 kHz 低功耗内部振荡器(或者带一个外部晶振)可以让器件休眠 17 秒左右。另一种做法就是使用 MCU 自带的看门狗定时器(WDT),理想条件下其待机时间最长可达 256 秒,期间消耗的电流约为 440 nA。(同样的,一个启用了 WDT 功能的 32 位 MCU 典型情况下消耗的电流至少是一个 8 位 MCU 消耗电流的 3倍。)

以不需要频繁唤醒的应用为例,比如环境监测器,它大约每四小时被唤醒一次以读取湿度传感器的数值然后再次返回休眠状态。这是不是意味着由于内部定时器的限制,我们不得不需要进行更频繁的唤醒操作呢?不一定。其中的一个选择就是在需要时使用实时时钟(RTC)和晶振来提供以小时、天、月甚至年为单位的精确计时。当然,往往因为成本原因并非所有的单片机都会集成 RTC 和晶振,这时我们可以考虑使用分立式 RTC。

独立于内核的外设

另一个可以延长待机时间既无需添加任何元件也不会出现功率损耗的选择,就是使用某些新一代 8 位单片机器件所包含的特有外设。举个例子来说,设计人员可以将这些 MCU 自带的一个可配置逻辑单元(CLC)和它的数控振荡器(NCO)与 16 位定时器连接起来,从而将待机时间从 17 秒延长至 205 天,这之后才会触发中断唤醒 MCU(见图 1)。当然,很少有一个应用会需要待机如此之久,但是如果需要的话,这个性能是可以实现的。而如果使用一个外部晶振来代替 MCU 自带的 31 kHz 内部振荡器的话,功耗甚至可以减少 50%,达到 2.3 µA 左右。

图 1:使用一个 8 位单片机独立于内核的外设可延长待机时间至 205 天,既无需添加任何新元件也不会出现功率损耗

我们也可以使用诸如开关或传感器等外部中断源来唤醒单片机。部分较大的 MCU/MPU 还有带优先级的多个中断,但是这些性能通常是市场上现有的大多数低引脚数 MCU 所不具备的。还记得我们在之前的例子中曾使用可配置逻辑单元模块来延长定时器周期吗?事实上,CLC 不仅可在 MCU 只有一个系统 INT 时创建额外的中断源,它还允许设计人员为唤醒程序添加条件逻辑或顺序逻辑,不仅更加智能而且还不会产生额外的电流消耗。对于需要用多个信号代表一个特定状态以唤醒 CPU 进行核实的系统来说,真实情况往往是 CPU被唤醒仅仅是由于一个信号发生了变化,而其它信号并未出现。现在我们可以配置和组合CLC 现有的逻辑功能和状态机,甚至多个 CLC 模块,来创建特定的唤醒条件,避免出现频繁的误触发和不必要的功耗。

虽然我们希望能在休眠模式下执行所有任务,但是某些任务是必须在工作模式下执行的,这个时候相对于所有其他模式而言,MCU 内核的功耗是最高的。这样情况就有点棘手了。如图 2 所示,这是系统在一段时间内产生电流消耗的一个简化图形表示。电流消耗线下的图形面积代表一段时间内所有的放电量,以库仑(Coulomb)为单位。如果休眠模式周期内所有面积的总和比工作模式大得多,那么休眠电流值就更关键,因为大部分的能耗发生在低功耗模式下。反之亦然,如果工作模式周期内的面积总和明显更高,那么休眠电流值和休眠模式下花费的时间就变得无关紧要了。

图2: 单片机在一段时间内产生电流消耗的图形表示

特别是带有诸如 Wi-Fi®或 Bluetooth® LE 等无线通信功能的应用更是对系统的功耗提出了挑战。这些系统的设计人员必须要考虑发送或接收的数据量,因为这将会直接影响总体电流消耗。此类无线模块可设为“信标”模式(“Beacon Mode”),以便周期性的唤醒和搜索信号;或者可以在不使用时进入待机模式。

模拟传感器需要搭配使用 MCU 的片上 ADC 模块。通常情况下, ADC 采样所需的时间比转换时间长得多。在工作模式下花费的时间越长,电流消耗的就越多。但是,部分带有 ADC模块的 MCU 允许在休眠模式下进行转换,这就最大程度的减少了在工作模式下所需花费的时间并因而降低了功耗。

部分 MCU 器件集成了多种低功耗工作模式。这些模式令人们可以在选择关闭内核处理器或降低内核处理器速度的同时,针对片上外设有选择地让系统时钟保持在工作模式。

我们经常听到这样一种说法,“内核的性能越高,执行任务的速度就越快,那么它就能越早返回到休眠模式”。虽然有些情况可能确实如此,但是这个逻辑是存在缺陷的。我们得记住内核的功耗比 MCU 中任何一个其他模块都高。另外,无论速度如何,所有需要内核的任务都必须按序执行(FIFO)。因此,在最后一项任务完成之前内核是不可以被关闭的。当单片机可以借助无需内核即可运行的集成外设来并行执行所需任务时,内核的速度就毫不相干了,并且整体功耗也会大幅降低。毕竟,这些新外设大多数都可以在 MCU 内核处于休眠模式时正常运行。

由于电池供电应用功能的增多,其设计也越来越复杂。工程师应该研究分析并充分了解每个部件在不同功耗和活动模式下的电流消耗概况,以实现最高的电池使用效率。有了全新的外设集,新一代 8 位单片机令工程师们无需牺牲系统性能就可以进行创造性的设计。

围观 534

在上一次文档中,我们阐述了如何使用printf函数在串口终端上打印输出,这种调试方法能在一定程度上满足我们的调试要求。但是有的时候串口资源已经被占用或为了节约开发时间不使用串口,这时我们就需要一个不依赖于MCU外设的调试方法。今天就向大家介绍一个非常经典的调试工具-半主机(semihosting)。

半主机是在调试ARM设备时,主机电脑可以与设备进行输入输出通信的一个机构。这个机构可以直接调用C语言库中类似printf和scanf的函数。这个机构的好处在于允许用户使用主机电脑的输入输出设备,方便了工程师们的软件开发过程。Semihosting 是通过设置软件中断(SWI)来实现的。调用了适当的软件中断和易于操作的软件中断的向量。关于半主机的实现原理,感兴趣的读者可以自行查阅资料,本篇文章重点介绍如何将半主机模式应用到实际的软件开发过程中。

打开IAR工程,在主函数文件起始处包含stdio.h文件,如下所示。

#include

在主函数中,我们调用printf函数打印一些与芯片有关的信息,编译完成之后,对工程按照图 2所示配置。

点击OK,进入Debug模式之后,按照如图 3所示,打开Terminal I/O窗口。

当我们点击全速运行之后,我们可以在Terminal I/O窗口看到如图 4所示的信息。

可以看到,相关的芯片信息已经通过semihost打印出来了,并且也可以获得用户输入的字符哦。是不是很酷?

当我们高高兴兴地看着打印出来的信息时,发现字符输出的速度很慢,查阅资料才明白,在半主机模式下,输出字符的速度大概是10ms每个字符!

God!多么好的一个调试工具,但是字符输出的速度也太慢了吧。那么有没有一种调试方法和semihost一样不占用MCU外设资源,并且字符输出速度也很快呢?当然有,敬请大家关注《浅谈工程师的调试法宝(3)之SWO引脚的巧妙应用》。

文章来源:周立功单片机

围观 518

在高科技产业往智能化与物联网应用的发展进程中,可看到各式智能终端产品、穿戴式装置、智能家居、工商业智能化生财工具,都已朝向智能互连的应用迈进,以建构出物物相连的全新世界。然在物联网的应用中,由于终端装置纷纷走向更轻薄短小、续航力更长、支持度更广的趋势下,促使微控制器(MCU)所扮演的角色愈来愈吃重,规格与功能要求上也愈来愈多而复杂。

不管是成本考量、功能导向、节能低耗、效能优先,还是从I/O传输到网通连结、从8位元到32位元,MCU芯片厂商在产品策略的规划上,也各自发展出多元化的产品组合,以差异化的产品功能、诉求、定位、价位,来锁定各自的目标客群,并各自有各自的拥护者。

ICT厂商跨足IoT市场 应审慎评估企业资源与自身角色

如今MCU市场朝向提供更宽广的MCU产品组合、模块化产品以及云端开发平台等趋势下,开发者在开发智能物联产品时,虽说有更琳琅满目的产品可供选择,但建议最好先检视新产品发展策略与设计方案,掌握客户需要的功能需求与使用重点,再来开发对的产品,才能在众多物联网应用产品中脱颖而出。

过去以来,ICT厂商都是仰赖在Wintel(或是ARM+Android/iOS)的开放、收敛平台来开发各式3C产品。这样的营运模式,是上游芯片厂商订好一两种软硬件开发平台,搭配几种规格与标准,让下游开发商透过Mass Production(大量生产)的方式,生产出多功能、少样式的各式ICT产品,以让客户与消费者买单。

但是,IoT的营运方式,就跟ICT完全不相同。IoT是发散的平台。标准非常多,OS平台多,有些是开放、有些是独断的标准。例如开发平台方面,就多达10几款,而且Profile和Middleware部份,也有各阵营所拥护的通讯标准。就连最终端的公有云服务,也有不同的供应商等等。因此,IoT是属于Mass Customization(大量客制)的少量多样、高度客制化的分众市场(B2B多于B2C)。

因此,正当产业与市场界线越来越模糊之际(ICT厂商跨足IoT,家电业者也跨足IoT,上下游互相抢生意),公司应审视企业价值定位与核心竞争力,通盘考量市场需求,以弹性的设计架构、生产模式、生意模式,并掌握企业的本身优势,以利进军IoT市场。

ICT大厂在IoT市场的布局

由于PC市场式微,智能应用与物联网正夯,使得Intel(英特尔)在往年偏重于PC运算与智能型手机平台的发展方向,也积极拓展其IoT的业务。其在8月16日举办的IDF开发者论坛中,就锁定在VR(虚拟实境)、AR(扩增实境)头戴装置、自驾车,以及未来的机器人开发上,整体讨论方向皆以物联网应用为主。

而Apple方面,除在Mac/手机/平板/智能手表有完整的产品规划之外,其在智能家居(HomeKit)、智能车(Car Kit)都有布局,以便进军3C/穿戴式产品之外更大的IoT市场。至于Google则是持续提供智能行动、穿戴式装置、VR、以及IoT等应用产品的更好开放式开发平台(Android、Daydream、Brillo、WEAVE等),搭配众ARM芯片厂商们,一同为ICT、IoT市场建构各式开放标准联盟。

与ARM架构兼容之32位元MCU产品布局

ARM挟其低功耗的优势,在行动装置市场攻城掠地,近年来更成立了IoT事业群,并建构其mbed开放平台,广邀各兼容于ARM Cortex-M架构的MCU芯片供应商,来共同推广其嵌入式开发平台,采用了ARM Cortex-M架构的MCU,都可以使用mbed的软件工具来开发。

不少MCU厂商在32位元产品上,都有规划与ARM Cortex-M架构兼容的产品组合,搭配自家开发工具。

非ARM架构之MCU产品布局

在低成本的8或16位元MCU市场部份,因各厂商的产品指令架构不同,也催生出不同的市场与应用。

更多样化MCU选择 创意与价值并重以满足IoT需求

由于从单纯提供MCU产品解决方案,到建构整个完整的物联网平台,这些都不是传统MCU厂商比较无法完整覆盖到的服务,因此近年来不少MCU厂商之间透过并购的策略,让自己的产品线与服务范围变得更宽广,以求在高度竞争的MCU市场发挥1+1>2的综效,提供更多样化的MCU产品与更广泛的服务范围。

不过,有些厂商则是透过与策略伙伴或下游厂商合作,共同推广自家MCU应用产品或开发模块,一改过去的成本或功能导向,而是以高度集成与更宽广的应用,甚至开发平台的概念,来吸引客户选择。

当然,除了在MCU技术集成上更强之外,创新与创意的经营也非常重要。因为IoT属于B2B2C模式,其中80%价值是来自于应用,要先有客人,才有对的产品。因此建议想进军物联网市场的企业们,事先做好市场调查,透过访谈、观察、了解消费者的需求,并针对使用者接口(UI)做好前后端的服务规划,从客户使用过程中,了解每个使用阶段的使用需求,以及会碰到的痛点,一一去帮客户解决掉各种问题。

总而言之,IoT的产品必须针对主打重点与强项,从硬件到软件,再到云端服务,都能提供一条龙的完整服务,为客户创造出价值,才是IoT产品是否致胜的关键。

文章来源:电子时报

围观 482

微控制器(MCU)广泛应用在各行各业,如各式家电、工业自动化,实时控制、资料采集等领域,为因应工控所需的实时(Realtime)控制、快速回应等需求,因此MCU大多搭载RTOS(实时操作系统)运行。随著物联网的兴起,软件业也为RTOS加入物联网的成分,以提早卡位物联网的核心软件市场…

各种处理器专用之OS

在一般功能(General-purpose)的处理器市场分类中,若以功能与执行速度来说,大致分为CPU > MPU > MCU。CPU的功能最强,主要应用在计算机产品;MPU功能次之,其应用多元,主要应用在嵌入式系统与精简型计算机等多种;而MCU则是以单一应用为主,应用在各式家电、电子产品、嵌入式产品、穿戴式装置、物联网(IoT)应用产品等控制应用。


MCU内部集成了KHz~MHz级的CPU、KB~MB级的存储器单元(RAM与ROM/EEPROM/Flash)、时脉产生器(Oscillator;Clock Generator)、与I/O扩充单元等,可视为一种速度较慢的系统单芯片(SoC)。

由于内部存储器容量小,因此大型操作系统如Windows、Linux等是不可能塞入MCU去执行的,且MCU大多被应用在实时控制的环境,因此许多容量小的RTOS(Real-Time Operating System;实时操作系统),便成为开发MCU软件的主要平台。

主打嵌入式应用的中高阶RTOS

RTOS的种类繁多,主要设计给基于MPU或MCU的嵌入式系统所使用。例如MPU等级专用的有Integrity、QNX、VxWorks等功能强大之RTOS;至于体积较小巧,主要支持MCU等级为主的RTOS,则有Nucleus、ThreadX、Unison OS、ucOS II/III等等。

以Green Hills Software推出的Integrity OS为例,就是一种支持MPU (甚至CPU等级)为主的RTOS。其强项在于Integrity-178版本已通过EAL 6+?(信息安全)认证与DO-178B(飞安环境) A级认证,被应用在极度重视安全和可靠性的市场,例如战斗机(如B-2、F-16、F-22、F-35)与民航机(如Airbus A380)等领域。该RTOS支持ARM、XScale、Blackfin、Freescale (已并入NXP) ColdFire、MIPS、PowerPC、AMD x86(嵌入式APU)等CPU/MPU平台。

另一个知名的QNX RTOS,采用微核心架构,是唯一成功打入商用市场的OS,其强项是多媒体的实时处理能力,适用于车(机)上娱乐装置与手机等嵌入式市场。QNX于2010年被BlackBerry购并,并开发出BB 10操作系统。QNX支持IA32、MIPS、PowerPC、SH-4、ARM、StrongARM、XScale等CPU/MPU平台。

至于象是IntervalZero的RTX、RTX64,则是设计来与微软Windows共存共容的RTOS,搭配EtherCAT协定来做为工厂自动化的应用。其中,Windows主要负责GUI、储存、运算,RTX则负责实时工控与资料采集,让工控软件开发更容易。以上的RTOS都是MB至GB等级的MPU等级OS,不适用于MCU的环境。

主打MCU应用的商用RTOS

中低阶RTOS部分,主要是把软件功能极尽精简到MB甚至KB等级,使整个OS与主要应用程序,均可以塞入MCU里的ROM/EEPROM/Flash。由于MCU应用的领域更加广泛,其软件必须力求更加精简,因此MCU专用的RTOS大多具备非常高度模块化的架构,从核心、驱动程序、档案系统、外围I/O、网络支持等,都可以量身订作,以利产品快速上市。

商用的RTOS有些会提供原始码给授权客户,而开源的RTOS则更能自由使用,让开发人员可以编译出程序码最小、最佳化的执行环境。

由于各芯片厂所推出的MCU产品/开发板,都会有其对应的OS与IDE(集成软件开发环境),但这些OS与软件开发环境可能只适用于该厂的MCU产品,因此第三方软件厂商,就开发出跨芯片/跨硬件平台的OS与IDE,让开发人员不须因为换了硬件平台,软件就必须全部改写。

目前MCU OS/IDE市场占有率最高的,大多是软件公司所推出商用RTOS(搭配各厂商的MCU产品),然随著ARM推出Cortex-M、Cortex-R等指令集架构,进军穿戴式与物联网应用市场,使得ARM架构(采开源码)的RTOS开始有提升的趋势。

Mentor Graphics旗下Accelerated Technology公司所推出的Nucleus,采Microkernel设计,号称有30亿个装置导入,优势是核心长度可以小至2KB,且开发人员不需要撰写嵌入式装置专用BSP(开发板支持软件包),因此被广泛应用到消费性电子、行动装置、车用电子、智能能源、医疗仪器、工业/工控等领域。

早期采用联发科MT6217芯片的大陆山寨、白牌、双卡2G手机,就是执行Nucleus RTOS。该RTOS支持ARM、MicroBlaze、MIPS、Nios II、Power、SuperH、XScale等嵌入式MCU架构。

Express Logic推出的ThreadX,则是一套免收权利金的RTOS,其优点是具备超快速的开机时间、反应时间,其Picokernel核心长度低于2KB,并通过安全规范,号称有21亿个装置导入使用。例如HP的旗下打印机和事务机便采用该RTOS。可广泛支持各式32位元MCU,包含ARM、Atmel、BlackFin、CoreFire/68K、EFM32、Freescale (NXP)、FM3、H8、XMC、M-Core、MicroBlaze、MIPS、Nios II、Power、STM32、StrongARM、Synopsys ARC、TI、Win32、x86/x386、XScale等等。

Wind River公司所推出的VxWorks,主要针对嵌入式系统设计,采Monolithic (单体式)核心,优势是具备先占式多工处理核心、循环执行、岔断快速反应等特性,原生支持64位元处理器架构(x64)、可进行平行(SMP)/非平行(AMP)处理,累积至今有超过15亿个装置导入。

新版VxWorks 7则瞄准IoT所需要的可扩充性、安全性、连结性、绘图能力、虚拟化等做强化,而全功能的VxWorks微核心长度只要20KB。VxWorks广受科技业界的采用,登陆火星的Curiosity(好奇号)便采用VxWorks。该RTOS支持Intel x86(包含Quark SoC与x86-64)、MIPS、PowerPC、SH-4、ARM等CPU/MPU架构。

RoweBots公司的Unison OS,则是一款完全兼容于POSIX(可移植操作系统接口)的RTOS,适用于MCU、DSC、DSP、SoC、FPGA等32位元的硬件开发环境,其好处是特别针对物联网的应用,提升其系统安全性,且核心程序码在某些应用架构可以低到仅1KB。支持Microchip PIC32、Renesas R32C/SH2A、ST STM32、TI ARM Cortex-M3等32位元MCU。

Micrium的μc/OS-II (microcontroller OS version 2),主打可携、能在ROM执行、弹性、先占式多工的RTOS核心,可管理高达250个应用任务。μc/OS-III则主打无限应用任务、几近于零的岔断,并可提供原始码给客户。

其优势在于该系统原始码开放、整洁一致、注释详尽,亦通过FAA认证与DO-178B认证,适合各种嵌入式与物联网的系统开发,核心大小从5或6KB~24KB。至于μc/OS-III HW-RTOS,则是针对ARM Cortex-M为主的MCU做硬件加速。该RTOS可支持超过100种DSP、MPU、MCU。

ARM MCU促使开源RTOS兴起

近年来由于ARM架构的处理器横扫全球智能行动装置(手机/平板)市场,除了搭配各MCU/MPU硬件平台所推出的商用RTOS/IDE之外,为进军物联网与穿戴式的MCU级应用,ARM推出Cortex-M与Cortex-R的指令集架构,搭配开源的OS/IDE来抢占MCU的应用市场。

例如ARM推出的mbed OS与相关开发环境,便着重于嵌入式装置与IoT的应用,具备连接性、高效率、安全性、生产力的OS,搭配其mbed-rtos函式库,亦可做为RTOS的应用。该mbed开发环境,可开发出智能家庭、智慧城市、穿戴式等应用产品。

此外,坊间针对ARM平台所推出的开源RTOS/IDE很多,例如FreeRTOS、uKOS-II、Atomthreads、BeRTOS社群版、ChibiOS/RT、CoActionOS、eCos、Embox、Erika Enterprise/RT-Druid、Keil (ARM) RTX、Lepton、nOS、Nut/OS、NuttX、RIOT、RT-Thread、TI-RTOS-KERNEL(SYS/BIOS)、TNeo等等,让开发人员有更多的选择。

其它专用MCU的非实时OS概述

此外,也有许多针对MCU设计的开源OS (非RTOS),但同样具有体积小的特性,有些是针对IoT的WSN(无线感测网络)应用,例如Contiki OS、TinyOS。而有些则具备一般桌上型图形化使用接口(GUI),例如SymbOS、Wheels OS等。

Contiki OS是一套开源的微型OS,可应用在Atmel ARM/AVR、LPC、PIC32、TI MSP430/CC2430/2538/2630/2650、STM32W等MCU做IoT应用,也可在博物馆级的8位元计算机(Apple II、Atari、Commodore等)做上网联机、甚至在骨灰级游乐器(Atari Jaguar、Game Boy/Advance、GP32、任天堂红白机、PC Engine等)上执行。

至于SymbOS,则是一套能在8位元Z80 CPU (如MSX、Amstrad)的古董计算机上执行之免费多媒体图形操作系统,赋予如Windows 95般的操作画面,让旧计算机回春。

文章来源:电子时报

围观 684

根据麦肯锡预测,从2016到2025年之间,智能汽车应用平均每年创造$210B~$740B的价值,智慧城市应用平均每年创造$930B~$1.7T的价值,智能工业应用平均每年创造$1.2T~$3.7T的价值,智能家居应用平均每年创造$200B~$350B的价值。
  
包括智能汽车、智慧城市和能源、智能工业和商业以及智能家居和消费设备在内的物联网应用将深刻改变人们生活的方方面面,创造巨大的商业价值。


  
但在这些物联网应用中,对传感器及MCU都有着一定的要求。具体表现在以下几方面:
  
(1)智能汽车需要大量先进的传感技术,包括运动感知、速度/位置传感、胎压传感以及高级驾驶辅助系统/驾驶人员监控等,同时还需要跨应用的控制技术;
  
(2)在智慧城市和能源方面,智能路灯需要传感器来感知移动物体,对于MCU的需求则包括对LED灯进行色彩和亮度的控制,以及对通信的管理;楼宇自动化对传感器的需求包括位置传感、语音交互以及市内测量和导航,对MCU的需求包括控制、通信管理以及传感器管理;
  
(3)在智能工业和商业方面,工厂自动化对传感器的需求包括速度和位置的传感、角度和压力的测量,同时也需要MCU来进行自动化控制;
  
(4)在智能家居和消费设备方面,智能家居对传感器的需求包括语音传感(警报触发)、智能抄表、位置感知、市内导航以及压力传感,对MCU的需求包括控制、通信管理以及传感器管理。

在针对物联网应用的传感器领域,灵动微拥有丰富多样的产品。自成立以来,灵动微电子已经成功完成十余款MCU产品设计及推广,包括基于8051、ARM® Cortex®-M0、ARM® Cortex®-M3内核的Flash MCU、OTP MCU、EEPROM MCU等产品,产品及方案广泛应用于工业控制、智能家电、智慧家庭、可穿戴式设备、汽车电子、仪器仪表等领域。

灵动微电子立足本土,洞悉市场,贴近客户,以为客户提供“保姆式”的全方位支持为特色,坚持“专业、可靠、便捷、高效”的服务理念,贯彻差异最大化,成本最优化的经营策略,不断强化自身生态价值,维护良好产品品牌。并致力于发展成为中国本土MCU产品与MCU应用方案的开拓者和领导者,愿意与产业界各位朋友携手共进,共创美好未来。

围观 296

作为一名嵌入式软件系统工程师,掌握住高效快捷的调试方法,往往会在实际的项目开发中达到事半功倍的效果。今天就跟大家讲一讲我们在项目开发过程中,那些被我们忽视的调试法宝吧。

通过串口打印实时打印出MCU的运行状态,想必大家都有用过,可你是不是仍然停留在串口打印字符函数(比如说函数名是StringUartSend)都需要自己写的时代。纵然我承认你C语言功底很深厚,但是其实你已经OUT了。现在是讲究效率的时代,时间就是金钱,如果我们能够充分的利用C语言函数库,会让很多代码的编写变的很简单。

比如说,现在我们需要通过串口输出1个3位的10进制整数,变量名就叫A。按照之前的思路,先需要把A的个、十、百位等分别提取出来,然后转换成ASCII码存储到数组或指针里,最后通过StringUartSend函数把结果输出来。这时你也许会说,这就已经满足你的要求了,可是如果你要查看的数据是小数呢?转换起来是不是就浪费了很多运行空间。那么该怎么办呢?没事,printf函数可以轻松帮我们搞定。

Printf函数是一个格式化输出函数,《C程序设计高级教程》一书中有这样的描述:printf函数的作用是按照指定的格式将程序的数据输出到终端上,其一般形式为:

printf ( 格式控制,输出列表 );

其中格式控制和输出列表为printf函数的参数。更多关于该函数的详细描述,请读者自行查阅1.12.3 格式化输出一节。

这时我们可能就会想:如果能用它直接向PC上的串口软件打印信息的话,不是件很酷的事情么,再也不用自己写格式转换函数了。但它是C函数库中的函数,如何知道我们的底层调用了串口发送函数呢?这就用到了重定向技术。重定向的代码如程序清单 1所示。

程序清单 1 重定向代码

int fputc(int ch, FILE *f)
{
CharUartSend((char)ch); /* 串口发送一个字符函数 */
return 1; /* 发送完成返回1 */
}

在我们完成串口的初始化工作并编写好一个字符发送函数CharUartSend之后,就可以把程序清单 1所示的代码添加到你的工程里了。并在文件起始处添加stdio.h文件,如下所示。

#include

重定向的代码是由fputc函数来执行的。要注意的是,不能使用其他的名字,因为“fputc”是编译器预定义的用于字符输出的函数名。fputc()实际上只是一个封皮,它直接调用CharUartSend 函数来做真实的工作。

加入上面的代码之后,再重新编译一下你的代码,在主函数中随便写一个打印信息,是不是在串口助手上面有意外的惊喜呢?

通过上文的描述,你已经对使用printf在串口助手打印信息有所了解把,但是在调试过程中,还需要配置串口资源,无疑又加大了产品开发的周期。那么有没有一种方法,可以不使用MCU的外设资源,又可以查看调试信息呢?

文章来源:周立功单片机

围观 628

页面

订阅 RSS - MCU