ソフトウェア

C言語

volatile

組み込み機器向けのソースコードでとても重要になるキーワード、それがvolatileです。volatileとは必ずメモリアクセスをともなうコードを生成する、という意味です。コンパイラの仕事の一つに最適化があります。その名の通り、プログラムを...
C言語

あなたのintは何バイト?

C言語におけるint型というのは何バイトなのでしょうか? int i; C言語におけるint型というのは、言語上のサイズ規定はありません。そのCPUにおけるもっとも扱いやすいサイズがint型ということになります。 int...
ソフトウェア

同期式関数と非同期式関数

同期式関数とは、その関数を呼んで戻ってきたとき、目的の処理が完了している関数のこと。 非同期式関数とは、その関数を呼んで戻ってきても、その処理を行うという指示を出しただけで、処理そのものは終わっていない関数のこと。コールバック関数を...
ソフトウェア

テストに使う値の選び方

そのソフトウェアはちゃんと動きますか?どうやったら自信を持って動くと言えるのでしょうか?十分にテストをすれば、少なくともそのテストと同じ条件で動かした場合には動くと言えますね。テストに使う値の選び方について、適切に選べばテストケースを減ら...
C言語

DebugビルドとReleaseビルド

親切な開発環境を使うと、DebugビルトとReleaseビルドが最初から用意されています。何が違うのでしょう? Debugビルドはデバッグしやすいようにできています。コンパイラの最適化は無しか最低レベルに設定されていて、1行ずつステ...
C言語

リンカ

PC上でのプログラミングではあまりリンカを意識することはありません。なぜなら、すべてのプログラムはHDD/SSDに保存され、実行時にはすべてRAM上に置かれるからです。組み込みソフトウェアの開発ではリンカの存在がとても大事です。 リ...
C言語

ROMとRAM

組込みソフトウェアの世界では、メモリにはROMとRAMが存在します。パソコンの場合、すべてのソフトウェアやファイルはHDDやSSDなどに保存されていて、必要になった時にはDRAMに持ってきて、そこからCPUで読み書きします。一方、小規模な...
C言語

デバッグ手法

あなたの書いたソフトウェアは思った通りに動いていますか?何かがおかしいけど何がおかしいのかわからない。デバッグするにはどうしましょう。純粋なソフトウェア開発ではテストコードを書いたりデバッガーを使うという方法があります。もちろんそういった手...
ソフトウェア

アセンブリ言語

組み込みソフトウェアの開発を行う場合、ほぼほぼC言語だけで作れる時代にはなっているけれど、いざとゆうときに活躍するのがアセンブリ言語です。アセンブラーと呼ぶ人もいるけれど、アセンブリ言語で書いたプログラムをアセンブルするのがアセンブラだと思...
ソフトウェア

2進数

コンピュータシステムで絶対に知っておかないといけない考え方が2進数です。2進数で正の数も負の数も少数もなんでも表現しないことにはコンピュータで扱うことはできません。