RH850のコード自動生成を試す

RL78では、CS+e2studio 共にペリフェラル部の自動コード生成ができます。本製品用にはギモンですが、ライトな製品、デモ、プロト には役立ちます。RH850では使えそうでしょうか?


実施条件は、IDE:e2studio 2024-07、基板は北斗電子さんのHSBRH850F1KH176を使います。PIN数は176。基板は仲間が手配中で未だ手元にはありません。取説は見ず勘所での操作なので勘違いがあるやもしれません。

自動生成機能(スマートコンフィグレータ)を起動するには、プロジェクトツリーかに、.scfg を開きます。分かりにくいですがタブ切替が下端にあります。


[クロック]タブを選ぶと思わずうげっとする複雑の図が現れます。クロックソースから各機能クロックと分周が接続図で現れ、図中の分岐ポイントを切替えると各機能クロックの周波数が表示される仕組みです。RH850F1H は水晶は2つ接続できるのでややこしい図になっていますが、ハードマニュアルと照らし合わせれば理解は可能です。

今回は、CSI(クロック同期シリアル)を最速にしたいので上記の設定となりました。


[コンポーネント]タブでは、マイコン機能詳細を設定します。アイコンを選びぶとコンポーネント一覧から必要な機能を選び追加し、それぞれの機能の設定を行います。コンポーネント名はプリセットされますが任意に変更できます。これは先にすましておいたほうがいいようです。各詳細は後術にて。しかし肝心のCANの自動生成は今のところ無いようです。


[端子]タブでは、マイコンポート機能の有効無効を設定します。I/Oポートの設定、各機能の設定はここでは行いません。以下CSI の一例です。


[割込]タブでは、ハンドラ名、優先度を設定します。ベクターテーブルがそのまま掲載されている感じです。割込みの有効無効は、[コンポーネント]タブの機能詳細設定側では設定します。


RL78ではポート一覧が常時表示されていましたが、RH850では[コンポーネント]タブから、アイコンを選び、コンポーネント一覧から[ポート]を選び明示的に追加が必要です。操作は以下の通り、ポート一覧の操作は普通です。この設定ができていないと、[端子]タブで「ポートの初期化ができていません」とメッセージが表示されます。


標準的なハードウェアタイマーを作りたい場合、[コンポーネント]タブからコンポーネント一覧から[インターバルタイマ]を選び、次の画面からタイマー種とチャンネルを選びます。

タイマー種とチャンネルはハードウェアマニュアルから理解しておく必要があります。後は画面項目に従って入力します。以下、1msecタイマーの一例です。


設定に特筆はないのですが、クロック設定でCSI用は80Mhzに下にもかかわらず、通信速度が最大の 10Mbps ではなく、1Mbps 止まりです。動かしてみてから実際のところを確認してみたいと思います。


設定に特筆はないのですが、ソースアドレス、デスとネーションアドレスには、直接SFRは書けないようです。CS+用のRL78では出来ていたような…


ソースコードの生成ボタンが分かりにくいですが以下の場所あります。


尚、ソースコードを生成すると、ソースコード生成フォルダが一度削除されます。バージョン管理などの管理フォルダ .ファイル が削除さてれしまいます。 project設定を変更しても解消できません。弊方では以下のように対処しました。

① 自動生成フォルダを src 下外に移動します。

② Makefile自動設定をoffにする。

③ 自動生成 folder のサブ folder のMakefile類を以下のように修正します。このついでに絶対パスほ相対パスに変更しておきます。

④ 再度自動生成した場合は、src/smc_gen の結果を、移動先folder にマージします。しかしシンボリックリンクを張ればマージは不要になるかもしれません。ソースが増えたら、Makdefile自動を有効にして一度makefileを再生成して、③の修正をマージします。


以上、RH850の自動コード生成は使えそうでした。

RH850でPCシュミレータを使ってみる

以前、RL78でPCシュミレータはなかなか使えることを報告しました。 RH850ではどう確認してみました。しかし取説は一切よまず勘所での操作です。

e2studioでRH850環境をいれるとシュミレータもインストールされています。

メニュー [プロジェクト] -> [プロパティ] -> [実行デバック設定] -> [新規] から、[GDB Simulation Debugggin(RH850) ]を選択して設定構成のひな形ができます。

適当にお試しコードを書きBuildし、brake point を張ります。

設定構成を開いてデバッグ情報の生成ファイル *.x を選択します。

この辺りはRL78と同様に操作してみました。虫アイコンをクリックしてデバックを開始すると、テストコードの brake point に達するはずですが、エラーのトラップ行に張り付いてしまいます。RH850の場合は追加で何か必要なのでしょうか???


プロジェクトツリーから [RH850 シュミレータ] を右クリックして、デバックツールを[RH850 シュミレータ]に切替えます。

次にメニュー[ツール] -> [デバックツールへ接続]を選び、接続が完了したらます。[ツール] -> [デバックツールへダウンロード]を選びます。

Cコード部が表示され、現在行がハイライトされます。実行を押すと break point で止まります。CS+ はなんか使えそうな感じです。


IDEの使い勝手としては、e2studioの方がGoodですが、悩ましいところです。CS+もタイマやI/Oなどどこまでシュミレーションされるのでしょうか? 確認を継続していきます。

VC++6 を VS2019 にコンバート時のポイント

VC++6 のアプリは、インストーラレスで動作させることができるため、今日でも需要があります。しかしIDEの機能が低いため、開発効率は低いです。そこで弊方では、一度Visual Studio 2019 にコンバートして開発し、最後にVC++6で検証してリリースしています。その時のポイントの覚書です。

Visual Studio 2019 の設定

VC++6の頃は.NETはまだなく、標準ライブラリは MFC でした。Visual Studio 2022となった現在でもサポートされています。2000年当時、現在も名だたる数々のアプリが作成されました。オプション機能になっいるので、以下のようにオプション追加します。尚、無償版ではサポートされていません。


Projectのコンバート

vc++6 のproject file : .dsp.dsw を、Visual Studio 2019 で開きます。後は、質問に答えていけば完了です。.sln .vcxproj が生成されます。


コードの修正

C++ のコンパイラ仕様がやや特殊であったため、(汚いコードを書いていると)修正が必要になります。

【違い1】 VC++6では関数/method内で宣言した変数は、その後スコープを跨いで使用可能となっている。

具体的には、

void founcA( )
{
    for( int i = 0; i < 10; i ++ ) {
         .....
    } 
    for(  i = 0; i < 20; i ++ ) {  /* VC++6ではOK、VS2019とC++一般ではNG */
         .....
    } 
}

【違い2】 VC++6ではcastしなくても、引数の型に合わせてくれる。

具体的には、

void funcA( int x, int y )
{
   ....
}

void funcB( )
    LONG y1;
    ...
    funcA( 100, y1 );  /* VC++6ではOK、VS2019とC++一般ではNG */

数値だけでなく、char[]CString 間でも暗黙castされているので要注意です。数値を表示用に文字として扱う場合も同様です。

【違い3】 VC++6では関数/method型を宣言しないと、intとして扱われる。

具体的には、

virtual CString methodA();
virtual methodB();    /* VC++6ではint扱いでOK、VS2019とC++一般ではNG */

また strcpy系の関数にて以下の警告がでますが、領域外の上限をコード内で実装していれば問題ないので許容します。


Build設定の変更

Debug ビルドで以下のエラーが出る場合があります。

“/Gy-” は “Gy”オプション無し の意です。 以下のように有効にします。オプションの意味合い上、実害はないでしょう。


以上これでコンバートでlinkageまでとおります。これで.NETのC++並みのデバッグ機能が使用できるようになります。最近のVisual Studioのプラグインも使用できます。

ただし生成されたexeを他PCで実行する場合は、各Visual Studio バージョンに対応した VC++再配布可能ライブラリ が必要です。mfc42.dll では動きません。

最後に一言、.NETアプリでないと「セキュリティが!!」と怒り狂う方や、.NETコンバートを強く勧めるベンダーさんももいらっしゃいますが、MFCはまだ使えるしセキュリティも配慮されています。一度作ったコードは大事に継承し続けたいですね。ただ VC++ 6の入手/環境作りがネックです。

VC++ 6のコードを最新に移植したいが手がたりない、自身がない、担当者がいなくなったなどお困りの方は、こちらよりご相談ください。


ターゲットがVC++6で、VC2019でクロス開発するとき、VC++6で正式Buildするときの注意です。

  • bool と BOOL の違いがチェックされ、合わない場合、警告になります。TRUE/true、FALSE/false も同じ。
  • MFCでWin32APIを使うとき、MFCのライブラリを参照しないよう 「::API名」と記述しますが、効かない場合あり。
  • Win32APIを使うとき、対応する .h を 明示的 include しないとエラーになる。 VC2019ではいい塩梅にひっぱってきてくれる模様。(もしくは .h の構造がちがう)
  • Win32APIを使うとき、対応する .lib を 明示的 にリンク指定しないとエラーになる。 VC2019ではいい塩梅にひっぱってきてくれる模様。

nRF52840の開発環境を作成する’24.10月編

二年前、Nordic Semiconductor社のBluetoothマイコン: nRF52832 のプログラムを作成しました。国内メーカのBluetoothマイコンより安価で多機能、豊富なライブラリ、処理スペックも上で弊方の中では高評価でした。(ただし情報が全て英語にはなってしまいますが、、、) 今回新しい企画でBluetooth通信を行うため、上位マイコンnRF52840 を選定しました。こちら Long Range に対応しており離れた車両と通信接続時間の長さ期待できます。 2年前とは手順も増えて複雑、違いも大きかったのでその覚え書きです。基板は nRF52840 DK を使います。


2年前は、汎用の組込み用IDE: SEGGER (セッジャーと呼びます、セッガーかもしれません) のNordic Version 5.60 が使えていました。現在Version 5.68としてここで配布はされていますが、以下のようには、エラーが出たり、ライセンス発行画面が真っ白です。

WEB上の一般記事に、VS Code + Nordic Extension のみになったと記載がありました。


環境セットアップには python が必要です。指定されたエディションを使う必要があるようです。少なくとも Microsoft Store で配布しているものは以下エラーが出ました。


DevZone : ユーザ登録システム、登録しましたが、ログインしてなくてもインストールは可能でした。

Zephyr : 標準ライブラリ?


基本は以下のとおりですが、公式手順を見ると、どこまでが自動でどこが手動か分かりにくいです。弊方では一部エラーが出ていたため手入力でも一通り実施しました。

1. J-Link (PCとマイコンと接続するためのインターフェイス ) は nRF Connet SDK でインストールされるため事前インストールは不要。

2.VS Code のインストール。最新でOK。

3. nRF Connet Desktop をインストール。

4. nRF Connet Desktop からnRF Connet SDK をインストール。この時、VS Code の未インストールだと進めません。v2.7.0は以下のエラーが発生、v2.6.2をインストール。なお2年前とくらべ SEGGER のインストールメニューは消えています。

5. nRF Connet Desktop からnRF Command LineTool をインストールを促され、ダウンロードベージに飛ぶので、D/Lしてインストールします。後から入れてもOK。

6. chocolatey というWindow用のパッケージマネージャをインストールします。まずnuget.exe (Visual Studio用機能追加の仕組みのコマンドライン版)をダウンロードし、以下のコマンドをたたきます。

7. chocolatey を用いて、python など必要パッケージをインストールします。何なのかは理解していません。

phtyon は、nRF Connet SDK で自動で以下にインストールされている模様。今回は公式手順どおりに、chocolatey で入れたものを使用しました。

8.python の pip3 を用いて、指定されたパッケージをインストール。以下コマンドラインシーケンスです。

9.ARM 用gccをダウンロードして、指定場所に配置。弊方は配置自由度のあるzip版を選択。

10.Windows上で、gccのパスを通す。

11.VS Code に Nordic 用Extensionを追加します。nRF Connect For VS Code Extension Pack でまとめられています。それを開いて追加します。

以上、たいへんな長旅でした。


1.VS Code に左ペインの nRF Connet アイコンを選択し、現れるツリーからProjectを作成します。

2.以下のようにProject名を入力。

3.APPLICATIONのツリーから、Build構成以下のように生成します。

4.生成されたProject全体の様子は以下のとおりでした。2年前 nRF52832 で SEGGER で作成したコードを流用しようと考えていましが、ライブラリの構成が全くちがうように見えます


今回はプロトで過去のHowToを流用して手早く準備したい。ゆくゆくは製品化時に最新化することとし、既存のSEGGERにて nRF52832 の.Project file を、nRF52840 の.Project file に手動マージし対処しました。

SAMPLEコードのnRF52840 のセットをマージします。

SEGGERでビルドして、nRF52840 DK基板のスイッチを以下のように変更し、USB接続し、J-Linkが現れるのを確認します。

SEGGERで以下のように J-Link と接続します。

以下のようにデバックを開始します。ターゲット基板への手動ダウンロードは必要ありません。(行った方がなにかおかしな状態になる)

今回はBuletoothマスター側なので、Android端末でペアリング検索してみます。うまくいきました。

SEGGERで以下のメッセージがでましたが、取り急ぎそのまま続行して問題なかったです。

以上です。Nordicマイコンの使い方でお困りの方、急いで動かしたい方は、ぜひこちらよりご相談ください。

WinCvsのpserver設定

現在WinCvsの設定情報中々ないので、その設定覚書です。

Windowsのコンピュータ名とアカウント名を設定します。リポジトリエリアス名は次のように設定します。

コントロールパネルから、CVS For NT を選びます。CVSNT画面から「設定変更」ボタンを押したあと、リポジトリタブを開きます。そこでWindowsパス名に対するエリアス名を設定します。

コントロールパネルから、CVS For NT を選びます。サービスの状態タブを開き、開始ボタンを押します。CVSサービス CVSロックサービス の2つがあります。 ロック の方は開始できないときがあるようですが気にしない。

開始状態は、Windowsサービス画面でも確認できます。

リポジトリがローカルであってもログインしないアクセスできません。WinCvsのメニュー 管理 -> ログインを選びます。ログイン画面からOKボタンをおし、パスワード画面を出します。ここでWindowsアカウントのパスワードを入力します。CVSは、UNIX系の産物なので別設定するのかと深読みをしないこと。

成功すると何もメッセージがでません。エラー時のみメッセージがでます。

WinCVSでユーザ不一致でcommitできない場合

弊方では CVS を使いつづけています。理由は、SVNGit はファイル単位で管理できないためです。CVSは ソースファイル.v で管理され、.vファイル 単位でコピー削除移動が可能。.vファイル はテキスト形式なので、壊れても直せる。各パスのCVSディレクトリの管理ファイル Entries / Repository /Root をもシンプルなので直接いじりやすい。Windows上では、WinCVS および CVSNT を用います。いまはどこで配布されているのかはよく分かりませんが、昔とっておいたものを使いつづけています。一応、Windows11 でも動作しています。

たまにしかセットアップしないのでその覚え書きです。


さてWinCVSで、コミット時、急に以下のようなエラーが発生するようになりました。

cvs commit: user ‘ユーザ名’ is not a valid editor of the file ‘対象ファイルl’
cvs [commit aborted]: correct above errors first!

弊方では、リボジトリはローカルPCに pserverアクセスです。しかし、一部local参照しているProjectもあるため、リボジトリディレクトリを、Windowsのシンボリックリンクで割り当ててます。その関連で、何かWindowsの仕様がかわったのでしょうか?

pserver から localアクセスに変更しても変わらず。リボジトリのWindows上のユーザ権限を見直してもダメ。結局原因は以下でした。

しょうもない原因でした。

e2studioでRH850F1KHを使うときの注意

弊方では、CS+ より e2studioの方を優先して使ってます。eclipceの機能や各種プラグインが使え(特にvim)効率が高く、CS+ と対マイコン機能も遜色ない。ただマシンパワーが少々必要です。

今回、RH850F1KHを使うにあたり気付いたことをメモです。正しくはリリースノートに記載されているとは思います。今日のところはCC-RH無償版です。

e2studio 2022-10 では未対応

組込みのセオリーではありますが、他案件でこのバージョンを使っているためUpdateしたくないのですが、未対応でした。以下詳細です。

ヘルプ -> e2studioについて -> インストールの詳細 -> Renesas Device Support から対応マイコンを確認するとツーリーには現れますが Debug 以外はNo がついています。どういう意味なのでしょうか? もしかしてCC-RH無償版ではNG!?

ファイル -> 新規 -> Renesas C/C++ Project -> Renesas RH850 -> Renesas CC-RH Executable Projet と選択し、プロジェクトダイアログ 名を入力、次のダイアログでターゲットデバイスの「」をクリックし、Device Selection画面からは F1KH はでてきませんね。

昔昔は、マイコン毎に「デバイスファイル」がデリバリされていて、それをIDEにインポートしてましたが今はそうではないんですね… ルネサスダウンロードを探しても見つかりません。

しかたなくアップデートを試みましたが、JDK環境エラーになりました。

互換は、JDK17 でPCには JDK18 がいれてあります。JDK18 は認識されず OpenJDK が認識され引っかかっています。JDK17/18は今はOracleの管理下のプロダクトで、OpenJDK はそれとは違う管理されていないもののようです。e2studio 2022-10 に以下のように一緒にインストールされていたみたいです。

e2studio 2024-07 では対応

JDKの環境も、e2studio 以外にもいろいろ影響が考えられるので、比較的クリーンな別PCに最新版2024-07をインストールすると、F1KHでプロジェクト生成ができました。以下詳細です。

Renesas Device Support の対応マイコンツリーは以下のとおりでした。

プロジェクト生成時のDevice Selection画面の内容は、

一応ひな形自動生成ツール スマートコンフィグレータ で自動生成し、まだ基板は工作中なのでRH850シュミレータ で実行までしてみてOKでした。シュミレータの簡単な設定方法は以下のとおりです。

RH850コンパイラ状況

とりあえず今からコンパイラ要購入でなくてヨカッタです。

ちなみに CC-RH は C++ 未対応なんですね。C++はサードパーティ製のみ。

gcc も RL78、RX系、V850は対応してますが、RH850は無いようです。

C++ で効率よくつくりたいものです。

Microsoft Visual C++ 2015-2022 Runtime (x86): が既にインストール済みか、ターゲットバージョンの異なるエディションが入っていた場合、インストールエラーになってしまうようです。

e-taxで累積赤字決算申請する3:市町村向け

前記事では都道府県への申請を行いました。

つづいて市町村への申請をします。

PCdesk(DL版) を再起動し、市町村用のアカウントでログインします。右上の納税者切替ボタンはうまくいかない感じです。あとは県の場合と同じです。

作成する申請書は、「第二十号様式」のみです。この留意点は、この申告の基礎 は入力してはいけません。年号が選択できるようになっていますが、ついつい触ってしまわないように気を付けます。

従業員数、期末現在の資本金額、右下のチェックボタン3つ、決算日 を入れておいています。

納税情報の申請時には、税目区分法人市町村民税 に切り換えて検索する必要があります。

その他

起業初年度で、起業月の途中日から開始した場合は、均等割の計7万円が日割りで割引かれます。初年度は知らずに申請しましたがシステム上チェックはかかりません。後から、県の方から手紙が来て返却されました。県の方から「市の方も申請すれぱ返却できるはず」と言われいすました。(市からは特に連絡なし)

まとめ

eLTAXの操作は、余計な画面や確認が多くて難しいです。しかし手書きして税務署に行くよりははるかに効率的ではあります。しかしながら、操作がWEBだったりPCアプリだったり、国用と地方用が別だったり、一つにまとめれば開発費も減り、税金も大事できたのにと思う次第です。

Xperia Z4 Tablet LTE海外版をAndorid11相当にUpdateする【’24.9月編】

めずらしい Xperia Z4 Tablet LTE海外版 SGP771 をAndorid11相当にカスタムROM化時の、国内版である SO-05G との違いを報告いたします。

カスタムROM化の鬼門である “Bootlooder Unlock Allowd” は、海外版では下記のとおり YES でした。これを No → YES にする必要はないです。SO-05G では現在解除サービスが無くなってしまいカスタムROM化不能ですが、 SGP771 をは可能ということになります。

Bootloader を unlock するコマンド “fastboot oem unlock” にて、以下のようにCommand not allowed” という見慣れないエラーが発生し unlock できません。Z3 Tablet Compact 海外版ではすんなりunlockできていたのですが、、、

海外の投稿を拝見すると、まれに発生するようです。その投稿には中途半端な状態で端末初期化すると、unlock解除コードが変わってしまうなど記載があり、根本解決策まで記載されていませんでした。

たまたまfastbootのUIツールでいじくりまわしていて解除できました。手順は以下のわうに一度relockし unlock するものでした。

このあと純正OSを起動して、”Bootlooder Unlock Allowd” を確認します。以下のように上手くいっていました。しかし通常 unlock が成功するとOS起動時に自動初期化が走るのですが、この時はそれが走らなかったです。

SO-05G と同様に OpenGapp をLinageOSと一緒にインストールしましたが、Googleアカウント追加でログイン画面のあと真っ暗になります。OSの Googelメニュー と Google Play も表示が以下のような異常になりました。カスタムROM自体はSO-05G と同じですものです。

OpenGapp は最終更新日が、’22.5月 と古くてGoogleサーバと互換がなくなってしまったようです。

LinageOS公式のGapp MindTheGapps  をインストールします。mobile Android TV がありますが、mobile: MindTheGapps-11.0.0-arm64-20230922_081122.zip を入れました。もしかするとOSはこれより古いもので、*MicroG*と命名されたzipのものが、互換性があるのかもしれません。

これまでのGappは必要そうなものが一式インストールされていましたが、MindTheGapps  でインストールされるアプリは、Google(サービス)Google Play だけで、あと必要なものは Google Play からインストールしろというポリシーです。

しかしこのままだと Google Play は正常動作しません。Google 更新で Google Play は起動可能になりますが、何か操作すると落ちます。以下の追加手順が必要です。

試しに Google MAP を入れてみます。インストールできました。動作させるには端末再起動をしたほうが良いようです。

MindTheGapps をインストールしても Google Playが現れない場合、一度OSから入れ直し、先にOpenGappをインストールしてから、MindTheGapps をインストールすると上手くいく場合があるようです。SPG612、SPG621など他機種でも同様の傾向があるようです。

Z3 Tabletでは怪しかったGPS動作を、GPSTESTアプリにて再確認してみます。反応もよく調子いいようです。


以上、SGP771 を Android11相当にupdateし、Google Play の動作させ手順です。しかしながら自分でやるのはメンドクサイ、忙しい、自身が無い方は、弊方でセットアップをお受けいたします。Google Paly初期セットアップに手間をようするため難易度中、約1.25時間の個人様向け工数+事務費で税込4,000円~ 。ご相談、依頼はこちらから。

Dainese ライディングシューズ にシフトガードを追加する。

趣味や得意なことを事業化できれば効率的です。簡単な自動車用品を加工をできないか模索しています。


Dainese ライディングシューズは履き心地がよく、デザインも良好です。しかし最近のモデルはシフトガードがありません。(過去モデルで樹脂がことごとく四散するからかも?) シフトレバーがゴムでカバーされている車両はこれでよいですが、金属直の車両ですとちょっと痛いですし、汚れがめだってしまいます。そこでシフトガードを追加してみました。対象は夏用シューズです。

素材は ビブラム というイタリアメーカの補修用靴底の余りを厚さ5mm程度削ったものです。

接着だけでは耐えない可能性があるため、革用糸を使い特殊な技法で縫ってあります。

効果はテキメン、柔軟性もあるため歩行にも支障はないです。しかし一回目はまたまだ下手です。次に冬用にも施す予定です。

このようなカスタムサービスはいかがでしょうか? ご意見お待ちしております。