2013年5月14日火曜日

ビルド環境移行 - clang準備

CodeSourcery のgcc環境からclangへ乗り換えを検討する。


■Clangダウンロード
  LLVMのClangサイトから最新版Ver. 3.2のダウンロード
 Experimental Clang Binaries for Mingw32/x86が対象ファイル


■準備
  まずClangを動作させるのに必要なMinGWをインストールする。

 注意すべきは必ずC:/MinGWにインストールすること。
 現状のMinGW版Clangは上記フォルダにMinGWがあることがハードコードされている。

  次にClangが使うgccのライブラリの準備
 現状Clang Ver. 3.2のWindowsビルドがサポートしているgccライブラリのバージョンは以下の通り
 4.3.0, 4.4.0, 4.5.0, 4.5.2, 4.6.1, 4.6.2
 
 これはclangのソースコード /clang/lib/Frontend/InitHeaderSearch.cpp L400あたりにハードコードされている。
  そこでMsysプロンプトから以下のコマンドを実行して該当バージョンのgccインストール

 mingw-get install gcc=4.6.2-1
 mingw-get install g++=4.6.2-1

 既に4.7.0とかがインストールされていてエラーになってしまった場合は下記

 mingw-get upgrade gcc=4.6.2-1
 mingw-get upgrade g++=4.6.2-1


■インストール

 ダウンロードしたClangのファイル一式を適当な場所に展開するだけ。
 /binフォルダにパスを通しておく

 以下コマンドで動作確認

  clang --version

clang version 3.2 (tags/RELEASE_32/final)
Target: i686-w64-mingw32
Thread model: posix

と出たらインストール成功

2013年3月31日日曜日

Flyswatter2 - OpenOCD 0.6.1

TincanTools Flyswatter2 とOpenOCD 0.6.1 によるJTAGデバッグについて

起動コマンドは以下になる
openocd -f scripts/interface/flyswatter2.cfg -f scripts/board/ti_beagleboard.cfg

だが、これはうまく起動できない場合が多い。
実行すると以下のようなエラーメッセージが表示される。


Open On-Chip Debugger 0.6.1 (2012-10-07-10:34)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
RCLK - adaptive
Warn : omap3530.dsp: huge IR length 38
RCLK - adaptive
trst_only separate trst_push_pull
Info : max TCK change to: 30000 kHz
Info : RCLK (adaptive clock speed)
Error: couldn't read enough bytes from FT2232 device (0 < 81)
Error: couldn't read from FT2232
in procedure 'runtest'
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: couldn't read enough bytes from FT2232 device (0 < 2)
Error: couldn't read from FT2232
Warn : Bypassing JTAG setup events due to errors
RCLK - adaptive
Error: couldn't read enough bytes from FT2232 device (0 < 81)
Error: couldn't read from FT2232


これはJTAG adaptive clockという仕組みがうまくbeagleboardとかみ合わない場合に発生するらしい。
詳しくはTincanToolsの説明を参照

エラーが発生してしまう場合はTincanToolsが公開しているadaptive clockを無効にした設定ファイルomap3530_norclk.cfgを用いる。
ダウンロードした設定ファイルは OpenOCDフォルダ/scripts/target/omap3530_norclk.cfgに保存

この設定ファイルを使って以下のコマンドで起動する
openocd -f scripts/interface/flyswatter2.cfg -f scripts/target/omap3530_norclk.cfg -c "init" -c "reset init"


以下のようなメッセージが表示されたら無事に起動


Open On-Chip Debugger 0.6.1 (2012-10-07-10:34)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
DEPRECATED! use 'adapter_khz' not 'jtag_khz'
adapter speed: 1000 kHz
Warn : omap3530.dsp: huge IR length 38
trst_only separate trst_push_pull
Info : max TCK change to: 30000 kHz
Info : clock speed 1000 kHz
Info : JTAG tap: omap3530.jrc tap/device found: 0x0b7ae02f (mfg: 0x017, part: 0xb7ae, ver: 0x0)
Info : JTAG tap: omap3530.dap enabled
Info : omap3530.cpu: hardware has 6 breakpoints, 2 watchpoints
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x54011140
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x54011140
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x54011140
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x54011140
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x54011150
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x54011150
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x540111c0
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x80000042, MEM_AP_TAR 0x540111c0
DEPRECATED! use 'adapter_khz' not 'jtag_khz'
adapter speed: 1000 kHz
Info : JTAG tap: omap3530.jrc tap/device found: 0x0b7ae02f (mfg: 0x017, part: 0xb7ae, ver: 0x0)
Info : JTAG tap: omap3530.dap enabled
Error: cortex_a8_mmu: target not halted
Runtime Error: embedded:startup.tcl:20:
in procedure 'omap3530.cpu'
in procedure 'ocd_bouncer'
at file "embedded:startup.tcl", line 20

Warn : omap3530.cpu: ran after reset and before halt ...
Info : number of cache level 2
Error: cache l2 present :not supported
Error: mpdir not in multiprocessor format
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xa00001d3 pc: 0x80e88508
MMU: disabled, D-Cache: disabled, I-Cache: enabled



2013年1月29日火曜日

[番外編] Tomcat SSL通信

■Tomcat7でSSL通信
(1)SSLサーバ証明書要求
  ・秘密鍵生成
  openssl genrsa -des3 -out [秘密鍵ファイル名] 4096

 ・CSR生成
  openssl req -new -key [秘密鍵ファイル名] -out [出力CSRファイル名.csr]

(2)サーバ証明書発行依頼
 ・エンジョイSSLを使用。
   http://www.e-ssldirect.com/product/rapidssl.php

 ・CSRをテキスト表示して申込フォームに貼り付け
    openssl req -noout -text -in [CSRファイル名]

(3)証明書受取
   指定した管理者メールアドレス(例えば webmaster@ホスト名)でメールを受け取れるようにする
 一時的にでOK

 受け取ったメールアドレスに発行するためのURLが書いてあるのでそのページを見る
 そうすると審査が完了して証明書が発行される。

 見に行ったページにサーバ証明書、中間CA証明書が書いてあるのでコピーして保存

(4)証明書ファイル作成
  サーバ証明書、中間CA証明書、秘密鍵を1つにまとめたPKCS12形式ファイルを作成
 openssl pkcs12 -export -in [サーバ証明書ファイル] -inkey [秘密鍵] -certfile [中間CA証明書] -out [出力ファイル]

  PEM形式にしたい場合
  openssl pkcs12 -in [上記出力ファイル] -out [ファイル名.pem]

(5)Tomcat設定
   [Tomcat Dir]/conf/server.xml

   <Connector
       port="443"
       protocol="HTTP/1.1"
       scheme="https"
       secure="true"
       keystoreFile="[PKCS12形式のキーストアファイル]"
       keystorePass="[キーストアパスワード]"
       keystoreType="PKCS12"
   />

(6) 443ポート空け

(7)Tomcat再起動

2013年1月26日土曜日

[番外編] メールサーバ構築

■postfixによるSMTPサーバ(CentOS)
(1)インストール
   yum install postfix

(2)動作設定
    /etc/postfix/main.cf

設定項目 内容
ホスト名 myhostname = [自分のホスト名]
ドメイン名設定 mydomain = [自分のドメイン名]
メール送信先 myorigin = $myhostname
メール受信設定 inet_interfaces = all
メールの最終目的地 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
リレー許可ドメイン relay_domains = $mydestination
メール保存先 home_mailbox = Maildir/

(3)ポート設定
   25番ポート空ける

(4)alias設定
 postmaster, webmaster等の特別アカウントへのメールは通常rootに転送される
 これを本来のwebmasterユーザーで受信したい場合の設定

  /etc/aliases の以下の記述をコメントアウト
     webmaster: root

  newaliases コマンドで反映

(5)MTA(Message Transfer Agent)確認&切り替え
 複数のメール配信ソフトがインストールされている場合に行う。
  確認: alternatives --display mta
  変更: alternatives --config mta

(6)起動
   /etc/init.d/postfix start

■dovecotによるPOP3、IMAPサーバ構築
(1)インストール
   yum install dovecot

(2)動作設定
    /etc/dovecot/conf.d/10-main.cf
    /etc/dovecot/conf.d/auth-system.cf

(3)ポート設定
   110番ポート空ける

(4)起動
   /etc/init.d/dovecot start