《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結合時)簡化代碼和應用開發的不同工具和方法 通常針對特定領域/用例 能使非程序員也參與到應用構建和自動化中來,比如:數據庫報表生成器,網站生成器,移動應用生成器,通?;跇藴驶涂芍赜玫臉嫿▔K和抽象 最終結果可能看起來不像傳統的應用或程序 圖形化/視覺化 聲明式的 基于程序綜合(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愛亞系統”