当年,为什么 IAR 打赢了 Keil ?
关注星标公众号不错过精彩内容作者 | strongerHuang微信公众号 | strongerHuang回到15年前我那会儿还在读大学老师还在用Keil for C51 教我们 AT89C51、Protel 99SE 画电路图、Visual C6.0验证C语言基础语法......但那个时候学校实验室汇聚了一波参加电子设计竞赛的小伙伴其中有一款单片机非常的火爆几乎每一位要准备参加电子设计竞赛的同学都在玩那就是TI公司的MSP430 全国大学生电子设计竞赛应该是由TI冠名赞助了所以你会看到“TI杯电子设计竞赛”。MSP430早在1996年就推向市场了凭借“超低功耗”火爆了全球而且持续火爆了十多年。那个时候MSP430最流行的开发工具就是 IAR EW430如果没记错的话Keil是不支持MSP430的。当年我首次使用IAR 就是用来玩MSP430用来起感觉比 Keil 要“复杂”一些。但当时只用了一些基础的功能很多都是默认配置。再加上那个时候精力旺盛也愿意折腾所以感觉也不是很难。毕业工作后的几年时间用过很多单片机其中ST意法半导体的STM8、STM32用的最多。所以Keil 和 IAR同时都在用最开始用Keil做项目比较多......但在后面做项目的时候发现用Keil MDKAC5编译器编译STM32代码时明显感觉比不过IAR EWARM当时我还在用V7版本后续有些项目就开始用IAR作为开发工具了。下面就来简单聊聊当年为什么IAR打赢了 Keil 1、IAR编译速度更快在Keil AC5编译器时代如果你同时在 Keil MDK 和 IAR EWARM你首先能感受到的就是它俩编译速度的差异。你写一个流水灯Demo可能感受不到差异但用它俩做项目特别是大项目差异就会很明显。额外描述一下2015年Keil 推出了基于 LLVM/Clang 架构的 AC6编译器AC6解决了AC5编译速度慢的问题但初始版本的AC6和AC5兼容性很差用AC6编译器编译AC5的工程会报一大堆错误。后面推出的版本虽然做了一些“兼容性”的改进但依然存在兼容性问题导致很多工程师不敢轻易“升级”到AC6所以到目前很多工程师还在坚持用AC5做项目。2、IAR生成代码效率更高如果我们的项目追求代码运行效率比如比如无人机飞控系统的姿态解算、电机控制等门禁系统的人脸识别等。同样的一段代码用不同编译器编译后其代码运行时间越短说明生成的代码效率更高。3、IAR生成代码更小生成代码bin或hex大小直接决定单片机Flash存储空间大小。IAR相比Keil具有极致的“代码压缩”能力通常情况下IAR比Keil小10-15%.当年单片机的Flash存储空间还是比较珍贵Falsh容量越大价格越贵就像手机一样512G手机比256G手机贵好几百苹果手机更是离谱到20000元价差。所以编译代码越小或许能让你项目用上更小Flash的单片机对于批量生产的项目直接影响其利润。4、IAR 支持多级子目录只要你做的项目稍微大一点都会包含多级目录。Keil这么多年来被吐槽最多的一项就是不支持多级目录。导致工程管理目录和项目实际的文件夹结构“不一致”。5、IAR 支持MCU种类更全像大家熟悉的MSP430、STM8这类MCUIAR支持但Keil是不支持的。早些年IAR几乎支持市面上绝大多数MCU而Keil支持的MCU就有限。6、IAR 自带工具更齐全IAR内置了C-STAT代码静态分析检查工具支持包括 MISRA C:2012、MISRA C:2004、MISRA C:2008 等多种编码标准的规则检查。IAR自带 C-RUN运行时分析工具用于检测运行时错误如内存泄漏、数组越界等 。IAR自带C-SPY调试器功能强大原生支持多种RTOS插件如FreeRTOS。7、更多优势IAR相比Keil在某些方面存在优势以上列举的只是工程师平时开发过程中比较关注的一些点其实还有更多细节上的优势。当然IAR和Keil各有各的特点也各有各的优势IAR打赢Keil只是在自身优势的那些方面赢了。Keil其实也有很多地方相对IAR有优势比如Keil支持ARM的硬件在线调试、Keil对电脑硬件要求更低、Keil授权费更低等。所以IAR和Keil没有谁更好一说只有适合你自己的才是最好的。------------END------------DDR4很缺你们的产品改DDR5了吗多核MCU相比单核MCU有哪些优势嵌入式开发中有限状态机可以优雅地管理复杂状态逻辑