CQ EVカート開発環境をCS+からGCCに移行した話

こんばんは。k-abeです。 私、技術書1でも書いていますがCQ出版社より販売されているEVカート改造し、組込みソフトウェアのスキルアップを考えています。
デフォルトのEVカートのソフトウェア開発環境はルネサスエレクトロニクス社のCS+で、ソースコード自動生成ツールApplilet2 for V850ES/Fx3を使っています(制御マイコンはV850ES/FG3)。
今回、CS+からGCCに開発環境を移行できたので備忘録として残しておこうと思います。
※何故、CS+からGCCに開発環境を移行した背景・理由は次の資料8, 11スライド目を見ていただければと思います。

www.slideshare.net

開発環境は次のツールをインストールします。

  • MSYS2, make

  • make

  • V850ツールチェイン

ツールをインストールしたホストPCの条件

  • Windows 8.1 64bit (多分Windows10でも大丈夫だと思います)

MSYS2, makeのインストール

MSYS2のインストール

次のページからmsys2-x86_64-20200903.exeをダウンロード・実行します。 www.msys2.org

↑のリンク先の手順通りにインストール・パッケージの更新を実行します。

makeのインストール

パッケージ更新が終了したらmakeをインストールします。
下記コマンドを実行します。
インストールするか?と聞かれるのでyを入力します。

$ pacman -S make
resolving dependencies...
looking for conflicting packages...

Packages (1) make-4.3-1

Total Download Size:   0.45 MiB
Total Installed Size:  1.48 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages...

インストールが始まります。

make-4.3-1-x86_64     456.7 KiB   541 KiB/s 00:01 [#####################] 100%
(1/1) checking keys in keyring                     [#####################] 100%
(1/1) checking package integrity                   [#####################] 100%
(1/1) loading package files                        [#####################] 100%
(1/1) checking for file conflicts                  [#####################] 100%
(1/1) checking available disk space                [#####################] 100%
:: Processing package changes...
(1/1) installing make                              [#####################] 100%
:: Running post-transaction hooks...
(1/1) Updating the info directory file...

インストールが終わったらmakeがインストールできているかバージョン表示で確認してみます。

$ make -ver
GNU Make 4.3
Built for x86_64-pc-msys
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

make 4.3がインストールできました。

V850ツールチェインのインストール

次のページからGNUV850 v14.01 Windows Toolchain (ELF)をダウンロードします。
※ダウンロードするためにはユーザ登録が必要です。

https://gcc-renesas.com/ja/v850/v850-download-toolchains/

ダウンロードしたインストーラを実行します。すべてインストーラのデフォルト設定のままインストールを進めます。

f:id:gracehime:20201207072355p:plain

f:id:gracehime:20201207072555p:plain

この画面になったら登録メールアドレス、アクティベーションコードを入力します。 f:id:gracehime:20201207072710p:plain

アクティベーションコードは次のメニューから確認できます。
ツールチェインをダウンロードしたサイトに移動し、GNU Tools -> ダッシュボード を選択します。

f:id:gracehime:20201207075824p:plain

Your legacy*** のactivation codeを確認します(図の点線枠内部分)。 f:id:gracehime:20201207080343p:plain

確認したアクティベーションコードを入力し、Nextボタンを押下します。

Next f:id:gracehime:20201207080814p:plain

Yes f:id:gracehime:20201207080904p:plain

Next f:id:gracehime:20201207080752p:plain

このままNext f:id:gracehime:20201207080950p:plain

Next f:id:gracehime:20201207081019p:plain

Next f:id:gracehime:20201207081047p:plain

インストールが開始される。 f:id:gracehime:20201207081112p:plain

インストール中... f:id:gracehime:20201207081155p:plain

Next f:id:gracehime:20201207081225p:plain

Finishでインストール完了。 f:id:gracehime:20201207081251p:plain

このままではコンパイルできないことがわかったので以下の設定を行う。

環境変数を開く。

f:id:gracehime:20201207165451p:plain

  • ユーザー環境変数Pathにツールチェイン実行ファイルのパスを追加する。
    ツールチェイン実行ファイルのパス:C:\Program Files (x86)\KPIT\GNUV850v14.01-ELF\v850-elf\bin

  • ユーザー環境変数に下記を追加する。 f:id:gracehime:20201207165528p:plain

MSYSを終了し、サインアウト→サインインする。その後、MSYSを起動し(スタートメニューからMSYS2 64bit -> MSYS2 MSYSのバッチファイルを選択)、gccのバージョンを確認する。

$ v850-elf-gcc -v
Using built-in specs.
COLLECT_GCC=c:\Program Files (x86)\KPIT\GNUV850v14.01-ELF\v850-elf\bin\v850-elf-gcc.exe
COLLECT_LTO_WRAPPER=c:/program\ files\ (x86)/kpit/gnuv850v14.01-elf/v850-elf/bin/../libexec/gcc/v850-elf/4.9-GNUV850_v14.01/lto-wrapper.exe
Target: v850-elf
Configured with: /home/kpit/fsfsrc/elf-v14.01-src-v850/gcc-4.9.2/configure --disable-shared --build=i686-pc-linux-gnu --host=i386-pc-mingw32msvc --enable-languages=c,c++ --target=v850-elf --with-newlib --with-gmp=/home/vinayk/utilities/mingw_gmp_mpfr/prefix/ --with-mpfr=/home/vinayk/utilities/mingw_gmp_mpfr/prefix/ --with-mpc=/home/vinayk/utilities/mingw_gmp_mpfr/prefix/ --prefix=/usr/share//mingwgnuv850_v14.01_elf-1 --disable-libstdcxx-pch --with-pkgversion=GCC_Build_2.01
Thread model: single
gcc version 4.9-GNUV850_v14.01 (GCC_Build_2.01)

gccのバージョンを確認できました。

makeの動作確認

git hubからソースコードを取得する。

github.com

Codeボタン -> Download ZIPを選択し、ソースコードをダウンロードする。
※もちろん、gitクライアントから取得してもOK。
f:id:gracehime:20201207171725p:plain

取得したファイルをC:\msys64\home\ユーザ名 などに解凍する。
解凍したディレクトリ(Makefileがあるディレクトリ)に移動する。

$ cd cq-ev-kart-gcc/

makeを実行する。

$ make
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  start.S
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  main.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  interrupt_vector.S
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  interrupt.S
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  nop_interrupt.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  clock.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  system_init.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  port.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  e1_debug_memory_alloc.S
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  timer.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  ad.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  motor.c
v850-elf-gcc -c   -mv850e -mdisable-callt -g -Wall -O2   -I.  serial.c
v850-elf-gcc   -mv850e -mdisable-callt -g -Wall -O2   -I.   -nostartfiles -lgcc -lc -msoft-float -T v850fg3.ld -o cq-ev-kart start.o main.o interrupt_vector.o interrupt.o nop_interrupt.o clock.o system_init.o port.o e1_debug_memory_alloc.o timer.o ad.o motor.o serial.o
v850-elf-nm -n cq-ev-kart > cq-ev-kart.syms
v850-elf-objcopy -O srec -S cq-ev-kart cq-ev-kart.srec

オブジェクトファイル(*.o)、ELF形式のファイルcq-ev-kart、モトローラSレコード形式の書き込みファイル(cq-ev-kart.srec)などができる。

make cleanを実行でオブジェクトファイルを削除できる。

$ make clean
rm -f *.o
rm -f cq-ev-kart cq-ev-kart.syms cq-ev-kart.srec

cq-ev-kart.srecをフラッシュプログラマで書き込み、CQ EVカートのモータを回すことができた。

もっと簡単に環境構築するには???

今回はWindows+MSYSにツールチェインをインストールしました。
インストールした後に発見したのですが今回インストールしたツールチェインのコンテナがありました。

https://hub.docker.com/r/mikoto2000/v850-toolchain

上記コンテナはLinuxで動かすようですが、もしLinuxかWindows10にWSLを構築済みであればこちらのコンテナを試してみるのに良いかもしれません。

今回はこれで終わりです。読んでいただきありがとうございました。

Re:VIEW 5.0の環境構築をDockerでできた件

こんにちは。年末の技術書典10に向けて執筆活動をスタートしようとしています。

前回の技術書典9はRe:VIEW 4.0で書きました。 年末の技術書典10の環境を構築しようと考えていましたが、少し前にRe:VIEW 5.0がリリースされていました。 今回の技術書典10もRe:VIEWで書こうと思っていましたがどちらのバージョンを使うか迷っていました。

そんな中、DockerのみでRe:VIEW環境を作るという次のリンクを見つけました。

www.konosumi.net

前回のRe:VIEW環境構築時、割とすんなり環境構築できました。 それでも初めてRe:VIEW環境構築ということで多少時間はかかりました。

リンクでは必要なものはDockerのみとのことなので試してみました。 結果、20〜30分くらいでRe:VIEW5.0の執筆環境が構築できたので情報共有させていただきます。

  • PCの環境:macOS Big Sur バージョン: 11.0.1

  • 前提:Dockerがインストール済み。

  • Re:VIEW環境構築手順:

$ cd /Users/k-abe/Documents/techbookfest/ev_kart_gcc

Re:VIEWのプロジェクトを配置したいフォルダを作成しておき、移動する。

$ docker run  --rm  -v $(pwd):/work  vvakame/review:latest /bin/sh -c "cd /work && review-init ev_kart_gcc"

↑のコマンドを実行する。review-initのうしろはRe:VIEWのプロジェクト名にする。 私の場合はev_kart_gcc

Unable to find image 'vvakame/review:latest' locally
latest: Pulling from vvakame/review
bb79b6b2107f: Pull complete
00f65d2e7f9d: Pull complete
43308151f8cb: Pull complete
a07e8ccbe4e3: Pull complete
d4060e803ca0: Pull complete
2d2fd96c104e: Pull complete
3ca4b9622691: Pull complete
cd591d93a892: Pull complete
aea9ba979130: Pull complete
d34c41bbfc89: Pull complete
79ec33ed230e: Pull complete
651de3999982: Pull complete
094b9b118d52: Pull complete
0cad02711590: Pull complete
Digest: sha256:53718baf4516288bd23f389c51ef06d34a1c6b34c3c453c69c34fc48caa8c15f
Status: Downloaded newer image for vvakame/review:latest

dockerイメージができました。

最初の手順でev_kart_gccフォルダを作成・移動し、そこでコマンドを実行したので、ev_kart_gccフォルダの中にev_kart_gccフォルダをつくってしまった。ちょっとした失敗はこれくらい。

f:id:gracehime:20201202123757p:plain
Re:VIEWプロジェクト作成後

これで環境はできたので次のコマンドを実行し本を出力する。

$ docker run  --rm  -v $(pwd):/work  -v $(pwd)/.texmf-var:/root/.texmf-var  vvakame/review:latest /bin/sh -c "cd /work && review-pdfmaker config.yml"
INFO review-pdfmaker: compiling ev_kart_gcc.tex
WARN review-pdfmaker: ev_kart_gcc.re:1: headline is empty.
WARN review-pdfmaker: ev_kart_gcc.re:1: headline is empty.
INFO review-pdfmaker: uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
INFO review-pdfmaker: uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
INFO review-pdfmaker: uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
INFO review-pdfmaker: dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi

めでたくconfig.ymlと同じ階層にbook.pdfが作成されました。

f:id:gracehime:20201202124746p:plain
PDF出力結果

前回の環境構築より圧倒的に短時間で最新Re:VIEW 5.0の執筆ができるようになりました。 執筆のインフラを整備、情報共有してくださる皆様に感謝です。本当にありがとうございます。

これから年末の技術書典10に向けて本を書いていきます。

猫でもわかる?EV カートが動くワケ

はじめに

技術書でお馴染み「猫でもわかる」シリーズ!!!

今回はうちの子(りく)にEVカートが動くワケを紹介してもらいます。

それではりくさん、お願いします。

 

f:id:gracehime:20200903124013p:plain

 

最後に

EV カートはアイデア次第で機能拡張でき、様々なことが実現できます。
これからもEVカートに関する話題を発信していきたいと考えています。
見ていただいてありがとうございました。

 

f:id:gracehime:20200903125229j:plain


りくさん、ありがとうございました。

 

技術書典9で「EVカートから始めるモデルベース開発」を頒布します

はじめてのブログ投稿。ドキドキ。。。

 

はじめに 

 9/12(土)~ 9/22(祝)の期間に開催される【技術書典9】に初参加します。

今回の技術書典9はコロナの影響もあり、オンライン開催となりました。

この記事では現在鋭意執筆中の本を紹介します。

 

 私が書いた本のタイトルは、

「EVカートから始めるモデルベース開発」です。

この記事を読んで興味がある方は技術書典9が開催されたらサイトよりダウンロードし読んでください。

サークル名はこのブログの名前と同じ「k-abe」です。

 

それでは執筆中の本を簡単に紹介します。

 

表紙

 下図が表紙です。

 

f:id:gracehime:20200828230215p:plain

 

 初参加の技術書典なので格好良い表紙にしたかったですがちょっと時間的に難しそうです。是非、タイトルとサークル名だけ頭の片隅に記憶してくださるとありがたいです。よろしくお願いします!!!

 

本の名前:「EVカートから始めるモデルベース開発」

サークル名:「k-abe」

  

それでは次の説明にいきましょう。

 

前書き

f:id:gracehime:20200828231834p:plain

 前書きは次のこと、想いで書きました。

 

  • 何を書いているか?

  EVカートのブラシレスモーターをArduinoでモデルベース開発し回しました。

  その開発過程で得た知見です。

  

  • 何故書いたか?

  モデルベースでモーター制御しEVカートを動かせれば楽しそうと思ったので

  開発をスタートしました。結果、ブラシレスモーターを回すことができたので

  その成果をアウトプットし、誰かの役に立てば・・・と思ったので書きました。

 

  • 何が得られるか?

  - MATLABSimulinkArduinoペリフェラルを制御する方法
  - C言語の処理をモデルベースで実現する方法

 

  • 対象はどんな人か?

  組込みソフトウェアエンジニアでモデルベース開発を始めたいと考えている方に

  参考になると考えています。

 

  • 工夫したことは?

  「C言語のこの文法はモデルではどう書くか?」をモデルとC言語を併記することで

  わかりやすくしました。また、モデル、C言語ソースコードは公開するので

  適宜参考にしていただければと考えています。

  

目次

 目次です。各章を簡単に紹介します。 

f:id:gracehime:20200829134702p:plain
f:id:gracehime:20200829134720p:plain

 

第1章 EV カートとは何か?

 EVカートを対象にしてモデルベース開発を行いました。はじめにEVカートについて次のことを書いています。

  • EVカートの構成・ブロック図
  • ソフトウェア開発環境
  • ブラシレスモーターの制御方法

 

第2章 モデルベース開発変更点

 モデルベース開発するためにEVカートのデフォルト構成からハードウェア、制御CPUを変更しました。その変更点について書いています。

 

第3章 モデルの説明

 モデルベース開発はMathWork社のMATLABSimulinkで行いました。作成したSimulinkモデルについて各機能毎に説明しています。また、説明はC言語を併記しているのでSimulinkモデルがわからない方でも何をしているのかなんとなく理解できると考えています。

 

第4章 動作確認結果

 作成したSimulinkモデルで動作確認した結果を書いています。

 

第5章 課題

 作成したSimulinkモデルは改善点があるため、その点を補足説明しています。

 

 

今回は以上です。

気になった方は是非、読んでください。よろしくお願いします。