Wednesday, August 4, 2010

FON2305E のシリアルアクセスの失敗

FON2305E型のsimplが手にはいったのでjtagを取り付けようとしたところ、なかなかうまくいかない。ある情報だとtxとgroundを入れ替えれば良いとあったが、実際にはできなかった。テスターで調べたところ微かにledランプに合わせて電圧が上下(0.01V)しただけで、ターミナルにはなにも現れない。シリアルケーブルを接続した場合1.33Vあった。また接続していない場合は0Vだった。普通はttlレベルだとログが常時書き出されるので3.0Vはあるはずだけど。これに結構ハマってしまった。さらに悪いことに基盤はには半田が付かないほど傷んでしまった。そこでいろいろ調べたところ、14pinの穴がありそれがjtagらしいことがわかった。ただそれはパラレルのjtagなのでいままでやってきたシリアルとは違う。このjtagはfirmwareの書き換えはできるが、ログを見ることは出来ない。なぜならパラレルだから。ログは大抵シリアルに出力され、embededなシステムだとカーネルに組み込まれているので、bootローダー->カーネルとシームレスに表示できる。大抵ttyS0とかttyS1が割り当てられている。

1台失敗してもfoneroになればいいだけなので(1台くらいはfonユーザになっておかないとね)、べつに気にはしてないが、それでも強引にやろうとしたら、http経由のfirmware書き換えができる。これはtftpとは違ったフォーマットなので、いろいろ解析してみないと分からない。

もしFON2305Eで挑戦するならばピンヘッダーを立てるとよいだろう。

UPDATE:
 ftdiのFT232RのPDFデータシートを見ていたら、True 5V/3.3V/2.8V/1.8V CMOS drive output and TTL input.とあった。今までのシリアル接続はケイタイのケーブルを加工したものだが、それだと3.3Vで固定されているのかもしれない。FT232Rはもともとfonera1.0で使って予備で取っておいたもの。性能的には優れているので、もしかするとアクセスできる可能性がある。

UPDATE2:
ftdiも無理だった。やはり別の方法があるかもしれない。大抵のルータはシリアルのアウトプットを出せる。この機種だけ特別ということはないと考えている。

JP2 o   o   o   o
   Tx  Gnd  ?  VCC 3.3v

他のサイトを参考にするとログには「U-Boot 1.1.3 (Nov 29 2009 - 20:59:38)」とありfon2405eの場合は2010年の1月になっているので、確かに旧バージョンには違いない。webでログイン(192.168.10.1)してみると、fon2405eの場合はver.4.0.1.4でこのfon2305eはver.4.0.1.1でこれでも古いバージョンであることがわかる。
しかしなぜ出来ないんだろうか?

7 comments:

  1. 私も2405Eと2305Eを入手しました。
    貴ブログにてたいへん興味深い試行をなされておられることを拝見し、
    全く手が出せそうにない状態ではないことを知り、入手に至りました。
    まだ、箱から出してもおらず、開腹までこぎつけていない状態なのですが、
    こちらを参考にいろいろといじってみたいと思っております。

    2305Eのserialで通信ができないという件ですが、もしかしたら
    信号の出力がオープンドレインなのではないかと思っております。
    である場合、信号線にプルアップが必要になってくると思います。
    時間が取れましたら、当方でも試してみたいと思います。

    また、釈迦に説法かもしれませんが、以前より気になっておりましたので。
    FONに限ったことではありませんが、JTAG-portとserial-portは
    全く別のインターフェースであると思われます。
    JTAGはCPU(SoC)に内蔵されている機能であり、serialはCPUの
    外側で設置されている機能であると思われます。
    FONで使われているSoCでは1chipで両方を実現されているため、
    並列的な機能であると解釈されてもおかしくはないかもしれませんが、
    ハード的なレイヤーとしては別の階層に位置するものだと思います。
    また、JTAGはパラレルによる通信ではありません。同期式のシリアル通信です。
    実質的には6本の信号のみが利用されており、Vref,GND,CLK,TCK,TDI,TDO,TMS
    といった信号によって、CPU内部の機構と信号のやりとりを行うようになってます。
    JTAGを利用してシステムをデバッグするには、JTAG用のインターフェースと
    ソフトウェアが必要になります。

    ReplyDelete
  2. ようこそ
    embededなシステムは私にとってどちらかというと素人な方なので、いろいろご指摘いただけると心強いです。JTAGはPCのパラレルに接続するのでパラレルと思っていましたが、実はシリアルということなのですね。このパラレルに接続するEJTAGはOpenwrt等のwikiで詳しく解説されているのでそれを参考にしています。まだrt305x系では成功していないので、とりあえず旧フォネラのatheros系で試していますが、こちらでも成功してせん。どちらもSPIフラッシュなのでtjtag3で認識するらしいのですが。。。

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. 入力の方はまだ確認してませんが、出力の方は2305E及び2405EでOKでしたよ。何れもJP2

    RxとVccを1KΩで繋がないと多分入力できない
    FON 2405E FON 2305E
        9-KE 9-CDM
    + Vcc ■     ■ Vcc 9-CDM
    + Rx  ● 黒 赤 ● Rx  赤
      Tx  ● 橙 白 ● GND 緑
      GND ● 茶 緑 ● Tx  白

    JTAのピン配置(14ピン分)が判れば教えて下さい。時間があれば接続確認してみます

    ReplyDelete
  5. プロポーショナルフォントの様で少し見づらい。。。
    通信速度は、57600、データ8、パリティ無し、ストップ1、フロー無しです。

    ReplyDelete
  6. VccとRxを1KΩの抵抗で接続して2305E及び2405Eで入力が出来る事が確認出来ました。但し、U-Bootでは、入力したデータ自体を無視する様にコンパイルされている様です。linuxの方は、loginセッションが起動していないので、ログインが出来なかった。。。
    2100Eの場合は、BusyBoxのashが動いていたが、殺してあるようです。残念。。。フラッシュROMを書き換えないとloginは出来そうにない様です。。。

    ReplyDelete
  7. nisさん、ようこそ。
    simplのfirmwareをハッキングしていますが、できることは少ないようです。このfirmwareのbusyboxにはtelnetdルーチンが入っているので、telnetdプロセスを起動できればアクセス出来るようになります。しかし、rootシステムはsquashfsなのでパッケージをインストールしたりアンインストールしたりできそうにもありません。それに2MBのフラッシュメモリではできることも限られてしまいます。可能性としてralinkSDK3301でsimpl用のfirmwareが作れます。配布できないのが残念です。

    ReplyDelete