$30 off During Our Annual Pro Sale. View Details »

[五載復相逢,軟體二三事] 軟硬整合漫漫路

[五載復相逢,軟體二三事] 軟硬整合漫漫路

硬體開發時的一些思維慣性和軟體人有些地方不太一樣
這往往會在合作時雞同鴨講甚至隱性的造成失敗

研究所時代研究的是即時系統及硬體虛擬化技術
第一份工作在品牌系統廠做 Android 開發
而後隨著職涯發展逐漸朝上層 APP 及 Web 前進
韌體到軟體走了一個循環

預計將過往切成幾個階段,分享一下各階段的心得 (學生 → 大公司 → 新創)
也會聊一下開發的一些經驗及軟硬整合時有哪些需要注意的地方

Sam Huang (sailplaneTW)

December 01, 2021
Tweet

More Decks by Sam Huang (sailplaneTW)

Other Decks in Programming

Transcript

  1. 軟硬整合漫漫路 軟硬整合開發經驗談 忻旅科技 RevtelTech Sam 黃奕翔

  2. 活動緣起 五載復相逢,軟體二三事:以分享來試著替自己的一些過往經驗做個小結 - 印刷電商 + 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 重點比較不完全在技術上 - 比較想聊聊 技術 / 管理 / 領域 / 商業 上的平衡 - 只是一家之言,也未必是最佳解
  3. AGENDA Self Introduction & Preface 自我介绍 & 前言 1 Conclusion

    總結 3 Experience Sharing 經驗分享:起承轉合 2 Question & Answer 意見交流 4
  4. 1 公司介绍 & 前言 Self Introduction & Preface

  5. 忻旅科技 RevtelTech 軟體方案公司:由 開發 / 顧問 / 維運 / 管理

    找尋商業可能 - 合作夥伴:海外獨角獸到本土新創 - 合作內容:專案、產品到合開公司 - 技術範圍: Web、APP、IoT 到內部系統 - 開發領域:電商、物流、醫療、金融、展覽、印刷、旅宿及教育等
  6. 黃奕翔 Sam 自我介紹 台大資訊系 / 所 : 嵌入式系統暨無線網路實驗室 Garmin Platform

    Team Engineer / ( ... ) Software Engineer RevtelTech 忻旅科技 / EcultureTech 奕果雲端 Co-Founder --- 嵌入式系統 openCSL 開放式教材 / ARM Accredited Engineer Firmware → Linux driver → Android framework → APP / Web Engineer / Consultant / Manager (CEO or CTO)
  7. PC → NB → Smart Phone → Tablet → IoT

    → AIoT → ? 碩士班 → 創業 個人經驗的拋磚引玉 / 心得分享 前言 2008 2018
  8. 2 經驗分享: 起承轉合 Experience Sharing

  9. NTU Embedded System and Wireless Networking Lab 臺大嵌入式系統 暨 無線網路

    實驗室 起
  10. 在 A 機器上編譯 B 機器能跑的程式 OSSF Project - 開放式課程 利用

    Ubuntu (virtualbox) 學習嵌入式系統 Linux kernel/filesystem/interrupt/... Cross compile 基於 ARM Platform (by QEMU) Opencsl
  11. Opencsl

  12. Opencsl Why emulate arm board by QEMU ? Raspberry Pi

    (from 2012) / Arduino / … openMoko meego/moblin/symbian/...
  13. 師資陣容 郭大維 老師 施吉昇 老師 逄愛君 老師 薛智文 老師 嵌入式系統暨無線網路實驗室

    研究領域 • 作業系統 • 嵌入式系統 • 無線通訊
  14. 即時系統 Real-Time Computing 系統中有很多任務,每個任務有其 period / execution time / deadline,要

    確保所有 task 都能執行完畢 技術的深刻在其衍生義 Round-robin: 分時系統
  15. Real-time scheduling = 一套檢驗方法 + 一套排程方法 Real-Time Computing Worst case

    evaluation RMS (rate-monotonic scheduling) EDF (earliest deadline first) Scheduling → Resource Management
  16. Projects PAC DUO • 模擬器 • virtual NIC QoS control

    中華電信服務不中斷 • os virtualization • queueing theory
  17. 小結 系統程式 / 作業系統 / Compiler / ... 學到的東西會在某時間點匯流 processing

    migration / Virtualization ... 看技術從其發展歷史看起 many-core vs. cloud-computing 對技術應用的想像 c
  18. 擔任 Garmin 軟體工程師 3 年 Engineer Life 承

  19. 在 Garmin 的三年 參與專案 • PND x 2 • Handheld

    x 1 • 車機 x 1
  20. 主要內容圍繞 android / linux 在 Garmin 的三年 工作內容 • sensors:

    G sensor / M sensor / gyroscope / Pressure sensor / UV sensor • audio system • others: uboot / utility / touch / 開板子 / …
  21. Sensor HAL

  22. Sensor 讀各種 sensor • spec • android sensor arch •

    garmin integration
  23. Sensor 產品測試的重要性

  24. Audio Linux 的巨大優勢: conectivity 及 multimedia 再次看到巧妙的設計

  25. Audio

  26. Audio 品質超高的程式碼 • delay 的必要性 • echo cancellation 世界級軟體 的等級差距

  27. 小結 硬體其實沒那麼簡單 • const 變數的浮動 • 超過 4 根 gpio

    能表示的硬體版本 (第八版之後量產!) 軟體工具很重要 • 大量的 auto git checkout + symbolic link • 適度引入 wrapper
  28. 新創公司軟體工程師 轉

  29. 衛教資訊 女性體溫會隨著排卵 而有週期性的變化 • 黃體素會讓子宮易於讓胚胎著床,同時提高體溫 • 追蹤體溫變化可以推算適合的受孕時機 • 請用來推算危險期(不要算安全期)

  30. 基礎體溫計 2021 年的今天, 還是蠻多人手動填表 最好是 IoT 一下 ! • 量一量用藍牙傳比較棒!

    • 硬體不好做 - 準度 - 認證 - 外觀設計
  31. 乾脆用別人的體溫計好了! :市場 + 硬體都 ready =

  32. 好孕來 基礎體溫計 + 自製 app

  33. 開發步驟 目標 能和該 溫度計相容 (BLE) 的 Android / Ios app

    驗證是否可行 → 破解藍牙 4.0 protocol → app 開發
  34. 驗證是否可行 只能做到有限度的驗證 app 會將資料送到 server side 才拉回 • 使用 Charles

    proxy 輔助
  35. 破解藍牙 protocol 使用邏輯不好確定, 一天只能傳一次 • 後來發現是硬體限制 可用工具 • ios 錄製

    HCI / android 錄製 nfc payload • android app decompiler • root 過的 android system
  36. 不斷修正方向

  37. 不斷收集資料

  38. 解碼中……

  39. 突破口 什麼東西無法混淆? • 系統 API • debug message

  40. 終於成功

  41. 開發中介 app 避免最後無法整合

  42. 小結 推廣及營運! • 逃不開的廣告 • 開發時專注在功能,上線後 著重在體驗 APP 的開發方式是否 有可改進之處?

  43. 忻旅科技 共同創辦人 Revtel Tech Tech Lead & Co-founder 合

  44. 智能藍牙貨櫃鎖 三方角色 • 傳產方:進電子件 • 硬體方:硬體及機構設計 • 軟體方:所有軟體,app + cloud

    + firmware 傳產轉型
  45. 使用情境 • 接近時自動開鎖 • 支援磁扣 • 一次設定多組使用者 • 使用者有權限分別 •

    電源管理 • 開鎖紀錄管理
  46. 軟硬整合開發 軟體架構選擇 • 規格化 (Restful / ...) • hybrid app

    硬體方案評估 • 追求掌握度及量產難度可控
  47. 開發過程

  48. 我們可能想錯的事 … ? 智能化只是輔助! • 安全性:按鈕 / 螢幕 ? •

    考慮返修 轉型不是第一版就要ready! • feature 上規劃要考慮現實情 況,eg. 產測
  49. 測試? 引入 testcase 確保高階邏輯完整性 • lock logic • menu logic

    • firmware logic
  50. 開源及區塊鏈冷錢包開發

  51. 3 總結 Conclusion

  52. 總結 • 工程師鄙視鏈 • 思考模型 vs.物理限制 軟體人及硬體人的差別 • 考慮營運及量產 •

    Java / PHP 仍舊是好的選擇 • Scrum ? 經驗的重要 軟體創造價值,硬體賦予可能