大家好我是科岩。
害,你是单纯看了标题所以进来的吗?
哈哈,不要多想,一个程序员参加的会还能是个什么会(当然是没什么女孩纸的会,让老婆放心的会)。
我上周六去参加了一个活动,不知道你们听没听说过一个国产嵌入式操作系统RT-Thread。
他们最近在举办一个活动「嵌入式代码质量与开发效率技术沙龙」。
刚好北京这场是周六我还有时间,再看看这些议题,我一看到活动推送就立马报名了。
举办会议的地方在西3.5环的一个叫「紫荆花孵化园」的地方,是一个孵化创业项目的园区,应该是能够给一些线下活动提供场地。
我知道RT-Thread经常举办嵌入式技术相关的活动,这还是第一次参加,出乎意料,来的人竟然非常多,我到的时候已经没有多少空座位了,只在最后排找到了位置。
临近分享开始,来的人越来越多,过道和后排都挤满了人,大家的热情还是很高啊。
看这照片就知道没骗大家,都是男同志吧(可以按发量论资排辈了)。
第一个分享嘉宾是一位嵌入式老前辈何小庆,做嵌入式已经快30年了,这个资历应该比很多听众的年纪都大。
何老师分享了物联网系统安全的相关知识。
我以前也听过很多老前辈、老师傅的分享,大都是讲讲国际环境、政策市场什么的,让我惊讶的是何老师讲的嵌入式安全非常接地气,有技术干货又跟得上时代。
比如他讲到瑞萨利用MultiZone实现了一个多分区运行嵌入式软件的物联网demo,这个demo可以实现安全联网和安全的本地外设控制。
我后来查了下相关资料,是瑞萨近期才实现的物联网安全相关的案例。
再比如他讲到的Arm PSA(Arm 平台安全架构)认证也是Arm近几年才推出的安全认证规范,为了通过这个规范要使用Arm-v8m的指令集,基于硬件隔离技术TrustZone。
这些技术都是嵌入式设备上近2年才有的。
回来后我到百度查了下何老师,竟然找到了他的个人网站:www.hexiaoqing.net。有兴趣的朋友可以看看,网站一直在更新,何老师经常参加国内外嵌入式会议,也持续为一些杂志、网站撰写文章。
这就是参加类似技术沙龙的好处吧,能够接触到业界的大牛,看到何老师这样的前辈,接近30年的职场生涯依然对技术保持关注与热爱,这应当是每一个嵌入式人的学习榜样。
之后是来自鉴释科技的两位大佬。
这家公司我之前没听说过,所以去查了以下,这是他们的官网https://xcalibyte.com.cn/,查完差点跪了,这家公司技术实力太强,都是科学家级别的大牛。
创始人都是三星、华为、诺基亚、英特尔里面搞编译器的世界级科学家,编译器啊同志们!科学家啊同志们!
吴翔老师分享了一个我之前没听过的技术「WASM」,全称是Web Assembly,简单说就是可以在WEB浏览器上执行汇编指令。
汇编指令大家都知道,是高级语言比如C/C++/java等生成的,在浏览器里直接执行这些高级语言生成的汇编还是挺神奇的,反正我是不知道啥原理。
这个技术用在硬件上一种场景就是能够在低性能嵌入式设备中运行一个wasm虚拟机,高级语言编成wasm汇编,直接就能运行在单片机上。
如果在单片机上能用极少资源运行一个虚拟机,还能拥有较高的执行效率,这样就比较有趣了,能做些有意思的事,比如可以对嵌入式固件进行加固处理,让黑客无法逆向。
另外一位鉴释的老师分享了嵌入式系统开发中需要注意的一些代码安全问题。
比如代码漏洞、逻辑错误,使用不安全的函数等等。
他提到了一些与代码安全和软件漏洞相关的规则:
•BUILTIN RULE•CERT C•CERT CPP•CERT JAVA•CVE•OWASP•MISRA
这些规则我查了下,可参考性还是很强的,如果在你的项目里按照这些规则编码,绝对能够提升项目的安全性与健壮性。
鉴释的产品是一个叫做「爱科识」的静态代码分析工具。
静态代码分析工具不知道大家都用过没,这玩意通常只在大厂里才能接触到,一般的嵌入式小厂基本都是咱打工人人肉当分析工具。
对较大、较复杂的软件项目来说,静态代码分析工具还是非常有必要的。
在代码写完还没执行的时候就能查出有哪些漏洞,杜绝可能引发的风险,这个阶段发现问题、解决问题所花费的代价其实是最小的。
目前静态代码分析工具做的比较好的都是国外的公司,鉴释利用他们的专利技术做出了比国际上的分析工具性能更好,更加易用的工具,虽然支持的语言、编译器还不多,但他们是一家非常年轻的公司,看好他们!
最后分享的是RT-Thread的大佬郭占鑫。
他讲了很多技术干货,关于提高开发、项目管理效率的持续集成、测试、软件调试的方法、工具的分享。
首先是软件开发管理,推荐使用git,可以使用github、gitee或者gitlab平台把项目代码管理起来,无论是代码review、提交bug都很方便。
这些平台支持一种叫做 CI(持续集成)的功能,简单说就是每次提交了代码之后,平台会自动编译整个项目。
这样的好处就是我们平时工作中可能对代码的修改量很小,改完非常自信以至于都懒得编译测试一下(编译整个项目的时间很长),持续集成功能就能帮我们解决类似的问题。
其次是关于测试,郭老师也分享了他们内部的自动化测试流程:
1.静态检查2.模拟器测试3.真实硬件测试
静态检查就是用静态代码分析工具进行代码检查,比如clang-analyzer、clang-tidy、爱科识。
模拟器测试是使用一个叫做qemu的工具,它可以用软件模拟硬件执行程序。
真实硬件测试是他们会搭建一个测试专用的测试箱,可以对开发板的IO、电压、电流、通信接口进行自动化测试。
最后是关于提升软件调试效率的一些方法和工具。
很多人做项目时,写代码的时间都不如调试的时间长,这样就要求我们必须提升调试效率。
提升调试效率有几个办法:
•充分理解需求•遵守代码规范•清晰的代码架构•必要的日志•合适的调试工具
看上去挺简单的,但在项目时间短、上线需求急的情况下,真正严格的遵守、执行还是有挑战的,不过如果代码量和复杂度很高的话,这是最有效且高效的办法。
接着是一些RT-Thread团队使用的工具分享:
日志组件:ulog;单元测试框架:utest;可视化系统调试工具:SystemView;针对Arm Cortex-M的错误分析库:CmBacktrace。
总之,RT-Thread的技术能力是业界有目共睹的,他们在实际工作中使用的工具和科学方法一定值得大家学习、借鉴。
以上就是这次沙龙的全部内容啦,是不是干货满满?
我收获非常大,感兴趣的小伙伴可以深入了解下这些议题里用到的软件、技术。
如果有机会的话,建议大家多参加些类似的活动,很多新技术在网络上、书本里是搜不到的。
鉴释和RT-Thread的公众号在这里,快去关注吧。
本次同性交友会总结到此结束,今天是周一,新的一周,大家加油!:)
---------------END---------------
文章到这里就结束了。
欢迎扫描下方二维码关注「科岩成果」~~~O(∩_∩)O~
你好,我是科岩。我做嵌入式工程师9年多了,目前在物联网创业公司任联合创始人。
我将持续分享个人的成长收获,帮助你提升技术能力与认知视野。另外我还听说,关注我的人个个都是人才,一起加油吧,人才们 :)