Eclipseの設定/操作方法メモ【随時更新】

汎用/Open SourceのIDE Eclipseの設定/操作方法の覚え書きです。

以外ですが、Ctrl + “+”Ctrl + “-” が効きます。Ctrl + マウスホイール は効きません。

検索ヒストリ

検索ヒストリがなかなか便利。ただEclipceを再起動するとリセットされてしまいます。

こちらの別記事にまとめました。

宣言先等を次々に素早く参照できるのはGoodですが、元がどこだか分からなくなりがちです。その場合の戻るは以下です。

フォルダリンク

Project Folder以外にソースがあるとき、直下に置かなくてもリンクを作ればOK。検索の対象になります。パッケージが全部必要ないとき、検索範囲を絞るのにも有効です。

Eclipce では #if #ifdef でBuild対象外になっているスコープがグレーアウトされます。Eclipce でBuildせず解析のみに使用する場合、ちょっと邪魔です。Project設定に以下のように追加します。

https://sourceforge.net/projects/copyaspath/ 右clickメニューから開いているfileのパスをclipboradにコピー
http://vrapper.sourceforge.net/update-site/stableVim、詳しくはこちらに記載しています。

.jar のpluginをインストールするには、eclipse\plugins にコピーして、クリーン起動(-clean)

pluginをインストール後のクリーン起動は、コマンドラインからたたかなくても以下にショートカットメニューが作られています。

以下に MS932 を設定し、Eclipceを再起動します。バージョンによっては、その他にチェックを入れ、MS932 を手入力します。

以下のように設定をexportします。図例は 2019版 です。

以下のよう移行先でimportします。図例は 2024版 です。

以上、随時更新中です。

Vimの設定メモ【随時更新】

最強最速のエディタviのUNIX上以外用であるVim設定の覚書です。しかし vi を使っていると「懐かしい!」という方がまれにいらっしゃいます。

基本設定

お勧め基本設定は以下のとおりです。vim74\gvimrc を以下のように編集します。

set tabstop=4
" オートインデントな
set noai
set nu
set shiftwidth=1
set nosr
set vb	" ビープ音な
"Explore表示の設定(:Exでファイルリストが表示できる)
let g:explDetailedList=1 "詳細表
let g:explDateFormat="%Y.%m.%d-%H:%M:%S" "Date形
"make 関
set makeprg=nmake.exe
set makeef=.\\make.out

fileと同じディレクトリに、中間file ~、.un~ を作らない

お勧め基本設定は以下のとおりです。vim74\gvimrc を以下のように編集します。

set directory=$LOCALAPPDATA\temp
set backupdir=$LOCALAPPDATA\temp
set undodir=$LOCALAPPDATA\temp

モトローラSレコードの表示

  • こちらから srec.vim をD/Lし、vim74\vim74\syntax にCopy。
  • こちらから srec.vim をD/Lし、vim74\vim74\ftplugin にCopy。
  • vim74\vim74\filetype.vim に以下のエントリに、”*.mot” を追加。
" Moterola S record
au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot	setf srec
  • アドレスの少し色が薄いのでvim74\vim74\syntax\srec.vim を少し直す。左から3語句目がvim74\vim74\colors\選択しているColorマップ.vim 中の色付け部位名に対応しています。
  HiLink S1Addr		label
  HiLink S2Addr		label
  HiLink S3Addr		label

以下表示結果です。

日本語文字コードの確認と変換

文字コード確認は、

変換は、set fenc=shitf_jis もしくは set fenc=utf-8 。でも部分的に混在しているとうまくいかなかったような、、、

よく分からなくなるモトローラSレコードフォーマットまとめ

組込ソフトの開発現場では、モトローラSレコードを直接見たり、少し加工したりすることもしばしばです。その都度、,ネットをみたり、昔作ったツールのコードを見たり手間なので自分用に必要なことだけをまとめておきます。

レコードの種類

レコードレイアウトはより、まずレコードの種類で悩みます。

種類項目名説明
S0コメントROM書き用なら削除してよい。
コンパイラが吐いたものなら削除していい。
生産情報ょ埋込むユーザさんもいるのでたくさんある場合は注意。
S116bitアドレスデータS2、S3と混在もOK。並びは基本アドレスの昇順。
S224bitアドレスデータS1、S3と混在もOK。並びは基本アドレスの昇順。
S332bitアドレスデータS1、S2と混在もOK。並びは基本アドレスの昇順。
S4リサーブ
S516bitアドレスデータレコード数ほとんど見たことがない。
ROM読書き時は無視してもよい。
S624bitアドレスデータレコード数ほとんど見たことがない。
ROM読書き時は無視してもよい。
S7S3セグメントの末尾に付与される。ここのデータ数値は諸説あるようだが、ROM読書きでは使用しない。
チェックサムではない。
次セグメントのアドレスoffsetは、Intel Hexの方である。
S8S2セグメントの末尾に付与される。ここのデータ数値は諸説あるようだが、ROM読書きでは使用しない。
チェックサムではない。
次セグメントのアドレスoffsetは、Intel Hexの方である。
S9S1セグメントの末尾に付与される。ここのデータ数値は諸説あるようだが、ROM読書きでは使用しない。
チェックサムではない。
次セグメントのアドレスoffsetは、Intel Hexの方である。
その他全体のチェックサム行はない

レコードのフォーマット

まず vim の .mot 設定をSetupしましょう。詳しくはこちら。

S1レコード:

byte位置 1基点桁数内容
12レコードタイプ
32レコード長、16進、
データ長 ÷2 + 8
48アドレス、16進
13桁以降2~512データ、16進、データ長は最大255
後ろから2チェックサム,
0xFF – アドレス以降の2桁毎のバイナリ値の総和を256で割った余り

S2レコード:

byte位置 1基点桁数内容
12レコードタイプ
32レコード長、16進、
データ長÷2 + 12
412アドレス、16進
17桁以降2~512データ、16進、データ長は最大255
後ろから2チェックサム、上に同じ

S3レコード:

byte位置 1基点桁数内容
12レコードタイプ
32レコード長、16進、
データ長桁数÷2 + 16
416アドレス、16進
21桁以降2~512データ、16進、データ長は最大255
後ろから2チェックサム、上に同じ

読込み時は、

  • コンパイラによって、マイコンのアドレス範囲によって、S1、S2、S3 がごちゃ混ぜになる場合がある。(コンパイラ次第ではレコード種を指定すれば回避化可能)
  • コンパイラによって、レコードデータ長が統一されない場合がある。
  • コンパイラによって、ブランクが空く場合がある。(コンパイラ次第では出力アドレス範囲を指定すれば回避可能)

自ら生成する場合は、

  • 利用先システムよって、レコードデータ長が統一されないと異常動作する場合がある。
  • 利用先システムよって、ブランクあると異常動作する場合がある。
  • 利用先システムよって、データフラッシュやRAM領域など、アドレスが 0xFxxx xxxx で書かれたデータを読むと落ちる場合がある。(絶対アドレスとしてメモリ確保されてしまうと当然足りない…)

弊方では、モトローラSレコード、Intel Hex fileのROMデータ加工アプリケーションとAPIライブラリも開発しております。自社で作るのは面倒、時間がない、土台となるコードがないなどありましたら、こちらより気軽にご相談ください。

Nordic UART送信能力調査2: nRF52840 と Android端末間編

前回nRF52840 から Nordic UART で 約2Kbyteのデータを定期送信し、送信能力を調べてみました。公称2Mbpsのところが 1.7kbyteしか送信できないのはナゼでしょうか?

前回は Android 側で受信側で確認しました。送信するNordic側ではどうでしょうか? Nordicで計測用タイマを追加して経過時間を、デバッグトレースで出力してみます。送信側から時間が伸びているように見えます。

Nordic掲示板をみてみる

送信側になにかありそうなので、ヒントがないか Nordic 掲示板:DevZone を見てみます。参考になる投稿がありました

オプション設定で BLE_COMMON_OPT_CONN_EVT_EXT を有効にし、#define値 NRF_SDH_BLE_GAP_EVENT_LENGTH を 320 くらいにしてみろとのこと。.h を追うとこのデフォルト値は 5 でした。このパラメータは、BTの接続チェックの周期だそうです。短ければ接続応答性が良いがデータ転送量が短くなり、長ければ接続応答性が悪いがデータ転送量が増えるという理屈の模様です。

試してみましたが微妙です。

DevZone では50kB/秒まで上がったという投稿もあれば、効果がないという投稿もあります。 BLE Long Range を使うというメーカの解説も見受けれれます。 何分、Andoird側の要素もあります。その時々で他の通信やプログラムの動作状況は異なり、リソースを占有できないことは十分に考えられます。

以降、執筆中

Windows11 24H2にUPDATEできなくなった件1

弊方の中古購入した富士通ESPRIMO Q556/R にて突然以下のような表示がでるようになりました。

Windows11 22H2 の期限迫っていることは理解しましたが、更新プログラムのチェック を押しても自動アップデートに進みません。別の Windows11のPCは、このようなことは無く、23H2 に勝手に更新されていました。 ナゼでしょう?

一先ずWindows11 22H2 のインストーラをダウンロードして実行してびっくりです。

現状を再確認します。23H2より Core i7-7700T がNGになったのでしょうか?

Windows11のCPU要件を再確認すると、Windows11 当初よりCore i7-7700 は非対応です。はてな?

あっ CPU換装したのを思い起こしました。元々はCorei 3-7100T でした。しかしコレが Windows11 の対象になっているかというと、、、

ネットを調べると、インストーラの CPU型番チェックの.dll を無効にして、インストールする方法があるようですね。業販だったので安心していたのですが、この方法で構築されたPCだったのかもしれません。これは想定外、開発環境も作り込んでいるので困った事態です。同じように困っている方もたくさんいらっしゃるんでしょうね、、、、

とはいうものの弊方も一度試してみます。appraiserrs.dll の中を空にした場合、普通に考えるとダイナミックリンク先のAPIが無いと何もカードしていないとアプリは異常終了します。Windows11のインストーラはdllを明示的ロードしてNGの場合 (LoadLibrary() APIで可能)をして、意図的にCPUチェックをスルーするロジックになっているといえます。 しかし、、、

考察するに、

  • 既にWindows11がインストールされているPCでは「appraiserrs.dll の中を空方式」 は、OS側がCPUチェックするため通用しない

とすると大型アップデート時は、毎回クリーンインストールが必要になりますね。これは大変だ。

RS232C付きの小型PCは貴重です。Win11の対象となっている core i7 8700Core i7-7700T と同じFCLGA1151ソケットと公式サイトにも記載がありますが、よく調べると前者はFCLGA1151-V2と呼ばれソケットは共通ですがピン配置は異なり、動作互換は理論上も物理的にも無いとのことです。ソケットの違いはここにまとめてあるみたいです。助かります。

よく調べると Q556/R の後継Q558/Bcore i 9世代対応、Q558/V core i 8世代対応になっていますね。まさかこれを見逃していたとは考えにくいです。Q558 を検索するとQ556もヒットしやすいですので、Win11だからQ558と勘違いしたのかもしれません。次記事に続きます。