組込みシステム開発 百物語

産業機械メーカーで組込みシステム(ファームウェア)開発に従事しています。これまでオシロ…

組込みシステム開発 百物語

産業機械メーカーで組込みシステム(ファームウェア)開発に従事しています。これまでオシロスコープを使ったデバッグ作業からiOSアプリ開発まで色々なことをやってきました。組込みシステム開発の現場でみかけた、あんな不具合、こんなトラブル。事実1割、思い込み3割、脚色6割で書き綴ります。

最近の記事

地元長野県開催のRuby Kaigi 2023に参加しました。

地元長野県の松本市で開催されたRuby Kaigi 2023に参加しました。東京で開催されていた頃には毎年のように参加していたのですが、全国各地を巡回して開催するようになってからは少し足が遠のいて7年ぶりのRuby Kaigiへの参加となりました。コロナ禍でリアルな対面カンファレンスの参加も久々だったので、とても刺激的で充実したカンファレンス参加となりました。 3日間の聴講の中で印象に残ったセッションの感想を残します。 "Matz KEYNOTE" by Matsumot

    • Rubyistに贈る霧ヶ峰周辺案内

      RubyKaigi 2023 のハイキングイベントスポンサー 株式会社ヤマップ(YAMAP)主催のハイキング・イベントに参加するRubyistに紹介する霧ヶ峰周辺の案内です。 霧ヶ峰 三菱電機のエアコンのブランド名として有名ですが、八ヶ岳中信高原国定公園の一角、車山から鷲ヶ峰周辺の台地の総称です。最高地点は標高1,925mの車山です。周囲には白樺湖、蓼科湖、女神湖などの湖がありますが、いずれも灌漑用の人造湖です。昭和に入ってから高原リゾート、スノーリゾートとして開発された

      • Rubyistに送る信州山歩きのススメ

        2023年5月11日〜13日開催されるプログラミング言語 Ruby の国際カンファレンス "Ruby Kaigi 2023" に参加するため、長野県松本市にやってきてトレッキングや登山に興味を持たれる方も多いと思います。駅やホテルに置いてある観光パンフレットを見て、折角だから行ってみたい思う方もあると思います。 超偏見ですが、プログラマーのアウトドア・アクティビティというとサイクリング、ロードバイクのイメージがあります。でも、この機会にトレッキングや山歩きも楽しいよ!という同

        • リアルタイム・クロックとアクティブ・ロー

          不具合が報告された内容は次のようなものでした。 現在時刻(年月日時分秒)の管理はいろいろな方法があると思いましすが、多くの組込みシステムでは『リアルタイム・クロック(RTC : Real-Time Clock)』という部品を使っています。このRTCはボタン電池や2次電池で動作するようになっていて、機器(マイコン)の主電源をオフした後も、淡々と時を刻んでいます。 「停電で電源が落ちてリセットされて時刻表示が点滅していた」なんてことがたまにありますが、RTCがそもそも組み込ま

        地元長野県開催のRuby Kaigi 2023に参加しました。

          まつもと市民芸術館アクセス紹介

          2023年5月11日~13日に長野県松本市まつもと市民芸術館で開催される RubyKaigi 2023 の参加者に向けたRubyKaigi会場の「まつもと市民芸術館」へのアクセス方法の紹介です。 松本駅からのアクセス 松本駅 お城口から、まつもと市民芸術館まで徒歩10分です。駅を背後にして片側2車線の「あがたの森通り」の右側の歩道を歩いていけば一本道です。車道の反対側の歩道を歩くと市民芸術館の目の前には横断歩道がないため横断歩道を渡るために数十メートル遠回りすることになり

          まつもと市民芸術館アクセス紹介

          松本への交通アクセス

          2023年5月11日~13日に長野県松本市 まつもと市民芸術館で開催される RubyKaigi 2023 参加者のための交通アクセスのご紹介です。 東京方面特急あずさ 新宿駅と松本駅を結ぶ中央東線『特急あずさ』が便利です。一部の列車が千葉始発、東京駅経由となります。新宿駅から最短2時間半で松本に到着します。2019年のダイヤ改正で特急あずさの自由席は廃止されました。全車両指定席のみとなります。「座席未指定券」というものがありますが、時間に余裕をもって事前に座席指定を受ける

          松本への交通アクセス

          0x5C問題

          ASCIIコードでは 0x5C に \ (バックスラッシュ) を割り当てています。 しかしながら JIS X 0201 では ¥ (円記号) を割り当てています。 ちなみに、ISO/IEC 646 では 0x5C は各国自由領域に割り当てています。たとえばKB(韓国語) では ₩ が割り当てられています。したがって JIS X 0201 は ASCIIには準拠していませんが、ISO/IEC 646には準拠していることになります。 C言語などでは 0x5C をエスケープシーケ

          characterは8ビットか?

          ASCIIコードは8ビットではありません。7ビットです。 16進数では 0x00 〜 0x7F の領域、10進数では 0 〜 128 の領域に文字を割り当てています。 0x80〜0xFFの領域にASCII文字は割り当てられていません。 シリアル通信や、その応用技術であるパソコン通信の設定では「8bitパリティ」や「8bitノンパリティ」などの設定がありますが、これは7ビットのASCII文字コードを8bitで表現したときの上位1ビット(MSB)の空きビットを「パリティ(偶奇ビ

          C言語における多次元配列へのポインタ

          C言語における『多次元配列へのポインタ』のサンプルコードと説明です。 1. 配列要素へのポインタ1.1. 1次元配列とポインタを組み合わせた例 #include <stdio.h> #define NUMBER_OF_COLUMNS 4 int main(void){ int linear_array_x[NUMBER_OF_COLUMNS] = { 1, 2, 3, 4}; int linear_array_y[NUMBER_OF_COLUMNS] =

          C言語における多次元配列へのポインタ

          ジグとドグ

          製造業では『製造治具』や『検査治具』なんて用語がしばしば登場します。『治具』は『ジグ』と読みます。 広辞苑には次のような説明があります。 『治具』と漢字で目にする機会が多い用語ですが英語の "jig" の当て字です。 "coffee" に珈琲をあてたり、"roman" に浪漫をあてるのと同じです。 この治具という名前が発展して「ソフトウェア治具」なんて呼び名のものも製造業の世界では見かけます。自動化ツール、コード生成ツール、コンフィグレータ、… なんて呼び方でも良いので

          "invert" か "reverse" か

          現在放送中のテレビドラマにハマっています。清原果耶さん演じる謎の超絶美人な名探偵が完全犯罪を目論む殺人犯に対して恋愛下手を装ってグイグイと距離を縮めていき、鋭い観察眼と巧みな誘導尋問で追い詰めていくというドSな設定です。『倒叙ミステリー(inverted detective story)』とは物語の冒頭で真犯人や犯行の手口を読者や視聴者に開示するスタイルの推理小説やドラマです。『刑事コロンボ』や『古畑任三郎』が倒叙モノの有名な作品です。ドラマのタイトルとしては "invert

          残差計算のオーバーフロー

          コンピュータの世界では長さや強さなどの物理量をデジタル(0と1)で扱うため量子化誤差というものが生じることがあります。 たとえば整数演算で 10 / 3 を計算すると結果は 3 となります。整数演算で切り捨てられた 1/3 (≒0.33333) が整数演算における量子化誤差です。 組込みシステムにおいては、機械的な制約から量子化誤差が発生することがあります。たとえばあるユニットを 33.3ミリメートル移動させたいのだけれど機械的な制約で1ミリメール単位でしか移動させるこ

          残差計算のオーバーフロー

          コンパイルスイッチ

          C言語にはコンパイルスイッチ(条件付きコンパイル)という機能があります。OSやプラットホーム、ハードウェアの違いによる定義や処理の違いを切り替えるために多用されます。しかし不適切なコンパイルスイッチの使い方をして不具合を招いた例です。 #if NUMBER_OF_OPTIONAL_LINES > 3 /* optional line の数が 3 を超えるときの処理 */#else /* optional line の数が 3 以下のときの処理 */#endif 上記の

          const外し

          C言語は何でもできるプログラミング言語であるという説明を見かけることがあります。時にそこには「自分で自分の足を撃ち抜くことすらできる」という揶揄が含まれていることがあります。そんな何でもありのC言語の仕様の一つであるポインタのconst外しで不具合を招いた事例です。 組込みシステムに限ったことではありませんが、組込みシステムにおいてはハードウェアの制御パラメータやセンサーの変換テーブルなど多くの定数テーブルを扱います。この定数テーブルを変数として扱って不具合を引き起こした例

          バルス

          宮崎駿監督の名作冒険活劇アニメーション作品に登場する滅びの呪文です。映画のテレビ放送を見ながらTwitterで呟く遊びが広がって、映画公開当時には生まれていない世代でも知っている有名なフレーズでしょう。物語の終盤、悪役に追い詰められた主人公の二人が起死回生を果たすキーワードですが、無敵の空中要塞都市ラピュタが一瞬にして自己瓦解するコマンドとしては短すぎないでしょうか? 「ヴァル研」とか「バルサミコ酢」で滅びのコマンドが発動しては一大事です。 UNIXに由来するコマンドには