Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Sam Huang
December 01, 2021

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

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

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

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

Sam Huang

December 01, 2021
Tweet

More Decks by Sam Huang

Other Decks in Programming

Transcript

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

    View full-size slide

  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
    重點比較不完全在技術上
    - 比較想聊聊 技術 / 管理 / 領域 / 商業 上的平衡
    - 只是一家之言,也未必是最佳解

    View full-size slide

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

    View full-size slide

  4. 1 公司介绍 & 前言
    Self Introduction & Preface

    View full-size slide

  5. 忻旅科技 RevtelTech
    軟體方案公司:由 開發 / 顧問 / 維運 / 管理 找尋商業可能
    - 合作夥伴:海外獨角獸到本土新創
    - 合作內容:專案、產品到合開公司
    - 技術範圍: Web、APP、IoT 到內部系統
    - 開發領域:電商、物流、醫療、金融、展覽、印刷、旅宿及教育等

    View full-size slide

  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)

    View full-size slide

  7. PC → NB → Smart Phone → Tablet → IoT → AIoT → ?
    碩士班 → 創業
    個人經驗的拋磚引玉 / 心得分享
    前言
    2008 2018

    View full-size slide

  8. 2 經驗分享:
    起承轉合
    Experience Sharing

    View full-size slide

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

    View full-size slide

  10. 在 A 機器上編譯 B 機器能跑的程式
    OSSF Project - 開放式課程
    利用 Ubuntu (virtualbox) 學習嵌入式系統
    Linux kernel/filesystem/interrupt/...
    Cross compile
    基於 ARM Platform (by QEMU)
    Opencsl

    View full-size slide

  11. Opencsl
    Why emulate arm board by QEMU ?
    Raspberry Pi (from 2012) / Arduino / …
    openMoko
    meego/moblin/symbian/...

    View full-size slide

  12. 師資陣容
    郭大維 老師
    施吉昇 老師
    逄愛君 老師
    薛智文 老師
    嵌入式系統暨無線網路實驗室
    研究領域
    • 作業系統
    • 嵌入式系統
    • 無線通訊

    View full-size slide

  13. 即時系統
    Real-Time Computing
    系統中有很多任務,每個任務有其
    period / execution time / deadline,要
    確保所有 task 都能執行完畢
    技術的深刻在其衍生義
    Round-robin: 分時系統

    View full-size slide

  14. Real-time scheduling = 一套檢驗方法 + 一套排程方法
    Real-Time Computing
    Worst case evaluation
    RMS (rate-monotonic scheduling)
    EDF (earliest deadline first)
    Scheduling → Resource Management

    View full-size slide

  15. Projects
    PAC DUO
    • 模擬器
    • virtual NIC QoS control
    中華電信服務不中斷
    • os virtualization
    • queueing theory

    View full-size slide

  16. 小結
    系統程式 / 作業系統 / Compiler / ...
    學到的東西會在某時間點匯流
    processing migration / Virtualization ...
    看技術從其發展歷史看起
    many-core vs. cloud-computing
    對技術應用的想像
    c

    View full-size slide

  17. 擔任 Garmin
    軟體工程師 3 年
    Engineer Life

    View full-size slide

  18. 在 Garmin 的三年
    參與專案
    • PND x 2
    • Handheld x 1
    • 車機 x 1

    View full-size slide

  19. 主要內容圍繞 android / linux
    在 Garmin 的三年
    工作內容
    • sensors: G sensor / M sensor /
    gyroscope / Pressure sensor / UV sensor
    • audio system
    • others: uboot / utility / touch / 開板子 / …

    View full-size slide

  20. Sensor
    讀各種 sensor
    • spec
    • android sensor arch
    • garmin integration

    View full-size slide

  21. Sensor
    產品測試的重要性

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  24. 小結
    硬體其實沒那麼簡單
    • const 變數的浮動
    • 超過 4 根 gpio 能表示的硬體版本
    (第八版之後量產!)
    軟體工具很重要
    • 大量的 auto git checkout +
    symbolic link
    • 適度引入 wrapper

    View full-size slide

  25. 新創公司軟體工程師

    View full-size slide

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

    View full-size slide

  27. 基礎體溫計
    2021 年的今天,
    還是蠻多人手動填表
    最好是 IoT 一下 !
    • 量一量用藍牙傳比較棒!
    • 硬體不好做
    - 準度
    - 認證
    - 外觀設計

    View full-size slide

  28. 乾脆用別人的體溫計好了!
    :市場 + 硬體都 ready =

    View full-size slide

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

    View full-size slide

  30. 開發步驟
    目標
    能和該
    溫度計相容 (BLE) 的
    Android / Ios app
    驗證是否可行 → 破解藍牙 4.0 protocol → app 開發

    View full-size slide

  31. 驗證是否可行
    只能做到有限度的驗證
    app 會將資料送到 server
    side 才拉回
    • 使用 Charles proxy 輔助

    View full-size slide

  32. 破解藍牙 protocol
    使用邏輯不好確定,
    一天只能傳一次
    • 後來發現是硬體限制
    可用工具
    • ios 錄製 HCI / android 錄製 nfc payload
    • android app decompiler
    • root 過的 android system

    View full-size slide

  33. 不斷修正方向

    View full-size slide

  34. 不斷收集資料

    View full-size slide

  35. 解碼中……

    View full-size slide

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

    View full-size slide

  37. 終於成功

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  42. 使用情境
    • 接近時自動開鎖
    • 支援磁扣
    • 一次設定多組使用者
    • 使用者有權限分別
    • 電源管理
    • 開鎖紀錄管理

    View full-size slide

  43. 軟硬整合開發
    軟體架構選擇
    • 規格化 (Restful / ...)
    • hybrid app
    硬體方案評估
    • 追求掌握度及量產難度可控

    View full-size slide

  44. 開發過程

    View full-size slide

  45. 我們可能想錯的事 … ?
    智能化只是輔助!
    • 安全性:按鈕 / 螢幕 ?
    • 考慮返修
    轉型不是第一版就要ready!
    • feature 上規劃要考慮現實情
    況,eg. 產測

    View full-size slide

  46. 測試?
    引入 testcase
    確保高階邏輯完整性
    • lock logic
    • menu logic
    • firmware logic

    View full-size slide

  47. 開源及區塊鏈冷錢包開發

    View full-size slide

  48. 3 總結
    Conclusion

    View full-size slide

  49. 總結
    • 工程師鄙視鏈
    • 思考模型 vs.物理限制
    軟體人及硬體人的差別
    • 考慮營運及量產
    • Java / PHP 仍舊是好的選擇
    • Scrum ?
    經驗的重要
    軟體創造價值,硬體賦予可能

    View full-size slide