MC68EZ328 SBCにLANコントローラを接続してネットワークに接続できないか試行錯誤しています。

cs8900a_lan_prototype2.jpg

前回の記事ではモニタ上でプログラムを動かし、LANコントローラCS8900Aの情報が取得できることを確認しました。次にこれをuClinuxで動かすことでネットワークアプリケーションを使えるようにします。

MC68EZ328 SBCでuClinuxが動くようになりましたがネットワークはまだ使えません。先日動作確認をしたuCsimmではLANコントローラーとしてCirrus Logic社のCS8900Aが搭載されています。uCsimmやデータシートを参考にしてMC68EZ328 SBCにLANコントローラを接続してみます。

まずは回路図作成とパーツ集めから

CS8900AはISAバス用に設計されたLANコントローラです。データシートも容易に入手できましたので、uCsimmの基板を参考にしながら回路図を起こしました。ほとんどのパーツは手に入りますが、CS8900AはAliexpressでの注文です。

cs8900a_board.jpg

またパルストランスが特殊なもの(TTR 1:2.5)でしたが、マルツパーツで取り寄せて購入できました。

cs8900_pulse_trans1.jpg

おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回はROSをつかってキーボードでルンバを動かすことに成功しました。今回はルンバのシュミレーターでPythonプログラムの動作を確認し、ルンバ実機で動かしてみます。

otafab_robot_43.jpg

今回もdemura.netさんの記事を参考にして進めてみます。

突然の0x80070035エラーが発生

久しぶりにThinkPad X1をQNAP NASにつなげようとしたところ、つながりませんでした。こんな画面が表示されてしまいます。エラーコードは 0x80070035 です。

qnap_nas_error_0x80070035.png

いろいろ試しても接続できません。デスクトップPCでは問題なく接続できています。やむなくThinkPad X1のWindows 10を再インストールしてみました。

しかし、状況はかわらず。試しにQNAPのIPアドレスを変更してみましたが、つながりません。おまけにデスクトップPCからも接続できなくなってしまいました。

ちなみにQNAPのファームウェアは現在最新のQTS 4.5.4.1723 build 20210708を使用しています。

あるプロジェクトでQwiicが使われていました。プロジェクトではQwiic Micro OLEDが使われているのですが、手持ちのOLEDをこのQwiic対応にできればお安くできるのではと思いつきました。

都合の良いことにQwiic対応用の小さなコネクタ付き基板も売られていましたので、これをOLEDにはんだ付けすれば良いだろうと思ったのですが・・・

qwiic_oled1.jpg

なぜか、SCAとSCLのピン配置が違います。なかなかうまくいかないものです。

おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回はルンバのセンサーデータをArduinoで読み取ることを試しました。少し時間が空きましたが、マイコンをArduinoからRaspberry Pi 4に変更して、少し高度なことができるようにROS(Robot Operating System)ルンバを動かしてみます。

ros_raspberrypi4_2.jpg

ROSをつかってルンバを動かすという記事はインターネットを検索すればいろいろでてきます。今回はdemura.netさんの記事を参考にして進めてみます。

uClinuxの起動が確認できたところで、早速探検してみます。

ファイルシステムを眺める

ログインしてlsしたところ、なぜかデバイスファイルが表示されました。

uCsimm login: root
Password:
# ls
console console cua0 cua0 cua1 cua1 cua2 cua2
cua3 cua3 cua4 cua4 cua5 cua5 cua6 cua6
cua7 cua7 cua8 cua8 cua9 cua9 dev dev
fb0 fb0 fb1 fb1 kmem kmem mem mem
null null ptyp0 ptyp0 ptyp1 ptyp1 ptyp2 ptyp2
ptyp3 ptyp3 ptyp4 ptyp4 ptyp5 ptyp5 ptyp6 ptyp6
ptyp7 ptyp7 ptyp8 ptyp8 ptyp9 ptyp9 ptypa ptypa
ptypb ptypb ptypc ptypc ptypd ptypd ptype ptype
ptypf ptypf ram0 ram0 ram1 ram1 ram2 ram2
ram3 ram3 rom0 rom0 rom1 rom1 rom2 rom2
rom3 rom3 tty tty tty0 tty0 tty1 tty1
tty2 tty2 tty3 tty3 tty4 tty4 tty5 tty5
tty6 tty6 tty7 tty7 tty8 tty8 tty9 tty9
ttyS0 ttyS0 ttyS1 ttyS1 ttyS2 ttyS2 ttyS3 ttyS3
ttyS4 ttyS4 ttyS5 ttyS5 ttyS6 ttyS6 ttyS7 ttyS7
ttyS8 ttyS8 ttyS9 ttyS9 ttyp0 ttyp0 ttyp1 ttyp1
ttyp2 ttyp2 ttyp3 ttyp3 ttyp4 ttyp4 ttyp5 ttyp5
ttyp6 ttyp6 ttyp7 ttyp7 ttyp8 ttyp8 ttyp9 ttyp9
ttypa ttypa ttypb ttypb ttypc ttypc ttypd ttypd
ttype ttype ttypf ttypf zero zero
#

以前ヤフオクで購入したあと行方不明になっていたuCsimmカードとuCgardenerベースカードが見つかりましたので動かしてみました。

uCsimmカード

uCsimmカードは2000年頃にRt-Control, Inc.とLineo, Inc.が開発したMC68EZ328でuClinuxが動作する30-pin SIMMサイズのマイコンボードです。これに刺激をうけて、uCdimm、ez328simm、DragonOneが登場したと思われます。現在開発中のMC68EZ328 SBCでも参考にしています。

uCsimm_front.jpg

uCsimm_back.jpg

uCsimmカードのスペックは以下の通りです。

  • MC68EZ328 CPU
  • 8 MB RAM
  • 2 MB Flash
  • 10 Mbit Ethernet controller (CS8900)
  • 30-pin SIMM module.

これらのチップに加えてRS232Cのレベル変換ICやLAN用パルストランスまでがSIMMモジュールに実装されています。これは組み込み前提で交換保守がしやすいようになっているのではと思われます。

hello worldの表示だけではいまいちですので、いつものASCIIARTベンチマークを動かしてみます。asciiart.basを見ながらasciiart.cを作り、hello.cと同様のビルド環境をつくりました。helloはimage.binに組み込んでフラッシュメモリに書き込むことでプログラムを動かしましたが、毎回image.binを書き込むのも大変です。

uClinuxではRAMディスクがあり、それが/varにmountされています。/tmpもここにあります。ある程度の容量がありますので、小さいプログラムではここに書き込むのがよさそうです。

XMODEMとかZMODEMとかがあると、かっこいいのですが、ここはbusyboxに実装されているuuencode/uudecodeを活用することにしバイナリをテキストにしてシリアルコンソールからアップロードすることにしました。

ビルド環境でのコンパイル

ビルド環境であるubuntuでの作業手順は以下のようになります。

ocha@ubuntu:~/asciiart$ pwd
/home/ocha/asciiart
ocha@ubuntu:~/asciiart$ ls -l 
total 116
-rwxr--r-- 1 ocha ocha  8952 Jun  7 08:49 asciiart
-rw-r--r-- 1 ocha ocha   468 Jun  7 08:49 asciiart.c
-rwxrwxr-x 1 ocha ocha 80105 Jun  7 08:49 asciiart.gdb
-rw-rw-r-- 1 ocha ocha  9212 Jun  7 08:49 asciiart.o
-rw-r--r-- 1 ocha ocha   442 Jun  7 08:16 Makefile
ocha@ubuntu:~/asciiart$ uuencode asciiart asciiart > asciiart.uu
ocha@ubuntu:~/asciiart$ cat asciiart.uu
begin 744 asciiart
M8D9,5`````0```!(```A0```(O```"?````0````(O`````"`````F"]7PX`
M``````````````````````````````!.<4YQ*D5!^0``!M).NX@`(A]P`4Y`
M3G5(YS\Z(&T`.$Z0?O1ZV21M`%`O!4Z26(\H;0!X+SS\4$@7+SP_IW,8+P$O
M`$Z43^\`$"\!+P`F;0!\3I-0CRQ`+P=.DEB/+SQHQI+W+SP_M54=+P$O`$Z4
M3^\`$"\!+P!.DU"/+``H3B8&>``F;0"$+PPO#$Z34(\D`"\#+P-.DU"/(&T`
M3"\`+P).D%"/)&T`E"\.+P!.DE"/)``O#"\,3I)83RZ#+P!.DUA/+H8O`$Z2
   :
   :
M;W0@:6UP;&5M96YT960`````````````````````````````````````````
M````````````````$```````````````````````````````````````````
M`````0```"````````````````````````````````````````````````(`
M```B`````````````````````````````"*L```B@```````````````````
J````````````````````````````````````````````````(G@``")\
`
end
ocha@ubuntu:~/asciiart$

uuencodeでバイナリファイルをテキストファイルに変換します。念のためcatでファイルの内容を確認しました。

uClinuxにアップロード

asciiart.uuをuClinuxのコンソールからアップロードします。アップロードの前に以下のように受信準備をします。

# cd /tmp
# cat > asciiart.uu
(ここでアップロードします)
(アップロードが終わったら CTRL+Dを押します)
# ls -l
-rw-r--r--  1 0        0           12359  May 19 04:02 asciiart.uu
# uudecode asciiart.uu
# chmod 755 asciiart
# ls -l
-rwxr-xr-x  1 0        0            8952  May 19 04:03 asciiart
-rw-r--r--  1 0        0           12359  May 19 04:02 asciiart.uu
#

アップロードが終わったらuudecodeでテキストからバイナリに変換します。

あとはchmodで実行権限をつけることで、asciiartの実行プログラムの準備ができました。

ASCIIARTベンチマークを実行

uClinux上でasciiartを実行してみます。

mc68ez328_dragonone_sbc_uclinux_part11_asciiart.png

いつもの画面が無事表示されました。C言語で書いたのでそこそこ速いです。23秒92でした。

これである程度のプログラムはフラッシュメモリを書き換えなくても動かせることが確認できました。デバックが終わったものはromfsのディレクトリに入れておけば、カーネルの更新タイミングでromfsにも組み込まれます。

現在実験中のDragonOne改 MC68EZ328 SBCのページを作成しました。

製作記事はきょうのかんぱぱにあるのですが、まとめページがあったほうがいいかなと作成しました。COSMACとは全く異なるCPUではありますが、希少なレトロCPUには間違いないので、一旦COSMAC研究会の下に置くことにしました。

トップページからもリンクしていますので、よろしければご覧ください。

dragonone_sbc_solder_pcb4.jpg

最近のコメント

アセット

  • cs8900a_lan_prototype2.jpg
  • cs8900a_telnet1.png
  • cs8900a_lan_ping1.png
  • cs8900a_lan_prototype1.jpg
  • cs8900a_cs_check.jpg
  • uclinux_cs8900a_message1.png
  • cs8900a_product _code1.png
  • debian10_32bit_install1.png
  • PXL_20210725_014305049.jpg
  • PXL_20210724_234107611.jpg

カテゴリ

ウェブページ

  • about
  • blogs
  • today
Powered by Movable Type 7.6.0