你用的mcu漲價了,,這還不是最壞的結果,。過去20多年里芯片漲價,,半年后基本上都會緩和下來。今年不一樣,,接近年底了,,還沒有任何跡象表明明年何時恢復供應,很多企業(yè)損失慘重,。
現在的情況是很多型號的mcu,,原廠直接告訴你一句話“斷供”,有錢都買不到,。資本同樣是逐利的,,僅有的產能肯定轉做利潤更豐厚的芯片。
某些替代的芯片能買到,,雖然無法完全兼容,,但功能上可以實現100%替代,而切換平臺基本上等于重新開發(fā)和測試,。
壞消息越來越多,,市場傳言莫衷一是。轉換mcu的產品成了企業(yè)最大的危機,,不僅騰不出人員開發(fā)新產品,,而且很有可能原產品軟件工程師已經離職了,那怎么迭代維護升級呢,?老板想哭都沒人理,,但危機卻讓人更加懂得珍惜人才,而從某種意義上來說,,關鍵還是創(chuàng)始人是否能夠從危機中看到未來的機會,。
這次大缺貨的教訓,讓很多創(chuàng)始人意識到供應鏈的重要性,,深刻地認識到一個樸素的道理,,如何讓代碼高度復用,?這是降低開發(fā)成本,快速應對危機最有效的軟件開發(fā)管理策略,。
雖然看起來都是軟件,,但開發(fā)(電子產品的)嵌入式軟件和計算機軟件依然差別巨大。盡管IT技術高速發(fā)展了30多年,,軟件開發(fā)技術已經有了很大的進步,,但電子領域的專家與計算機軟件專家還是沒有很好地跨界整合,,從而導致企業(yè)普遍缺乏科學的軟件工程技術管理方法,。不僅軟件難以重用,而且擴展和維護難度很大,,長期以來開發(fā)成本居高不下,。
從軟件開發(fā)來看,軟件工程與計算機科學(站在電子技術領域的角度來看,,可以歸類為嵌入式計算機科學)是完全不同的兩個領域的知識,。其主要區(qū)別在于人,因為軟件開發(fā)是以人為中心的過程,。如果考慮人的因素,,軟件工程更接近經濟學,而非計算機科學,,所以如果不改變思維方式,,則很難開發(fā)出既好賣成本又低的好產品。
那到底如何才能實現軟件高度復用呢,?其實計算的本質和共性就是數據流(Flow),,顯然數據存儲、數據傳輸……所以可以將各種軟件按照分類抽象為節(jié)點(代碼塊),,通過AWFlow Design設計器實現拖拽式編程,。如下圖所示,程序塊間通信如同水流管道,,每個程序塊間的關系一目了然,。尤其是虛擬設備接口,已經不是單個設備的業(yè)邏輯軟件開發(fā),,而是設備與設備之間的軟件開發(fā),,而是整個系統(tǒng)與網絡的軟件開發(fā),真正實現物與物之間的Flow開發(fā),。
節(jié)點的連接軟件,,通常稱為業(yè)務邏輯軟件,既可以使用廣州致遠電子定義的fscript腳本編程,,更方便的使用AWBlock積木式圖形化卡盒設計器編程,,如同少兒編程軟件Google的Blockly,、微軟的MakeCode那樣編程,而AWBlock是廣州致遠電子使用c語言設計的,,可以直接運行在各種mcu上的軟件設計器,,因此AWBlock開發(fā)方式結束了多變的用戶需求問題。
說句實在話,,再豐富的節(jié)點,、組件資源,也無法滿足所有的應用場景和用戶需求,,不可避免地會出現用戶定制化的內容,。無休止地投入研發(fā)資源定制開發(fā)成本極高,這是不現實的,。而由用戶自行二次開發(fā),,無論是底層的C/C++開發(fā),或是Lua,、JS,、Python等通過腳本語言開發(fā),甚至是將業(yè)務收縮,,僅保留行業(yè)相關配置,,比如,AT命令,、運動控制命令等,,學習這些知識始終是有門檻,需要有較強的專業(yè)背景,。
AWBlock拼圖式軟件開發(fā),,無需懂得相關的軟件知識,開發(fā)者可以將自己想要表達的內容和想法,,很自然地通過AWBlock描述出來,。
當將這些軟件都集成在一起時,就是EsDA嵌入式軟件設計自動化工具,,還包括AWorksLP(或Linux等操作系統(tǒng)),、AWTK圖形用戶界面和ZWS PaaS IoT云服務。
EsDA可以使應用程序框架變得非常清晰,,徹底解決程序塊間通信容易混亂的現象,,而且也能解決狀態(tài)機復雜的狀態(tài)管理和事件處理。
下面示例的流圖實現了一個Modbus-RTU與MQTT之間的一個協(xié)議轉換應用,,其中主要分為兩條數據流,。
Modbus至MQTT
modbus_master_poll:Modbus主機輪詢節(jié)點,該節(jié)點運行Modbus主棧功能,可添加多個目標從設備,,以及每個從設備所需要輪詢讀取的寄存器,。節(jié)點根據配置參數,周期性讀取所管理的從設備寄存器值,,并傳遞至fscript處理節(jié)點,。
fscript:腳本節(jié)點,將modbus寄存器數據轉換成MQTT數據定制化邊緣計算(對數據進行相關計算和封裝處理),。
mqtt_out:MQTT上報節(jié)點,,將數據上傳至用戶指定的云服務器。
MQTT至Modbus
mqtt_in:MQTT下行節(jié)點,,監(jiān)聽并接收云端請求,,并將請求消息傳遞至fscript處理節(jié)點。
fscript:腳本節(jié)點將MQTT命令轉換成對應Modbus從機寄存器值定制化業(yè)務邏輯(如可組合多個命令觸發(fā)系統(tǒng)事件等),。
modbus_master_out:Modbus主棧從機寄存器修改節(jié)點,,負責上級節(jié)點傳遞的寄存器值寫入到對應從機設備中。
modbus_master_out ,、modbus_master_poll均為本地自定義的非云端庫的節(jié)點,紫色代表本地加載節(jié)點,。aw-flow節(jié)點庫已有可用的Modbus主棧節(jié)點,,由于已有的節(jié)點設計適用于從機數量和寄存器數量固定不變的情況,當從機設備或對應寄存器數量發(fā)生變化時,,需要重新拖拽相關節(jié)點才能實現,。而在此應用中,從機設備和每個從機寄存器的數量是可變的,,所以當前節(jié)點并不適用,,需要一個可以支持設備和寄存器數量動態(tài)變化的節(jié)點?;诖?,需要將這樣的Modbus應用場景,重新抽象為一個新節(jié)點,,但該節(jié)點與原節(jié)點并不沖突,,適合相應場景的另一種形式,同樣是通用Modbus應用節(jié)點,。后續(xù)可以標準化,,添加到節(jié)點庫中。
EsDA的開發(fā)始于2006年,,自始至終圍繞 “幫助用戶解決非核心域的問題,,讓用戶專注于自身產品核心域的算法、行業(yè)需求、用戶體驗,、市場營銷,、工藝創(chuàng)新和生產制造”的思路而展開的,因為所有與底層相關的差異化軟件,,以及各種通信協(xié)議等軟件的開發(fā),,則是我們的核心域。
在產品開發(fā)中,,如果你是一個有很多好的idea,,且熱衷于創(chuàng)造的人。但又由于缺乏更專業(yè)的軟件開發(fā)功能,,可能一時難以編寫復雜的軟件代碼,,最終無法將自己的想法轉變成現實,那么選擇EsDA則是最佳的捷徑,。
回頭再來看硬件設計存在的問題,,一個簡單電路的器件,通常來源于幾個不同的廠家,。焊接到pcb,,不僅占用加工時間,而且多個器件組合而成的電路,,其可靠性具有很大的離散性,,因此使用分立器件設計電路不如使用模塊。
顯然,,需求一旦確定,,則很容易幾個小時之內焊接好原型機。如果空間不受限,,則立即可以批量制造,。我們設計了兩種底板,分別為8/12個擴展槽,,其中一個插電源模塊,,另一個插通信模塊,其它的擴展槽可以任意插入數字輸入輸出和模擬數據采集模塊,。需要編程嗎,?不需要!這是一個獨立的邊緣計算控制器,。
邊緣計算芯片預置了通用代碼,,通過配置即可實現所需要的功能。方法一是燒錄功能配置文件,,方法二是通過主機發(fā)送命令綁定數據,,就可以配置為任意功能的控制器,比如,3路輸入,、5路輸出,、2路熱電偶溫度采集和1路4-20mA的接口,即可實現柔性化硬件設計和任意電路擴展,,從而極大地降低了設計成本,。
企業(yè)在發(fā)展中,競爭是十分殘酷的,,總會遇到重重困難和各種各樣的競爭者,。比如,公司離職的員工會拉走你的人,,和你做一樣的產品,;也有競爭者模仿生產和你兼容的產品,他們采取低價銷售的方法和你爭奪客戶,,怎么辦,?人都是從青澀的年紀走向成熟的,多少都會有無奈的抱怨,。但隨著時間的推移,,很多人卻沒有被打倒,而是愈挫愈勇越做越好,,是什么原因,?成功者深刻地認識到,困難是最好的恩人,,對手是最好的老師。因為凡事都有對立面,,要有反對你的人,,你才能將事情做得更好。如果你做什么都很順利,,就很容易失敗,。有人反對你,有人和你競爭,,你應該感到高興,,因為絕好的機會來了。所以一定要知道,,盡管對手能夠通過模仿加入競爭,,卻無法偷到你明天的創(chuàng)新。因為最好的防御就是進攻,,要敢于打破自己原有的優(yōu)勢形成新的優(yōu)勢,,用開闊的胸懷看待世界,那世界慢慢就是你的。