前回からの続きです。
このテーマを最初からご覧になる場合はこちらからどうぞ。
Atmel Software Framework (ASF)とは?
ASFとは、ドライバ、プロトコル、スタック、コーディングユーティリティ、ビルドシステムなどを開発者に提供するソースコードのライブラリです。
いわゆる純正のライブラリパッケージであり、これを使用するとCPUに内蔵されているペリフェラル(周辺機器)を簡単に利用することができるというものです。
今回の「TOPPERS/ASP AVR32版」のカーネル内でも、割り込み、タイマーやシリアル通信ドライバなどは、このASFのドライバを使用しています。
ところが、このASFのソースコードのライセンスの条項が不明瞭なために再配布できません。
そのため「TOPPERS/ASP AVR32版」のソースコードが不完全なものとなり、そのままではビルドが通らず、通すためには手動で不足分のソースコードをコピーしていただくという手間を強いることになってしまいました。
面目無いです…。
では、そのASFのソースコードを何処から入手すれば良いのか?
そのためには、インストールした「Microchip Studio」上で雛形となるプロジェクトを作って、そこで生成されたASFのソースコードを「TOPPERS/ASP AVR32版」のソースツリーにコピーするという方法を採ります。
雛形プロジェクトの作成
まずは「Microchip Studio」を起動して下さい。
画面上部の「File」、「New」、「Project...」メニューを順にクリックしていきます。
以下のようなダイアログが表示されます。
ここでは「GCC ASF Board Project」を選択し、ダイアログ右下の「OK」ボタンをクリックしましょう。
これで「GccBoardProject1」という名前のプロジェクトを作成したことになります。
このプロジェクト名、覚えておいてください。
続いて、以下のようなダイアログが表示されます。
まずは「Extensions」コンボボックスに注目してください。
デフォルトでは「Atmel ASF(x.xx.x)」と言った具合に、「Microchip Studio」をインストールした時点での最新版のASFを使用するように選択されています。
今回の場合、デフォルトの最新版でも多分大丈夫なのでしょうが、検証をしていないので「Atmel ASF(3.49.1)」に設定してください。
これで動くことを確認してから、最新版を試すことをオススメします。
気持ち悪いから最新版で試したい!って方は、貴殿のご武運をお祈りします!
使用するASFのバージョンを設定したら、そのコンボボックスのすぐ左、「Select By Board」のラジオボタンをクリックします。
このASFのバージョンでサポートされている多くの評価ボードがリストアップされています。
その中から、今回使用する「UC3-A3 Xplained - AT32UC3A3256」を選択し、ダイアログ右下の「OK」ボタンをクリックします。
すると、以下のようにダイアログが消えて、元の「Microchip Studio」の画面に戻ります。
ただし「ASF Wizard」というタブが表示されていますね。
このタブの左上、「Project:」という表示のコンボボックスに注目してください。
このコンボボックスをクリックすると、作成した「GccBoardProject1」というプロジェクト名が選択できるようになっているので、これをクリック!
すると「ASF Wizard」というタブは、以下のような表示に切り替わります。
この画面の見方なのですが、左側のリストには、このプロジェクトで指定したデバイスである「AT32UC3A3256」で使用できるASFのライブラリが表示されています。
右側のリストには、このプロジェクトで既に選択されている(使用する)ASFのライブラリが表示されています。
デフォルトで選択されているのは「GPIO」と「Generic board support」のみですね。
つまり、左側のリストから右側のリストに項目を移動させることにより、自由に使用するASFのライブラリをプロジェクトに付け加えることができる訳ですね。
今回の「TOPPERS/ASP AVR32版」に必要な最低限のASFライブラリは以下の4つです。
●GPIO - General - Purpose Input / Output (driver)
●Generic board support (driver)
●TC - Timer / Counter (driver)
●USART - Serial interface (service)
このうち、上の2つは既に選択されていますので、残りのOSタイマーとして使用する「TC - Timer / Counter」と、デバッグ・シリアルに使用する「USART - Serial interface」の2つを追加しましょう。
まずは「TC - Timer / Counter」から。
左側の「Available Modules」リストから「TC - Timer / Counter (driver)」を選択して、「ASF Wizard」タブの下部にある「Add」ボタンをクリックします。
すると、無事、右側の「Selected Modules」リストに「TC - Timer / Counter (driver)」が追加されたでしょうか?
同じ要領で「USART - Serial interface」も追加しちゃいましょう。
左側の「Available Modules」リストから「USART - Serial interface (service)」を選択して、「ASF Wizard」タブの下部にある「Add」ボタンをクリックします。
すると、右側の「Selected Modules」リストに「USART - Serial interface (service)」が追加されるはずです。
以上で、必要なASFライブラリの設定は終わりました。
次は、この設定通りにASFライブラリのソースコードをプロジェクトに吐き出させる作業です。
なんてことはないです。
ただ「ASF Wizard」タブの下部にある「Apply」ボタンをクリックするだけです。
以下のダイアログが表示されます。
特にやることもなく「OK」ボタンをクリックします。
以下のように、派手な表示の変化もなく作業は終了します。
ちょっと不安ですね?
ちゃんとソースコードが吐き出されているかどうか、後で確認しましょう。
さて、必要なソースコードを雛形プロジェクトへ吐き出させたようなので「Microchip Studio」を一旦終了させましょうか。
左上のバッテン(X)をクリックすると以下のダイアログが表示されています。
この雛形プロジェクトを保存するかどうかを問われます。
保存しておいた方が良いでしょう。
(「Yes」ボタンをクリックです。)
もしこの先、無事に「TOPPERS/ASP」の起動に成功して、イザ何かを作ろう!となった場合、今回追加したASFライブラリだけでは絶対に足らなくなることでしょう。
評価ボードにセンサーを繋げて、そのセンサーとSPIで通信するとか、AD変換を使いたいだとか…。
その際には、再び今回の手順で必要になったASFライブラリを追加して、ソースコードを吐き出させて、更にそれを「TOPPERS/ASP」のソースツリーにコピーしなければなりません。
そういう意味では、この雛形プロジェクト、結構使用頻度が高くなるかもしれませんよ?
大切に取っておきましょう!
さて、一連の作業で吐き出されたASFライブラリのソースコードがどうなっているのか?確認しておきましょう。
特に変わったことをしていないのであれば、雛形プロジェクト「GccBoardProject1」は以下のディレクトリに保存されているはずです。
C:\Users\<ユーザー名>\Documents\Atmel Studio\7.0\GccBoardProject1
さらに、このディレクトリの中にある、これまた「GccBoardProject1」というディレクトリの中は以下のようになっています。
さらにさらに、このディレクトリの中にある「src」というディレクトリの中は以下のようになっていますでしょうか?
ここで現れる「ASF」と「config」(さらに「asf.h」)こそが、欲しかったモノです!
これらが見つかれば、作業は成功です!
さて「TOPPERS/ASP AVR32版」を動かす上で足りないソースコードのゲットに成功しました。
次のステップは、これらのソースコードのコピーと配置、そして若干の修正です。
忙しいですが、一個ずつやっつけて行きましょう!