硬體開發時的一些思維慣性和軟體人有些地方不太一樣 這往往會在合作時雞同鴨講甚至隱性的造成失敗
研究所時代研究的是即時系統及硬體虛擬化技術 第一份工作在品牌系統廠做 Android 開發 而後隨著職涯發展逐漸朝上層 APP 及 Web 前進 韌體到軟體走了一個循環
預計將過往切成幾個階段,分享一下各階段的心得 (學生 → 大公司 → 新創) 也會聊一下開發的一些經驗及軟硬整合時有哪些需要注意的地方
軟硬整合漫漫路軟硬整合開發經驗談忻旅科技 RevtelTechSam 黃奕翔
View Slide
活動緣起五載復相逢,軟體二三事:以分享來試著替自己的一些過往經驗做個小結- 印刷電商 + GatsbyJS○ 投影片:https://revteltech.pse.is/lixiang-hiprint-sharing○ Medium:https://revteltech.pse.is/hiprint-sharing- React Native 五年回顧○ 投影片:https://revteltech.pse.is/react-native-sharing-3○ Medium:https://revteltech.pse.is/rn-5-yrs重點比較不完全在技術上- 比較想聊聊 技術 / 管理 / 領域 / 商業 上的平衡- 只是一家之言,也未必是最佳解
AGENDASelf Introduction & Preface自我介绍 & 前言1Conclusion總結3Experience Sharing經驗分享:起承轉合2Question & Answer意見交流4
1 公司介绍 & 前言Self Introduction & Preface
忻旅科技 RevtelTech軟體方案公司:由 開發 / 顧問 / 維運 / 管理 找尋商業可能- 合作夥伴:海外獨角獸到本土新創- 合作內容:專案、產品到合開公司- 技術範圍: Web、APP、IoT 到內部系統- 開發領域:電商、物流、醫療、金融、展覽、印刷、旅宿及教育等
黃奕翔Sam自我介紹台大資訊系 / 所 : 嵌入式系統暨無線網路實驗室Garmin Platform Team Engineer / ( ... ) Software EngineerRevtelTech 忻旅科技 / EcultureTech 奕果雲端 Co-Founder---嵌入式系統 openCSL 開放式教材 / ARM Accredited EngineerFirmware → Linux driver → Android framework → APP / WebEngineer / Consultant / Manager (CEO or CTO)
PC → NB → Smart Phone → Tablet → IoT → AIoT → ?碩士班 → 創業個人經驗的拋磚引玉 / 心得分享前言2008 2018
2 經驗分享:起承轉合Experience Sharing
NTU Embedded System andWireless Networking Lab臺大嵌入式系統 暨無線網路 實驗室起
在 A 機器上編譯 B 機器能跑的程式OSSF Project - 開放式課程利用 Ubuntu (virtualbox) 學習嵌入式系統Linux kernel/filesystem/interrupt/...Cross compile基於 ARM Platform (by QEMU)Opencsl
Opencsl
OpencslWhy emulate arm board by QEMU ?Raspberry Pi (from 2012) / Arduino / …openMokomeego/moblin/symbian/...
師資陣容郭大維 老師施吉昇 老師逄愛君 老師薛智文 老師嵌入式系統暨無線網路實驗室研究領域• 作業系統• 嵌入式系統• 無線通訊
即時系統Real-Time Computing系統中有很多任務,每個任務有其period / execution time / deadline,要確保所有 task 都能執行完畢技術的深刻在其衍生義Round-robin: 分時系統
Real-time scheduling = 一套檢驗方法 + 一套排程方法Real-Time ComputingWorst case evaluationRMS (rate-monotonic scheduling)EDF (earliest deadline first)Scheduling → Resource Management
ProjectsPAC DUO• 模擬器• virtual NIC QoS control中華電信服務不中斷• os virtualization• queueing theory
小結系統程式 / 作業系統 / Compiler / ...學到的東西會在某時間點匯流processing migration / Virtualization ...看技術從其發展歷史看起many-core vs. cloud-computing對技術應用的想像c
擔任 Garmin軟體工程師 3 年Engineer Life承
在 Garmin 的三年參與專案• PND x 2• Handheld x 1• 車機 x 1
主要內容圍繞 android / linux在 Garmin 的三年工作內容• sensors: G sensor / M sensor /gyroscope / Pressure sensor / UV sensor• audio system• others: uboot / utility / touch / 開板子 / …
SensorHAL
Sensor讀各種 sensor• spec• android sensor arch• garmin integration
Sensor產品測試的重要性
AudioLinux 的巨大優勢: conectivity 及 multimedia再次看到巧妙的設計
Audio
Audio品質超高的程式碼• delay 的必要性• echo cancellation世界級軟體的等級差距
小結硬體其實沒那麼簡單• const 變數的浮動• 超過 4 根 gpio 能表示的硬體版本(第八版之後量產!)軟體工具很重要• 大量的 auto git checkout +symbolic link• 適度引入 wrapper
新創公司軟體工程師轉
衛教資訊女性體溫會隨著排卵而有週期性的變化• 黃體素會讓子宮易於讓胚胎著床,同時提高體溫• 追蹤體溫變化可以推算適合的受孕時機• 請用來推算危險期(不要算安全期)
基礎體溫計2021 年的今天,還是蠻多人手動填表最好是 IoT 一下 !• 量一量用藍牙傳比較棒!• 硬體不好做- 準度- 認證- 外觀設計
乾脆用別人的體溫計好了!:市場 + 硬體都 ready =
好孕來基礎體溫計 + 自製 app
開發步驟目標能和該溫度計相容 (BLE) 的Android / Ios app驗證是否可行 → 破解藍牙 4.0 protocol → app 開發
驗證是否可行只能做到有限度的驗證app 會將資料送到 serverside 才拉回• 使用 Charles proxy 輔助
破解藍牙 protocol使用邏輯不好確定,一天只能傳一次• 後來發現是硬體限制可用工具• ios 錄製 HCI / android 錄製 nfc payload• android app decompiler• root 過的 android system
不斷修正方向
不斷收集資料
解碼中……
突破口什麼東西無法混淆?• 系統 API• debug message
終於成功
開發中介 app避免最後無法整合
小結推廣及營運!• 逃不開的廣告• 開發時專注在功能,上線後著重在體驗APP 的開發方式是否有可改進之處?
忻旅科技共同創辦人Revtel TechTech Lead & Co-founder合
智能藍牙貨櫃鎖三方角色• 傳產方:進電子件• 硬體方:硬體及機構設計• 軟體方:所有軟體,app + cloud + firmware傳產轉型
使用情境• 接近時自動開鎖• 支援磁扣• 一次設定多組使用者• 使用者有權限分別• 電源管理• 開鎖紀錄管理
軟硬整合開發軟體架構選擇• 規格化 (Restful / ...)• hybrid app硬體方案評估• 追求掌握度及量產難度可控
開發過程
我們可能想錯的事 … ?智能化只是輔助!• 安全性:按鈕 / 螢幕 ?• 考慮返修轉型不是第一版就要ready!• feature 上規劃要考慮現實情況,eg. 產測
測試?引入 testcase確保高階邏輯完整性• lock logic• menu logic• firmware logic
開源及區塊鏈冷錢包開發
3 總結Conclusion
總結• 工程師鄙視鏈• 思考模型 vs.物理限制軟體人及硬體人的差別• 考慮營運及量產• Java / PHP 仍舊是好的選擇• Scrum ?經驗的重要軟體創造價值,硬體賦予可能