ぱわぷろ活動日誌

ゆったりまったり技術を学んでいます。備忘録代わりのブログです。書いてあることは私見が多いので参考程度にしてください。

冬休みのしんちょく!~RX631へのプログラム準備~

こんにちは

年末年始の大掃除に忙殺されて反動により自堕落な日々を送るぱわぷろです

掃除してると不思議なものでね、時間が消えるんですね

発掘したマンガ読み返したり、出てきたボードゲームをプレイしたり、ゴルフクラブや木刀振り回してみたりすると…冬休みの終わりが見えてきちゃうんですね

ってなわけで少しは進捗を出さないとマズいと思い、これを書いた次第です、はい

 

今回はRX631にuart通信でのprint関数、データフラッシュ、PDGでIOピンを使いやすくするための一工夫ヘッダの移植に関する備忘録です

 

UART通信関連の移植

今回の移植関連ではあまり問題無かった部分なので主に解読について書きます

f:id:ss_sholaw_wmmc:20180107221215j:plain

黄色線で引かれているのがC言語の標準ライブラリの一つで可変長引数を使用可能となるライブラリらしい(注, 筆者のプログラムミング能力は低いです)

可変長引数とは引数の型が指定されていないってことで万事受けできる引数の形…なのかな?まぁその程度の理解で止めておこう

 

ここからが本文

f:id:ss_sholaw_wmmc:20180107220831j:plain

char型と可変長引数が引数

va_listは可変長引数の型、のようなものでva_startで初期化させる

vsprintfは可変長引数を変換して文字配列strに保存させる

va_endは可変長引数の取り扱いをやめる合図?RAMを結構食うからとかなのかな?

最後のはPDG関数でstrを送るやつですね

 

コイツの問題はプロジェクト設定で標準ライブラリの使用を制限してあることでした

プロパティからC/C++ ビルド => Settings => Standard Library => 内容

で標準ライブラリの使用の有無が決められます

これができればオッケー

後々math.hとか使うかもしれないから覚えとこ、そうしよう

f:id:ss_sholaw_wmmc:20180107224703j:plain

データフラッシュ使用

ソースコードは先輩から直にもらったものなので控えさせていただきます

とゆーか先輩のブログに乗ってるから見てください

RX631でもほぼ同じでした

blueeyes.sakura.ne.jp

正直、特に問題は無かったんですがね…

…プロジェクトのマイコン機種設定はしっかりやりましょうね!

IO入出力関数の準備

PDG使っててこれが一番厄介

前にもPDGを紹介したときに書いた気がしますがその詳細ということで笑

で、厄介な理由はですね…

PDGのIO入出力関数はピンごとに関数名が違う

これすごく面倒くさいんですよね

単純なIO出力とかだったら同一の関数で引数だけ変えて運用すればデバッグとか楽なのにって思うんですけどね……(俺だけ?)

 

そんなわけで同一関数で出力できるようにしようってわけですね

まずPDG内部の関数を見るとですね、PA0の出力関数の内部はこうなってるんですね!

f:id:ss_sholaw_wmmc:20180107231444j:plain

冗長、ハッキリ言って冗長

これだったら中身の関数だけ使えるようにすればええやん

だけど引数の名前なげーな…ってなったのでこのマクロ探し当てました

PDGが内部で作成しているヘッダ、r_pdl_io_port.hにこの部分のマクロがあるんですね

f:id:ss_sholaw_wmmc:20180107232039j:plain

この部分のマクロは変更しない方がいいです

PDG関数は内部処理でこのマクロを使っており、これらを置換等で書き換えてもどこかでミスするのでいじらない方が得策です

 

自分はこれらのマクロ部分を自分で作ったヘッダにコピペして、名称をもっとシンプルに変更しました(ex. PDL_IO_PORT_3_0 => P30)

f:id:ss_sholaw_wmmc:20180107232433j:plain

 ここまでやれば準備はOK…ってわけでもないです

実際に内部の関数を使うソースファイルには読み込まなきゃいけないヘッダがいくつかあります

とりあえずこれ入れると関数は使えます

f:id:ss_sholaw_wmmc:20180107232955j:plain

 一番上は自分のプロジェクト名でヘッダファイル名が変わりますのでPDGのマニュアル読んでください

 

以上で冬休みのしんちょく!は終わりです

実際には1608の部品使おうとか、はんだの選定、モータの発注終了など細々とあったのですが技術的なモノはこんな感じです

こんなの一日で終わるとか言わないで

 

これからテスト始まったりするし今月は忙しいかな…

でも回路テストや足回り部品の注文、モータマウント設計とか並行してちょびちょび進ませたいです

二月中に基板発注までできれば電通大ロボコンに基板出走できるかも(願望)

 

とりあえず春休み中に更新するつもりです

では、またの機会に