16 ポイント 投稿者 xguru 2021-05-31 | 2件のコメント | WhatsAppで共有
  • オープンソースのシンセサイザー企業 Winterbloom を運営するエンジニアが、現在使っている技術とツールを紹介

  • 最先端を追いかけるのではなく、よく理解しているツールと技術を使って目標を達成

  "Lateral thinking with withered technology"

  → (新しい技術ではなく)枯れた技術を活用して楽しさに集中すれば、まったく新しいものを生み出せるという水平思考

  → 現代の Nintendo の技術開発哲学を作り上げた「横井軍平」の言葉:Nintendo の携帯型ゲーム機(ゲームボーイ)や VR ゲームを生み出した人物

  • マイクロコントローラー:注力する製品を 2〜3 個選定

  → Microchip SAM D21, D51, D11

    → 3 種類とも USB、柔軟な SERCOM、マルチチャネル 12-bit ADC、高度なタイマーなどをサポート

  → 追加で RP2040(アナログ I/O が不要なとき)、STM32H7(ファームウェア内で音を生成する必要があるとき)も検討中

  • ハードウェア設計:オープンソースの電子設計自動化ツール KiCAD を使用

  → 使用中の部品に関する共通シンボル、Footprint、3D モデルの KiCad 用ライブラリを GitHub で共有中

  → 好みの主要部品リストは Notion ページで公開(説明、部品番号、データシート、メーカー、購入リンク、用途)

  • ファームウェア:言語、ライブラリ、ビルドシステム、テストフレームワークなど(以下で項目ごとに紹介)

  • C 言語、GCC、CMSIS

  → 古いが慣れている C 言語を使用

  → Keil/IAR のような有償コンパイラーもあるが、オープンソースの GCC ARM Embedded Toolchain を使用

  → Microchip が提供する HAL は扱いが難しすぎるため、CMSIS ライブラリを直接使い、その上に小さな抽象化を実装

    CMSIS は ARM が提供するベンダー非依存のハードウェア抽象化レイヤー

  • ファームウェアライブラリ

  → TinyUSB:優れた小型 USB ライブラリ

  → Marco Paland's Printf:マイクロコントローラー向けに最適化された printf 実装

  → libfixmath:固定小数点演算用の小さなライブラリ(固定小数点ユニットのないマイクロコントローラーで有用)

  → µnit:とても小さく便利なテストフレームワーク

  • ビルドシステム

  → Python と Ninja でビルド

  → Makefile から始めたが、次第に書きにくくなって変更

  • Python ベースのツール群

  → wintertools という repo で一元管理

  → ファームウェア/ハードウェア関連のビルド/テストを支援するスクリプト集

  • CircuitPython

  → 一部の製品ではカスタムファームウェアを使わず、マイクロコントローラー教育向けに使われる CircuitPython を利用

  → 顧客がカスタマイズしやすい

  → ファームウェア/ソフトウェア開発をより簡単にしてくれる

  → Adafruit が運営する素晴らしいコミュニティがある

  • ドキュメント & ユーザーガイド

  → Markdown で作成。MkDocs で静的 Web ページにビルドし、GitHub Pages でホスティング

  → Bulma CSS フレームワークを利用

  → シンプルにするため Sass/LESS などは使わない

  • JavaScript

  → 複雑すぎる Node.js エコシステムは意図的に避けた

  → 普通の JavaScript とモジュール、クラス、アロー関数、Canvas、WebMIDI、TypedArray などを使用

  → 将来的には Deno に期待

2件のコメント

 
daumkakao 2023-04-12

すごい……一人であれをやるなんて……

 
xguru 2021-05-31

上の記事とタイトルは似ていますが、ハードウェアスタートアップであるぶん話がまったく違っていて、面白く読みました。