USBコネクタ

USB 2.0とUSB 3.0はコネクタは一体になっていますが信号的な物理層は別物です。

USBにはコネクタタイプがいろいろありますが、ハードロジックを作るのには必要ないので調査は割愛する。

私はすべてUSB-Cに統一しつつあります。

USBコネクタがある場合、USB-C以外の機器は購入しないというのが最近の基本スタンスです。

write: 2024/05/05/ 00:00:00

 

USB 2.0 と 3.0

USBはつぎの転送レートがあります。

  • Super Speed
  • Hi Speed
  • Full Speed
  • Low Speed

それぞれの最大転送レートはつぎのようになっています。

  • Super Speed : 5 Gbps
  • Hi Speed : 480 Mbps
  • Full Speed : 12 Mbps
  • Low Speed : 1.5 Mbps

このうち、Low/Full/Hi SpeedがUSB 2.0に含まれ、Super SpeedがUSB 3.0です。

USB 2.0が出てきたときに、Low/Fullの上にHi Speedなんだって、USBの規格団体ってネーミングセンスが悪いなぁと思ってた。

Fullの上はなしだろうと思うのは私だけかな?

write: 2024/05/04/ 00:00:00

 

USBのハードウェア化

USBのハードウェア化を検討しているけど、USBのすべての機能を実装する必要はないと思っています。

今回の目的はUSBカメラを扱いたいだけなのでUVCに必要な機能のみ実装すればよいと思っているけど、これがどのぐらいの工数になるかまだわかっていません。

いちばん、端折れるのはlibusbの部分だと思っています。

今後はlibusb、つまりUSBの制御部分を中心に調べていこうと思います。

write: 2024/05/03/ 00:00:00

 

libuvcとUSB PHYまでのつながり

USB UVCをハードウェア化できないか検討しています。

Linuxではlibuvcがあるのでそれを元に作業を行っていくとして、ハードウェアまでどういうソフトウェアでつながっていくか調査しました。

ざっくり、描くとつぎのようなつながりになります。

write: 2024/05/02/ 00:00:00

 

Ubuntu 24.04 LTSへアップグレードとVivadoの対応

すごくひさびさにブログを書いています。 ここ数年はSNSへ細かく投稿してたのですがじょじょにブログへ戻していこうと思っています。

さてさて、4/25にUbuntu 24.04LTSがリリースされたので早速アップグレードしました。 Ubuntu 22.04LTSからのアップグレードを行ったのですがストレートに24.04LTSにアップグレードはできません。 これは7月にリリースされる24.04.1LTSで対応されるのだろうと思います。

そこで、まずは23.10にアップグレードしてから24.04LTSへアップグレードを行います。

/etc/update-manager/release-upgradesPrompt=ltsnormalに変更して23.10に、ltsに戻して24.04LTSへアップグレードします。 特に問題なくアップグレードが行えます。

Vivadoの対応

24.04LTSにすると問題が発生するかなと思ったら、XSIMでつぎのようなエラーが発生しました。

$ /opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/g++ -Wa,-W  -O -fPIC  -m64  -shared  -o "xsim.dir/work/xsc/dpi.so" "xsim.dir/work/xsc/sample.lnx64.o"     -L/opt/Xilinx/Vivado/2022.2/lib/lnx64.o -lrdi_simulator_kernel  -lrdi_xsim_systemc -std=c++11 -L/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/Default  -B/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ 
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libm.so.6 when searching for /lib/x86_64-linux-gnu/libm.so.6
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: cannot find /lib/x86_64-linux-gnu/libm.so.6
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libm.so.6 when searching for /lib/x86_64-linux-gnu/libm.so.6
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libmvec.so.1: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libmvec.so.1 when searching for /lib/x86_64-linux-gnu/libmvec.so.1
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: cannot find /lib/x86_64-linux-gnu/libmvec.so.1
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libmvec.so.1: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libmvec.so.1 when searching for /lib/x86_64-linux-gnu/libmvec.so.1
collect2: error: ld returned 1 exit status

Vivadoはbinutilsの2.37をかならず要求するようです。 Ubuntu 24.04LTSのbinutilsは2.42です。 そこでVivadoのbinutilsを2.42に入れ替えてしまいます。

$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.bz2
$ tar xvf binutils-2.42.tar.bz2
$ cd binutils-2.42
$ ./configure --prefix=/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.42/
$ make
$ make install

$ cd /opt/Xilinx/Vivado/2022.2/tps/lnx64
$ sudo mv binutils-2.37 binutils-2.37.org
$ sudo mv binutils-2.42 binutils-2.37

または

$ cd /opt/Xilinx/Vivado/2022.2/tps/lnx64
$ sudo mv binutils-2.37 binutils-2.37.org

$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.bz2
$ tar xvf binutils-2.42.tar.bz2
$ cd binutils-2.42
$ ./configure --prefix=/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/
$ make
$ make install

これでXSIMが正常にコンパイルできシミュレーションが実行できます。

write: 2024/05/01/ 00:00:00