前編の続きです。今回は3と4のステップについて進めていきます。今回も丁寧に書いていきますので、分かっている方はその都度飛ばしていってください。また、間違っている場合はぜひ編集リクエストやコメントで教えてください。
前編はこちら
では後編も進めていきましょう!
3.プログラムをコンパイルし、FDTを用いてマイコンに書き込む
シリアルケーブルの接続を確認
まずはシリアルケーブルの接続を確認しましょう。
自分の使ったシリアルケーブルだと、ttyUSB0ではなくttyS0でした。書籍のp42,43を確認しながらコマンドを打ち込んでみましょう。
cd ../../../../ (ルートディレクトリに戻る)
ls -l /dev/ttyS0
うまくいけば、以下のように表示されます。
crw--w---- 1 root tty 4, 64 Aug 14 03:31 /div/ttyS0
うまくいかなければ、ttyS0をttyUSB0に変えて確認してみましょう。
どちらも上手くいかなかった場合、このような表示が見れると思います。
ls: cannot access '/dev/ttyS0': No such file or directory
自分はこの記事を参考にしました。
まずはコンソールに以下のコマンドを打ち込みます。
sudo vi /lib/udev/rules.d/50-udev-default.rules
すると50-udev-default.rulesのソースが見れると思います。26行目に
KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
という文字列が見れると思います。ここにMODE="0666"を追記します。
KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout", MODE="0666"
vimを使ったことがない人向けのおすすめの記事
細かいことを考えたくなければ、上下キーで26行目まで下がって、左右キーで行末まで移動し、キーボードでiを押します。すると編集モードに入るので、「MODE="0666"」を打ち込み、escキーを押し、:wqで上書き保存して終了します。キーボードはUSキーボードの設定になっているため、注意してください。
このようになれば成功です。
ls -l /div/ttyS0
crw--w---- 1 root tty 4, 64 Aug 14 03:31 /div/ttyS0
Makefileの編集
ではプロジェクト内のMakefileを編集していきましょう。
srcフォルダ内の01フォルダの中にあるbootloadフォルダ内を見てください。すると、main.cやstartup.sなどのファイルがあると思います。そこにMakefileがあると思います。Visual Studio Codeなどのエディタで編集しましょう。
H8WRITEのところは気にしないでください。そのままで大丈夫です。今回はFDTを用いて書き込みます。
「H8WRITE_SERDEV」のところを、先ほど確認したシリアルデバイスファイル名にします。自分の場合は/dev/ttyS0だったので、H8WRITE_SERDEV = /dev/ttyS0と書きました。
保存してエディタを閉じます。
プロジェクトのビルド
ここまで出来たら、次はプロジェクトをビルドしていきます。
cd workspace/src/01/bootload
ls (ソースコードがきちんとあるか確認)
make
make image
たまにcdで「No such file or directory」のような表示が出たら、Windows側のコマンドプロンプトで、vagrant_makeosフォルダにcdして、そこでVagrant reloadして、仮想環境を再起動させましょう。自分が環境構築をしていた時に、たまにそういうことがありました。
make imageが上手くいったら、ls -lでkzloadとkzload.motがあるか確認しましょう。
ls -l
確認できましたでしょうか?
フラッシュROMへ書き込む
では、フラッシュROMへの書き込みを行います。H8/3069Fマイコンボードには4連のディップスイッチがあります。電源につないでいない状態でディップスイッチを左から「ON」,「ON」,「OFF」,「ON」にします。そのあと電源につなげると、フラッシュROM書き込みモードとしてCPUが起動します。
シリアルケーブルでマイコンとPCを接続します。一瞬LEDが光って消えますが、きちんと接続されていますので安心して下さい。
では書き込みを行います。
マイコンへの書き込み
今回はFDTを用いて書き込みを行います。FDTを用いる前にh8writeやkz_h8writeなどを使いましたが、自分の環境ではうまくいきませんでした。(Makefileは正しいはずなのに、なぜかエラーを出す)
まあよく分からないので、FDTを用いて書き込んでいこうと思います。
FDTのダウンロード
ダウンロードするにはルネサスへユーザー登録する必要があります。まずは登録しておきましょう。ダウンロードは一番上の[無償評価版]で良いです。
また、インストーラーの途中で拡張子の関連付けを聞いてくるので、忘れずに「*.mot」にチェックを入れましょう。
インストールに成功したら、まずはFDTを立ち上げましょう。自分はこのサイトを参考にしました。
立ち上げたら「デバイスとカーネルの選択」でH8/3069Fを探し、選択します。
「次へ」を押したら、「通信ポート」という項目が出ると思います。Select portはWindows側で認識されているシリアルポート(デバイスマネージャーのポート(COMとLPT)の項目にて、接続しているシリアルポートがcomXと表示されているはずです。うまく表示されていなかったら指し直すか、ドライバを修復するか、再起動するかしてください)のCOMポート番号を選んでください。
自分の場合はそのままで認識されていたので、そのまま次へを押しました。
その他の設定は書籍のp45を参考にして設定してください。
うまくいけば次のような画面が出ると思います
スタートを押すと書き込みが始まります。書き込みがうまくいけば「書き込みが完了しました」とログに表示されます。
ここで、マイコンの電源を抜いた状態でマイコンを動作モードに変えます。4連のディップスイッチを「ON」,「OFF」,「ON」,「OFF」にします。
これで第3ステップが終了しました。ここまでくれば、後はシリアル通信の確認をするだけです。
4.Seristerでシリアル接続の確認
正直Teratermでもよいのですが、せっかくならGUIのSeristerを使いたいと思いましたので、インストールして使っていきます。
Seristerのダウンロード
インストール手順は簡単なので省略します。インストールが完了したら立ち上げます。
通信設定はポートがWindows側のCOMポート番号、その他ボーレートやパリティなどはp46の表1.2に準します。
「監視開始」を押し、Seristerをテキストモードにし、マイコンのリセットボタンを押すと、「Hello World!」という文字列が出てくると思います。出てくればシリアル通信は成功です!おめでとうございます!
上手くいったときはこのようになります。
これで全ステップは終了です!おめでとうございます!お疲れさまでした!!!
ここまでで上手くいっていない方へ
ここまでで上手くいっていない方がいれば、参考になるかもしれないサイトのリンクを載せておきますので、参考にしていただければ嬉しいです。Cygwinや公式のVMイメージを使ったり、WSLを使ったりといろいろやりようはあります。めげずに頑張ってください!
・公式ページ
・KOZOS友の会
・WSLで「12ステップで作る組み込みOS自作入門」の環境構築をしてHello World!してみる
・12ステップで作る組込みOS自作入門 1stステップ ~開発環境の構築
参考文献
・坂井 弘亮 12ステップで作る組込みOS自作入門 カットシステム 2010
・http://kozos.jp/books/makeos/#source_code
・https://qiita.com/ohno-Tk/items/c258133889d172223231
・https://qiita.com/aoi70/items/b66a451f4b7f5f05beec
・https://techcommunity.microsoft.com/t5/windows-11/pl2303-issues-prolific-usb-to-serial-drivers-win-11/m-p/2966957
・https://imadedede.hatenablog.com/entry/2020/07/13/014241
・https://to-son.net/2020/04/16/12step-wsl-environment/
・https://www.avrfreaks.net/forum/prolific-pl2303ta-usb-serial-and-windows-11
・https://kinneko.hatenadiary.org/entry/20140118/p2
・http://memes.sakura.ne.jp/memes/?page_id=575