2023.12.02

ZYNQのLinuxでUSBシリアル変換ケーブルを利用する方法

RS232Cで制御する機器(1軸ステージ)をZYNQのLinuxからコントロールしたいので、ZYNQ LinuxからUSBシリアル変換器を扱う方法を調べました。

やりたいことは、Cosmo-Z MiniにUSBシリアルケーブルをつないで1軸ステージを動かすことです。

Cszminiusbserial

まず、LinuxはUSBに新たなハードウェアがつながるとlsusbコマンドで何がつながっているかが表示されます。

root@cszmini:~# lsusb
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

しかし、ここで表示されたからといって使えるわけではありません。そのハードウェアが使えるかどうかはカーネルのコンパイル時にあらかじめ指定してあるかどうかで決まります。カーネルのコンパイル時に指定していなければ絶対に使えません。

なお、USBシリアル変換ケーブルにはCP210xやPL2303系、FTDI系などいろいろありますが現在のLinuxではすべてサポートされています。しかし、デフォルトでは有効になっていません。

これらを使うためカーネルのコンパイルで有効にするやり方ですが、まず、

cat /proc/config.gz | gunzip -c > .config

とやって、現在のコンフィグ情報をファイルに落とします。

これをLinuxをコンパイルするPCのLinux構築フォルダにコピーして、

make ARCH=arm menuconfig

でメニューコンフィグを出して、Device Driverの、

Kern1

USBの

Kern2

USB Serial Converter Supportを出します。

まず、ここが[ ]なので、[*]にします。

Kern3

中に入ったら上から3つくらいを有効[*]にします。(する必要があるかどうかはわからないけど一応)

CP2104やFTDIなどのメジャーどころと、

Kern4

そしてPL2303も有効にします。

Kern5

こうして

make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage

でコンパイルして新しくできたuImageでLinuxを起動すればサクッと認識されます。

認識されるとdmesgのメッセージにも残りますが、/dev/ttyUSB0としてドライバが作られます。

Pl2303

このドライバに対して

echo "Hello" > /dev/ttyUSB0

とすれば文字列が出力されます。

逆に、

cat /dev/ttyUSB0 

で受信文字列が表示されるのですが止まらなくなってしまうので、もう一工夫が必要なようです。

echo "Hello" > /dev/ttyUSB0

で出力された信号をオシロで見てみると、デフォルトでは9600bpsになっていました。

9600bps

速度を変更するにはsttyコマンドを使って、

stty -F /dev/ttyUSB0 speed 115200

とすればよいようです。

変更すると115200bpsになりました。

115200bps

C言語で扱うサンプルプログラムを書いてみました。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
int main()
{
int fd = open("/dev/ttyUSB0",O_RDWR);
if(fd < 0) return -1;
struct termios term;
cgetattr(fd, &term); // 現在の設定を得る
cfsetspeed(&term, B115200); // 115200baudに設定
cfmakeraw(&term); // RAWモード
tcsetattr( fd, TCSANOW, &term ); // 設定は即時反映させること
ioctl(fd, TCSETS, &term); // 設定を反映
write(fd, "Hello", 5);
usleep(100000); // 送受信待ち
char buf[256];
int len = read(fd, buf, sizeof(buf)); // 受信
buf[len] = '\0';
printf("Recv: '%s' %dBytes\n",buf,len);
close(fd);
}

ポイントとしては、

① ボーレートを設定するB115200というのはマクロ定義された値

② RAWモードにしないと、受信したときに送信を延々と繰り返してしまうので、必須

③ 受信のreadはブロックしない。長めの長さを与えておいてもOK。(受信文字列の組み立ては自分でやるということ)

です。

 

| | コメント (0)

2023.12.01

XILINXの古いXSDK(2018.3)をインストールする

XILINXのSDKの古いバージョンが必要になったのでインストールしようとしたのですが、古くてWebインストールがサポートされなくなり、フルインストールのファイルを探してきて自分でインストールしなければならなくなったようです。

Webinst

しかし、XILINXの古いファイルのダウンロード(SDK/PetaLinuxアーカイブ)にはWebインストーラしかありません。

Webinst2

いろいろ試行錯誤の末、

https://account.amd.com/en/forms/downloads/xef-vivado.html?filename=

の後ろに欲しいファイルの名前を直接書けばいいのではないかと思い、やってみました。

https://account.amd.com/en/forms/downloads/xef-vivado.html?filename=Xilinx_Vivado_SDK_2018.3_1207_2324.tar.gz

そうしたら、大正解。

無事にダウンロードでき、解凍してインストールできました。

フルインストールなのでVivadoやVivado HLSも一緒に入ってしまいます。Vivadoを抜いてXSDKだけインストールすることはできないようです。

Xsdkinstall

容量が大きくて困るのですが、仕方ありません。

 

 

| | コメント (0)

2023.11.30

JLCPCBからBGA256用のソケット基板が届いた

JLCPCBに発注しておいたBGA256用の基板が届きました。

土曜日に発注してそのまま製造が開始して、月曜日に発送、水曜日到着ですから実質的に4日間で届いたことになります。

Jlc1

左側のBGA256基板(0.8mmピッチ)はちゃんと嵌ったのですが・・・

Jlc2

右側の山一電機製のBGA225ソケットは嵌りませんでした。

Jlc3

よく見ると、この山一電機のソケットはピンがスプリング構造ではなく、基板に穴をあけてはんだ付けするタイプのようです。

もしかすると、山一電機のオープントップタイプのソケットはすべてスルーホールタイプのようです。0.3mmの穴をあけてピンを差し込んではんだ付けするとか・・!?気が遠くなりそうです。

Yamaichi

 

| | コメント (0)

2023.11.29

事業再構築補助金の事故報告の結果

事業再構築補助金の事業は交付決定から12カ月または採択日から14カ月以内に完了させなければなりません。

私は第6回採択者(2022年9月15日採択発表発表)だったので、最長でも11月14日でした。

 

原則は14カ月以内なのですが、事故報告を出して承認がされると期限が延長される場合があります。

10月末ごろに事故報告を出して、一回差し戻されて再度提出したので、もしかすると期限が延長されているかもしれないという不確定な状況となっていました。

その結果が今日、まずはメールで来ました。

Jiko2

承認されたとのことで、メールには延長された期限については書いてありません。

 

少し遅れてjGrantsから通知が来ました。

 

Jiko1

 

このように延長された期限が明記されていました。

といっても、すでに実績報告は提出してしまっているので延びたからどうってわけでもないのですが、もしかすると、これからいくつかの物品を購入して補助対象経費に追加できるかもしれません。

事故報告というのは事業再構築補助金の期限を延ばす裏ワザかもしれませんね。

| | コメント (0)

2023.11.25

BGA225の基板も設計

BGA256(0.8mm)に続き、BGA225(0.8mm)の基板も設計中です。

Bga2251_20231202225401

規模は小さいのですが4層基板になりました。

Bga2252_20231202225401

BGA225ピンというと、ZYNQのXC7Z010とかで使われます。

そして、昨日のBGA256基板と一緒に面付してJLCPCBに発注!

Orderbga225256

その日のうちに受理され、土日の間に2-3日コースで製造されることになりました。

受注の関門を通ってしまえば、製造は土日に進みます。

 

| | コメント (0)

2023.11.24

BGA256ピン(0.8mm)ピッチのソケット基板を設計

BGA256用のソケット基板を設計しています。

ターゲットとなるのはMAX10あたりでしょう。

この基板はお客様から真贋判定の依頼があって作っています。(なぜ、すでに作ってあるソケット基板に適合したICの検査依頼はこなくて、いまない基板の依頼ばかりくるのだろう)

Bga25608_1

このくらいの基板なら1日で設計できるようになってきました。

| | コメント (0)

2023.11.22

Design Solution Forum 2023に出展しました

Design Solution Forum 2023、通称DSF2023に出展しました。

ACRiの中の子ブースとして出展し、半導体真贋判定装置を展示してきました。

Dsf2023

見ていただいた方の反応は上々でした。

過去に半導体試験装置を作っていたという方から「うん、半導体テスタだね」というコメントをいただいたので、その筋のプロの方にも半導体テスタに見えたのでしょう。

この装置はいくらなの?という質問もいただいたのですが、装置を売るのではなく「検査サービスの提供」です。

 

展示会の時には毎回ながら徹夜で準備するという癖はそろそろ直したいですね。朝3時ごろにパンフレットの原稿を仕上げて、6時半に東京駅八重洲口のアクセアまで受け取りに行き、この装置一式を60cm×60cm×60cmくらいの大きな段ボール箱にいれてそれを抱えて電車に乗って会場に行くというハードなスケジュールでした。

箱の重さは30kg以上あるので気合をいれれば持ち上げられるのですが、抱えて歩くにしても20mごとに休憩を挟まなければ無理という重さ&形状でした。

武蔵小杉駅の総武線ホームから会場まで約1km。とても歩ける距離じゃないので、駅の反対側の改札口から出てタクシーで会場へ行くという無謀な計画でした。着いた時には腕の感覚はもうなくなっていました。

 

| | コメント (0)

半導体真贋判定装置Type-Cを組み立てた

本日の展示会DSFにもっていくため、半導体真贋判定装置Type-Cを徹夜で組み立てています。

この後ろに見えている子基板を、このベース基板と筐体の中に組み立てなければなりません。

Kumi1

・・・

で、できたー!

26個のモジュール、416個の子基板、18700個のMOSFETスイッチ!

Kumi2  

上にベースボードを乗せて、ソケット基板を乗せて、組み立て完了です。

Kumi3

・・くっ、重い。

20kgはあるな。

持っていけるのか!?

| | コメント (0)

«X線3D CTスキャナを買いました