协助同事分析代码,解决了一个困扰他们多年的代码Bug。附图1的代码是同事设计的串口数据发送的状态机函数。由于存在定时器中断以及串口发送完成中断会同时调用该函数的情况。为了实现对表示当前状态的变量uchTxState的互斥访问,他们使用了另一个变量isBusy,通过该变量的置位和清零达到类似信号量的效果。当isBusy为true时,表示有其它中断正在调用该函数,另缓存事件并返回。产品推向市场之后,有一定的概率出现发送完成中断事情丢失,导致发送状态机一直处于发送状态,状态死锁,无法再次发送数据的情况。在对比了汇编代码之后,发现在编译生成的代码中isBusy和 uchState的赋值并非C语言的执行顺序。C语言中,执行顺序应该是先执行isBusy=true,再执行unsigned char lstate = uchTxState;因为lstate = uchTxState并非原子操作,需要通过变量isBusy=true实现uchTxState访问以及修改的临界区。实际汇编语言却是先执行了unsigned char lstate=uchTxState,再执行isBusy=true。当lstate=uchTxState执行到一半时发生串口发送完成中断,正在执行的程序被打断,而isBusy还依然是false,串口发送中断将会完整执行状态转换代码,再执行完返回到打断处继续执行时, lstate的数值却是串口发送完成中断事情处理之前的状态,导致了串口发送完成事情的丢失。再深入排查发现,这是因为IAR编译器开启了高等级的优化,并使能了Static clustering的优化选项。IAR对该优化选项的说明为:When static clustering is enabled, static and global variables that are defined within the same module are arranged so that variables that are accessed in the same function are stored close to each other. This makes it possible for the compiler to use the same base pointer for several accesses.代码中的变量lstate以及eventCount的地址靠得比较近,IAR优化时自动把指令eventCount++以及lstate=uchTxState放在一起,在对两个变量操作时,只需要在[Rx]寄存器中设置一次这两个变量的基地址,可以节省几条代码。解决方法:通过在函数void statemachine(unsigned char event)的上方加上编译选项#progma optimize=none,对该函数取消代码优化。
2、iar破解iOS15的safari插件太火了做了个iar插件,居然排名第二,这能在我iOS开发职业生涯中吹一辈子,哈哈
3、iar具有哪些优点再不打击科技领域的盗版IDE软件,芯片自研再多也是缺条腿。1,没有欧美的:KEIL、IAR、GCC;;自研的国产MCU/CPU怎么设计代码和编译?2,没有美国的:CCS、VisualDSP++ ;自研的国产DSP,用什么IDE来设计和仿真?3,没有美国的:Vivado、ISE、Quartus;自研的国产FPGA,用什么工具编译和综合?4,目前一套KEIL或者IAR软件,价格大约4万人民币?为何这么贵?!因为国内没有可以替代的!为何没有替代?因为都去用盗版的,结果是:国人越是用盗版,越是没国内的企业去研发。5,为何KEIL不怕你们你们盗版?因为跟微软一样的套路,你个人玩玩,它不管你,你公司用,它就给你发律师函收费。欧美的:“放小鱼,抓大鱼”模式,同样在:AUTOCAD,UC,PROE等等专业软件玩的很溜。
4、iar美国奇瑞这些牌子分得清吗?十多年前伤疤好了?就这么多品牌和名词往前这么一放。能分清是什么车型吗?奇瑞、星途、星纪元、iAR、捷途、TJ-1、瑞虎9、旅行者、瑶光,是奇瑞刚发布的品牌战略中的一部分。我不知道您能不能分得清,反正我干了10多年的汽车媒体,看完了真的是一头雾水。有纯电车型品牌,还有但是在看这些品牌里边的技术平台,大多也就是外形内饰设计不太一样,比如星途是奇瑞高端品牌,是星途的纯电系列。iCAR又是奇瑞的新能源电动品牌,我都记不清奇瑞推出过多少品牌了。十多年前,奇瑞就搞了开瑞、瑞麟、威麟、观致、凯翼等等一堆品牌。当时也是信誓旦旦,再后来就不了了之了。因为每个品牌都没有太能打的车型,后也就只有奇瑞还能让人记住,这同样的问题又犯了。这些品牌之间的差异化并不明显,产品力)重复也很多,很难让人记得清楚,是说普通人多就能记住一个品牌里边的1个要素,而这7个还是有主次之分的。所以奇瑞这次又推出这么多品牌(车型),这是好了伤疤忘了疼吗?
5、iar注册MCU有8位、16位及32位MCU,位数越多对应结构越复杂,但处理能力越强,可实现的功能也就越多。1、32位MCU:高端布局&料号数量上海内外存在差距,兆易创新是大陆龙头,国民技术发展迅速。我们统计了海外/国内分别近7000/500+款32位产品:(1)ARM Cortex M内核在海外均是主流。海外方面,除瑞萨以自研为主外(占78%),M系列内核产品占比高达81%,自研内核产品占16%。国内方面,自研内核较少,M系列占比超过90%,另有少量厂商推出基于RISC-V、Xtensa内核的产品。(2)高端产品领域,海内外存在差距,兆易创新是大陆龙头,国民技术发展迅速。ARM内核包括中高低端不同产品,使用M7/33/35P/55高端内核是厂商能力的直观体现之一。目前海外大厂基本是高中低全面配齐,低/中/高端的料号数量分别占38%/52%/10%。而大陆厂商在高端领域的布局仍有较大进步空间,其中兆易创新为领先,2020年10月正式推出基于ARM Cortex M33内核的高性能产品,此外国民技术研发基于M7的高性能产品,预计2022年推出。(3)料号数量上,海内外存在10倍差距,大陆厂商发展。海外厂商中除微芯、德州仪器32位产品在300-500种以外,其他厂商均有上千颗料号。而大陆方面,目前领先厂商包括兆易创新(370+颗)、华大半导体(100+颗)、国民技术(80+颗)。2、8位MCU:大陆厂商中中颖电子一骑绝尘。海内外厂商的8位产品料号数量普遍少于32位产品,这里我们统计了海外5家厂商1600余款、大陆4厂商的122款产品:(1)海外自研架构为主,大陆8051架构为主。8位产品内核方面,总体可以分为自研内核、基于8051开源架构的内核两类。海外因8位产品开发年代较早,大多数使用自研内核,占我们统计数据的81%。国内基本都采用8051架构,我们统计的厂商中仅芯海科技使用自研内核。(2)料号数量看,海内外同样存在差距,大陆厂商中中颖电子存在优势。海外大厂料号数量在100-600不等,而大陆方面除中颖电子推出80余款产品外,其他厂商料号数量均在30颗以内。3、生态建设:硬件开发工具较完善,软件配套仍有欠缺。因工程师需要在MCU的基础上做定制化开发,良好的生态环境可使得开发过程更便捷。我们对大陆7家厂商以及海外(含中国台湾地区)的5家厂商从以下三个维度进行对比:(1)硬件:主要指开发板及其他辅助硬件,大陆各企业均有官方提供开发板,该环节海内外无明显差距。((2)软件:目前大陆大多数公司直接采用第三方开发工具,包括Keil、IAR等,其中兆易创新支持的第三方工具较多。海外方面则选择更为多样,并且部分厂商提供自研开发工具。(3)学习资料:相对海外厂商,国内厂商在中文学习资料更具优势。同时也学习海外厂商,建立开发者社群、推出大学计划等,建立本土优势。4、下游应用布局:大陆从消费电子切入,往工业及汽车拓展。海外厂商基本是消费、工业、汽车全面布局,但各家侧重不同。其中微芯(重8位)、意法(重32位)重点布局消费、工业,恩智浦、瑞萨重点布局汽车。大陆方面,大多数厂商选择首先切入性能要求较低的消费领域,然后向工业级切入,其中兆易已从消费为主逐步向消费、工业并重切换。而车规产品,因在产品性能、可靠性、寿命等方面要求更高,因此目前大陆厂商涉足较少,几乎仅在与安全相关性较低的车身模块有量产产品,包括兆易创新、中颖电子、芯海科技等,而动力域等高端模块几乎没有涉足。5、团队结构:团队背景各具特色。从团队背景看,各有特色:兆易创新“清华+留美工作经验”的技术出身管理层特色突出;中颖电子管理层与技术人才大量来自中国台湾地区;国民技术以国内人才为主,2018年以后新任董事长带领公司转型;芯海科技管理层为ADC专家,团队国内人才偏多;乐鑫科技管理层来自新加坡,技术人才来自全球各地。6、财务指标:2020年大陆龙头营收近10亿,对标海外龙头仍有20倍空间。从营收体量上看,海外厂商中恩智浦、瑞萨、微芯MCU业务2020年营收体量均超过200亿人民币,而大陆厂商中2020年仅几家达到10亿营收上下的水平,在“贸易摩擦+缺货潮”的催化下,2022年将有数家厂商有望步入数十亿营收的梯队。#iar简介#
6、iar 官网标榜“软硬兼施”的硬件码农,来看看你们懂哪几个软件设计语言?1,很多硬件码农,原理图直接COPY厂家的DEMO,代码用厂家提供的KEIL/IAR的库,然后用VB或者VC写个串口或者USB的通讯上位机,就自吹自擂自己“软硬通杀”,一副技术达人的嘴脸,真是不知道天高地厚,下面附图的软件语言,你不精通5款以上,请不要说你自己做软件的。。就好像:你做硬件的,不精通5款以上不同架构的MCU/CPLD/FPGA/DSP,不要吹你的硬件设计能力有多强;;你做模拟电路的,如果没有设计过射频收发电路/模拟数据采集和处理/HIFI功放电路/高频功率放大电路等等,不要吹你的电路设计电路有多强。2,国内某些技术员的浮躁,从硬件应用层到软件设计层,都让人堪忧。技术创新不多,山寨能力倒是很强;;;产品的性能和稳定性从不下功夫,偷工减料拼低价倒是狠得很。
7、large如何看待M27 IAR在美军中的定位?步枪乃马润之本,不可偏废步枪而专习坦克。步枪已可击毙外星太君,榴弹坦克实乃奇技淫巧……我忠勇臣民,各个荷弹户户配枪,是为了随时端枪杀贼,岂能言废#iar简介#