MCU

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

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

在单片机开发中,由于资源受限而没有平台的支持,每次开发都要重写很多代码,应用的千奇百怪的需求更是加剧了这种困难。解决问题的办法是,总结常见的需求,分析它,得出即高效有通用的解决方案。

今天我就来为大家提供一种按键的解决方案,它易用,高效,节省资源!

先给出这个按键模块解决方案的全部代码,稍后再来分析。

keyif.h内容:

1: #ifndef __KEY_IF_H__
2: #define __KEY_IF_H__
3: ////////////////////////////////////////////////////////////////////////////////
4: typedef unsigned char u8_t;
5:
6: #define KEY_NUM_MAX (8)
7:
8: #define KEY_STA_BEGIN (0)
9: #define KEY_STA_KEEP (1)
10: #define KEY_STA_END (2)
11:
12: #define KEY_PERIOD_MS (25)
13:
14: void kif_Init(void);
15: void kif_TickHook(void);
16:
17: /*
18: kindex 按键索引,从0开始,而小于KEY_NUM_MAX。
19: 返回值:按键被按下返回非零,按键被抬起返回零。
20: */
21: extern u8_t KeyRead(u8_t kindex);
22: /*
23: kindex 按键索引,从0开始,而小于KEY_NUM_MAX。
24: ksta 按键状态,取值为KEY_STA_系列宏。
25: ktick 按键计时,以KEY_PERIOD_MS时间为计数单位。
26: 返回值:如果本次按键操作已经处理妥当,就返回非零。
27: */
28: extern u8_t KeyProc(u8_t kindex, u8_t ksta, u8_t ktick);
29:
30: ////////////////////////////////////////////////////////////////////////////////
31: #endif /* __KEY_IF_H__ */
32:

keyif.c内容:

1: #include "keyif.h"
2: #include
3:
4: #if defined(KEY_NUM_MAX) && (KEY_NUM_MAX > 0)
5:
6: #if KEY_NUM_MAX > 255
7: #error 该模块为8位单片机优化,不支持255个以上按键。
8: #endif
9:
10: static u8_t kticks[KEY_NUM_MAX]; // 每个按键需要1字节计时器。
11: static u8_t kstats[(KEY_NUM_MAX+7)/8]; // 每个按键需要1BIT的状态标志。
12: static u8_t kvalid[(KEY_NUM_MAX+7)/8]; // 每个按键需要1BIT的有效标志。
13: ////////////////////////////////////////////////////////////////////////////////
14: //| |
15: //| 函数名称 |: kif_Init
16: //| 功能描述 |:
17: //| |:
18: //| 参数列表 |:
19: //| |:
20: //| 返 回 |:
21: //| |:
22: //| 备注信息 |:
23: //| |:
24: ////////////////////////////////////////////////////////////////////////////////
25: void kif_Init(void)
26: {
27: memset(kticks, 0, sizeof(kticks));
28: memset(kstats, 0, sizeof(kstats));
29: memset(kvalid, 0, sizeof(kvalid));
30: }
31:
32: ////////////////////////////////////////////////////////////////////////////////
33: //| |
34: //| 函数名称 |: kif_TickHook
35: //| 功能描述 |:
36: //| |:
37: //| 参数列表 |:
38: //| |:
39: //| 返 回 |:
40: //| |:
41: //| 备注信息 |:
42: //| |:
43: ////////////////////////////////////////////////////////////////////////////////
44: void kif_TickHook(void)
45: {
46: u8_t grp, msk;
47: u8_t now;
48: u8_t i;
49:
50: grp = 0;
51: msk = 1;
52: for(i = 0; i < KEY_NUM_MAX; ++i){
53: now = (KeyRead(i) ? msk : 0);
54: if((kstats[grp] ^ now) & msk){
55: // 按键状态发生变化。
56: if(now){
57: // 按键刚被按下。
58: kticks[i] = 0;
59: kstats[grp] |= msk;
60: kvalid[grp] |= msk;
61: if(KeyProc(i, KEY_STA_BEGIN, 0)){
62: kvalid[grp] &= ~msk;
63: }
64: }
65: else{
66: // 按键刚被抬起。
67: kticks[i] += 1;
68: kstats[grp] &= ~msk;
69: KeyProc(i, KEY_STA_END, kticks[i]);
70: }
71: }
72: else if(now){
73: // 按键保持按下状态。
74: kticks[i] += 1;
75: if(kvalid[grp] & msk){
76: // 按键处于有效状态。
77: if(KeyProc(i, KEY_STA_KEEP, kticks[i])){
78: kvalid[grp] &= ~msk;
79: }
80: }
81: }
82: // 处理用于加速执行的中间变量。
83: msk <<= 1;
84: if(msk == 0){
85: msk = 1;
86: grp++;
87: }
88: }
89: }
90:
91: #else /* KEY_NUM_MAX */
92:
93: void kif_Init(void){ ; }
94: void kif_TickHook(void){ ; }
95:
96: #endif /* KEY_NUM_MAX */
97:
example.c内容:

1: #include "keyif.h"
2:
3: // 读取按键物理状态的函数。
4: u8_t KeyRead(u8_t kindex)
5: {
6: switch(kindex){
7: case 0: // 按键#0
8: if(PIN_DOWN(0)){
9: return 1;
10: }
11: return 0;
12: case 1: // 按键#1
13: if(PIN_DOWN(1)){
14: return 1;
15: }
16: return 0;
17: case 2: // 按键#2
18: if(PIN_DOWN(2)){
19: return 1;
20: }
21: return 0;
22: case 3: // 按键#3
23: if(PIN_DOWN(3)){
24: return 1;
25: }
26: return 0;
27: }
28: return 0;
29: }
30:
31: // 按键事件处理函数。
32: u8_t KeyProc(u8_t kindex, u8_t ksta, u8_t ktick)
33: {
34: switch(kindex){
35: case 0: // 按键#0
36: if(ksta == KEY_STA_BEGIN){
37: // 按键被按下,TODO SOMETHING。
38:
39: return 0;
40: }
41: else if(ksta == KEY_STA_KEEP){
42: // 按键被保持,TODO SOMETHING。
43:
44: return 0;
45: }
46: else if(ksta == KEY_STA_END){
47: // 按键被松开,TODO SOMETHING。
48:
49: return 0;
50: }
51: break;
52: case 1: // 按键#1
53: if(ksta == KEY_STA_KEEP && ktick == 1000/KEY_PERIOD_MS){
54: // 按键按下保持了1000毫秒,TODO SOMETHING。
55:
56: return 1;
57: }
58: break;
59: case 2: // 按键#2
60: if(ksta == KEY_STA_KEEP && ktick == 1){
61: // 按键被按下,具备了间隔KEY_PERIOD_MS毫秒的去抖动时间,TODO SOMETHING。
62:
63: return 1;
64: }
65: break;
66: case 3: // 按键#3
67: if(ksta == KEY_STA_END){
68: // 响应按键松开事件,TODO SOMETHING。
69:
70: }
71: break;
72: }
73: return 0;
74: }
75:
76: ////////////////////////////////////////////////////////////////////////////////
77: //| |
78: //| 函数名称 |: main
79: //| 功能描述 |:
80: //| |:
81: //| 参数列表 |:
82: //| |:
83: //| 返 回 |:
84: //| |:
85: //| 备注信息 |:
86: //| |:
87: ////////////////////////////////////////////////////////////////////////////////
88: int main(void)
89: {
90: // 初始化KEYIF。
91: kif_Init();
92:
93: while(1){
94: delay(KEY_PERIOD_MS);
95: // 以KEY_PERIOD_MS毫秒为周期调用。
96: kif_TickHook();
97: }
98: }

上面的代码包括了3各文件,keyif.h、keyif.c、example.c。

其中example.c是使用举例,它提供了两个必须的函数,

u8_t KeyRead(u8_t kindex);
u8_t KeyProc(u8_t kindex, u8_t ksta, u8_t ktick);

先来分析KeyRead()函数:

它是读取物理按键的底层函数,该函数被KEYIF模块调用。当按键按下时,它必须返回非零;按键抬起时,返回零即可。例如我们通常把按键引脚设计为低电平为按下状态,那么当读取对应引脚电平状态时,如果读取的引脚为低电平则返回非零,高电平就返回零。

kindex参数是用于区别物理引脚的。例如:kindex为0时读取GPIO_B4,kindex为1时读取GPIO_A1,等等。

再来分析KeyProc()函数:

该函数是用户的按键响应函数,在该函数中用户可以加入一切按键响应代码。该函数被KEYIF模块调用。kindex参数是按键的索引,用于标识按键;ksta参数是按键的当前状态,取值为KEY_STA_BEGIN、KEY_STA_KEEP、KEY_STA_END其中之一。BEGIN代表按键刚被按下,KEEP代表按键保持在按下状态,END代表按键被松开了。ktick参数是KEEP状态的计时器,表示按键按下状态保持了多久,单位是KEY_PERIOD_MS毫秒。

KeyProc()函数的返回值决定了本次按键操作是否还会有后续的KEEP事件,如果用户不需要后续的KEEP事件,返回非零即可。当用户告诉KEYIF不需要后续KEEP事件后,按键保持在按下状态也不会产生KEEP事件,直到下一次按键操作。无论有无KEEP事件,BEGIN和END事件始终会有的,无法关闭!

example.c文件中给出了几个应用示例,其实这个按键框架能实现的操作远不止这些!用户自己根据需求可以轻易写出各种代码。

要使用KEYIF,必须在用户代码开始处调用kif_Init()函数来初始化KEYIF。然后在主循环或者时钟中断里,以KEY_PERIOD_MS毫秒为周期调用kif_TickHook()函数。

文章来源: 博客园

围观 198

这篇文章是俄国人Sergei P.Skorobogatov就读英吉利剑桥大学之博士论文,讲解了各种MCU的攻防技术,堪称一部小百科全书。对于志在研究MCU防护的筒子,能给你很多参考思路:但对于想当黑客的人,我们对后果概不负责!

C非侵入式攻击不需要对元器件进行初始化。攻击时可以把元器件放在测试电路中分析,也可单独连接元器件。一旦成功,这种攻击很容易普及,并且重新进行攻击不 需要很大的开销。另外,使用这种攻击不会留下痕迹。因此,这被认为是对任意元器件的硬件安全最大的威胁。同时,通常需要很多时间和精力来寻找对特定元器件 的非侵入式攻击方法。这通常对元器件进行反向工程,包括反汇编软件和理解硬件版图。

非侵入式攻击可以是被动的或主动的。被动攻击,也叫侧面攻击,不会对被攻击元器件发生作用,但通常是观察它的信号和电磁辐射。如功耗分析和时钟攻击。主动攻击,如穷举攻击和噪声攻击,特点是将信号加到元器件上,包括电源线。

一个简单的非侵入式攻击可以是复制一个上电配置的基于SRAM的FPGA。接上配置芯片用的JATG接口,用示波器或逻辑分析仪,捕捉所有信号。然后可以通过分析波形并回复独有的命令。

只使用到一半的FPGA资源时,可以轻微改变数据流来伪装盗版的事实。配置时留下一点空间而不影响元器件的运行。JTAG接口在发送信号时序时也有一些自由,故盗版的波形可以设置成看上去与原始信号不一样的。另外,破解者可以在上传时交换行地址,给人的印象是完全不同的设计。

含糊与安全

半导体制造商给大客户提供了增强产品防破解能力的措施:包装上的客户印字代替了标准的芯片型号。这给人的印象是产品是由定制的集成电路设计的。众所周知,ASIC提供了很好地保护措施来防止多种攻击,只有极少数经验丰富且装备精良的破解者才有可能成功破解。这会使很多潜在的破解者望而却步。但一个信心坚定的破解者会尝试用简单的方法确定芯片是不是真的ASIC。最简单的方法是观察连接到电源,地,时钟,复位,串口或别的接口的引脚。与数据库中被怀疑的微控制器相比较,这种结果非常可靠,每种微控制器都有自己的引脚特点。一旦发现相似的,就把它放在通用烧写器上尝试读出结果。

另一个简单的方法是限制访问程序存储器。通常用在智能卡中,但一些微控制器中也用到。这不是很可靠且实用的方法。当然在智能卡中用得很好,所有的客户被与芯片制造商迫签署不扩散协议。但微控制器极少这样,能被通用烧写器烧写的微控制器世界上很多公司都能提供。即使文件中没有烧写的规格,用低成本的示波器几个小时就可以套出需要的波形。如果微控制器不被特殊通用烧写器所支持,仍然可以通过从制造商购买开发板来获得直接完整的协议。

时序攻击(Timing attacks)

一些安全相关的操作使用输入的值和密钥,由半导体芯片执行不同的时间来比较。小心的时序测量和分析就能恢复出密钥。这个方法最早在1996年的文献上提到。稍后这种攻击成功破解了实际的RSA签名的智能卡。

为了攻击成功,需要收集装置的信息,与处理时间整合比较,如问答延迟(question-answer delay)。很多密码算法容易受到时序攻击,主要原因是软件来执行算法。那包括执行适时跳过需要的分支和操作条件;使用缓存;不固定时间处理指令如倍频和分频;还有大量的其他原因。结果就是执行能力典型地取决于密钥和输入的数据。

为防止此类攻击可以使用盲签名(Blinding signatures)技术。这个方法是利用选定的随机数与输入数据混合来防止破解者知道输入数据的数学运算法则。

时序攻击可用在安全保护是基于密码的微控制器,或使用确定数字的卡或密码来进行访问控制的系统,如达拉斯的iButton产品。这些系统中共有的风险是输入的连续数字在数据库进行再次校验。系统需经常检查输入到数据库的密钥的每个字节,一旦发现不正确的字节就会立即停止,然后切换到下一个直到最后一个。所以破解者很容易测量出输入最后一个密钥倒请求另一个的时间,并得出发现的密钥相似度。尝试相对小的数字,有可能找到匹配的密钥。

为防止这些攻击,设计者需要小心计算处理器的周期。当密码进行比较时确保正确和错误的时间是一样的,例如有的微控制器的内部存储器载入模块在输入正确的八字节密码后可以访问内部闪存。为达到正确和错误的密码都处理相同的时间,程序中增加了额外的空操作指令。这对时序攻击提供了很好的保护。一些微控制器有内部阻容振荡器,那样处理器的工作频率与电压和芯片的温度相关。这使得时序分析很困难,攻击时需要稳定元器件的温度并减少电源线上的噪声和电压波动。一些智能卡有内部随机时钟信号使得攻击时测量时间延迟无效。

穷举攻击(也称暴力攻击Brute force attacks)

暴力对于半导体硬件和密码来说是另一种意思。对于密码,暴力攻击是对系统尝试数量众多的密钥。通常是使用高速计算机来寻找匹配的密钥。

一个例子是微控制器中的密码保护设置。比如,微控制器密码本身长度为32字节(256位),抵挡暴力攻击已经足够了。但密码分配在与处理器中断矢量相同的存储器地址。那么,首先减少存储器内矢量一直指向的区域。然后当软件被更新时,只有小部分的密码被修改,因为大部分中断子程序指向的矢量是相同的地址。结果是,如果破解者知道早前密码中的一个,就很容易做系统的搜索,在合理的时间内找到正确的密码。

暴力攻击也可用在ASIC或CPLD的硬件设计来实现。这种情况下,破解者使用所有可能的逻辑组合到元器件可能的输入端并观察所有输出。这种方法也称为黑箱分析(Black-box analysis),因为破解者不知道被测试元器件的情况。通过所有可能的信号组合,尝试获得元器件的功能。这种方法对相对小的逻辑器件很有效。另一个问题是破解者使用的ASIC或CPLD有触发器,故输出将可能是当前状态或输入的状态。但如果预先检查并分析信号,搜索的范围可以显著减少。例如,时钟输入,数据总线和一些控制信号是很容易认出的。

另一种可能的暴力攻击,对很多半导体芯片有效,是将外部高压信号(通常是两倍于电源电压)加到芯片引脚上,来试图进入工厂测试或编程模式。事实上,这些引脚用数字万用表很容易发现,因为它们没有保护二极管到电源脚。一旦发现对高压敏感的引脚,破解者就可以尝试可能的逻辑信号组合来加到别的引脚上,找出用于进入工厂测试或编程模式的部分。

破解者也可用元器件的通信协议来找出设计者嵌入在软件中的测试和更新用得隐藏功能。

芯片制造商经常提供给后期测试用得嵌入硬件测试接口。如果这些接口的安全保护没有适当设计,破解者很容易利用它来读写片上存储器。在智能卡中,这些测试接口通常位于芯片电路之外,并在测试后从物理上除去。

任何安全系统,不管软件和硬件,在设计上都可能有缺陷,对于破解者来说都是机会,暴力攻击有可能找到它。小心设计安全保护系统,进行适当的评估,可以避免很多问题,并使得这些攻击事实上不可行。

功耗分析(Power analysis)

一个运算设备的功耗取决于它当前的状态。依照CMOS晶体管的原理,各部分动态时的功耗比静态的要大。当输入电压加到反向器上,会引起一个晶体管短路,这个晶体管电流的增加比静态消耗的寄生漏电要大得多。在电源线上加个10-20欧的电阻,就可以测量电流的波动。为达到更好的效果,需要使用至少12位精度和50MHz采样速度的模数转换器。这些获得的参数可以用来区别处理器的不同指令并估计总线上同时翻转的位数。

通过平均多次重复同样操作的电流,即使是没有通过总线的很小信号也能区别开。有些信号如移位状态特别有用,因为很多密码的密钥产生算法使用移位操作来逐一移出单个密钥倒进位标志。即使状态位的变化不能直接测量,它们通常会改变指令次序或微码的执行,这会导致功耗的明显变化。

不同指令导致不同级别的指令解码和运算单元的活动,可被清晰地区别开,故运算部分能被推测出。处理器的不同单元在时钟沿相关的不同时间里有独有的开关状态,能被高频仪器分离出来。

有多种不同的功耗分析技术用在破解密码算法上。整个分析过程是相对简单的,只需要标准的现有的廉价仪器设备。

功耗分析技术主要有两种:简单功耗分析(SPA:Simple Power Analysis)和差分功耗分析(DPA:Difference Power Analysis)。SPA是在密码或别的安全相关操作时直接观察功耗,可以得知设备运行时的信息如密钥资料。如果破解者知道密码算法,很容易通过观察处理器指令次序,特别是移位条件转移,找到一些位的信息。如果算法或逻辑运算的结果很容易被看出,如进位状态,零或负标志,就可以获得更多的信息。DPA是种更有效的技术,因为破解者不需要知道密码算法是如何执行的。它使用静态分析和已知密码运算的大量功耗迹线来获取隐藏信息。用统计方法鉴别功耗的微小区别,可用来恢复密钥中的单个的位信息。

功耗特性当然包括噪声部分。额外的噪声可以通过减少获取信号的探针长度并小心使用测量仪器来降低它。测量接在地线上的电阻的功耗有一些优势。首先,减少了噪声电平。其次,可以用示波器的探头直接测量信号,因为大部分探针站有公共的地线与外部电源地相连。为了增加信噪比,可以通过提高平均采样数来获得。

有源探头能降低输入电容,增加对输入信号的带宽。一种方法是用高速低噪声的运放来构建相对简单的探头,另一种是用很短的同轴电缆直连到示波器的输入端。在这些情况下,探头的输入电容显著减少。

图 左侧是普通的无源探头,右侧是自制的有源探头。

我们对现有的功耗分析步骤进行了改进。这是一种新的方法,尚未有类似的。我们用铁芯变压器来取代连到电源或地的电阻,那样波形就有点不一样,因为信号的直流成分丢失了,同时又有些有利条件。常用的方法对直流电流几乎没有什么限制。但对于10欧电阻来讲100mA的电流意味着有1V的电压降,那可能中断微控制器的正常操作。减少这个电阻可以解决这个问题,但会使得难以识别功耗的微小变动。使用变压器后,不需要使用昂贵的有源探头,标准的无源探头就可以给出几乎相同的结果。如果信号太小,调节二次侧的线圈就可以增加振幅。变压器也担当无源滤波器的角色,如波形,同样的处理器指令对电阻和变压器所测量到的波形有不同的影响。那可以通过对获得的信号进行处理。为了攻击获得成功,需要采集数千的样本,然后快速分析处理所展现的秘密。

最近,芯片设计上已考虑这种攻击,并将使得这种攻击方法更难获得成功。

噪声攻击(Glitch attacks)

噪声攻击是快速改变输入到微控制器的信号,以影响它的正常运行。通常噪声是叠加在电源上或时钟信号上,但噪声也可以是外加的短暂电场或电磁脉冲。在离芯片表面数百微米处放置两根金属针,然后加上少于1微秒的数百伏电压的窄脉冲,晶圆衬底会感应出一个电场,使得邻近晶体管的阈值电压发生变化。最近出现一种改进的方法:使用几百圈金属线绕在微探针的针尖构成一个小型电感。当电流进入线圈会产生磁场,针尖将集中磁力线。

每个晶体管和与它相连的线路构成有时延特性的RC电路。处理器的最大可用时钟频率取决于该电路的最大延迟。同样的,每个触发器在接收输入电压和由此引致的输出电压之间有个特征时间窗口。这个窗口由给定的电压和温度来确定。如果用时钟噪声(比正常的时钟脉冲要短得多)或电源噪声(电源电压的快速波动)将会影响芯片里的某些晶体管,导致一个或多个触发器进入错误状态。通过改变参数,处理器会被导致执行许多完全不同的错误指令,有时甚至是不被微码支持的。经管我们不会预先知道何种噪声会导致何种芯片的何种错误,但它能相当简单地进行系统的搜索。

时钟噪声攻击(Clock glitches)

时钟信号的噪声攻击在目前是最简单的,且相当实用。实际应用中的噪声通常用来取代跳转条件并试验先前的测试指令。可以在安全密码问询处理时创建一个攻击窗口,简单预防执行这些指令。指令噪声也能用来扩大循环的时间。如,串口子程序在输出缓冲后再读更多的内容;或在密钥操作时减少循环次数来传一个弱的密码。

为获得噪声,时钟需要临时增加一个或大于半个周期,有些触发器在到达新状态之前就获得输入。时钟噪声通常针对处理器的指令流。对硬件执行安全保护的微控制器没有什么效果。实际中,仅使用时钟噪声来攻击微控制器或智能卡的软件程序接口。

这类保护的破解是相对容易的。如处理器在循环里只执行一个指令,攻击时可用不同的时钟噪声导致处理器误操作。不需要小心地与时钟信号同步,只需要随机制造噪声就可在数次攻击内成功。插入噪声是相对容易的,无需使用外部发生器,瞬间短路晶振即可。当谐振器在不同的泛音上产生震荡会发出很多噪声。大部分情况下需要在确定的时钟周期内获得所需结果,在这种情况下用信号发生器更好。

使用时钟噪声来攻击某些微控制器也许是很困难的。例如某微控制器在内部RC震荡器工作的启动模块。很难与内部时钟同步,攻击时很难估计精确的时间。一些智能卡在处理器指令流里会随机插入延迟,使得攻击更为困难。使用功耗分析会有帮助,但要求非常昂贵的设备来实时获得参考信号。

电源噪声攻击(Power glitches)

电源供应电压的波动会导致晶体管阈值电平的漂移。结果就是一些触发器在不同的时间里采样它们的输入,或读出错误的安全熔丝的状态。 通常用瞬间增加电源电压或电压跌落来制造噪声,一般在10个时钟周期内。电源噪声通常用在微控制器的程序接口上,能影响处理器运行或硬件安全电路。一般地,弱点比时钟噪声更难找到并利用,因为对于时域参数,振幅,上升/下降时间都是变量。

如果在执行AND $0100指令时电源电压减少50-70%,处理器从EEPROM中取出的值是FFh而不是实际的值。这会对应熔丝未加密状态。窍门是小心计算执行时间来减少电源电压,否则处理器会停止运行或进入复位状态。这种任务并不难,复位后目标指令在第一个一百周期内被执行。破解者可以使用矢量发生器或构建一个自己的噪声源。

芯片的擦除操作也会解除安全保护。但同时会芯片上程序和数据存储器中的内容。安全保护电路在硬件设计上是在安全熔丝复位之前擦掉存储器。但我们发现在芯片擦除操作时电源电压几微秒内增加到大约10V,会中断存储器擦除操作,但安全熔丝正常完成复位,这使得有可能读出存储器里的内容。如此高压需要谨慎使用,如果时间过长会损伤芯片。因此最好增加防欠压和过压攻击的能力。如果电源电压低于3V或6V,通过编程接口的任意修改存储器的操作会被立即中断。

不是一直需要电源噪声超过电源电压范围的规格。保护机制可以阻止在芯片擦除操作开始后使用大于50mV的噪声。那会导致中止程序存储器的擦除操作但不会擦掉熔丝。

上述例子表明噪声攻击时无需特殊工具就有很好的效果。智能卡里有时钟监控电路但极少微控制器有。

数据保持能力分析(Data remanence)

处理器一般会把密钥保存在静态RAM里,如果元器件被篡改就会掉电,RAM内容丢失,从而保护密钥不被窃取。众所周知的是在低于零下20度时,SRAM里的内容会“冰冻”。很多元器件把温度低于这个阈值视为发生篡改事件。我们做了一些实验来确定现代SRAM数据保持能力与温度的关系。我们的实验表明传统的思维不再有效。即使在高温下,数据保持能力也是个问题。数据保持能力不仅仅对SRAM有影响,对DRAM, UV EPROM, EEPROM和闪存也有影响。结果是,仍然可以从已擦除的存储器中获得一些信息。这会给安全设备带来很多问题。

安全工程师都很关注断电后SRAM器件能保持数据的时间。原因如下:很多产品使用密钥或类似的方法进行加密和别的安全相关的计算,需要不能被读出或改变。最普遍的解决方法是把安全密钥放在带篡改传感器的易失存储器中。一旦检测到发生篡改,易失传感器会掉电或短路到地。但如果数据保留时间大于破解者打开元器件并对存储器上电的时间,那保护机制就被摧毁了。

在二十世纪八十年代,发现低温能将SRAM的数据保存时间增加到几秒甚至几分钟。对于那个时候的元器件,发现零下20度就可以增加数据保存时间,并且会随着温度的降低而增加保持的时间。有些就增加了温度传感器,温度低于零下20度就触发篡改事件,立即清零存储器。本次试验是重复这个工作,察看2000年后的产品是否也有此特性。

另一个需要关注的是即使部分内容已被破坏,安全信息也能被复原。假设破解者获得了n=128位密钥中的m=115位,也就是90%的信息。他可以通过搜索n!/(m!(n-m)!=128!/(115!13!)=2.12*1017~258个可能的密钥。通过1万台电脑,每台每秒进行10亿次搜索密钥的操作,破解者只需6个小时就能搜遍所有密钥。如果只有80%的信息,也就是知道128位密钥中的103位,那就有2.51*1026~288种可能。几乎增大了一百倍,破解者要花百万年来搜索密钥,故认为均匀的128位密钥不能被恢复。

文章来源:玩转单片机

围观 231

8048的面世标志着控制专用CPU MCU(Microcontroller Unit)的延生,而作为互联网基石的PC,其CPU8088却是在3年以后的1979年才出现。自1979年以后,PC的CPU从16位、4.77MHz时钟、单核发展到了今天的64位、常见的3GHz时钟和多核。而比PC的CPU历史悠久的MCU,其字节停止在32位已有10多年了。相对于芯片,MCU软件技术进展更慢,在PC机软件开发已由工厂化发展到全社会协同的今天,MCU软件技术仍停留在单打独斗的个人英雄时代。

尽管MCU的应用领域和市场规模都要比PC大得多,其MCU软件技术进展仍然十分缓慢,其中原因包括应用领域的碎片化导致公有技术抽象困难,开发力量难以聚焦。软件技术进展缓慢直接影响MCU芯片技术的发展,芯片的性能又反过来阻碍软件技术的发展。随着物联网(IOT)在人们生活中的渗透,高性能MPU的价格已下降接近MCU的价格区间,互联网软件技术不断向MCU领域浸入,加速MCU软件技术发展的时机已到来。

由无规则向OOA及OOD转化

MCU软件的前期分析设计将由无规则向OOA及OOD转化。传统的MCU软件开发,其分析设计和实施通常是由封闭的团队,甚至一个人独立完成。尽管团队内部成员理念一致、配合默契,项目实施敏捷。但整个开发过程都在同一团队进行,几乎不涉及团队外的协同开发,因此分析设计简陋,甚至只停留在口头上。随着IOT时代的到来,其封闭单一的团队难以适应今天的发展,团队外的协同是MCU软件开发的必然趋势,但前期分析设计的不足,会使问题变得更复杂。

将PC软件开发成熟的方法论引入MCU软件领域,则是促进MCU软件技术发展的捷径。OOA(Object Oriented Analyzing)和OOD(Object Oriented Design)是系统工程理论在PC软件技术中的体现,它们是支撑软件技术工厂化和社会化的重要理论基础。OOA及其OOD通过对应用进行分层、分类抽象处理,将部分层与类从应用中剥离出来,从而使协同者不需要了解应用就能进行软件开发。从1997年开始,作者以系统工程理论为基础开始探索OOA及OOD在MCU软件开发中的应用,并于2005年将初步成果应用于继电保护装置开发。其方法是将继电保护装置分层分类封装在4个不同的MCU之中,在不具备独立开发继电保护装置的团队中实施,其开发时间和开发投入远低于当时同行业经验丰富的开发团队。该系列继电保护装置已经应用10多年了,不仅维护升级方便,而且至今竞争力不减。

编程方法由FP向OOP融合

编程方法由FP向OOP融合是另一个发展趋势。在编程方法上,FP(Functional programming)与OOP(Object Oriented Programming)之间的战争从来没有停止过。作者认为脱离应用背景,讨论FP与OOP是毫无意义的,因为FP强调的是精英技术,它是开发人员的综合个人能力的体现,是一门精致而美的艺术,艺术的特点就是难以复制;OOP则是实施软件开发工厂化与社会化的一门技术,其不足在于CPU及其资源利用率低,但高速发展的芯片产业弥补了它的不足。MCU软件技术是FP的代表者之一,但它实在是无奈之举。因为直到2000年,主流MCU还停止8位、256Byte内部RAM和12MHz的时钟,在这样低的资源下进行软件开发,不仅仅是FP编程方法,更有C与汇编的交融,它已超越技术,升华为一门艺术。

2000年以后,OOP己成为PC软件开发的主流技术,现在主流MCU内核ARM cortexM3/M4与2000年时PC的资源配置接近,在MCU软件开发中实施OOP的条件已具备。PC软件开发成功的经验证明:实施OOP,是降低软件研发的门槛,是将软件开发从精英模式走向工厂化和社会化的有效措施。同时也是解决软件开发人员短缺的唯一手段。作者于两年前通过对OOP编程语言JAVA的归零学习,已感悟OOP之真谛。然后亲自编程将OOP技术应用于MCU软件开发中,并向同行、同事介绍OOP在MCU软件开发中的体会,让目前的MCU软件开发人员拓展思路,使他们从封闭的思维方式中解脱出来,走向社会化,其效果也是非常明显的。

软件开发的分离与成熟

中间件成熟,推动驱动软件与应用软件开发分离。过去因MCU性能和资源的限制,MCU软件开发与硬件开发是密不可分的,驱动软件是联接MCU硬件与软件之间的桥梁,它是MCU开发最重要的环节。因为驱动软件涉及软件和硬件技术,要求开发人员同时具备硬件和软件知识,所以驱动软件开发是MCU开发中最难的一个环节,它是MCU开发的主要成本。

2010年与ARM cortex M系列MCU先后出现的还有CMSIS(Cortex Microcontroller Software Interface Standard)。CMSIS是ARM公司制定的ARM Cortex-M系列MCU软件接口标准,它将MCU外设与软件无关抽象化。自此,MCU驱动软件由MCU制造商或MCU开发软件商提供,从而降低了MCU开发的难度,提高了MCU软件的重用性。

Ethernet、WiFi和Bluetooth是主要通信标准。作为IOT前端的MCU也必需具备信息交互功能。Ethernet、WiFi和Bluetooth等协议软件经过多年发展,已成熟、规范和专业,作为MCU的公有技术把它们植入到MCU软件之中是十分必要的。将它们封装成中间件,MCU软件开发时,在硬件的支持下只需要将这些中间件集成到MCU软件之中就能使MCU与互联网实现灵活的信息交互。例如ucTCPIP、CMX-TCP/IP、IwIP等是MCU软件开发常用的Ethernet中间件。在MCU开发时,不需要了解TCP/IP的细节,仅需将这些中间件集成到MCU软件中就能实现Ethernet功能。目前除了上述互联网信息功能外,还有大量的其他中间件,如MCU图形中间件emWin、USB中间件ecc-USB等。同时,MCU软件开发主流平台KEIL将自己的和第三方提供的中间件集成在同一开发平台上。MCU软件开发时,只需要将这些中间件集成到自己的软件中,就可实现相应的功能。

总之,MCU中间件的广泛应用,标志作MCU软件开发由封闭走向开放。在原生市场本来就广阔的MCU应用领域,借助IOT的推动,MCU软件技术必将迎来新的发展浪潮。作为经历了电子管时代,并且电路设计和代码编写己成为人生一大爱好的作者,将激情满怀地迎接MCU软件技术的又一次变革。

(作者唐晓泉博士,供职于中国科学院电工研究所)

来源:中国电子报、电子信息产业网

围观 381

对Flash-based的MCU来说,ISP和ICP几乎是不可或缺的功能。但我们经常被这两个功能搞混,究竟他们的差别在哪里?对客户的意义又是什么?在这里,和大家分享并澄清一些观念,希望对大家有所帮助,进而解答来自客户关于ISP与ICP的疑问。

1)在开发阶段

改code时,不再需要将MCU从板子上拔起来,拿到烧录器上烧,然后再装回去。可以直接利用ISP/ICP Programmer做板上烧录,为开发者提供了极大的便利性。

2)在量产阶段

客户可以采用“先焊到板子上再烧code”的方式,将烧code的动作安排在生产线的某一站。

那么传统的方式(先将code烧好再焊到板子上)有什么缺点?

传统的方式是这样的:拆封-->从tray盘取出chip-->烧录-->把chip放回tray盘。

这样的流程比起上面建议的方式:增加了烧录时间,容易造成QFP包装的chip弯脚,或忘了烧code即放回tray盘。

3)在成品阶段

已组装好的成品若要改code,可以透过预留的接口,利用ISP或ICP, 更新MCU,不需要拆机。

什么是 IAP(In-Application Programming)?

IAP指的是,MCU在运行的状态下,利用ISP的机制,不透过外接工具(例如:ISP Programmer) 的帮忙, 去更新APROM、DataFlash 或 CONFIG。要实现这种功能,系统必须有取得更新数据的能力,例如:处于某一种联机的状态。

(注:有时候, ISP/IAP的分别并不是那么清楚!)

ISP与ICP的差别

一、 ISP

(1) MCU必须处于可执行程序的状态(除了上电,还要接XTAL),且必须预烧ISP-code在LDROM里面

(2) 烧录范围只限于APROM、DataFlash或CONFIG (但对使用者来说, 应经够了!)

(3)chip在LOCK的状态下,仍然可以只更新某一区块 (APROM、DataFlash或CONFIG)

(4) 因为烧录的动作取决于ISP-code的写法,所以给系统设计者的弹性较大

二、 ICP

(1) MCU只要处于上电状态即可,不必预烧任何code在MCU里面

(2) 烧录范围涵盖整颗MCU,包括 APROM、 DataFlash、 CONFIG、 LDROM和 ROMMAP

(3) chip在LOCK的状态下,无法只更新某一区块,只能在erase-ALL之后,更新某一区块,再逐一烧回其它区块(因为ICP的本质就是走串行接口的Writer Mode,chip被LOCK之后,除了erase-ALL,所有烧录动作皆会被禁止)

(4)因为烧录纯粹是ICP硬件的行为,MCU无法自己更新自己,所以给系统设计者的弹性较小(例如:无法藉由ICP去实现IAP的功能)

三、ISP与ICP的使用场合

依这两者的特性,配合客户的系统需求, 而后才建议客户使用ISP或ICP。

来源:互联网(版权归原著作者所有)

围观 448

作者:黄文凤

随着我国集成电路产业的快速发展,云计算、物联网、大数据、VR等新兴业态将不断催生微控制器(MCU)芯片需求,分析机构预计2018年全球市场规模将超过200 亿美元。而中国MCU市场规模尤其巨大,增长速度国际领先,到2018年中国MCU市场规模将达390亿元,但是面对在MCU市场领域已耕耘很多年的外国厂商的争抢,夹缝中求生存的本土MCU厂商是否迎来大爆发?
  
MCU市场庞大 角逐激烈
  
随着物联网应用的火爆,新兴的4C产品更偏向智能应用的新设计趋势,让MCU技术的成长空间更大,包括行业记录器、可穿戴设备、智能监控、工厂自动化、无人机及VR装置等产品,都看到MCU的技术应用,无论国外还是国内的供应商都扎堆投资,希望分食MCU市场这块大蛋糕。
  
据2014年统计,中国国内市场的前2大MCR厂商分别是瑞萨电子、飞思卡尔半导体(现已被恩智浦收购),目前已有超过50家以上厂商推出各式MCU产品,以应用不同的领域,除了瑞萨、NXP、Microchip、TI、ST等国际大厂商外,还有韩国三星,中国本土也有20家以上如华大半导体、上海灵动微电子、爱普特微电子、杭州中天微等。因此,MCU市场竞争激烈程度可见一斑。
  
国产MCU的出路与挑战
  
MCU微控制器是各种系统的核心,广泛应用于消费电子、工业控制、汽车电子及通信等领域,MCR应用是中国制造转向中国智能制造的引擎,也是保障国家信息安全的有力支持,因此,在国家政策的支持下,MCU市场对于本土厂商来讲,确实是一个重大机遇,中国MCU厂商将在中国MCU舞台上扮演重要的角色。
  
随着技术的不断改进,8位MCU价格方面始终具有优势,市场前景巨大,从趋势上看,国外厂商逐渐放弃了8位市场,这对于中国MCR厂商来讲说蕴藏着重大机会,另外,本土厂商可借助ARM成熟的MCU IP平台,避开繁杂的软件开发和韧体整合工作,快速投入终端产品技术与创新应用上去,并大大减少投资成本,这是本土厂商进入主流32位MCU市场非常好的机遇。
  
随着国内MCU厂商的不断增加,同类产品不断增加,国内MCU产品同质化竞争将会越来越激烈,面对此现象,国内采用ARM内核本土厂商深圳市爱普特微电子有限公司技术总监鲁翔和杭州中天微系统有限公司高级副总裁徐滔均表示,在保证服务质量的前提下,价格相对较低将更能获得客户的认可。对此,ARM物联网应用市场经理耿立锋则不赞同此看法,其认为产品定位、性能与服务更为重要,不担心成本价格对市场接受度的影响,并以华为与海思联合,打造高端智能手机为例来说明。
  
毋庸质疑,芯片本身的差异化越来越小,但是价格战绝不是抢占市场份额的唯一出路,毕竟MCU市场相对较分散,没有绝对的垄断寡头,本土厂家要根据自身的优势找准产品开发的方向和细分领域,并针对细分领域在软件、解决方案和应用方面上体现产品价值。
  
另外,较于在国内MCU市场主导20多年的海外芯片厂商来说,本土MCU厂商有其自身的优势,在第八届MCU技术创新与嵌入式应用大会的国产MCU沙龙上,华大半导体、上海灵动微电子、上海微技术工研院等本土MCU厂商一致认为,电子产品的主战场在中国,本土MCU厂商在成本、服务响应速度等方面具有较大的优势,更容易与本土企业配合。
  
毋庸质疑,本土MCU厂商面临重大的发展机遇,在全球半导体产业发展趋缓和政府大力支持芯片产业之际,本土MCU厂商应抓着机遇,面对行业利润不断走低,要较早谋划资本投入计划,以避免渗淡出局,未来能有效掌握移动设备与物联网MCU商机的国内、外芯片商,肯定将有机会笑到最后。

文章来源:智慧城市

围观 393

在昨天的灵动微电子2016秋季新品发布会上,国内最有名的MCU专家周立功教授在谈到国产MCU如何才能做好时,分享了他过去多年来推广MCU成功的经验。作为NXP MCU的国内分销第一人,他认为,国产MCU必须要有自己的特色,对待客户要像对待丈母娘一样。“自己老妈的话你可能不听,但丈母娘的话,你一定会听,也必须要听。”

灵动微电子昨天在深圳举行秋季新品发布会,向业界宣布了三款新品,它们分别是则是基于Cortex-M3内核的MM32F103系列MCU,基于Cortex-M0内核的MM32F031系列MCU和MM32P011系列的MCU,其中MM32F031系列MCU有突出的性价比特性,主打IoT及消费类市场。

灵动微电子MCU事业部总经理娄方超这三款MCU采用了0.18um的工艺,基于ARM的内核设计,由华虹宏力代工。灵动微电子MCU事业部总经理娄方超表示,目前推出了参考设计方案有平衡车、无人机、电子烟、电子标签、LED显示控制、BLDC无刷电机驱动、打印机、智慧家庭等。将来也还有计划进入工业控制、汽车电子和IoT等领域。

灵动微电子的产品定位

灵动微电子的研发骨干有着强大的IC设计技术背景,娄方超本人就是从事过华为海思K3第一代芯片的设计。灵动微电子从芯片设计服务起步,在2015年8月挂牌新三板,2016年5月正式完成Cortex-M0 MCU芯片设计方案,现在主推自己的MCU。数方超表示,公司业务还是会两条芯片设计服务和销售自主品牌MCU“两条腿走路”。

灵动微电子董事长兼CEO吴忠洁博士介绍,灵动微电子给客户提供“保姆式”的服务,包括提供开发板、开发板外设模块、MiniBoard、原厂的开发调试环境支持和丰富的下载烧录手段。吴忠洁还表示:灵动微的愿景是要成为“中国本土MCU第一推动力”。

中国MCU不乏成功的案例,例如本土MCU厂商STC,已经成为全球最大的8051单片机的供应商,8位以下的MCU事实上已经是中国本土厂商在做主角。不久前另一家国产MCU芯片公司兆易创新也成功上市,这家公司主推Cortex-M3,在众多ARM MCU国际玩家中取得了成功。

作为国内第二家ARM MCU芯片公司,在与众多ARM MCU厂商竞争时,到底市场前景是否看好?娄方超认为目前ARM MCU主要还是国外厂商在竞争,说明这还不是8051单片机那样的红海市场。“我认为ARM MCU还是蓝海市场,作为一家中国公司,肯定有机会在这个市场上取得成功。”他认为。

图:周立功教授在圆桌论坛上发言

不过,作为一位在MCU上取得过让人炫目的成功的专家,ZLG单片机的老板周立功教授则认为,目前ARM单片机国外厂家众多,如果是做人有我有肯定不行、拼价格的公司也不会成功。“打价格战的公司最后都会死掉,因为你没有钱开发下一代的产品。”周立功认为,“我们不能做人有我有的产品,国外IC设计能力不会比国内差,但是他们的工程师离市场远,决策要慢。”

周立功以自己的成功经验介绍说,“做MCU最重要的就是产品定义。我给原厂定义过几颗MCU,就是针对市场需求提出来的。开发出来后降低了BOM成本,只要60多块,比竞争对手的BOM成本100多块少了40块RMB。所以客户们都喜欢用。”

他还补充说,“做MCU不要什么都放进去,例如放一个9位的ADC,又没什么用。12位的ADC有用,但是你又做不出来。怎样才能定义出一颗好的MCU?多听客户的反馈。”

周立功最后说,MCU型号不要求多,要让客户喜欢你的产品,要让他用了你的MCU后就不愿意再用第二家,那你的产品就成功了。

文章来源:电子工程专辑

围观 449

作者:刘丹

8月23日,上海灵动微电子股份有限公司2016年秋季新品发布会取得圆满成功,众多MCU领域的知名厂商代表、专业人士以及国内30多家知名门户与科技媒体现场云集,一起见证本土企业灵动历年来的快速发展以及强大产业链,此外针对不同领域灵动发布了三款不同的新品。

深耕本土 为中国MCU作第一推动

活动一开始,主持人电子创新网CEO张国斌就国内MCU市场做了相应介绍,他表示随着物联网和智能硬件的快速发展,32位MCU的需求呈现快速上升趋势。据相关数据统计,2015年全球MCU出货量255亿颗,比2014年提升了12.4%。

张国斌告诉记者,虽然今年全球的经济相对低迷,但是MCU的需求仍然有望增长20%左右,预计2016年全球MCU市场出货量将突破300亿颗大关。并且,32位的MCU市场未来几年会保持30%左右的高速增长!

在此市场红利下,国内厂商抓住此次机遇,纷纷加入32位MCU阵营,灵动微电子就是其中一家。灵动董事长兼CEO吴忠洁博士在详细介绍了灵动微电子多年来的发展历程后提出,灵动作为一家本土的MCU公司,希望能紧密结合国内的发展环境,能够一起推动本土MCU发展。

他强调,灵动微电子的特色也正在于立足本土,洞悉市场,贴近客户,以及为客户提供“保姆式”的全方位支持几个方面。

三大MCU产品 实现市场高中低端全覆盖

针对国内MCU不同层次的应用需求,灵动微电子发布了三款MCU产品,以实现高中低端全覆盖。三款MCU产品分别为:基于Cortex-M3内核的MM32F103系列MCU,基于Cortex-M0内核的MM32F031系列MCU和MM32P011系列的MCU,其中MM32F031系列MCU有突出的性价比特性,主打IoT及消费类市场。对于三款产品的详细信息,灵动微电子MCU事业部总经理娄方超先生做了如下详细的介绍。

首先是MM32F103,其实体模型如图,蓝色表示部分数字外设,红色表示主要的模拟模块,存储器包括128K字节的Flash闪存和20K字节的SRAM。该芯片的闪存为定义式闪存,所以其数据吞吐率非常高,可以有效保证客户在高效的应用场景下数据吞吐的连续性。

据娄方超介绍,MM32F103MCU的特点就是拥有ARM cortex-M3的内核,同时灵动为该款MCU设计了大量的数字外设、模拟外设以及搭配本土的嵌入式的工艺。

另外,MM32F103目前有四个不同封装形式的pattern number,相应的其Flash较前者减少一半。

其次,推出的另一款MCU是MM32F031系列,该MCU是一款基于ARM Cortex-M0的产品,其定义也为标准型,与F103系列MCU相比,在外设上所减少,可以从图上看到其外设数量以及SRAM以及Flash大小都要略小于F103产品。

相应的F031提供三种pattern number,分别对应不同的封装形式。据介绍,该产品的交货周期为4到8周。

最后一款为P011系列MCU。对于市场,娄方超表示,如果将MCU 的Price以及Performance作为坐标轴,可以看到如图常见的发展形式,同时灵动微电子的M031系列主打M0内核的中低端MCU市场,M103系列主打M3内核的中高端MCU市场,P011看准的则是超低端市场,其主要竞争对象是8位芯片市场。

娄方超强调,P011实际上是一个32位的内核,但其价格以及应用性能都可以与市场上的8位MCU相媲美,目前已经在测试过程中,预计今年第四季度就可以面世。

对比主流MCU,娄方超表示,主流MCU功能灵动的MCU也都具有,另外灵动微电子的MM32在供电电压做了一个宽压设计,主流为2.0-3.6V,而灵动微电子的MM32F103为2.4-5.5V,其他方面也做了加强,主频做到96MHz,娄方超透露,未来灵动还会推出一些加强型的产品,在主频性能、电源性能方面也会更强。

最后,娄方超在向大家介绍历年来灵动微电子做MCU的心得时表示,灵动MM32 MCU平台可归纳为10大要素,其中模拟IP,数字IP排列较前,且需根据特定环境进行不断优化。

而内存控制器是做嵌入式闪存必不可少的要素,该控制器尤其在高阶MCU下,整个CPU都是被内存控制器监管的,所以内存控制器的性能不仅仅影响到不仅仅影响系统运行,对调试结果也有非常直观的影响,且直接影响整个系统的稳定性,因此,灵动微电子将超过30%的成本投入在该项的研发中,也正因为此,灵动在内存控制器方面丝毫不逊于全球同类型的顶尖产品。

在架构上,娄方超提出,目前的MCU与传统的8位MCU不太一样,它更像一个SOC,所以一个好的架构也是非常重要的。

而库函数函数可以有效解决用户习惯,在32位MCU大家越来越倾向于C语言开发以及图形化的MCU开发语言,这些都是建立在强大的硬件基础之上,灵动做了差不多有上千种的函数,所有这些函数都可以在网上进行下载。

最后,特别强调的一点是加密与安全,从最初做MCU开始灵动从来没有放弃过加密Flash技术的专研,因此在此部分也十分出色。

文章来源:华强电子网

围观 296

随着物联网和智能硬件的蓬勃发展,对于32位MCU的需求呈现快速增长的趋势。笔者曾经看过一份可行性的行业分析文章,文章提及,在未来很长一段时间里面,MCU在降低功耗方面的共识已经成为主题,众多本土MCU对此又有什么样的应对方案呢?

上海灵动微电子是这样回答的

就在昨日8月23日下午,上海灵动微电子股份有限公司在深圳成功举办2016年秋季新品发布会。灵动微电子董事长兼CEO吴忠洁博士、灵动微电子MCU事业 部总经理娄方超先生、ARM 物联网应用市场经理耿立锋先生以及云汉芯城产品副总裁程凯先生等嘉宾在演讲过程中很是交流了一些干货给现场观众,在探讨本土MCU如何突破形成大发展态势 方面与现场众多人士形成了一致的观念。

1、本土MCU的近年发展趋势

正 如活动主持人电子创新网CEO张国斌提到的一样,32位MCU的需求以众人想象不到的态势在上升着。据相关数据统计,2015年全球MCU出货量255亿 颗,比2014年提升了12.4%。虽然今年全球的经济相对低迷,但是MCU的需求仍然有望增长20%左右,预计2016年全球MCU市场出货量将突破 300亿颗大关,其中32位MCU市场未来几年会保持30%左右的高速增长!

在这一个格局下,如何分享这块蛋糕呢?灵动微电子董事长兼CEO吴忠洁博士是这样回答的:其一,用更专业的态度去专注于MCU的设计上面,以满足日益增长的市场需求;其二,灵动微电子将会给用户提供“保姆式”的服务。更大的愿景则是要成为中国本土MCU的第一推动力!

2、新品亮相

灵动微电子MCU事业部总经理娄方超先生宣布了灵动微电子三款新品,它们分别是则是基于Cortex-M3内核的MM32F103系列MCU,基于 Cortex-M0内核的MM32F031系列MCU和MM32P011系列的MCU,其中MM32F031系列MCU有突出的性价比特性,主打IoT及 消费类市场。

通过数据的分析对比展示了这几款新品的强大优越性能以及相关的应用领域,并现场揭秘了灵动微电子MCU的十大构成要素,详细介绍了灵动微电子提供的开发套件、调试工具和技术支持服务,并分享了灵动微电子技术的发展路线图。

正与前文笔者所提到的一样,灵动微电子同样也会在超低功耗方面有比较大的提升,甚至在制造工艺上也会过渡到55nm甚至40nm节点!

3、MCU市场需求和本土化发展的趋势分析

在采访环节中,多个被邀请的嘉宾精彩句子不断。从灵动微电子的重要合作伙伴到其他现场嘉宾的发言,都在这一环节中各抒己见。譬如,ARM物联网应用市场经 理耿立锋先生通过以奥运冠军中国女排队伍中的外国队医形象比喻与灵动微电子的合作,双方是互助互益的关系;譬如,灵动微电子的方案合作伙伴深圳蚁石 (OCTANT)科技有限公司总经理朱才智对无人机算法的憧憬和展望,并表示未来基于Cortex-M3 MCU方案将走热;譬如单片机创始人周立功提到的在MCU领域坚决不玩价格战背后的故事,他说“我们不能做人有我有的产品,因为国外IC设计能力不比国内 差,本土的MCU工程师更应该利用自己的优势多接触市场、尽快做决策从这几点杀出重围,才能够有更迅速的市场接受度。而不是如国外工程一样,与市场距离 远、决策太慢。”
多听客户反馈:周立功教授提到,与消费类领域的终端不同,MCU不需要做太多的型号出来,客户喜欢你的产品、用了你产品就不愿意用第二家,那你的产品就离成功不远了。

M 系列在市场上的需求大到智能家居产品小到普通智能穿戴,嵌入式的需求量依旧很大。在生活中的应用,我们能够知道公交地铁控制,到电梯应用,再到智能家居到 处都有MCU的影子。本土MCU厂家正像周立功教授提到的一样,根本无须去花费太大的精力去专注一款万金油式的产品,因为太过细分市场,在特定的领域里面 做好一个产品,它的周期有时候长到你想象不到的地步。加上近年来有台湾厂家的入侵,如何保有甚至扩大自己的市场,灵动微电子所做的一些事情或许能够对他们 有些许的启发。



在此次发布会上,大家一致认为本土MCU在未来的发展机遇很大,要抓住发展机遇就要专注细分领域一战成名!周立功教授还结合自己的经验指出灵动微电子要提供其他厂商不能提供的差异化服务,超越客户预期,并要放眼未来,提供前瞻性的方案。

如何抓住这次绝佳的发展机遇,并且在未来几年物联网近千亿颗的MCU需求中找到自己的那一份。或许灵动微电子在新品、在对产品的专注和服务上,会对其他厂家有所启示。

文章来源:拙言

围观 312

页面

订阅 RSS - MCU