e2studioでPDGを使ってやる!~ぱわぷろ奮闘記2017~
前置き
ブログ始めたはいいものの技術的に書けることねぇ…と思いながらゆとり世代(自称)のぱわぷろはゆとりなりに頑張っていた今年の技術開発を年末までに書こうと思ってはいたのでした…
でもこの話題は開発じゃないし、むしろ玄人や先輩に怒られそうだな…とか言い訳を続けて現実逃避し、生産終了となったVITAでパワプロやってました
はい、かなり反省しております…
てきとーな前置きはさておき、今回はRENESAS社の開発環境であるe2studioで、同社のコードジェネレータであるPDG2を使えるようにするまでのお話です
同じ会社だからそんなもの使えて当たり前だろ…って思った方、至極真っ当な意見だと思います
まぁその経緯はRENESAS社が官主導のもと作られた会社であることや内部の派閥争いによるものなど、色々と面白い話がありますが私は詳しくはないのでご自身で調べていただけると幸いです
(もしこの記事より簡単に有効にできる方法をご存知の方、ご指摘いただければ嬉しく思います)
簡潔に言いますと結構使えるe2studioとPDG2というソフトは同じ会社が作っているのにも関わらずあまり連携がとれていないので、連携させるって感じです、はい
e2studioとPDG2って何よ?
まずそもそもこの二つが分からないって方(この記事見てる人でいるのか?)に説明しますとRENESAS社が販売するマイコン、RXシリーズの統合開発環境がe2studioです
e2studioはeclipse準拠の開発環境なので、他のマイコンで開発経験がある人にとっては馴染み深いウィンドウかもしれませんね
かくいう私も以前はNXP社のLPCXpressoを使っていたのでe2studioを使おうと思ったわけですが…
一方でPDG2とは何か?
PDGとはPeripherial Driver Generator の略称です
これはRX等における一般的にコードジェネレーターと呼ばれるものです
突然ですがクエスチョンです
マイコン工作の最初にして最大の難関は何か?
マイコンには動作周波数やIOピンの設定、各種機能の有効化(イネーブル)などのいわゆる初期設定と呼ばれるものから実際の入出力まで多種多様な命令文が決められています
本来であればこれらを1000ページにも及ぶユーザーマニュアルから解読して打ち込んでいくわけですが、マイコン初心者にはしんどいのなんのって…
そこで開発されたのがコードジェネレーターです
このソフトにおいて動作周波数や使う機能を選択、設定すると
それらのレジスタをすべて打ち終えた関数を用意してくれる優れものです
無理な設定をすると、画像のように×印で示してくれる設定になっておりまして
デバッグがやりやすいですね~
加えて、各ピンがどのような役割を持っているかの確認もでき、かつ1ピンの複数の機能がイネーブルになっていたら警告が出ます
至れり尽くせりです
…もうこの時点でいろんな人から「これだからゆとりは~」とか言われてそうで怖い
マイコン工作を本気でやっている人からしたら邪の道かもしれませんが初心者が32bitマイコンのレジスタを叩けるようになれってのが無理難題なんですよぉ~(悲痛な叫び)
ただこいつも見かけほど簡単ではないです
PDGが作る関数をマニュアルから解読して上手く使えるようにならなくちゃならんし、自由度は手打ちに比べれば少ない
しかも変なヘッダとか大量に作るからROMも食うし、ある機能に関するレジスタには全く対応してないから結局手打ちでやらなくちゃならない
それでもレジスタを一から勉強するよりはるかに簡単なので使いたかった
将来的にはコイツなしでレジスタ叩けるのが理想ですが、一年前の自分にはそれはハードルが高すぎたのですね
そんなわけで何としてもPDGを使いたかったのですが…e2studioに適応させる方法が何とも分かりにくい!RENESAS社は日本企業では無かったのか!?ルネサス語でなく日本語で書いてくれ…
e2studioでPDGを使ってやる!というマイコン初心者の決意はこの時の怒りとイライラからきていたりもする
本題 e2studioでPDGを有効にする
インストールは頑張ってください笑
調べた結果によるとPDGを有効にするためには二つの条件が必要な模様(ソースは公式)
- インテグレーションサービスをオンにする
- COMオブジェクトを登録する(?)
何が何だかさっぱりだぜ!頼むから凡人にも分かるように言ってくれ!(哀願)
どうやらインテグレーションサービスとやらは大体オンになっているらしいのでCOMオブジェクトの登録ができていないから上手くいかないらしい
方法は大体ここにのっている通りでいけそう…なのか?
- e2studioフォルダを見つけ出す(大体Cドライブ直下)
- e2studio→Utilitiesフォルダ内にISServer.exe(←COMオブジェクト)があるはずなのでコイツのショートカットを作る
- 作成したショートカットを「管理者として実行」
公式が言ってるんだから間違いねぇ!
勝った!第三部完!!
と思ってPDGを開き
- ファイルを新規作成
- 使うマイコンを詳細設定
- 参照フォルダはe2studio内のworkspace→PDG使いたいプロジェクト→src(先ほどのC直下と違いユーザー内にe2studioという独立したフォルダがあるはず)
で設定できるようになった!
保存しいよいよe2studioに関数を生成する!
………
はぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ????????????????????????
ぼかぁねぇ!公式の言う通りに従いましたよぉぉぉ!?
ああこの時の絶望が懐かしい…
これで上手くいってたらまずブログに書くまでもない話なんですけどね
この問題が解決するまでに苦労したからメモを残しているんですね、この日誌を
今度もe2studioの設定の方に若干問題があったんですよね
この記事書きながら過去の記録見てると意外と簡単な事実のような気がするのですがあまりこの辺には口出さないでおこう、ネットの海は怖い
参考にさせていただいたのはこちらの動画
事実だけ述べますと
- e2studioのプロジェクトのプロパティ
- C/C++ビルドバーのSettings
- Tool settingsタブのLinker→セクション
- PIntPRGをセクションから除去
- 0xFFFFFF80→0xFFFFFFD0に変更
これでやっっっと関数生成できるようになりました!
あとはPDGの使い方通りにやればいけます、いけます
今見るとPIntRPGを消してかつアドレスを遅くしてあげて、生成ライブラリ用のスペースを作ってあげてるのかな?(分からん)
とりあえず動いてるから大丈夫ですかね?笑
ここまで行くのに9月ごろまでかかってたし、よくメッギーマウスRXが大会に間に合ってくれたなぁとしみじみ
あとがき PDGを実際に使ってみて
これはモロ主観ですが関数がかなり面倒くさいですよね(ここまで推しといてなんですが)
特にIOピンの入出力がピンごとに違う関数を呼び出さないといけないのがストレス
あまりにも面倒くさいのでマクロ定義を上書きしてかつ生成しているのにマニュアルには書いてない共通関数を有効化しちゃいました
ちゃんとヘッダを読み込めばできます
それ以外はかなり満足のいく出来です
自由度が下がるのは仕方ないにしても初心者がここまでできるのだから立派です
でも初期設定だけ任せて運用はレジスタ叩く方がいいかなとか思ったり…
いつかはレジスタ手打ちで行きたいな…
と思いつつ甘い汁から離れられないぱわぷろなのでした
そんなわけで今回はこれでおしまい
…マジで先輩方から「ゆとり」とか「甘え」とか言われそうな気がするな…笑