« 2013年8月 | トップページ | 2013年10月 »

2013.09.30

RXduinoを更新しました

RXduinoを更新し、バージョン1.08になりました。

バージョン1.07との違いは、

  • TMR0の割り込みをフックする関数を追加
  • char型をsignedにする
  • String型が使えるようになった
  • Reboot関数を追加
  • シリアルのCR LF変換規則を、デフォルトで無変換にした
  • レガシーSCIで送信割り込みがかからないことがある問題を修正
  • sci_peekとsci_flushという関数を作成
  • lowlevel.cで値のオーバーフローが出るWarningを修正
  • I2CのStartコンディションとStopコンディションの間違いを修正
  • I2Cのクロック周波数を変更できるようにした
  • 電源投入直後にRTCが起動していない場合のチェックと再起動を強化
  • Servoのwriteで、min以下の値が指定された場合でも異常な値が出ないようにした
  • us以下の時間の計測を正確にした(delay,delayMicroseconds関数なども正確になった)
  • EEPROMクラスを使うときに、EEPROM EEPROM;宣言をしなくてもよいようにした。
  • イーサネットライブラリを少しだけ安定化した
  • LiquidCrystalライブラリが4行タイプのキャラクタ液晶にも対応

です。約半年分の更新です。

下記のURLからダウンロードできます。

http://rx.tokudenkairo.co.jp/download.html

Rxduino108

究極のRX62Nボード、RaXino開発者セット、RaXinoi開発者セットをご利用の方はソースコード付でダウンロードできます。

RaXinoまたはRaXino-iをご利用の方はバイナリ形式のライブラリをダウンロードできます。


| | コメント (1)

2013.09.21

MicroZEDを試す

2週間ほど前にAVNET.comからMicroZEDボードというZYNQのボードを買ったのですが引き出しにしまってすっかり忘れていました。

今日、電源を入れてみました。

Microzed1

このボードはMicroUSBコネクタから電源をとるようです。

ですが、何も起動する気配がない。このMicroSDコネクタに何かプログラムが入ったカードを入れなければならないのかもしれません。

MITOUJTAGでスキャンしてみたところ、Cortex-A9とgenericというデバイスがみつかりました。

Microzed2


ZYNQの7010は、MITOUJTAGのデバイスデータベースを構築したときにまだ存在していなかったようで、登録されていないためです。

Microzed3

しかも、ZYNQには7015という、GTPを内蔵した7020よりちょっと小規模の新しいものが出るそうですし。ああ、MITOUJTAGの更新もそろそろやらなくちゃいけないですね。

BSDLファイルを使ってスキャンしてみると、このとおり。

Microzed4

ちゃんと見えるのですが、何も動いていません。DDR用のクロックがカチカチしているだけでした。

どうやって起動すればよいのか調べてみることにします。

ZYNQとVivadoというのが、これからのトレンドになるのでしょう。いままで避けてきたVivadoも少しやってみないといけないかもしれません。

| | コメント (3)

2013.09.18

GX-PAKURAというボードは作りません

ZYNQで何かが作りたくなってきたので、GX-PAKURAというボードを考えてみました。

XILINXのZYNQを搭載し、DualコアのCortex-A9が800MHzで動く、最強のArduino互換機です。GXの「X」はXILINXのXです。Arduinoの形状の評価ボードはいったい何番煎じだということでGX-PAKURAというネーミングにしました。

Gxpakura1

基板の表面にはZYNQの一番小さい225ピンのやつを搭載し、DDR3メモリ、DVI出力(HDMIのコネクタ)、100BASE-TXのイーサネット、USB2.0を搭載。さらにArduino互換のピンソケットにサービスソケットを追加して全部で54本のI/O。XADCを使った1Msps 12bitのA/Dポートを8つ搭載。

Gxpakura2

基板の裏面にはMMCMicro/MicroSDカードとUSB Hostコネクタが付きます。

Gxmakura3
基板の色は極道カラーの紫&金フラッシュ仕上げ。

Arduino互換のソフトウェアが動くようにZYNQduinoを提供します。ZYNQのCortex-Aはデュアルコアなので、Arduinoのスケッチと、コンパイル用のLinuxが同時に動作する・・・・・・

こんなものを考えてみたのですが、たぶん作りません。
ArduinoサイズにZYNQが乗ることが確かめられただけで満足です。

こういうのを作ってツイッターで宣伝すれば10個くらいは売れるかもしれませんが、少なくとも3~4万円の値段にしないと赤字になってしまいます。儲けがでるようなまっとうな値段で作ったらほとんど売れないと思います。

どこかの国の人件費無料の敵と戦うのは無謀すぎる戦いです。

下の値段には下のボードが、上にはMicroZEDが控えているので商業的には大変厳しいでしょうね。

実際には作らないけど、その気になればいつでも作れる。なんか日本の核武装論のようなそういう位置づけです。

とりあえずツイッターでつぶやいておくので、お気に入りやリツイートが100件を超えるようなら考えます。

| | コメント (2)

2013.09.17

Artix-7の冊子を作りました

お待たせしました。暑中見舞いはがきで案内したArtix-7の冊子がようやくできあがりました。

Artix7sasshihyoushi


Artix-7はSpartan-6の後継デバイスと思われていますが、Spartan-6と比べると進化した部分や削られた部分が多くあります。特殊電子回路では、実際にArtix-7評価ボードを開発してみて、いくつかの大きな違いがあることに気が付きました。

この冊子は、Artix-7を使った回路を設計しようとする人が、そういった違いによって罠に陥らないようにとの思いで執筆しました。これからArtix-7をはじめようとする皆様の参考になれば幸いです。

冊子の目次は以下のようになっています。

  • 第1章 Artix-7の種類と特徴
  • 第2章 Artix-7のI/Oバンクと特徴
  • 第3章 Artix-7の電源
  • 第4章 Artix-7のクロック
  • 第5章 コンフィギュレーションとI/Oバンク
  • 第6章 その他の特殊機能端子
  • 第7章 DDR3 SDRAMのピン配置決定法
  • 第8章 お客様からのQ & A

フルカラー12ページの豪華な仕上がりです。Artix7sasshi

Spartan-6からArtix-7に変わって、何がどう変わったのか、ハードウェアの互換性はあるのか?今までと同じ感覚で設計してよいのか?といったことに焦点を絞って書きました。

8月にWebサイトでこの冊子の無償配布する旨を案内をしたところ、64名の方からのご希望がありました。当初は先着50名様にと考えていましたが、今回、8月中にご応募いただいた方全員にお送りすることにします。

また、最初は薄いレポートでというふうに考えていたのですが、実際に書き始めてみると意外とボリュームが出てしまったので「月刊特電 別冊」という扱いにすることにしました。手作りですが、ちょっとひと手間かけて製本します。

この冊子は、本日、ピンクの封筒で郵送します。明日には皆様のお手元に届くでしょう。お楽しみに!

| | コメント (0)

2013.09.12

Artix-7のMicroBlazeでネットワーク対応のU-Bootが起動した

今年、特電に入ってくれたアルバイトさんはとても優秀です。

Artix-7にMicrolBlazeを入れて、U-Bootを起動させてネットワークに対応させるところまで作りあげてくれました。

Artix7base

上の写真は特電Artix-7ボードの下に拡張ボードを挿して、LANが使えるようにしたものです。

まず、MicroBlazeが起動すると、First Stage BootLoaderとしてSREC BootLoaderが動作します。このSREC BootLoaderはSPI ROMからU-BootのSレコードを読み出してきてSDRAM上に展開します。

このSREC BootLoaderはXILINX SDKの中に入っているものを修正して作ったのですが、最初はうまくU-Bootを起動してくれませんでした。

Run_error

SDKの中に入っていたSREC BootLoaderは、XMD上でELFをロードしてRUNするとちゃんと動くのに、BitStreamに埋め込んでFPGAごと起動するとSPI ROMからの読み出しが動かないようです。

どうやら、SelfTestというサンプルプログラムを1回実行すると動くということがわかったので、初期化に何かの問題があったようです。そういうわけで、SelfTestを一回実行してからLoader本体を動かすことで、U-Bootが動き出すところまでいきました。

デバッグ用のメッセージがいろいろ含まれていますが、こんな感じです。

Uboot_20130912_2

Uboot_20130912_1

U-Bootが起動して、Pingを打ってみたら、ちゃんと返ってくる!ネットワーク機能がちゃんと動いているという証拠です。

次にLinuxのイメージをロードしてみたいところです。TFTPサーバを立ち上げてイメージをネットワーク経由でロードできるようにしようとしているのですが、そこでまた何かうまくいかないことが起きているようです。

Uboot_20130912_3

きっと近いうちに解決されるでしょう。

| | コメント (0)

2013.09.02

Artix-7でイーサネットに成功

先日から開発している拡張ボードで、イーサネットが動くようになりました。

このボードは、特電Artix-7ボードの上もしくは下に重ねて使います。

Artixether_1

Artixether_2

このボードには、LAN8720AIという、10/100BASE-TXのPHYチップが乗っています。

MicroBlazeでEthernetを使うには、EDKでaxi_ethernetliteとmii_to_rmiiをインスタンシエートします。axi_ethernetliteがMACを操る本体ですがMIIの信号が出てくるので、これをmii_to_rmiiに通してRMIIの信号に変換してやります。

Artixmbetherlite

詳しい接続は上の図を参照してください。基本的にethernetliteからmii_to_rmiiを通じて各種信号を外に出す感じです。ただし、PHY_rst_nとPHY_MDCとPHY_MDIOは直接外に出ます。PHYのクロックはmii_to_rmiiから取ります。mii_to_rmiiのクロックは外のポートから受けます。Mac2Rmii_tx_erはオープンにします。

こんな感じで良いのですが、おそらくバグによってそのままでは論理合成できません。

Synthesizeの手前のplatgenというプロセスでエラーになってしまいます。

ERROR:EDK - xget_value name : a null handle was provided
ERROR:EDK - axi_ethernetlite_0 (axi_ethernetlite) - expected integer but got ""

この問題を解決するには、まずaxi_ethernetliteを右クリックして「Make This IP Local」をやります。すると、プロジェクトのフォルダのpcores\axi_ethernetlite_v1_01_b\data\axi_ethernetlite_v2_1_0.tclというファイルができます。このTclファイルはUCFファイルかXDCファイルか何かの制約ファイルを生成しているものなのですが、axi_ethernetliteの出力ポートがFPGAの外につながっていることを前提として作られています。

そのため、mii_to_rmiiを使うと「そんな信号がないよ」ということでエラーで止まってしまうようです。TCLのさまざまな行をコメントアウトしてエラーを回避します。

こうして論理合成が通るようになります。

そして、もう1つハマったのが、MicroBlazeはOffset+2のアドレスに対してLongWord単位でアクセスできないということ。受信したイーサネットフレームを解読するところで、IPアドレスが正しくデコードできないので悩みました。

いろいろ大変でしたが、とりあえず動くようになりました。

Artix7packet_capture

こんな感じで、PHYチップのレジスタがMDC経由で読むことができ、受信したEthernetフレームのダンプもできました。

次はU-Bootのネットワーク対応を目指すことにします。

| | コメント (1)

« 2013年8月 | トップページ | 2013年10月 »