かつて、マイコンのソフトウェアエンジニアは、仕様書やマニュアルを詳細に確認し、レジスタのビット単位の設定値を手作業で記述して、コードを作成していました。この作業は非常に手間がかかりますし、間違いを起こす可能性も高くなります。自動でプログラムを作ってくれる機能は、ソフトウェアエンジニアの誰もが欲しい機能でしたが、当時のIDEの性能では、期待できませんでした。それに、当時のマイコンの仕様や性能であれば、手作業でもどうにかできる作業でした。
さらに、マイコンが高機能化して、搭載される機能も複雑になってくると、自動でプログラムを作ってくれる機能は、なおさら実現不可能だと誰もが考えるようになりました。しかし、その反面、コード自動生成機能への要求も高まっていきました。
図2にSTM32F76xシリーズのクロックツリーを示します。STM32F76xシリーズは、マイクロプロセッサ(MPU)※4)並みの高機能なので、クロックツリーだけでも、非常に複雑です。そのため、内部クロックを設定するだけでも、この複雑なツリーに従って行わなくてはなりません。気が遠くなるような作業です。
一方で、IDEも高機能化が進み、演算処理能力が飛躍的に向上しました。マイコンの高性能化に追い付き追い越せの勢いで、現在でも、急速に発達しています。今では、複雑な工程も短時間で処理できるようになり、コード自動生成機能も現実化してきました。
IDEの演算処理能力が飛躍的に向上して行く傍らで、コードの効率的な構成/方式が普及していきました。それは、ソフトウェアの階層化やマイコン仕様の統一化などです。コード生成機能が生成しやすい階層や、共有化できる構成のコードだと、IDEの処理効率も上がります。
HALは、それらの内の1つだと言えます。HALは、上位層のプログラムから周辺機能などのハードウェアを抽象化する手法です。HALを使えば、設定内容をシンプルな構成で記述でき、プログラムの移植性を高めることができます。HALを利用すると、数字をレジスタに直接書き込む記述ではなく、周辺機能の設定内容が分かりやすい記述になるので、プログラムの開発効率が上がり、間違いを防ぐこともできます。
このように、IDEの高機能化と高速化とコードの階層化、マイコンの仕様の統一化などの要素が相まって、現在のコード自動生成機能が実現できたものと考えられます。
ただし、自動生成してくれるのは、周辺機能の初期設定コードだけです。実際に周辺モジュールを起動したり、停止したり、データを処理する制御用コードは、ユーザーの製品仕様に依存しますので、ソフトウェアエンジニアが作る必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.
記事ランキング