ひでみのアイデア帳 2024-04-27T18:26:42+09:00 urn:uuid:32c34578-c4da-8d90-5f18-1740239359ee あけましておめでとうございます。 本年もよろしくお願いいたします。 本年はなにか基板を作りたいと思っています。 urn:uuid:999e6075-dc4a-a5bb-e704-a443011fe6b3 あけましておめでとうございます。

本年もよろしくお願いいたします。

本年はなにか基板を作りたいと思っています。

]]>
2024-01-01T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <p>あけましておめでとうございます。</p> <p>本年もよろしくお願いいたします。</p> <p>本年はなにか基板を作りたいと思っています。</p>
RSS対応してみました urn:uuid:c5fd81b5-ae42-9779-51e0-1e39a90d6b74 RSS対応してみました

なんとなくlinkタグつけてRSS対応してみました。

最近、Webの巡回も面倒になってきたのでchrome拡張のfeedbroを使っています。

同期は取れないけど、リアルタイムに同期する必要もないし気が向いたときにExportしてImportすれば良いし…。

]]>
2023-06-13T09:41:42+09:00 ひでみ hidemi@sweetcafe/jp <h1>RSS対応してみました</h1> <p>なんとなくlinkタグつけてRSS対応してみました。</p> <p>最近、Webの巡回も面倒になってきたのでchrome拡張のfeedbroを使っています。</p> <p>同期は取れないけど、リアルタイムに同期する必要もないし気が向いたときにExportしてImportすれば良いし…。</p>
Windows 11上のWSL2でext4フォーマットされたディスクをmountする手順 urn:uuid:4ed9d932-b344-9dfc-8b5f-9864227c10d2 Windows 11上のWSL2でext4フォーマットされたディスクをmountする手順

WSL2上でこんな風に見えているはずである。

$ lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0   256G  0 disk
sdb    8:16   0 339.7M  1 disk
sdc    8:32   0   256G  0 disk /

まずはPowerShellからデバイスをマウントする

PS C:\Users\hidemi> GET-CimInstance -query "SELECT * from Win32_DiskDrive"

DeviceID           Caption          Partitions Size          Model
--------           -------          ---------- ----          -----
\\.\PHYSICALDRIVE0 CSSD-M2B2TPG3VNF 3          2000396321280 CSSD-M2B2TPG3VNF
\\.\PHYSICALDRIVE1 Force MP600      1          2000396321280 Force MP600

ここでForce MP600のデバイスをmountしたい場合、PowerShellを管理者モードで起動して下記のコマンドを実行する

PS C:\Users\hidemi> wsl --mount \\.\PHYSICALDRIVE1 --bare

WSL2上でlsblkすると次のようにsddが追加される。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   256G  0 disk
sdb      8:16   0 339.7M  1 disk
sdc      8:32   0   256G  0 disk /
sdd      8:48   0   1.8T  0 disk
└─sdd1   8:49   0   1.8T  0 part

あとはmountするだけである。

$ sudo monunt /dev/sdd1 /mnt
]]>
2022-12-15T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>Windows 11上のWSL2でext4フォーマットされたディスクをmountする手順</h1> <p>WSL2上でこんな風に見えているはずである。</p> <pre><code>$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 256G 0 disk sdb 8:16 0 339.7M 1 disk sdc 8:32 0 256G 0 disk /</code></pre> <p>まずはPowerShellからデバイスをマウントする</p> <pre><code>PS C:\Users\hidemi&gt; GET-CimInstance -query "SELECT * from Win32_DiskDrive" DeviceID Caption Partitions Size Model -------- ------- ---------- ---- ----- \\.\PHYSICALDRIVE0 CSSD-M2B2TPG3VNF 3 2000396321280 CSSD-M2B2TPG3VNF \\.\PHYSICALDRIVE1 Force MP600 1 2000396321280 Force MP600</code></pre> <p>ここでForce MP600のデバイスをmountしたい場合、PowerShellを管理者モードで起動して下記のコマンドを実行する</p> <pre><code>PS C:\Users\hidemi&gt; wsl --mount \\.\PHYSICALDRIVE1 --bare</code></pre> <p>WSL2上でlsblkすると次のようにsddが追加される。</p> <pre><code>$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 256G 0 disk sdb 8:16 0 339.7M 1 disk sdc 8:32 0 256G 0 disk / sdd 8:48 0 1.8T 0 disk └─sdd1 8:49 0 1.8T 0 part</code></pre> <p>あとはmountするだけである。</p> <pre><code>$ sudo monunt /dev/sdd1 /mnt</code></pre>
UARTの最高ボーレート urn:uuid:def28ad2-b008-c519-71d6-8985f8bfed43 UARTの最高ボーレート

 単純なシステムのデバッグの時にUARTを使うことが多いのですがUARTって実際に使える最大ボーレートってどれくらいなんだろうと調査してみた。

 通常、115,200bpsを最大であることが記載されていることが多いけど、スピードさえ間に合えば上限は超えていいわけで、ホスト側のターミナル・ツールとデバイス側が設定できる範囲とハードウェア側で物理的に動く範囲までは使えるということになる。

ターミナル・ツール

TeraTerm

 TeraTermでは115,200bps以上の設定はタブで用意されているのは230,400、460,800、921,600の約1Mbps弱までの3つです。これ以上は出来ないのかと思っていたけど、手入力すれば使えます。

Minicom

 minicomはminicom -sで設定を開いて確認することができます。プリセットで230,400、460,800、921,600の他には500,000、576,000、1,000,000、1,152,000、1,500,000、2,000,000、2,500,000、3,000,000、3,500,000、4,000,000の4Mbpsまで500kbps刻みで用意されています。

デバイス

FT231X

 筆者がよく使うFTDIのFT231Xは最大3Mbpsまで設定することが可能です。

その他のデバイス

 10Mbpsぐらいまででるものがあるようです。

ハードウェア

 実機上の最大ボーレートは設計次第です。

まとめ

 最近の開発ではUARTって、おまけみたいなところが大きいから基板上で引きまわしたとして、実際に使える最大ボーレートは1~10Mbpsってところが妥当なところなのかな?

]]>
2022-11-28T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>UARTの最高ボーレート</h1> <p> 単純なシステムのデバッグの時にUARTを使うことが多いのですがUARTって実際に使える最大ボーレートってどれくらいなんだろうと調査してみた。</p> <p> 通常、115,200bpsを最大であることが記載されていることが多いけど、スピードさえ間に合えば上限は超えていいわけで、ホスト側のターミナル・ツールとデバイス側が設定できる範囲とハードウェア側で物理的に動く範囲までは使えるということになる。</p> <h2>ターミナル・ツール</h2> <h3>TeraTerm</h3> <p> TeraTermでは115,200bps以上の設定はタブで用意されているのは230,400、460,800、921,600の約1Mbps弱までの3つです。これ以上は出来ないのかと思っていたけど、手入力すれば使えます。</p> <h3>Minicom</h3> <p> minicomは<code>minicom -s</code>で設定を開いて確認することができます。プリセットで230,400、460,800、921,600の他には500,000、576,000、1,000,000、1,152,000、1,500,000、2,000,000、2,500,000、3,000,000、3,500,000、4,000,000の4Mbpsまで500kbps刻みで用意されています。</p> <h2>デバイス</h2> <h3>FT231X</h3> <p> 筆者がよく使うFTDIのFT231Xは最大3Mbpsまで設定することが可能です。</p> <h3>その他のデバイス</h3> <p> 10Mbpsぐらいまででるものがあるようです。</p> <h2>ハードウェア</h2> <p> 実機上の最大ボーレートは設計次第です。</p> <h2>まとめ</h2> <p> 最近の開発ではUARTって、おまけみたいなところが大きいから基板上で引きまわしたとして、実際に使える最大ボーレートは1~10Mbpsってところが妥当なところなのかな?</p>
WindowsのWSL上からVScodeでACRiのサーバーにログイン urn:uuid:ecf8d501-adb4-7075-8f3a-c593808f0f53 WindowsのWSL上からVScodeでACRiのサーバーにログイン

 ここではWindowsのWSLからVScodeでACRiのサーバーにログインする環境を整えます。

なぜ、WindowsのWSL上からVScodeからACRiのサーバーにログインするのか?

 それは筆者の普段のFPGA開発スタイルがVScodeだけでソフトウェア開発と変わりないからです。GUIを使ってFPGA開発を行っている方もいますが筆者はGUIを使用しません(使用するのはごく稀にです)。

ACRiとは

 ACRiとはアダプティブコンピューティング研究推進体であり、ACRiが運営するFPGA利用環境を無償で利用できます。ACRiが運営しているサーバー上でFPGAのツールを使用して論理合成や配置配線を行い、評価ボードを使用して実機で動作確認を行うことができます。  利用に関する手続きや条件については次のリンクから確認してください。

ACRi ルームへようこそ!

実現する環境

 下図のように自分のPC(Client)からACRiのサーバにアクセスするのですがせっかくなら全部VScodeで済むようにしたい。そうすると、WindowsからファイルをコピーするのにWinSCPなどのツールを使うこともなくなります。コマンド入力のためのターミナルも別々に開く必要もなくなります。

実現する環境

WSLから使用する

 これを実現するだけであれば、WindowsのスタートメニューからVScodeを起動して、VScodeでコマンドパレットを開いて、Remote-SSHすればいいだけですがACriのホストに繋げるにはコマンドパレットではちょっと面倒なのでWindows Terminalから接続できるようにします、

手順

ACRiで予約

 まずはACRiで使用するサーバーを予約しなければいけません。

 ここではvs114というサーバーを予約したことにします。

vs114にアクセスできるか確認

 もし、sshpassやsshがインストールされていないのであれば、次のようにインストールしておきます。

sudo apt install sshpass ssh

 WSL上から次のようにコマンドを実行します。

sshpass -p PASSWORD ssh -o ProxyCommand="sshpass -p PASSWORD ssh -W SERVERNAME:%p USERNAME@gw.acri.c.titech.ac.jp" USERNAME@SERVERNAME

  PASSWORD = サーバーにログインするパスワード(Webログインのパスワードではない)   USERNAME = ACRiで登録したユーザー名  * SERVERNAME = 予約したサーバー名(ここではvs114)

 サーバーへのログインに成功すれば、次のようにプロンプトまで進みます。

$ sshpass -p PASSWORD ssh -o ProxyCommand="sshpass -p PASSWORD ssh -W vs114:%p USERNAME@gw.acri.c.titech.ac.jp" USERNAME@vs114
Warning: No xauth data; using fake authentication data for X11 forwarding.
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-193-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Nov 26 22:16:31 JST 2022

  System load:  0.02               Processes:             119
  Usage of /:   36.9% of 39.07GB   Users logged in:       0
  Memory usage: 12%                IP address for enp0s3: 172.16.11.14
  Swap usage:   0%


 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

119 packages can be updated.
2 updates are security updates.

Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


Last login: Fri Nov 25 22:35:57 2022 from 172.16.2.4
USERNAME@vs114:~$

 これができれば、あとはVScodeでremote-SSHするだけです。

.sshの用意

 WSLの.ssh/configに次のように追加します。

Host vs114
    ProxyCommand sshpass -p PASSWORD ssh -W vs114:%p USERNAME@gw.acri.c.titech.ac.jp
    User USERNAME

これでssh vs114を実行したときはパスワードを1回だけ尋ねてくるだけでサーバーにログインできます。

 もうひとつ重要なのがWindows側にも.ssh/configを追加しておきます。具体的にはC:\Users\USERNAME\.ssh\configに上記の設定を追加しておきます。Windows側にはsshpassコマンドがないので次のようにsshpassを外して設定します。

Host vs114
    ProxyCommand ssh -W vs114:%p USERNAME@gw.acri.c.titech.ac.jp
    User USERNAME

sshcodeコマンド

 VScodeでssh接続する前にsshcodeというコマンドを作成します。次のようにnanoなどのエディターを開いてsshcodeを作りましょう。

nano sshcode

sshcodeの中身はこんな感じのスクリプトです。

#!/bin/bash

# 引数: Host:Directory
location="$1"
if [ "$location" = "" ]; then
  echo "usage: $0 <host:path>"
  exit 1
fi

# HostとDirectoryを分割
host=${location%%:*}
dir=${location##*:}
if [ "$host" = "$dir" ]; then
  dir=""
fi

# Directoryがない場合はHome
home=""
if [ "$dir" = "" -o "${dir:0:1}" != "/" ]; then
  home="$(ssh $host pwd)/"
fi

# ssh with VScode
path="$home$dir"
code --folder-uri "vscode-remote://ssh-remote+$host$path"

 sshcodeはPATHの通っているところに置いてください。

ssh接続

 次のようにssh接続します。

sshpass -p PASSWORD sshcode vs114

 そうするとコマンドパレットで2回、パスワードを尋ねてくるので入力するするとVScodeが立ち上がります。

 初回だけ、パスワードは合計4回と起動後にVScodeサーバーをインストールするので時間がかかります。

実現する環境

 VScodeの左のアクティビティバーのエクスプローラを開くと、ssh接続コマンドで指定したディレクトリをワークスペースとして開くことができます(上記のコマンドではディレクトリをしていないのでホームが表示されている)。bashはVScodeを起動してから"ターミナル"-"新しいターミナルを開く"でターミナルを開いています(ショートカットで開いても良い)。

 ディレクトリを指定してssh接続する場合は次のようにディレクトリを指定して接続します。

sshpass -p PASSWORD sshcode vs114:/home/USERNAME/FPGA_PROJECT

sshの接続構成

 WSLからssh接続のコマンドを使用していますが起動するVScodeはWindows側のVScodeであって、VScodeがサーバーにssh接続するのはWSLのsshではなく、Windowsのsshを使用します。さらにACRiのサーバーへの接続はgw.acri.c.titech.ac.jp(fserv4)を踏み台としてアクセスします。

 図にすると下図のようなアクセスでVScodeが起動した後はWindows上でのアクセスに変わります。そのために、Windows側の.ssh/configも設定したのでした。

その他

別にサーバーにVSCodeを接続しなくてもよい

 サーバーにアクセスしなくてもサーバーと踏み台は同じストレージが見えるのでVScodeは踏み台にアクセスして、そこからターミナルを開いてサーバーにsshしてもいいんだけど…。

普段でも使える

sshcodeコマンド+VScodeはACRiでなくても普段の環境でも使用可能です。合成マシンを別のLinuxサーバーとかで行っているという環境であれば、同じように使えます。

]]>
2022-11-27T00:00:00+09:00 ひでみ hidemi@sweetcafe/jp <h1>WindowsのWSL上からVScodeでACRiのサーバーにログイン</h1> <p> ここではWindowsのWSLからVScodeでACRiのサーバーにログインする環境を整えます。</p> <h2>なぜ、WindowsのWSL上からVScodeからACRiのサーバーにログインするのか?</h2> <p> それは筆者の普段のFPGA開発スタイルがVScodeだけでソフトウェア開発と変わりないからです。GUIを使ってFPGA開発を行っている方もいますが筆者はGUIを使用しません(使用するのはごく稀にです)。</p> <h2>ACRiとは</h2> <p> ACRiとはアダプティブコンピューティング研究推進体であり、ACRiが運営するFPGA利用環境を無償で利用できます。ACRiが運営しているサーバー上でFPGAのツールを使用して論理合成や配置配線を行い、評価ボードを使用して実機で動作確認を行うことができます。  利用に関する手続きや条件については次のリンクから確認してください。</p> <p><a href="https://gw.acri.c.titech.ac.jp/wp/">ACRi ルームへようこそ!</a></p> <h2>実現する環境</h2> <p> 下図のように自分のPC(Client)からACRiのサーバにアクセスするのですがせっかくなら全部VScodeで済むようにしたい。そうすると、WindowsからファイルをコピーするのにWinSCPなどのツールを使うこともなくなります。コマンド入力のためのターミナルも別々に開く必要もなくなります。</p> <p><img src="../files/20221126-01.drawio.png" alt="実現する環境" /></p> <h3>WSLから使用する</h3> <p> これを実現するだけであれば、WindowsのスタートメニューからVScodeを起動して、VScodeでコマンドパレットを開いて、Remote-SSHすればいいだけですがACriのホストに繋げるにはコマンドパレットではちょっと面倒なのでWindows Terminalから接続できるようにします、</p> <h2>手順</h2> <h3>ACRiで予約</h3> <p> まずはACRiで使用するサーバーを予約しなければいけません。</p> <p> ここではvs114というサーバーを予約したことにします。</p> <h3>vs114にアクセスできるか確認</h3> <p> もし、sshpassやsshがインストールされていないのであれば、次のようにインストールしておきます。</p> <pre><code>sudo apt install sshpass ssh</code></pre> <p> WSL上から次のようにコマンドを実行します。</p> <pre><code>sshpass -p PASSWORD ssh -o ProxyCommand="sshpass -p PASSWORD ssh -W SERVERNAME:%p USERNAME@gw.acri.c.titech.ac.jp" USERNAME@SERVERNAME</code></pre> <p> <em> PASSWORD = サーバーにログインするパスワード(Webログインのパスワードではない)  </em> USERNAME = ACRiで登録したユーザー名  * SERVERNAME = 予約したサーバー名(ここではvs114)</p> <p> サーバーへのログインに成功すれば、次のようにプロンプトまで進みます。</p> <pre><code>$ sshpass -p PASSWORD ssh -o ProxyCommand="sshpass -p PASSWORD ssh -W vs114:%p USERNAME@gw.acri.c.titech.ac.jp" USERNAME@vs114 Warning: No xauth data; using fake authentication data for X11 forwarding. Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-193-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sat Nov 26 22:16:31 JST 2022 System load: 0.02 Processes: 119 Usage of /: 36.9% of 39.07GB Users logged in: 0 Memory usage: 12% IP address for enp0s3: 172.16.11.14 Swap usage: 0% * Canonical Livepatch is available for installation. - Reduce system reboots and improve kernel security. Activate at: https://ubuntu.com/livepatch 119 packages can be updated. 2 updates are security updates. Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings Last login: Fri Nov 25 22:35:57 2022 from 172.16.2.4 USERNAME@vs114:~$</code></pre> <p> これができれば、あとはVScodeでremote-SSHするだけです。</p> <h3>.sshの用意</h3> <p> WSLの.ssh/configに次のように追加します。</p> <pre><code>Host vs114 ProxyCommand sshpass -p PASSWORD ssh -W vs114:%p USERNAME@gw.acri.c.titech.ac.jp User USERNAME</code></pre> <p>これで<code>ssh vs114</code>を実行したときはパスワードを1回だけ尋ねてくるだけでサーバーにログインできます。</p> <p> もうひとつ重要なのがWindows側にも<code>.ssh/config</code>を追加しておきます。具体的には<code>C:\Users\USERNAME\.ssh\config</code>に上記の設定を追加しておきます。Windows側にはsshpassコマンドがないので次のようにsshpassを外して設定します。</p> <pre><code>Host vs114 ProxyCommand ssh -W vs114:%p USERNAME@gw.acri.c.titech.ac.jp User USERNAME</code></pre> <h3>sshcodeコマンド</h3> <p> VScodeでssh接続する前にsshcodeというコマンドを作成します。次のようにnanoなどのエディターを開いてsshcodeを作りましょう。</p> <pre><code>nano sshcode</code></pre> <p>sshcodeの中身はこんな感じのスクリプトです。</p> <pre><code>#!/bin/bash # 引数: Host:Directory location="$1" if [ "$location" = "" ]; then echo "usage: $0 &lt;host:path&gt;" exit 1 fi # HostとDirectoryを分割 host=${location%%:*} dir=${location##*:} if [ "$host" = "$dir" ]; then dir="" fi # Directoryがない場合はHome home="" if [ "$dir" = "" -o "${dir:0:1}" != "/" ]; then home="$(ssh $host pwd)/" fi # ssh with VScode path="$home$dir" code --folder-uri "vscode-remote://ssh-remote+$host$path"</code></pre> <p> sshcodeはPATHの通っているところに置いてください。</p> <h3>ssh接続</h3> <p> 次のようにssh接続します。</p> <pre><code>sshpass -p PASSWORD sshcode vs114</code></pre> <p> そうするとコマンドパレットで2回、パスワードを尋ねてくるので入力するするとVScodeが立ち上がります。</p> <p> 初回だけ、パスワードは合計4回と起動後にVScodeサーバーをインストールするので時間がかかります。</p> <p><img src="../files/20221126-02.drawio.png" alt="実現する環境" /></p> <p> VScodeの左のアクティビティバーのエクスプローラを開くと、ssh接続コマンドで指定したディレクトリをワークスペースとして開くことができます(上記のコマンドではディレクトリをしていないのでホームが表示されている)。bashはVScodeを起動してから"ターミナル"-"新しいターミナルを開く"でターミナルを開いています(ショートカットで開いても良い)。</p> <p> ディレクトリを指定してssh接続する場合は次のようにディレクトリを指定して接続します。</p> <pre><code>sshpass -p PASSWORD sshcode vs114:/home/USERNAME/FPGA_PROJECT</code></pre> <h2>sshの接続構成</h2> <p> WSLからssh接続のコマンドを使用していますが起動するVScodeはWindows側のVScodeであって、VScodeがサーバーにssh接続するのはWSLのsshではなく、Windowsのsshを使用します。さらにACRiのサーバーへの接続は<code>gw.acri.c.titech.ac.jp(fserv4)</code>を踏み台としてアクセスします。</p> <p> 図にすると下図のようなアクセスでVScodeが起動した後はWindows上でのアクセスに変わります。そのために、Windows側の<code>.ssh/config</code>も設定したのでした。</p> <p><img src="./files/../../files/20221126-03.drawio.png" alt="" /></p> <h2>その他</h2> <h3>別にサーバーにVSCodeを接続しなくてもよい</h3> <p> サーバーにアクセスしなくてもサーバーと踏み台は同じストレージが見えるのでVScodeは踏み台にアクセスして、そこからターミナルを開いてサーバーにsshしてもいいんだけど…。</p> <h3>普段でも使える</h3> <p>sshcodeコマンド+VScodeはACRiでなくても普段の環境でも使用可能です。合成マシンを別のLinuxサーバーとかで行っているという環境であれば、同じように使えます。</p>