日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

JavaScriptを有効にし、Cookieを受け入れ、以下のブラウザを使うことで完全なコンテンツが楽しめます。
Mozilla Firefox 3.0(Get Firefox)・Opera 9.6・Safari 3.2・Lunascape 4/5(Gecko)・Lunascape 5(WebKit)
Internet Explorer 7/8とそれを使うIEコンポーネントブラウザ(Lunascape・Sleipnirなど)

<< 過去

SフォーマットとかIntel Hexとか

コンパイラやメモリダンプの出力形式がバイナリデータとも限らず、

Sフォーマット(モトローラ形式とも)だとか、Intel Hexだとか、そういう形式が使われることがある。

16進数のテキストで記載されているのだが、解読にはそれぞれの形式の特徴を知っていなければならない。


SフォーマットはSから始まるテキストでメモリデータを記述している。

S1130110DF107A02000FDF10690369930B800B81F3

こんなのがひたすら並んでいる。

最初のS1がレコードの種類、S1は16ビットアドレスのデータという意味だったはず。

13はレコード長、16進数の13なので、レコード長が19byteであることを表している。

0110が先頭アドレスで、DF……81がデータ、レコード長はアドレス+データの長さを表している。

最後のがチェックサムで、レコード長からチェックサムまで全て足すと0xFFになるように計算されている。


Intel Hex形式はこんなのがひたすら並んでいる。

:100130003F0156702B5E712B722B732146013421C7

10がバイトカウント、この行は16バイトのデータを格納することを表している。

次の0130がアドレス、00がレコードの種類でこのレコードはデータを格納していることを表していて、3F……21がデータ、

最後のC7がチェックサムで、バイトカウントからチェックサムを全て足すと0x00になるように計算されている。


というわけで、この2つのフォーマットの考え方はそう変わらない。

アドレスとデータをそれぞれ16進数で表したものをひたすら並べているということだ。

ただ、あまり直感的とは言いがたく、なんとなく解読できるというものではない。

種別・データ長・アドレス・データ・チェックサムが詰め詰めで書かれてますからね。


ROMライターの書き込みなどで使われるフォーマットだそうだが、職場で作っているシステムではバイナリデータでROMライターに入力している。

以前使っていたコンパイラでは、出力データがSフォーマットだったが、即バイナリデータへの変換を行っていた。

というわけで、現在、主に使っているコンパイラでは最初からバイナリデータで出力しているわけである。

そうやって考えると、やや汎用性の劣るSフォーマットやIntel Hexには何のメリットがあるんだろうとなる。


でも明確なメリットもあるんですよね。

セクション間に空白があるようなデータの場合、バイナリでは空白区間を埋めるデータが必要になる。

ところがSフォーマットやIntel Hexの場合、空白区間は書かなければよいだけである。

例えば0x00000000から64kB、0x20000000から16kBというデータを出力する場合、

バイナリデータの場合、ゼロデータで埋めてしまうから512MBにも及ぶ巨大データが生成されてしまう。

ところが、SフォーマットやIntel Hexの場合、64kBと16kBのデータを記載するだけでよい。

16進数のテキストデータなので、2倍以上のデータ量になるが、200kB程度のデータで済むだろう。


SフォーマットもIntel Hexもテキストデータですから、意味さえ理解できれば加工は容易である。

条件次第だが、中間形式としてはSフォーマットやIntel Hexは有益な気がする。

もちろん、ROMライターなどで最終的に必要なのが、これらの形式ならそれでいいんだけど。


Author : hidemaro
Date : 2019/03/28(Thu) 22:53
コンピュータ | Comment | trackback (0)

どうやってRAMに持って行くの?

PCでプログラムを動かすときは、プログラムをRAMに展開して動かすわけだが、

マイコンではROMのプログラムを直接動かすことが多いのかな。

ROMから動かすならRAMへの展開とか考えなくてよいし、電源入れてすぐに動くし。

マイコンの性質にもよるでしょうけどね。


一方でパフォーマンスを重視したり、その他の事情によりRAM上にプログラムを展開して動かすこともある。

OSがあれば、OSがプログラムをRAMに展開したりしてくれるんだろうけど、OSがないシステムではどうするの?

やり方次第だが、けっこうめんどくさそう。


開発環境によるのだが、概ね次のような手順である。

  1. RAMに格納する関数を特定のセクション(例えば ramcode)に割り当てる
  2. 1.で割りあてたセクションをRAM領域の適当な領域に割り付ける
  3. 2.の領域のコピーをROM領域上に作る
  4. 初期化処理などで 3.の領域から2.の領域にデータを転送するプログラムをROM領域に作る

開発環境によっては、正しく設定さえすれば、そこまで考えずとも2~4をやってくれるようだが。


うちの職場でこれまで作ってきたシステムでもプログラムをRAMに展開することがなかったわけではない。

それはFlash ROMの書き換え用のプログラム。

ROMの書換を行うプログラムってROMに配置できないのよね。

よく考えれば当たり前のことなんだが。それができると、ROMを消したら実行中のプログラムが消えてしまうし。

ただ、メンテナンス用途でしか使わないし、変更頻度も低いので、手作業で作られている部分がけっこう多い。


ROMアクセスの遅さが足を引っ張っているシステムがあって、プログラムのRAMへの展開が検討されているが、

調べれば調べるほどめんどくさい仕組みだなぁと思う。

RAM展開するだけで、プログラム自体は大きく手が入らないだろうと思っていたが、なかなかそうもいかない。

乱暴に思えた他の対策案の方が実は考えるべきことは少ないかも知れない。

果たしてどうなることやら。


Author : hidemaro
Date : 2019/03/25(Mon) 23:23
コンピュータ | Comment | trackback (0)

速くなると思っていたが遅くなった

ここ最近はとあるマイコンの置き換えのための調査をしている。

フルICEとはなんだったのか

思っているより順調に進んでいるが、そう簡単ではないこともわかってきている。


置き換え前後のマイコンは命令などに互換性があり、プログラムはほぼ流用できる予定である。

当初はペリフェラルでいろいろ問題が発生していたが、それは収束したように見えている。

最初は散々だったんだけど、早期に問題をあぶり出して対策することができた。

ここ最近の問題は命令の実行速度が速くなったこと、または、遅くなったことが原因である。

これが大変である。


もともとマイコンの置き換えで、命令の実行速度が速くなるから注意が必要だと言われていた。

命令の実行速度が速くなるのは一見よいことのように見えるが、

処理Aと処理Bの間で一定以上の時間を開けることが求められている場合、

処理が早くなることで、処理AとBの間の時間が詰まってしまい、正しく動作しなくなることがある。

タイマ割り込みで定周期処理を行っている場合、定周期処理の終わりが早くなると、次の定周期処理までの時間が延びてしまうということも考えられる。

だから、実行速度が速くなるのは要注意だ、と言われて始まったプロジェクトだった。


ところがフタを開けてみると、命令の実行速度が遅くなる問題が目立った。

どうも新しいマイコンで想定しているアーキテクチャと置き換え対象のシステムのアーキテクチャに差があって、

結果として新しいマイコンの性能を引き出せないばかりか、逆に置き換え前のマイコンよりも性能が低下してしまったということらしい。

一方で、性能低下に対する対策もあって、対策を追加することでそれなりの動作をするようになってきた。


対策の結果、当初言っていたように、命令の実行速度が従来より早くなって、対策が必要なところが出てきた。

ループ回数で待ち時間を作っているところに対策が必要なのは、当初想定していた通り。

もともと微調整して、必要な待ち時間ピッタリになるようにやっていたらしく、実行時間が少し変化しただけでアウトだったらしい。

暫定的に回数を見直して正しく動作することは確認出来たが、設計者はタイマペリフェラル使うべきだったねと反省していた。

あと、命令の実行速度が速くなったことで、ペリフェラルの応答速度を追い越してしまうという事象も発生した。

もともと、ペリフェラルの使い方があまりよくなかったのだが、命令の実行速度がある程度遅ければ問題にならないのも事実だった。

プログラムの書き方を見直すのが正攻法だが、対策が簡単なのは追い越さないように遅くするという方法で、それで対策することになりそうだ。


ところが、性能低下に対して対策を行っても、命令の実行速度が遅くなる箇所が存在することが最近わかってきた。

どこが性能低下しているのか、現在のマイコンと新しいマイコンでいろいろ比較した。

デバッグコードを仕込んで、余っているピンから信号を出して、オシロスコープで測定するという古典的な方法で調べた。

その結果、とあるタスクの処理時間が2倍に伸びていることが発覚した。

これが全く予想外のところで、なぜ遅くなっているのかという理由はつかみきれていない。

アクセラレータの追加などで対策できそうなところではないので困っている。


命令の実行速度が速くなったことで発生した問題はプログラムの変更などで対策ができるのだが、

命令の実行速度が遅くなったことで発生した問題は、そう簡単には解決できない。

そりゃそうだよね。速くなったことで発生した問題は遅くすれば解決できるかもしれないけど、遅いものは簡単に速くはできないから。

ソースコードを見ていると、多少はリファクタリングの余地がありそうには見えたが、

それで実行速度の低下を全て吸収できるかというと、ちょっとよくわからない。


まぁ当初はもっと散々な目にあうことも覚悟していたのだが、

想像よりははるかにプログラムの修正は少なく、新しいマイコンに移行できそうだなと思っていた。

当初は命令の実行速度の影響をあまり受けないものを中心に見ていたようで、なおさら楽観的だった。

ただ、いろいろ対策しても性能低下が見えてしまうというのは、本当に困った話である。


こういう話はうちの職場で開発している他の製品でも発生している。

性能が低下しないように必死で対策して、なんとか旧製品と同等以上の性能が出るところまで持って行ったらしい。

当面はこれで大丈夫とのことだが、長期的には危ういのでアーキテクチャの刷新が必要と開発者は言っている。

このように、性能が向上したはずの最新のICに置き換えると、かえって性能低下してしまうことが時々あると。

それは最新のICが想定しているアーキテクチャに合っていないところがあるということなんだろうが、そう簡単に解決できる問題ではない。

姑息な対策でとりあえずは乗りきって、長期的には根本対策をするというやり方にならざるを得ないのかなと思っている。


Author : hidemaro
Date : 2019/03/13(Wed) 23:02
コンピュータ | Comment | trackback (0)

新しいAndroid One

注文していたAndroid One S3が届いた。

本当は昨日到着予定だったのだが、貴重品扱いにされていたので、宅配ボックスに入れられず持ち帰られてしまった。

貴重品っていっても、USIMカードもないのに、とは思いつつも、一般論としてはそうだよね。

というわけで、受け取って開封してみたら、なんかUSIMカード入ってるんですけど。


とりあえず、電話で切替を申し出る必要があるようで、電話をかけて自動音声で切替を申し出る。

ここで以前のUSIMカードは無効化され、新しいUSIMカードが有効化される。

電話を切ってからUSIMカードを新しい電話に入れようと指示を見ると、microSDカードといっしょにトレーに入れるようだ。

MediaPad M5もそうなんだけど、最近はこういう方式が多いのかな。(僕の買ったMediaPadはLTEタイプじゃないからSIMは入れないが)

大量のデータを操作するときとか、microSDを外して使うことも時々あったけど、どっちもこれまでより面倒になる。

ピンがないとトレーが引き出せないMediaPadに比べれば、手でトレーを引き出せる分だけアクセスしやすいが。

microSDを入れられるからって、それを積極的に挿抜するのはあまり想定されていないのは、今に始まったことではないけどさ。

それで完了したところで起動すると、すでに新しいUSIMカードは有効化されていて、とりあえずOKと。


新しいUSIMカードを同梱していたのは、SIMの形状が変わったからかなと思ったが、

無効化されたUSIMカードと形を見比べても同じnano SIMなので、なんであえてSIMを入れてきたのかはよくわからない。

一応、型式は変わっていて、従来がn101、新しいのがn111だが、違いはn101がNFC対応、n111がNFC非対応というぐらい。

NFC非対応の端末でn101を使っても問題ないはずで、なんでわざわざ新しいUSIMカードを送ってきたのかはよくわからない。

SoftBankと同じく、iPhoneとiPhone以外でSIMが違うという話はあるのだが、どっちもAndroidなんだよねぇ。

釈然としないところはあるが、電話1本かければ完了だから大した話でもない。


Android端末の初期設定なんて今まで何回もやってきたが、スマートフォンの乗換は今回が初めて。

スマートフォンだからという話ではないが、銀行の二段階認証トークンの役割を持っていたり、引き継ぐべき内容がかなり多い。

ほとんどは新スマートフォンでログイン情報を入力して、必要に応じて電話やSMSでの認証を行えばよいわけだが、

一部は旧スマートフォンでトリガをかけたり、情報を書き写す必要があるものもある。

ユーザー登録未了の状態でアプリを使っていると、ユーザー登録をやらないと移行できないというのはあるけど、

さすがにユーザー登録未了のまま使い続けているアプリはなかったのだが、それだけで移行できるとも限らないと。

もし、旧端末が使えないまま移行しようとしたらどうなってたんだろうね? まぁ何らかの回避策はありそうだが。


数時間でだいたい設定できたかなという感じだが、細かい部分ではまだ移行作業が必要かも知れない。

移行が完了すると、以前のAndroid Oneはただの5インチタブレットになるのだが、いらないよなぁ。

実は購入時に下取りを申し込むこともできたということに、申し込んだ次の日に気づいたんだけど、

新規契約のときほどは高く下取りしてくれないので、そんなに痛い話でもないか。

中古屋に売りにいったら同じぐらいの金額にはなりそうでしたけどね。

使わなくなったLG-V480もこんなの100円ぐらいにしかならんでしょ、と思ったがもう少しは高く買ってくれる……かもしれない。

そのあたり、まとめて売りに行こうかなという考えはある。


Author : hidemaro
Date : 2019/03/06(Wed) 23:58
コンピュータ | Comment | trackback (0)

USB PDで急速充電OKのはず

タブレットをMediaPad M5に買い換えた話を書いたが、スマートフォンも買い換えることにした。

Y!mobileからAndroid One S3のアウトレット品を特別に安く売るという案内が来ていた。

24ヶ月以内に解約すると契約解除料を取る代わり、販売価格を安くしているようだ。

現在使っているAndroid One 507SHと、同じシャープ製で、あんまり特徴に差はない。

発売時期は1年半後だが、CPU性能が特によくなったわけでもない。

でも、内蔵ストレージ容量が16GBから32GBに、RAMが2GBから3GBに増えているということで、そこに期待している。


MediaPad M5もAndroid One S3もどちらもUSB Type-Cの端子を持っている。

MediaPad M5はACアダプタとケーブルが付いてきていたからいいけど、

Android One S3は各自用意しろということになっている。

一応、選定品としてSoftBank SELECTIONの型番がかいてあるが、同等品ならばこれにこだわる必要はない。

最低限、今のACアダプタにType-A - Type-Cのケーブルを付ければ良いが……


実はMediaPad M5を入手した時点で、今まで使っていたACアダプタにタブレットを接続する実験をしてみた。

当然、充電はできるのだが、付属してきたHUAWEIのACアダプタを接続したときは「急速充電中」と表示されるのに対して「充電中」と表示された。

実際に充電スピードはHUAWEIの充電器を使った場合に比べて遅かった。

そこでHUAWEIの充電器を見てみると「出力: 5V 2A OR 9V 2A」と書かれていた。

急速充電中というのは9V給電で充電しているという意味のようだ。


今や、USBポートを使って充電・給電する機器は多くなったが、給電電圧が5Vと低いのが問題である。

そもそも USB 2.0の基本規格では0.5A給電ができればよいが、

これでは充電スピードが遅すぎたり、外付けHDDなどは必要な電力が確保できない問題がある。

というわけで、USB Battery Charge(USB BC)という方式で、1.5Aまでの拡張が行われた。

おそらく一般的なUSB ACアダプタはこれによるものだと思うが、電圧の低さが相変わらずだった。


電流を大きくするのはここら辺が限界ということで、電圧を上げるというアプローチに出たのだが、これが複雑だった。

先行したのが Qualcomm の Quick Charge という方式、5V以外に9V, 12V, 20Vなど選択でき、最大18Wまで供給できる。

さらにAppleとHUAWEIは独自方式で電圧・電流を上げて供給する方式を作っている。

MediaPad M5に添付されていたHUAWEIのACアダプタは独自方式によるものである。

このように、かつては複雑だったのだが、USB Type-Cの登場により、これらはUSB Power Delivery(USB PD)に集約されつつある。

USB PDはUSB Type-Cで追加されたコンフィグチャンネルを使って、通信で電源供給方式を選択する。

電圧は5V, 9V, 15V, 20Vの4つが選択でき、最大で100Wまでの供給が可能となっている。


調べたところ、MediaPad M5もAndroid One S3もUSB PDで急速充電が可能なようだ。

MediaPadに添付されていたACアダプタはHUAWEI独自方式だったが、MediaPad M5はUSB PDに対応しているのは確からしい。

Android One S3もスペックに書かれている充電時間が「USB PD対応ACアダプタ」使用時のものであることを考えれば、USB PD対応だろう。

選定品がUSB PD対応のものと、Quick Charge対応のものの両方が書かれていて、同じ充電時間で書かれている。

Android One S3では明示的に書かれた資料はなかったけど、同時期に発売されたAQUOS senseではUSB PD・Quick Charge両対応という記載もあった。

というわけで、USB PDで両方とも急速充電可能のようである。

GoogleとしてはAndroidの急速充電規格はUSB PDに一本化すべしと言っているので、将来的には全てUSB PDになるでしょう。


そんなわけでUSB PD対応のACアダプタを買いに行くことにした。

市内の電器店で見てみると「USB PDには対応していません」と書いたACアダプタの多いこと。

うーん、と思ったら、端の方にひっそりと置かれていた。

少なくともUSB PD対応のACアダプタは、USB Type-Cで出力しているはず。Type-Cで追加されたチャンネルを使うから。

USB PDは最大20V・5Aの100Wまで出力できるが、そんなACアダプタはほとんどないし、ニーズもない。

5V,9V,15Vの3電圧対応で、供給電力は18~30W程度のものが多い。

これで実用上はあまり問題ないでしょうし、コンパクトで値段も3000円を切るぐらいだった。


実際に購入したのはPQI Smart i-Charger PD 41Wで、4000円ぐらいだった。

ちょっと高かったが、USB PDが1ポート、USB Type-Aが2ポート付いているので、これ1台で全部足りるのが決め手だった。

スマートフォン・タブレット1台を充電するなら1ポートのUSB PDを使えばよいが、遅くても良いが2台充電したいケースもある。

そういう場合に残り2つのUSB Type-Aポートを使える。microBを使う機器もこっちでいけるね。

今もUSB Type-Aが2口出ているACアダプタを使っているから、それに合わせたのもある。


この用途で使うならば、Type-C – Type-Cのケーブル1本、Type-A – Type-Cのケーブル1本が必要だ。

そしたら、Type-C – Type-Cのケーブルが短くても1800円したんだよなぁ。Type-A – Type-Cの1.5倍である。

Type-C – Type-Cだけど通信方式はUSB 2.0のみ対応、一方でUSB PDの20V・3A給電性能が保証されている。

給電用ケーブルにしては高いなと思ったが、Type-C – Type-Cのケーブルは選択肢が少ない。

USB PDが普及してくると、このあたりの問題も解決してくるんだろうけどね。


というわけで、スマートフォン本体以上に充電周りへの投資の方がお金がかかってしまった。

でもタブレット対応含めてちゃんとできてよかった。

暫定的にHUAWEIのACアダプタ用に扇風機用のタップを転用していたが、そのうちなんとかしないととは思っていた。

携帯用のACアダプタもUSB PD対応にしたい考えはあるが、こっちはまだ先かな。


Author : hidemaro
Date : 2019/03/02(Sat) 22:22
コンピュータ | Comment | trackback (0)

本当はDVDなんていらなかった

職場のノートPCにとあるソフトウェアをインストールしていたのだが、

CDで提供されていたので、デスクトップPCのDVDドライブをEthernet経由で使った。

ノートPCでも時々DVDを使う

もうすでに外付けのDVDドライブはあるけど、この方法で慣れているので。


この手のソフトウェアって保守契約を結んでいる限りは最新版がWebから入手できるようになっている。

だから、Webからダウンロードするという手も本当はあるはず。

というか、CDをいちいち付けてくる必要すらないのでは?

このソフトはちょっと特殊な事情もあるので、付属のCDからのインストールが必須かもしれないが。

でも、指定のバージョンをWebから拾ってきてインストールができるのなら大丈夫なはず。


こういうのは稀な例だと思うけど、保守契約を更新するたびに最新版のCDを送ってくるメーカーもある。

ただ、このソフトって僕ぐらいしかインストールしてないんだけど、常にWebからダウンロードしているので、このCDは無用の長物になっている。

ダウンロードしても容量は高々知れていますからね。

無駄だなぁと思うけど、この会社のポリシーなんだろう。保守契約も高いしね。


とあるソフトは、プロジェクトごとに過去に決められたバージョンを使うことになっている。

複数のバージョンが同居できるので、使い分けはそんなに難しくないが、指定バージョンのDVDを探すのがめんどくさい。

あまりにめんどくさかったので、Webからダウンロードすることにした。

過去のバージョンも含めてアーカイブされているので、DVDを探すよりはるかに楽だなと思った。

こういう形でアーカイブ化してくれているベンダーならいいけど、そうでなければ過去バージョンはDVDで残しておくしか手段はないだろう。


もう、ノートPCにはDVDドライブないんだから、ダウンロードを基本にした方がうれしいと思うのだが、

過去の経緯とかもあって、なかなかそうはなっていないのが実情ですかね。

ただ、ベンダーとしては概ね対応できているので、使い手側の問題とも言える。

そうかと思いきや、インストールファイルの容量がとても大きい開発ツールに限って、DVDがなくて長時間ダウンロードを強いられたりするんだけど。


Author : hidemaro
Date : 2019/02/26(Tue) 23:10
コンピュータ | Comment | trackback (0)

なぜかUSB Type-C

ちょっと前にWindows 10のデスクトップPCが納入された。

デスクトップPCは今までと同じメーカーの後継機種だが、少し小さくなっている。

フロントにヘッドホン端子とUSB端子とSDカードスロットがある。

SDカードスロットは従来なかったが、もう1つ変わったのがUSB端子の構成。

これまで、USB Type-Aの端子が4つあり、うち2つがUSB 3.0、うち2つがUSB 2.0だった。

これが新しいPCでは、USB Type-Aが3つ、USB Type-Cが1つ、USB Type-Aの1つとType-CがUSB 3.1対応となっている。


USB Type-Cが次世代のUSB端子という話を見たときに、小型機器で主流だったmicro Bと比べると大きくなっていることに違和感を持った。

Type-Cは機器の小型化に応じて作られた規格と聞いていたのに、なんで大きくなるんだと。

後でわかったのだが、USB Type-CがUSB 3.0/3.1/3.2に対応しているのがポイントらしい。

USB 3.0以降の端子・ケーブルには3対の差動信号が入っている。

3対のうち1対はUSB 2.0互換用、2対はUSB 3.0のSuperSpeedモード専用のもの。

端子数が増えたので、Type-Aでは端子の奥に電極5本を追加している。一見すると形状は変わっていないが、端子数は増えている。

一方で機器側で使われるmicro Bの端子はUSB 3.0対応にあたって、コネクタの幅を増やすという対応をした。


USB 3.0以降で追加された信号線を含んでいるけど小型な端子が、USB Type-Cである。

USB Type-Cではなんと5対の信号線が入っている。

USB Type-Cの特徴として表裏がないというのがあるけど、まずコネクタの形状が左右対称で、

中央にUSB 2.0互換の差動対1つ、左右に高速信号用の差動対が2つずつあり、挿入方向を識別する端子がある。

USB 2.0互換の場合は中央の差動対を、USB 3.0/3.1のSuperSpeedモードでは挿入方向を識別して、左右どちらかの差動対2つを使う。


さらにUSB Type-Cではオルタネートモードということで、差動対を他の用途に転用することができるモードがある。

このデスクトップPCは違うと思うんだけど、よくあるのが映像出力をUSB Type-Cに出すということ。

USB Type C-HDMIマルチ変換アダプタ (サンワサプライ)

USB Type-Cのポートから、USB Type-A(USB 3.1対応)とHDMIとUSB Type-C(充電専用)の3つの端子に変換している。

DisplayPort Alternate Modeに対応しているUSB Type-Cの機器で使うもので、

このモードに対応している場合、5対の差動信号を、1対をUSB 2.0互換、2対をUSB 3.1 HighSpeedモード、2対をDisplayPortに割りあてることができる。

DisplayPortはコネクタ形状の変換でDVI,HDMIへの変換も通常可能だ。(cf. ディスプレイ接続いろいろ)

充電専用のUSB Type-Cはホスト機器の充電をUSB Type-Cから行う機器ならば、ここにACアダプタをつなげば充電できますよという意味だそう。

対応した機器でACアダプタを繋いだときは、変換アダプタ→ホスト機器の向きに電源が供給され、

それ以外の時はホスト機器→変換アダプタの向きに電源供給されると言うことで複雑だ。(USB Type-Cで始まった問題ではないが)


というわけで、USB Type-Cはとても多目的で、小型機器ではたいへん重宝する。

ただ、それだけにどれがどれに対応しているか明示する必要がある。

USB 2.0にしか対応しないType-C機器というのも存在するようだから、USB 3.1対応も自明ではない。

SSと書いてあればUSB 3.1 HighSpeed対応、DPマークがあればDisplayPort Alternate Mode対応など。

でも書いていない場合もあるからなんともかんとも。


なんでデスクトップPCでUSB Type-Cを配置したのかはよくわからないが、USB Type-Aより小さいけど多機能なんだよね。

USB 3.1以降の世代ではUSB Type-Cが基本になるのかなと思いつつも、

やっぱりType-Aで接続する機器が多いし、そもそもUSB 2.0互換で動かす機器が大半だしと考えると微妙だ。

職場でWindows 10で採用されたノートPCはタブレットPCとしても使えるのだが、

このタブレット側にはUSB Type-Cがあって、タブレットモード時は唯一のUSB端子で唯一の映像出力端子(DisplayPort Alternate Mode)だ。

こういう機器ではUSB Type-Cは唯一の選択肢だと思うが、なかなかType-Cに直接つなげる機器もないから変換器(USBハブなど)が必要だ。

少しずつ浸透しつつはあるんだろうけど、Type-Cだけで全て済む時代はまだ遠そうだ。


Author : hidemaro
Date : 2019/02/20(Wed) 23:50
コンピュータ | Comment | trackback (0)

フルICEとはなんだったのか

最近、1つ前のアーキテクチャの製品のマイコンの置き換えについて調査している。

この調査の中でマイコンの代わりにソケットが取り付けられた基板を使うのだが、

まず調査に取りかかる前に、この基板に現行のマイコンを取り付けてみた。

それで電源を入れると……何にも動かないんだが。


調査の結果、プログラムがフラッシュROMに書き込まれていないことがわかった。

そうそう、このマイコンってプログラムを外付けのROMに書き込むんだよね。

今どきのマイコンは内部にROMを持っているのが普通だが、昔はROMを外で持つことも多かったようだ。

それにしてもプログラムが書かれていない基板って何だろ?

これ、開発時にデバッグに使ってた基板と聞いてたんだけど。


それでこの基板を渡してくれた人に聞いてみた。

すると「フルICEでデバッグしてたから、ROMにプログラムを書き込む必要がなかったのでは?」とのことだった。

というわけで、本来書き込まれるべきROMデータをとある方法で書き込むと正しく動作した。

それにしても、フルICEか……この仕事をするようになってよく聞く言葉だけど、なんなんだろ。


そもそもICEとはIn-Circuit Emulatorのことで、マイコンのデバッグに使われる装置である。

In-Circuit Emulatorという言葉の意味はよくわかっていなかったのだが、

エミュレータとはコンピュータを模擬するもの。ソフトウェアによるものとハードウェアによるものがある。

ICEはハードウェアによるエミュレータの一種で、ハードウェアと密接に関係する組み込みシステムは専らICEでデバッグされる。

ソフトウェアのエミュレータでのデバッグに最近挑戦したことがある。(cf. エミュレータでの単体テストは好調)

確かに実機では確認しにくいプログラムの詳細な動作を確認するにはよかったのだが、

マイコンのペリフェラル、あるいは外部のハードウェアに依存する動作のデバッグはICEが重要である。


さて、フルICEとはなにかという話だが、マイコンの回路を展開して、レジスタやメモリ空間の観測・書換をできるようにしたものだそう。

フルICEを使ったデバッグでは、マイコンが実装される場所にICソケットが取り付けられた基板を使う。

これこそが最初に書いたマイコンの代わりにソケットが取り付けられた基板の正体である。

ICEを使う時は、ソケットにICの代わりにICEにつながるプローブを接続するのだが、

このICEのフタを開けてみると、いろいろな部品が実装されたプリント板が入っている。

これがマイコンの内部回路をデバッグ用に展開したものである。


かつては、このようなフルICEでデバッグを行っていたようだが、今ではほとんど使われない。

現在、ICEといえば JTAG ICE を指す。

JTAGでマイコンと接続し、マイコン内部に組み込まれたデバッグ機能を呼び出しながらデバッグを行うわけである。

マイコンとの接続方式はJTAGが主流だが、他の接続方式もあるが、マイコン内部の機能でデバッグを行うなら同じことである。

このようにマイコン内部でデバッグ機能を持つ方式はOn-chip Emuratorとも呼ばれる。これもICEの一方式。

マイコンそのものをつかっているので、どこが模擬なんだと思うけど、

かつてはエミュレータでやっていたことをチップ内で実現できるようになったということでOn-chip Emuratorと呼んでいるんだろう。


フルICEはICE内に展開された回路から、多くの情報を同時に取り出すことができる。

フラッシュROMにプログラムが書き込まれてなくても動いたというのは、

ICE内部のRAMにプログラムを展開して、外付けROMとすり替えるという機能があったかららしい。

一方で、JTAG ICEはマイコンとPCとの間でシリアル通信を行っているだけなので、

時間あたりに取り出せる情報には限りがあるし、大量のデータをすり替えたりするようなこともできない。

プログラムを停止させながら情報を取り出すか、取り出す情報を減らすか、どちらかの対応が必要だ。


僕はフルICEというものを使ったことがなかったので、それが当たり前だと思っていたのだが、

フルICEを使ったことある人からすると、JTAG ICEはかなりデバッグに制約があるという認識らしい。

一方でJTAG ICEにはメリットもあって、その最たる物が本来使用するマイコンを実装した状態でデバッグできること。

マイコンからJTAGピンを出せるようにプリント板を作っておけば、そこにJTAG ICEをつなぐだけなので安上がりだ。

フルICEはそもそもの値段が高いし、マイコンの品種ごとにICEが必要なはず。

さらに、マイコンの代わりにソケットを実装した特殊な基板を用意する必要がある。

ピン数の多いマイコンだと、大量のピンを慎重にソケットに差し込む必要がある。よくピンが折れるとも言っていた。

高速なマイコンではICEでは動作が変わってしまうこともあるらしい。(うちのは遅いから問題にならない?)


ICEという言葉はよく使うのだが、「ICEってどこがエミュレータなんだろ」とは常々思っていた。

機能的には「JTAG ICE」と呼んでいるものはプローブだよね。

ICEの実態はOn-chip Emulatorということでマイコン内部にあるが、マイコンそのものだからマイコンを模擬しているとは言えないのでは?

ハードウェアでのデバッグ機能を有する装置をICEと呼んでいたということだけだろうと思う。

フルICEこそがICEの原点なのは確かだが、今にしてみればよくこんなの使ってたなぁとなる。

ヒューズが飛びまくって大変だったとかいう話も聞いたしなぁ。それだけ繊細だと。


Author : hidemaro
Date : 2019/02/19(Tue) 23:09
コンピュータ | Comment | trackback (0)

白黒だとTIFFなわけ

職場の複合機はスキャナとしても使うことができる。

うちの職場ではスキャンデータを自分宛にE-mailで送る方法で使うことが多いが、

データを複合機に蓄積して、後で取りに行く方法もあるんだそうで。


スキャンデータの形式はPDFが標準だが、画像データとして編集したい場合もある。

そういう場合には他の形式を選ぶわけだが、その場合に選べる選択肢は「TIFFまたはJPEG」である。

なんでTIFFまたはJPEGなのか、最近までよくわかっていなかったのだが、

どうも 白黒2階調 の場合はTIFF、グレースケールまたはカラーの場合はJPEGという意味らしい。

グレースケールまたはカラーの場合のJPEGはよくなじみがあるから何も問題ないが、なぜ白黒の場合はTIFFが選ばれるのだろうか?


TIFFというのは、数ある画像ファイルの形式の中でも特に古いものである。

Windowsより昔からあり、Windows Bitmap形式ができる以前はWindowsの標準画像形式はTIFFだったんだとか。

このTIFFという形式は拡張性が高く、複数の画像圧縮方式を選択できる。色数なども細かく選択できる。

もっともWindowsのペイントでTIFFで保存すると無圧縮で保存されるなど、無圧縮という選択肢もあるのだが。

現在主流の画像ファイルの形式は JPEG, GIF, PNG など圧縮方式とファイル構造が一体となったものだが、

特定のファイル構造が決まっていない圧縮方式ではファイル構造にTIFFを使うことがよくあるようだ。


それで白黒2階調でスキャンして得られたTIFFファイルの圧縮形式を調べてみると「ファクシミリ互換のITU-T Group4」とわかった。

どうもFAXの画像符号化方式らしい。確かにFAXって白黒だよなぁ。

FAXもいくつかの方式があるが、現役の方式としてはGroupe3(G3)とGroup4(G4)の2種類がある。

G3, G4はいずれも画像データを圧縮してデジタルデータとして電話回線で伝送する。

画像データを圧縮することで短時間で伝送できる。時間が短いということは、電話代も節約できる。

ここで使われる圧縮方式はいずれも2値画像に特化した可逆圧縮方式で、G3ではMHまたはMR、G4ではMMRが定義されている。

すなわちG4形式で圧縮されているということは、MMRということらしい。


それにしても、わざわざメジャーとは思えないG4 FAX方式を使っているのはなぜだろうか?

ファイル形式とデータ量について (Bunkyo Web Style)

典型的なA4の文書データを圧縮したところ、G4 FAX(MMR)形式では無圧縮データの7.4%まで圧縮できるとある。

これは汎用的に使われる可逆圧縮の画像形式であるPNGの13.6%と比較すると、半分程度のサイズで済んでいる。

PNGでは1画素の割り当てに8bit, 24bit, 32bitを選ぶことができるが、2階調でも1画素に8bit割りあてる必要がある。

その後に圧縮するといっても、もともと2値画像に特化した方式にはかなわないのである。

ましてや色数が多い写真を想定したJPEGでは、容量が大きくなる上に非可逆ということでろくな事がない。


ところで現役のFAX方式にはG3とG4の2種類があると書いたが、ほぼG3しか使われていない。

というのもG4はISDN回線専用の方式なので、一般の電話回線で使える方式としてはG3しかないのだ。

じゃあG4 FAX用の圧縮方式のMMRなんて使われていないんじゃ? と思ったんだが、そんなことはない。

ApeosPort®-VII C7773 / C6673 / C5573 / C4473 / C3373 / C2273 おもな仕様と機能  (FUJI XEROX)

複合機のファックス機能の仕様を見てみると、通信モードが「ITU-T G3」と書いてある一方で、

符号化方式に「MH、MR、MMR、JBIG」と書いてあり、G3で定義されている2方式以外にMMRとJBIGが書かれている。

どうもG3 FAXはいろいろ拡張されていて、スーパーG3と言って、伝送レートの高速化や、圧縮方式の追加が行われている。

送受信の両側とも対応していれば、伝送レートを高くしたり、高圧縮な方式を選んで、時間と電話代を節約する。

ちなみにJBIGも2値画像の圧縮方式で、MMRよりさらに高圧縮らしいが、対応している機器は限られるようだ。


MMRよりはJBIGの方が高圧縮とはいうが、これをTIFFに格納して使おうということはあまりないようだ。

それに次いで高圧縮なMMRはTIFFに格納して使われることはそれなりにあるので、Windowsでも表示には対応している。

マイナンバーカードの券面事項確認APでは氏名・住所などを画像データとして格納しているのだが、形式はMMR圧縮したTIFF画像らしい。

2値画像の形式としてもっとも高効率な方式と考えているのだろう。ちなみに顔写真(グレースケール)はJPEG 2000で格納されているそう。

ただ、生成できるソフトウェアはあまり多くない。無圧縮のTIFFならWindows標準のペイントでもできるけど。

Webでも使われないようで、WebブラウザはTIFFの表示には対応していない。

なかなか限定的にしか使えない方式だが、2値画像に限れば最強の方式のようだ。


Author : hidemaro
Date : 2019/02/06(Wed) 23:27
コンピュータ | Comment | trackback (0)

ディスプレイ接続いろいろ

先日、Windows 10のデスクトップPCがレンタル業者から届いた。

届いてまず思ったのは起動がむちゃくちゃ速いこと。

どうも、SSDになったみたいね。今どきはこうだよね。


Windows 7時代のPCでは、メインディスプレイはDisplayPortで接続、サブディスプレイはDVIで接続していた。

サブディスプレイは職場に浮いていたディスプレイをもらってきたありあわせのものである。

これがWindows 10のPCになって、メインディスプレイはHDMI接続に変わった。

さらにPC側の出力は全てMini DisplayPortで、これを付属のアダプタで適宜変換するようになっている。


そもそも、ディスプレイの接続方式は古くはアナログのVGA方式が使われていたし、

今ももっとも無難な接続方式として共用のプロジェクタなどではよく使われている。

一方でデジタル接続方式として、もっとも最初に普及したのがDVIである。

もっともDVIはデジタルもアナログも兼用にできるので、コネクタ形状の変換でVGAにすることもできる場合がある。

実際、Windows 7世代のPCには付属品として、DVI-VGA変換アダプタが添付され、これでDVI出力にVGAのディスプレイを接続することもできた。


HDMIはDVIの形状違いに近いが、音声が伝送できたり、著作権保護機能が定義されている点が異なる。

AV機器の接続を想定した規格だが、PCのディスプレイ接続にもよく使われている。

DVIに比べればコンパクトだし、AV機器ではよく普及した規格ですからね。実際、家のPCはHDMIでテレビと接続している。

一応HDMIとDVIは相互に変換が可能となっている。ただし全ての機能が使えるとは限らず、互換性に問題がある場合もあるが。

一方のDisplayPortは本来はDVIとは伝送方式が異なる。

高解像度・マルチディスプレイに対応できる高速伝送を実現しており、まさに次世代のディスプレイ接続方式というにふさわしいのだが……

ただ、そのためには入出力ともにDisplayPort対応している必要がある。

特に表示側は対応機器が少ないので、DisplayPortの出力機器の多くはHDMI・DVI互換モードを備えている。

DisplayPortの物理層にHDMI・DVIのデータを通す機能で、この場合はコネクタ形状の変換でHDMI・DVI出力ができる。


以上のことから、DVIとHDMIはほぼ相互変換可能、DisplayPort→HDMI, DVIはほぼ変換可能ということになる。

さらにHDMI, DisplayPortからアナログのVGAへの変換器も販売されている。

これは変換器内部でデジタル・アナログの変換を行っているので、単なる形状変換ではない。


Windows 7世代のPCは。DisplayPortとDVI接続が1つずつあった。

これに対して付属品のディスプレイはDisplayPortまたはVGA接続だった。

PCには DVI-VGA変換, DisplayPort-DVI変換, DisplayPort-VGA変換 の3つのアダプタが添付されていた。

何を想定しているのかよくわからないが、付属のディスプレイとの接続にはアダプタは不要なので、それ以外のケースを想定しているのだろう。


これがWindows 10のPCはMini DisplayPort出力が複数あって、これに対して付属品のディスプレイではHDMIまたはVGA接続になった。

同じメーカーなんだけど、なぜかDisplayPortからHDMIに変わった。気まぐれなもんだなぁと思ったが。

それに対応して、Mini DisplayPortとHDMIの変換アダプタが1つ添付されていた。

他にMini DisplayPort-VGA変換アダプタが1つ、そしてMini DisplayPortの出力数と同じだけDisplayPortとの変換アダプタが添付されていた。

なんでそんなにDisplayPortとの変換アダプタが必要なのかはよくわからないが。

複数のディスプレイを使うとしても、DisplayPortのディスプレイがそんなにあるところなんてあるんかね。


ここで困ったのがサブディスプレイとの接続である。

従来はDVIで接続していたが、新PCにはDVI出力がないばかりか、DVIへの変換手段が提供されていない。

逆にディスプレイもDVI入力しかない。意外にもアナログ入力がないのだ。こりゃ驚いた。

一方で、旧PCの添付品にはDisplayPort-DVI変換アダプタがあったので、これを暫定的に使っているのだが、まもなくレンタル業者に返却することになる。


というわけで、DisplayPort-DVI変換アダプタを購入してもらおうと動いている。

値段自体はさほど高くないし、この程度なら今期中に購入できるのとのこと。

職場内に同じことになっている人がいるので、まとめて購入するつもりだ。


職場の半分以上の人がサブディスプレイを使っているのだが、2台目のディスプレイはありあわせのものなので人によっていろいろ。

自社製品の分解したディスプレイを使っている人もいて、あまり見た目はよくない。

自分の使っているのは見た目はそんなに悪くないが、これも何かの流用品で、DVIが唯一の入力なのもそれが関係あるかも知れない。

レンタルPCを借りる方法で2台以上のディスプレイを借りることもできるのだが、そうやっている人はさほど多くない。

レンタル業者から借りるメリットは、ものが確かなことと、故障時に早急に対応してくれること。でも、毎月お金はかかる。

メインディスプレイが使えなくなると問題なのでレンタル業者から借りるべきだが、サブディスプレイはそこまででも……という考えはある。

サブディスプレイの効果について合理的に説明しにくいという考えもあるのかもしれない。

リモートのワークステーションをよく使う人にとっては、リモート画面を表示するのに便利とか言えるけどね。


一方でレンタル終了時にディスプレイをレンタル業者から買い取ることができるようだ。話によればかなり安いらしい。

近くの人が「サブディスプレイが欲しい」と言っていたのだが、2台目を借りるところまではなかなか踏み出せていないようだった。

そこで、これから返却するWindows 7のPCのディスプレイを買い取るという選択肢もあるのでは? と言うと「それだ」ということで動き始めている。

ディスプレイを返却すれば処分方法は考えなくて良いが、買い取ると使わなくなったときに会社責任で処分しないといけないが、

購入代金自体も安く、おそらく長く使えるだろうから、サブディスプレイの目的にはちょうどよいだろう。

これからWindows 7のPCの返却が続くので、これがサブディスプレイの環境も改善する糸口になればよいが、さてはて。


Author : hidemaro
Date : 2019/01/30(Wed) 23:11
コンピュータ | Comment | trackback (0)

Tools