《1-12564-Is low code development suitable for embedded systems_CN - Brendan Pan.pdf》由会员分享,可在线阅读,更多相关《1-12564-Is low code development suitable for embedded systems_CN - Brendan Pan.pdf(27页珍藏版)》请在三个皮匠报告上搜索。
1、低代码开发适合嵌入式系统吗低代码开发适合嵌入式系统吗?IAR 中国潘锋(Brendan Pan)Agenda 什么是低代码开发?嵌入式应用的挑战 图形建模和代码生成工具 低代码开发实践 总结什么是低代码开发?什么是低代码开发?流行语(特别是与AI结合时)简化代码和应用开发的不同工具和方法 通常针对特定领域/用例 能使非程序员也参与到应用构建和自动化中来,比如:数据库报表生成器,网站生成器,移动应用生成器,通常基于标准化和可重用的构建块和抽象 最终结果可能看起来不像传统的应用或程序 图形化/视觉化 声明式的 基于程序综合(Program synthesis)基于约束/搜索 完全隐式Source:
2、Wikimedia低代码开发的利弊 缺点 减少自由度从而限制了适用性 如果有一把锤子,所有的东西看上去都像钉子 优化特定用例可能很困难 优点 减少了大量“样板”编程 通过减少自由度降低了复杂性 允许直接使用领域特定的抽象 直接使用合适的抽象来解决特定问题 信任应用生成器/代码生成器来实施抽象低代码开发的利弊一般来说,工具不可能通过观察一段C/C+代码来确定它在更高层次上做什么?分析工具通常只能发现与语言语义相关的问题-不能发现逻辑错误如果可以用自己的语言表达问题域的抽象,则可以在更高的层次上分析问题嵌入式应用的挑战 内存约束:有限的内存资源 功耗约束:有限的电池容量 时间约束:实时响应 外设依
3、赖:通常需要访问芯片的特定外设没有通用的端到端应用生成解决方案适用于常规嵌入式系统开发没有通用的端到端应用生成解决方案适用于常规嵌入式系统开发 (胆大陈述胆大陈述!)嵌入式系统的约束 应对 应用逻辑和硬件分离 应用逻辑形式化(Formalization)硬件抽象化(Abstraction)所以,嵌入式系统的低代码解决方案通常由以下部分组成:低代码工具:创建应用逻辑 硬件抽象层:自己或芯片供应商提供 粘合代码:将所有部分结合在一起嵌入式系统的低代码解决方案状态机:面向状态的形式化模型 一个系统的描述或模型,它在逻辑状态之间转换(例如:加热器开启加热器开启,灯光开启灯光开启,电电源开启源开启),由
4、外部或内部事件触发(例如:按钮按下按钮按下,计时器超时计时器超时,门关闭门关闭,鼠标单击鼠标单击)一个动态系统,根据当前状态以不同的方式反应外部事件 面向状态的应用领域 汽车应用,如仪表盘,车载信息娱乐系统。GUI应用程序一般 高级电动工具 售货机、HVAC系统、追踪系统、电梯 以及几乎任何其它具有面向状态的动态系统SourceTimePassTimeLeftevCDKey()/evCDKey()/H状态机元素 状态机的基本元素包括:状态(State)On,Off,Standby,.事件(Event)eUserPressedOn,eUserPressedOff,.动作(Action)Shutd
5、won(),ClearDisplay(),x=y+z,.转换(Transition)”Arcs connecting states”图形建模和代码生成工具低代码工具示例:IAR Visual State 用于设计、测试和实现嵌入式应用程序的图形工具集 基于UML状态机子集 生成C/C+/C#/Java代码 生成的代码可以使用接受标准C/C+/C#/Java的任何工具链进行编译 在模型层面可启用*变体处理*先进的验证(verification)和确认(validation)工具使用IAR Embedded Workbench进行构建和调试可以简化集成和提供更强大的调试功能在各种IDE中的工作流程
6、 与IAR Embedded Workbench的灵活性和紧密集成 可与任何IDE/工具链配合工作与项目接口State MachineAction FunctionsGlobal Variables defined in the state machineStatesSignalsInternal variablesOwn CodePlace event in queueCall APIsDefine functionRead/write globalsEventsVS API项目工作流程 使用IAR Visual State创建控制逻辑 添加自己的硬件抽象层或直接使用芯片供应商的设备驱动程序
7、/固件库 隐藏供应商特定的功能在你自己的层后(一般来说,即使你不不使用设计工具,这也是一个非常好的主意!)增加“关注点分离”(Separation of concern)隔离对硬件的依赖=方便迁移到新硬件低代码开发实践图形建模 使用选择的HAL抽象图形化设计状态机 使用仿真和验证工具,测试状态机设计 根据需要迭代修改 生成代码来自芯片商的BSP和HAL驱动 使用初始化代码生成器(如STM32CubeMX)创建一个基本项目.初始化片上外设、中间件、USB驱动程序、RTOS初始化、IP中间件等 低代码!合并所有生成的代码 在IAR Embedded Workbench中打开代码生成器生成的基本项目
8、,并添加IAR Visual State生成的代码编写精简代码或最小代码 用于处理状态机中的事件的基本无限循环在目标平台上构建和运行应用程序 程序可以在目标平台上构建和下载迁移到不同硬件 将HAL/驱动程序支持包替换为不同的包.模型的工作方式与以前相同总结总结 低代码工具在嵌入式系统软件中有其位置(并且少数工具已经存在很长时间!)低代码工具在解决特定问题时最有帮助 状态机和低代码开发通常用作团队中的每个人都理解的共同语言,从初学者到专家,手动编写代码的需求最小。低代码开发是高质量构建,增强和移植嵌入式应用程序的极高效方法Thank you/谢谢!Q&A欢迎关注IAR微信公众号“IAR爱亚系统”