知っておきたいプロの常識!組み込みC言語,移植性と効率向上のテクニック

知っておきたいプロの常識!組み込みC言語,移植性と効率向上のテクニック
―― やってはいけない or やって欲しいコーディング集


【コース】1日コース,7時間(昼休み1時間を含む) 【内容のカスタマイズ】不可
【セミナNo.】ESYK03  【出張範囲】関東近郊

 現在,組み込みシステムのソフトウェア開発言語はC言語が主流となっている.しかし,C言語の文法は曖昧な部分が多く,移植性を保つのは至難の業である.自動車業界でもMISRA-Cのコーディング規則により,曖昧な文法を利用しないためのルールを策定している.
 本講義では,組み込み向けのソフトウェア開発にC言語を使い初めてから2,3年程度を経過したプログラマを対象に,C言語の文法のどこが曖昧なのかを解説し,その罠に落ちた例/罠を回避する例を紹介する.
 また,C言語の文法とは直接関係はないものの,組み込み系には重要な変数領域の削減方法,スタックサイズの計算方法,スタック領域を削減する方法等についても紹介する.


●対象聴講者
・C言語の文法のどこが曖昧なのかを知りたい方
・C言語で組み込み系ソフトウェアの開発を初めてから2,3年程度経過した方
・組み込み系C言語で移植性や効率をアップさせる方法を知りたい方

●講演の目標
・C言語の正しい文法が理解できる
・MISRA-Cのコーディング規則の内容が理解できる
・組み込み系C言語で移植性や効率をアップさせる方法が理解できる

●内容
1 整数型はこんなにも曖昧
 1.1 char型とint型の注意事項
 1.2 符号付き整数型は内部表現すら決まっていない
 1.3 異なる型での演算には暗黙のルールが適用されるんだよ!

2 浮動小数点型の演算はとても複雑
 2.1 浮動小数点型の内部表現はIEEEの規格が殆ど
 2.2 浮動小数点定数の型の割り当ては自動的には変わらない
 2.3 浮動小数点型の演算にはFPU機能が必須

3 派生型のあれこれ
 3.1 ケチの付けようがない構造体
 3.2 文法的には使い物にならないビットフィールド
 3.3 移植性は担保できない共用体

4 知っているようで知らない演算子
 4.1 演算子優先順位表の左上は関数呼出し
 4.2 意外に説明できない後置インクリメントの動作
 4.3 乗除算はC言語とマイコンでは仕様が異なる
 4.4 条件式とif文は全く異なるもの
 4.5 非常に便利なのに知名度が低いカンマ演算子

5 静的変数領域の削減
 5.1 変数領域はconstと初期値の記述に左右される
 5.2 値を変更しない変数には必ずconstを付けるべし
 5.3 初期値がゼロなら記述してはならない

6 スタックサイズを計算しよう!
 6.1 長時間動作させると暴走するシステム
 6.2 スタックサイズの計算方法
 6.3 多重割込みを含めたスタックサイズの計算
 6.4 スタックサイズの削減方法


【ご用意いただくもの】
筆記用具

【講師】
鹿取 祐二 氏〔トロンフォーラム学術・教育WG講師 〕
 ルネサス半導体トレーニングセンターにて,マイコン,C言語,リアルタイムOSのセミナー講師を約25年間担当.ルネサス退社後は,組み込みシステム関係の書籍を執筆する傍ら,トロンフォーラム学術・教育WGのメンバーとして,リアルタイムOSのセミナー講師として活動中.