2011年11月28日月曜日

iPhoneでYAMAHAのルータへVPNで接続時インターネットへつながらない時の対処

iPhoneでVPNでイントラネットにはつながるんだけど、インターネットに出られない症状で悩む。
※すべてVPN経由でアクセスしたいのでiPhoneの設定は”すべての信号を送信”で使う。

google先生によると、IPアドレスでは接続できる状態なら、DNSの設定がおかしいらしい。
で、IPアドレス直打ちしてみた。
ら、OK。DNSの設定がまずい。

下記のようにせよ、となっている。
dns notice order msext server

これでやってもダメだった。
で、次を試した。
dns notice order msext me

これはルータ(me、つまり"自分"ってこと?)をdnsサーバとして使うように指示するもの。
うちはルータがdnsをやっている(中継している)ように設定しているのでこれで動くことを期待して。

で、結論。
これでできた。
VPN接続の煩わしさがなくなった
(これまではイントラにつながっているとき、webで検索したくてもいったんVPNを切らないと行けなかった)。

Yamahaシリーズならこの方法は通用するはず。

参考文献
Yamahaの該当箇所のマニュアル。
http://www.rtpro.yamaha.co.jp/RT/manual/Ver.1.00/dns/dns_notice_order.html
お悩み相談
http://soudan1.biglobe.ne.jp/qa5926824.html
つぶやき事業部
http://pub.ne.jp/tsubuyaki_div/?entry_id=3514677

2011年8月23日火曜日

Microchip PIC C18コンパイラLiteEditionでHIDBootloaderをコンパイルする【その4】

あわせてユーザプログラムも修正が必要です。
ま、こちらはHIDBootload用にメモリ空間ずらしが考慮されていますので
それを追っていけばどこを修正すればよいかがわかります。

※bootloaderの増量分は0x100としています。個別の環境で必要な量は変わる可能性があるのでご注意を。

赤字部分が変更箇所です。
  1. リンカースクリプト
    bootloader部のメモリ割り当て量を増やし、その分、その他のメモリ配置を後ろにずらす。
  2. 元プログラム
    CODEPAGE  NAME=bootloader START=0x0      END=0xFFF   PROTECTED
    CODEPAGE  NAME=vectors    START=0x1000   END=0x1029  PROTECTED
    CODEPAGE  NAME=page       START=0x102A   END=0x7FFF
    
    変更後  
    CODEPAGE  NAME=bootloader START=0x0      END=0x10FF  PROTECTED
    CODEPAGE  NAME=vectors    START=0x1100   END=0x1129  PROTECTED
    CODEPAGE  NAME=page       START=0x112A   END=0x7FFF
    
  3. ユーザプログラム
  4. 元プログラム
    #define REMAPPED_RESET_VECTOR_ADDRESS   0x1000
    #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS 0x1008
    #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS 0x1018
    
    変更後
    #define REMAPPED_RESET_VECTOR_ADDRESS	        0x1100
    #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS	0x1108
    #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS	0x1118
    

Microchip PIC C18コンパイラLiteEditionでHIDBootloaderをコンパイルする【その3】

具体的な変更箇所です。
先回も述べたとおり、bootloaderを配置するメモリの大きさを大きくし、その分それ以降のメモリ配置をずらします。
私の場合は大きくしたメモリ量は0x100分です。
ユーザプログラムの変更も必要です。それはまた次回。

  1. リンカースクリプト BootModified.18f2550_g.lkr
    bootloaderのお尻のアドレスをずらし、bootloaderの格納領域を大きくする。

    元プログラム
    CODEPAGE NAME=BootPage START=0x20  END=0xFFF

    変更後
    CODEPAGE NAME=BootPage START=0x20  END=0x10FF

  2. メインプログラム main.c

    元プログラム
    ベクターの再配置情報
     _asm goto 0x1008 _endasm
     _asm goto 0x1018 _endasm
    ユーザプログラムへのジャンプ部
     goto 0x1000 //If the user is not trying to enter the bootloader, .....
    

    変更後
    ベクターの再配置情報
     _asm goto 0x1108 _endasm
     _asm goto 0x1118 _endasm
    ユーザプログラムへのジャンプ部
     goto 0x1100 //If the user is not trying to enter the bootloader, .....
    

  3. ブートローダ本体 BootPIC18NonJ.c

    元プログラム
    //ユーザプログラムの先頭アドレス
    #define ProgramMemStart  0x001000 //Beginning of application program memory ...
    
    ユーザプログラムを書きこむ際に消去するメモリのブロックサイズ 256バイト単位で設定
    #define StartPageToErase 64 //The 4096 byte section from 0x000-0xFFF ...
    

    変更後
    //ユーザプログラムの先頭アドレス
    #define ProgramMemStart  0x001100 //Beginning of application program memory ...
    
    ユーザプログラムを書きこむ際に消去するメモリのブロックサイズ 0x100ずらすので、値は4増やす。
    #define StartPageToErase 68 //The 4096 byte section from 0x000-0xFFF ...
    


Microchip PIC C18コンパイラLiteEditionでHIDBootloaderをコンパイルする【その2】

ま、結論から行きます。
最適化が切れてbootloaderのサイズが大きくなってしまったのだから、その分後ろにずらして
やればよい。
デフォルトのbootloaderの大きさは4Kバイト(0x000~0xFFF)と設定されています。
こちらのページに種々のbootloaderの情報が書かれています。

※最初は上記のサイトにあるbootloaderに浮気をしよう、と思いました。
ま、いつか浮気はするわけですけどたぶん。だってモニタもついてるんだもん。

で、bootloaderのコードを見始めました。

どうやら下記の3つが関係しているようです。
  1. リンカースクリプト(lkr)ファイル
    ベクターマップ、プログラムコード、EEPROMなどのメモリ配置の定義。
    →メモリマップを変更しようとしているのだから当然、ですよね。
  2. ブート部プログラム
    いわゆるmain()。スイッチの状態で2のローダを実行するか、ユーザプログラムを実行するかを決める。
    →ユーザプログラムのアドレスが変わってしまうので変更必要。
  3. ユーザプログラムのローダ
    USB経由でPCホストのプログラムからのコマンドを受け付け、
    フラッシュの消去・プログラム・ベリファイを行う。
    →フラッシュ領域のどこにユーザプログラムをロードするかの変更が必要。
まぁ、ずらしてやる、という比較的単純な作業なので作業漏れが無いように見ていく、
というのが重要ポイント。

どこをどう変えるのかはまた次回で。


2011年8月17日水曜日

Microchip PIC C18コンパイラLiteEditionでHIDBootloaderをコンパイルする【その1】

入手性の観点からEZUSBからPIC18に切り替えていくことにしたので
すこし不安を感じながらいじり始めました。

とりあえず、USBのマウスサンプルを書き換えてジョイスティックにしてボタン数を
増やしたりして、手応えを感じたのでEZUSBの開発の容易さは忘れられず
純正HIDBootloaderを試すことにしました。

BootloadのHEXファイルはサンプルとしてついていたのですが今自分が使おうとしている
2550ではなく4550用と思しきファイル名になっていたのでせっかくなのでコンパイルして使おう、
と作業を始めました。

しかし。うまくいきません。コンパイルが通らないのです。

Error - section '_cinit_scn' can not fit the section. Section '_cinit_scn' length=0x0000009e

のようなエラーが出ます。
google先生!に伺ったところ、C18の評価期間が切れて最適化が行われなくなったため
所定のサイズにコードが収まらねぇ。と言っているようです。
解決策として最適化オプションを有効にせよ、というページがあるのですが上記のような
状態なので解決策になってないのです。
C18をインストールしなおすと評価期間がリセットされるという情報もあるのですが
なんだか後ろめたい気もしなくもないですし、いつか対策されればそれでチョンなわけです。

で解決策を考えました。

長くなるので次回に続く。

2011年8月11日木曜日

MacBookAir液晶への写り込み

MacBookAirを買って約2週間がたちました。
いいところ、として液晶への写り込みが(自分としては)許容範囲にあります。

個人的にはマットなコーティングが好みなのですがこれは
明るい場所を背にしたり、また自分の顔が写り込んだりしてどうも気になるためです。

MBPはひどくてすぐにフィルムを買いに行きました。

でMBAですが冒頭にも述べたように許容範囲です。今のところ。
ARコートがうまくできているのでしょうか。
またマットなコーティングと違い表示もクリアです。
マット仕上げの液晶の場合、写り込みも少ないですが表示内容もマット仕上げの部分を
投下して目に届くため(すこし)マットな仕上げになって表示されることになります。

今のところ、MBAは表示のクリアさと反射の少なさを両立していると言えます。

2011年8月9日火曜日

MacBookAirのキーボードはUSかJISか。

今回MBAを買うにあたり、CTOした時点で”US”と決めてました。
それは”カッコ”のみです。はい。

覚えれば速い50音キーボードですがこのうん十年ローマ字でやってきたので
今更必要ないのです。

で、すこしキーが減る分、どれかキーが大きくなって打ちやすいだろう、と
あまり意味もなくUSにしてしまいました。

しかーし。
”失敗”です。JISでいいです。いや、JISがいいです。

やっちまったよ。ほんとに。
うちにある、たぶんドナドナされてしまうであろうMBPはJISです。
すぐほしいから近くの量販店でお持ち帰りしたものです。

JIS、楽です(した、今に思えば)。
言語モード選択を1キーでできる。
英数、日本語モードを一発で選択できる。

しかも。CTRLキーが”ちゃんとした”位置に最初からある
USでもね、CTRLとCAPSLOCKは標準機能で交換可能になってます(すばらしい)。
知りたい人は”修飾キー”で検索を。

というわけでね。
普通の人はJISでいいです。

特に普通の人はほかのPC触るとき特にキーの違いに悩むと思うのでJISでいいです。

自分はUSにも触る機会がそこそこあったせいか、打ってしばらくすると頭が修正されて
慣れていきます。不思議と。でもね、カッコ"("はたいがい、1キー横にずれます。
よく考えるとプログラム打つとき結構ミスる。このごろの開発環境は補完をして括弧閉じしてくれるのでちょっと助かってる。

いや、だめじゃん。自分。

そこのあなた!デザインだけで”かななし格好いいもんね”と思ってる人。
JISにしときなさい。
海外に行っても(漢字じゃないけど)珍しいキーボードだからウケるかもよ、今時なら。