• カテゴリ 雑記 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - 雑記カテゴリのエントリ

SIMPLE TERMの仕様変更

カテゴリ : 
雑記
2013-8-20 20:10
SIMPLE TERMは特に高機能という訳でも無くテキトーなリアルターミナルですが、いつもGCC Developer Liteのインストーラと一緒に同梱している都合から、面倒くさがりな作者の都合に合わせて操作を横着するための機能がちまちまと追加され続けています。

今回はフロー制御のお話です。
H8シリーズとのシリアル通信による簡易的なコミュニケーション用として作られたSIMPLE TERMですが、当初からRS232Cを前提とした3線シリアル通信を行う事を念頭に置いていた事もあり、ハードフロー制御は行わないものとしていました。特にDTR/DSRに関してはその当時FLASH WRITERがケーブルの接続チェックに使っていたこともあり、SIMPLE TERMには設定すら無く今でも常時無効にしています。

時代は変遷し、マイコンとPCはUSBで直結して仮想COMポートを介して通信するのが主になってきました。当然マイコンには自分のUSBを制御するコードが入って入るわけでして、弊社でもどこぞやのライブラリを使って実現させています。
ところが、PCがその仮想COMポートを開いている否かをマイコン側で判断しないといけないシチュエーションがありまして、特にマイコン側から一方的に送信する場合は無くてはならない条件だったりします。
ホストがWindowsであるのが前提ですが、今のところSAM3やSAM7Sシリーズ用のUSB CDCエミュレーションライブラリではポートのオープン/クローズを簡易的に判断させていますが、いかんせんOS限定というのはいただけない。

ということで、次期GCC Developer Liteにおいてこのあたりを大幅に仕様変更します。
  • SIMPLE TERMも他の一般的なターミナルソフトなどと同様に、ポートのオープン/クローズに連動してDTRを自前で制御。
  • マイコン向けのUSB CDCエミュレーションライブラリ(SAM7S,SAM3S,STM32F3シリーズのみ)に含まれるWindows限定の判定ルーチンを止め、DTRの状態によってオープン/クローズを判定。
この仕様変更に伴う功罪は以下の通りです。
  • 旧バージョンのSIMPLE TERMで新しいUSB CDCエミュレーションライブラリを使用したターゲットの仮想COMポートを開くと、見かけ上ターゲットからの応答が得られない。
  • 新しいSIMPLE TERMはUSB CDCエミュレーションライブラリの新旧にかかわらず通信が行える。
  • 新しいライブラリを使用したターゲットはLinuxやmacOSでもOK。
  • つまり、ツールが新しくてターゲットが古い場合はOKで、ツールが古くてターゲットが新しいのがNG。
今後のGCC Developer Liteのリリースの際はこの点に留意ください。

技術

USB3.0

カテゴリ : 
雑記
2013-8-5 10:40
最近のnote pcを調達したが、何もかもUSBに集約しろといわんばかりにそれ以外の拡張性がない。おまけにUSB3.0というだけあって、下手なUSBデバイスのファームで一度でもしくるとホストコントローラから応答しなくなるまでか、PCのシャットダウンすらできなくなる。

散々四苦八苦し、新しいPCを開発機としてターゲットは古いPC上でという間抜けな環境でしのいでいたが、開発機のUSBポートが足りなくなったので外付けのUSBハブを調達。
ついでなので開発機にお試しデバイスをふと差し込んでしばしそのまま使っていたが、下手打ってもなんだかそのまま使い続けられる事に気づいた。


ということで、新しいPCのUSBにつなく玩具で遊ぶ際は、外付けのUSB2.0ハブをかませると少し安心かもしれないというネタでした。

技術
扱っているマイコンボードは多岐にわたっているのと、時期によってデザイン思想が変わっている事もあり、ブートローダの挙動がどれもまちまち。とりあえずXMODEMによるバイナリファイル転送という点は共通化されたのだが、ブートローダへ入る方法が気まぐれ過ぎる。
なにか安直な方法はないかとデータシートをまじまじ眺めていると、どのチップも起動直後の条件を取得できる様である。つまり、電源ON一発目なのか、ウォッチドッグでリブートしたのか、ソフトリブートしたのか、外部からのリセット信号でリブートしたのか等々。
そろそろお目見目する予定のDIGITUSシリーズはUSB接続が前提となるので、コンソールから何かしらのシグナルを送ることはちょっと考えにくいし、もともとピン数が少ないところに態々スイッチなんてのも流行りじゃない。

結論から言ってしまうと、「リセットボタンを押したらブートローダに入る」ということ。これが一番確実で、ユーザアプリケーションで想定されるプログラムとの競合も少ないハズ。
ひとまずATmegaが載った輩がコードサイズ的に厳しいので、試しに入れてみた。結果は良好。いままで「!」を連打してた手間も省けていいかんじ

ということで、勝手ながら今後のブートローダの仕様を変更させていただきますので、びっくりしないでくださいね。

技術

アライメント

カテゴリ : 
雑記
2013-2-21 20:19
typedef union {
  struct {
    char        a;
    uint16_t  b;
  };
  char  dat[3];
} __attribute__ ((packed)) stTest;
このstTestは何故か4バイトで扱われる。
内側の構造体をPACKしていないことに気が付くまで、5分程頭を悩まされる。
typedef union {
  struct {
    char        a;
    uint16_t  b;
  } __attribute__ ((packed));
  char  dat[3];
} __attribute__ ((packed)) stTest;
これで3バイトとして使えるようになった。

近々GCC Developer Liteを更新します

カテゴリ : 
雑記
2012-12-10 19:04
長らく汎用版の更新がなされていませんでしたが、近々アップデートします。
外観は何ら変わりはありませんが、追加されるターゲットが大幅に増えるため、少しだけ予告を兼ねてお知らせします。

<FDIIIライブラリ>
FDIII用のライブラリがサポートするデバイスは従来のDynamixelシリーズに限られていますが、近々公開しますGCC Developer LiteではMXシリーズにも対応します。勿論新旧やI/Fが違っていても混在した状態で利用する事ができます。

また、ROBO-ONEにおける標準化の一環として、アプリケーションのレイヤから各社のアクチュエータ(シリアル通信対応に限る)へアクセスする方法を決定した事もあり、組み込みデバイスにもそれを展開すべく、FDIII-HCのライブラリとして新規に以下のアクチュエータをサポートする事になりました。

・近藤科学社製
KRS-2552RHV ICS, KRS-2542HV ICS, KRS-4031HV ICS, KRS-4032HV ICS, KRS-4034HV ICS, KRS-4033HV ICS, KRS-6003HV ICS
※ICS3.0及びICS3.5かつ115.2kbpsに限定

・双葉電子工業株式会社製
RS601CR, RS401CR, RS402CD, RS405CB, RS406CB, RS301CR, RS302CD, RS303MR, RS304MD

なお、今回のアップデートにおいては、これらアクチュエータに対する直接的なアクセスAPIの提供のみで、互換性を優先としたためにFDIII-HCならではのモーション等のAPIのサポートは含まれません。

<Atmel SAM3Sターゲット>
AT91SAM7Sの後継としてcortex M3コアを搭載したマイコンボードを一部にリリースしており、マイコンボードを販売する予定もある事から、先行でパブリック版に同梱します。コンパイル済のToppersカーネルも含みます。
AT91SAM7Sとほぼピンコンパチのデバイスを対象としています。

<Renesas RX62Nターゲット>
既に一部に公開していますが、ご要望が多いためにパブリック版に同梱する事とします。
H8シリーズと同程度の最低限のサポートファイル(スタートアップルーチン・ペリフェラルヘッダ・シリアル通信)で構成されます。
また、FLASH WRITERにてRX62NのSIOを介した内蔵フラッシュへの書き込みをサポートします。

<STMicroelectronics STM32F2ターゲット>
こちらも一部に公開していますが、F4の登場もありF2はある程度機能が枯れ始めたので同梱することにします。コンパイル済のToppersカーネルも含みます。
最低限のサポートファイル(スタートアップルーチン・ペリフェラルヘッダ)で構成されます。

その他コンパイラ本体の更新や各ターゲットの微修正等が含まれます。
公開までもう少しお待ちください。

技術サポート

SH2/7145のコンパイル

カテゴリ : 
雑記
2012-11-14 20:00
とある検証でSH2/7145を動かそうとしてみたら全く動かない。
サンプルすら動かないので調べてみると、どうやら割り込みにかかるところが原因のようだ。
何故か最適化(レベル1以上)すると動くので確認してもらったところ、ヘッダ内のマクロに起因していたようで、マクロを修正すると最適化に関係なく正しく動くようになった。
ヘッダの修正版は次のGDLリリースに含まれるだろう。
yoshi

Windows8のIME

カテゴリ : 
雑記
2012-11-8 20:06
しばらく前からWindows8を使っていたが、困ったことにIMEがアプリケーション共通になっていた。調べるほどのことでもなかったので放って置いたのだが、ある時コントロールパネルに設定を見つけたので早速試してみることに。
「コントロールパネル」→「時計、言語、および地域」→「言語」→「詳細設定」の「入力方式の切り替え」内に「アプリウィンドウごとに異なる入力方式を設定する」チェックボックスがあるのでチェックを入れて「保存」する。
これで以前と同様の入力ができるようになった。

毛色を変えて

カテゴリ : 
雑記
2011-12-20 14:11
LANとUSB機能を標準で提供しているシステムデザイン社のSDLX1100をちょっとだけ紹介。

メインのモジュールはRX62Nとphy及びRJ45のコネクタが搭載されて52x33.5mmとなかなか小型。オリジナルでシンプルなOSが予め搭載されているので、プログラムはHEWを使ってAPI呼ぶだけで相当シンプルに作れちゃう。


拡張基板にはUSBコネクタやLDC・タッチパネル・オーディオアンプなどなど装備されており、これだけでちょっとしたサーバーなんぞはちゃちゃっと構成できてしまう。


特にという事でも無かったので触れてなかったRXシリーズ。知らぬ間にリソースが盛りだくさんになっていておなかいっぱい。

FREEDOMライブラリの変更等

カテゴリ : 
雑記
2011-10-13 21:06
10/8に行われたROBO-ONE LightにFREEDOM Jr.IIIで何台かエントリーされていましたが、弊社の技術サポートからは未完成なサンプルプログラムの提供にとどまっていたにもかかわらず、皆さん予想以上に健闘されていらっしゃったと感じました。
引き続きご活用いただけるべく、10月末までには正式版を公開できるよう作業しておりますので、今しばらくお待ちください。

なお、それに合わせてという訳ではありませんが、FREEDOM IIIライブラリの以下のAPIを修正する予定です。
・DX_Ping2の全面改修
・fd_PlayMotionによるモーションの逆再生追加


その他、ROBO-ONEで計画されている標準化の一環として、モータやセンサ等のデバイスをPC上で一元管理するためのサーバアプリケーション(ROBO-ONE RTWB)の雛形を弊社にてデザインする事となりました。




詳細は次回のROBO-ONE Humanoid Helper Projectにて公開される予定となっておりますのでお楽しみに。

冠雪

カテゴリ : 
雑記
2011-9-28 10:32
裾野から見るいつもの富士の山頂にうっすら白いものが。
涼しいというよりちょっと寒い?