LPC81xのLPCOpenと従来ライブラリの使い易さ比較

LPC81xソフト開発時に利用するLPC81xライブラリで、ソース記述がどのように変わるかを示します。

利用ライブラリ選定

LPCXpressoは、新プロジェクト作成時、プロジェクトウイザードで2つのライブラリ、LPCOpenまたはLPCClose:従来ライブラリのどちらかを選定する必要があります(各ライブラリは、コチラを参照)。

LPCOpenまたはLPCClose選択
LPCOpenまたはLPCClose選択

その結果、プロジェクトに追加されるライブラリファイルとその制御対象が下表です。LPC81xには、これら選定ライブラリの他にROMライブラリもあります(LPCOpenとROMライブラリが、それぞれ機能補完していることは、コチラを参照)。

選定ライブラリ コア制御 周辺回路制御
LPCOpen lpc_chip_81x_lib nxp_lpcxpresso_812_board_lib
LPCClose CMSIS_CORE_LPC81x lpc800_driver_lib

 

ライブラリの使用宣言

ライブラリ選定後、プログラムソース記述時は、#include “ライブラリヘッダファイル”で使用宣言が必要です。LPCOpen選定の場合は、#include “board.h”のみで、コア制御と全ての周回路制御、さらにROMライブラリも「同時」に使えます。

一方、LPCCloseの場合は、コア制御に#include ” LPC8xx.h “、周辺回路は、制御対象に応じて#include “lpc8xx_制御対象.h”の宣言が「個別」に必要です。また、ROMライブラリ利用の場合は、ROMテーブルやROMライブラリ物理位置の宣言などを「別途追加」する必要があります(詳しくは、LPCユーザマニュアルUM10601のLPC81x Boot ROMセクション参照)。

ROMライブラリ追加宣言(一部抜粋)
ROMライブラリ追加宣言(一部抜粋)

使い易さ比較

つまり、LPCOpenなら#include “board.h”のみ、LPCCloseなら#include ” LPC8xx.h”の他に#include “lpc8xx_gpio.h”、#include “lpc8xx_mrt.h”・・・や、ROMライブラリ追加宣言などのインクルードが、肝心の「ソース記述前」に必要となります。

LPCOpenのboard.hを診てみると、色々なヘッダファイルが、孫引きでインクルードされるのが判ります。プログラミングでは、LPCOpenライブラリ利用の方が、記述が簡単です。結果としてバグ減少が期待できます。LPC8xxテンプレートに関して、LPCOpen版が先に販売開始され、LPCClose版が後になっているのは、この理由もあります。

LPC8xxテンプレートLPCClose版の対策

開発中のLPC8xxテンプレートLPCClose版は、煩雑な記述を避けるため、LPCOpen版と同様、1つのヘッダファイルインクルード追記でLPCCloseライブラリが利用できるように工夫します。

コメントを残す