上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
こんにちは!
今日は車の1年点検で、近所のホンダさんへ来ているゆってぃです。
点検には3時間程度かかるということなので、今はお店の中からブログを更新しています^ ^

ついに10万PVを達成させていただきました><
皆様、本っっっ当にありがとうございます!!
これからも多くの方にご覧いただけるよう、頑張って書き続けていきたいと思います!

さて、仕事で新規の組み込みソフトウェアを開発することになりました。
新規ですので、最初にしっかりとした設計を行わないと、あとあと苦労することになってしまいます…。
ですので、自分への復習の意味もこめて、組み込みソフトウェアにおけるオブジェクト指向の考え方について、ここで記載したいと思います。

なお、ここで記載する内容は独学+ゆってぃの思い込みによる部分が大きいので、一般的に正しいのかどうか定かではありません。。。
ご参考程度でお願いいたします。m(_ _)m

個人的に、組み込みとオブジェクト指向は、比較的相性がよいと思っています。
なぜなら、組み込みではソフトウェアを利用して、最終的にモーターやLED、センサーといったデバイスを動かすことが多いので、そのデバイスをそのままクラスとして定義することができるからです。

例えば、LEDをPWMで制御する場合を考えましょう。
現実世界にLEDというオブジェクトが存在するので、プログラム中にもLEDクラスが現れます。
なお、僕は「LEDクラス」というクラスは作成せず、これを2つのクラスに分割するようにしています。
具体的には、「LED情報クラス」と「PWM制御クラス」に分割します。

なぜ、LEDクラスをわざわざ2種類のクラスに分割するのでしょうか?
これは組み込みに限定した話ではないですが、ソフトを開発するときには「移植性」という部分を考慮しなければなりません。
特に組み込みにおいては、プロジェクト終了後に、モーターやセンサーといったデバイスが変更になったり、マイコンそのものが変更になる場合があります。
マイコンが変更になった場合、特にベンダーやコアの変更を伴う全く新規のマイコンへの移植となった場合、ハードウェア制御部分が大きく変更になります。
言うまでも無く、レジスタの種類やアドレスは、全く異なるものになるでしょう。

組み込みソフトウェアの開発時には
ハードウェア制御部分(レジスタ制御部分)と制御情報の管理部分を分離
しておけば、そういった変更があってもハードウェア制御部分のみの修正だけで移植が済みます。

んなこと当たり前だろ!オブジェクト指向うんぬん関係なしにやってるわ!
ですよね・・・。すみませんでした・・・。


さて、気を取り直して先ほどのLEDの例に戻りましょう。
先述の通り、レジスタの操作や輝度調整を行うLEDクラスというクラスを作成しても良いのですが、ここではLED情報クラスPWM制御クラスというように、2つのクラスに分けて考えます。

(1)LED情報クラス・・・現在のRGBの輝度情報を持つ。また、上位クラスからLEDを操作するためのメソッドを持つ。
(2)PWM制御クラス・・・レジスタ操作関連のメソッドを持つ。

LED情報クラスは、さらに上位のアプリケーション層(あるいは割り込みハンドラなど)からメッセージを受け取り、それに応じてPWM制御クラスへメッセージを渡します
本クラスのメソッドでは、レジスタ操作は行いません。

PWM制御クラスでは、PWM関連のレジスタの初期化や、オン/オフ。および、周期・DUTY比などのレジスタ操作を行うメソッドを有しています。その代わり、現在の輝度など、LEDの制御情報に関するパラメータ(メンバ)は持ちません。
せいぜい、RGBそれぞれのLEDに対して波形を出力中か否かのフラグを持っている程度です。

こうすることで、移植の時はPWM制御クラスのみ書き換えれば良いことになります。

まぁ、当たり前っちゃ当たり前のことなのですけど、復習の意味も含めて書かせていただきました。

次回は、FM3マイコンを用いて具体的なコードを記述しながら、より詳細な内容をお話したいと思います。

最後までお読みいただいて、ありがとうございました!(感謝)

関連記事
スポンサーサイト
コメント
コメントの投稿
トラックバック URL
トラックバック
ご訪問者様
プロフィール

ゆってぃ

Author:ゆってぃ
経歴7年の組み込み系・制御系エンジニアです。
("ど素人"という文言は取りました…笑)
ソフトウェア開発経験ゼロの状態から、なんとか実務がこなせるようになってきた現在に至るまでの経験を、備忘録代わりに綴っていきたいと思います。
入門者の方、大歓迎!
(上級者の方、ごめんなさい…)

あと、ブログには全然関係ないですが、Bumpy Headというバンドのギターをやっています。
ライブ情報なんかも書いたりすることがあるので、その時に「行ってもいいよ~」といった感じのコメントを戴けると、泣いて喜びます(泣)
ブログ読んでくださってる方なら、チケット代サービスしちゃいます!

最後に…滅多に流用することは無いでしょうが、このブログに書かれているソースは、特に指定の無い限りMITライセンスとします。ただし、一部それ以外のものもございますのでご注意下さい。
※ブログのリンク先にあるコードに関しては、リンク先のポリシーに従ってください。

最新記事
最新コメント
カテゴリ
RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

twitter
リンク
ブロとも申請フォーム
スポンサードリンク


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。