2013/08/27

[端末]iPhone5買いました

,
 docomo→auのMNPでiPhone5ゲッチュしました。
ついにねんがんのiPhone5(16GB)をてにいれたぞ!
まあ売りに出されるのですが…買ったというか、一括0円で商品券だけどCBもついてたので、「貰った」なんて表現のほうが正しいような気がします。

25日に名義変更と2in1(docomoショップで)。
26日に予約番号発行手続き(151で)、iPhone5一括0円で良さげな店を探して買いました。
この後多分LTEフラットやオプションを外すことになるんでしょうが、どうやらネット経由でもできるみたいですね。
 2in1はほぼ即解約みたいなものなんですが、メイン回線(Aナンバー)が数年間使ったもので、あと1回めだけはギリギリ大丈夫という話を聞いたので、ブラック入りは免れそうかなあ…といったところ。

 ネットで情報を探してると、手続きには何段階もあって面倒くさそうという印象を受けますが、想像していたよりは遥かに楽で、すぐに終わったのでよかったです。
 かかった費用は、

docomo
・名義変更:家族間なので無料(親→自分、今まで未成年だったから。)
・2in1:Bナンバーの基本使用料がタイプ2in1(同一名義オプション)で、日割りで52円?
・MNP転出費用:2100円(次の請求かなにかに入る)

au
・新規契約事務手数料:3150円(次の請求に)

回線維持費
・LTEプラン:980円
・auにかえる割:-980円
・うにばーさる使用料:3円

他コスト(購入月解約不可のオプションとか)
・LTEネット:315円
・スマパス:390円(初回月は無料)
・ビデオパス:590円(初回月は無料)
・電話基本パック:315円
・通話定額24:500円
・通話ワイド24:980円
・APP:これ無料アプリだっけ、Applecare Protection Planだっけ…
・LTEフラット(月額、翌日以降解約○):5,985円
・毎月割:▲2,140円?
計5,955円?

であってるのかなあ…

特に参考にしたのは
2in1を利用したMNPについて調べてみた! - ちむどろいど http://bit.ly/16Fo1fc
docomo FOMAデータ回線MNP転出手続き注意点まとめメモ - ちむどろいど http://bit.ly/16FnHND
「au iPhone 5の3円運用」私が行った各オプション解約の方法 | 猫と杓子 http://bit.ly/16FnUAo

 ちなみに本体のバージョンは6.1.4でした。ぐぬぬ…

 後はiPhone5Sが直ぐ発表されないことを祈ります…
しかしMNP優遇されすぎですよね。新規はまだしも機種変なんて、本当に養分って感じがします…ショップで眺めてたけど、価格の差が凄すぎて。

追記(2013/09/04)
 iPhoneには中古で旅立ってもらいました。\43,000。8月の終わりには5万近かった買取金額ですが、Appleの新iPhone(5C?)発表を前にして値崩れした感じですね。情弱だから引っかかりました。ぬかった…

 売るのに際して、SIMカード外すのが割と大変で(参考)、割と怖かったです。
Read more →

2013/08/22

[電子工作]トラ技9月号を読んだ感想

,
 月が眠いですね。激ねむです。つらい。

 プールの帰り道に本屋があったので立ち寄ったら、9月号のトラ技が売っていて、まだ買ってないなあと気付いたので買ってきちゃいました。部品特集らしいですね。なんかこの企画最近多くないですか…てか薄いけど大丈夫ですかこれ…
 ふんふんと流し読みしてましたけど、幾つか??となったことがあったのでメモ

・可変容量ICの存在(MAX1474)。データシートを見ると、内部にコンデンサが幾つか並列になっていて、それらを独立にON/OFFすることで容量を変えるという、ある意味原始的な仕組みのもの。でもこんなのあったんだ…

・RMS-DCコンバータがAD536以外にもあったこと。何かどの本どの回路を見ていてもAD536だったんですが、ちゃんとLinear Technologyからも出てたんですね(LTC1966)。

・SiC系 高い。

・パワーオペアンプ(LT1206) 一体何のために使うんですかね、これ。データシートの用途欄には「ビデオ・アンプ、ケーブル・ドライバ、RGBアンプ」などと書かれていましたが、50Ω75Ωと言った低インピーダンスケーブルのためってことなんでしょうか…

・貫通コンデンサ 今まで何回か分解した時に見て、なんでこんなのがあるんだろう…と思ってたんですが、ようやくその使用目的がわかりました。なるほどって感じですね

・蛍光表示管モジュール(ノリタケ伊勢電子製のもの) LCDより確かにはっきりしてて見やすく、そして目に優しいのですきなんです。単管?表示のものは殆どが廃れてしまったんでしょうけど、LCDみたいな方はしぶとく生き残ってますね。人間の感性は数字では測れないだけあって、単純に技術の新旧で片付けられる問題じゃあ無いんでしょうか。いつか触ってみたいものの一つ。誰か恵んでくれ。

・有機ELディスプレイモジュール(SEL10016Y) 有機EL自体はOLEDとかで良く見ますけど、いわゆる16*2LCDのような形をしたものは初めて見ました。しかも意外と安いんですね。へえ…
 
 そうそう、有機ELといえば、透明なディスプレイモジュールなんてのも存在するんですね。これはトラ技ではないんですけど、この記事を見て知りました。びっくりです。

便利かも。透過ディスプレイ搭載の定規が面白い! | Hiroiro http://bit.ly/183Gx29

多分使われてるディスプレイはこれ。

Transparent OLED technology http://bit.ly/183Gzag

こういうのが眼鏡に貼り付けられるようになれば、近未来の遊びが出来るんじゃないかなあって昔から妄想してるんですけど、Google Glass然り、いつになったら私の手の届くところに来るんでしょうか…

 後、「目からうろこ!お宝アプリケーション・ノート」の連載に載ってるMAXIMのアプリケーションノート3241http://japan.maximintegrated.com/app-notes/index.mvp/id/3241、USB電源を使ったバッテリ充電は個人的に凄く参考になりました。
 
 「宇宙を撮る」、私が一番楽しみにしてる連載です。宇宙での電子機器は一体どうなっているんだろうという好奇心の相手をしてくれるのに十分な、とても内容の濃いお話ですから…
 今回も冗長系の話があってへえってなりました。ダイオード、電源、冗長と聞くとどうしてもはやぶさを思い出しますが、実際にどんな感じの役割を果たしていたのかと考えるとちょっと謎が残っていました。他にも、電源ラインが2つあるとか、コネクタの逆差し防止法とか、重要なスイッチは何箇所も同時押しさせるとか、そういう話も面白かったです。正確な同期をする部分にはCPLDを使っていると知って、こういうところにも需要があるのか…とも思ったり(後今日見つけたのはFPGAを使ったUSB-DAC)。
 
 なんか意識高い記事になったなあ。ということで寝ます。
Read more →

2013/08/21

[FPGA][MicroBlaze]MicroBlaze開発中に出てきたエラーと、その解決

,
 今日は待ちに待った2CELLOSのCD発売日なんですが、ヨドバシ秋葉マルチメディアには置いてなかったので激おこです。しょうがないので、これ書いたらプール行って帰ろうと思います。

 で、MicroBlaze人口が少ないからなんでしょうか、エラーメッセージで検索すると日本語のページが全然出てこなくて大変です。全く、失敗とその解決法も、動作法に劣らない程度に重要だと思うんですよね、時間を使って得た経験、ノウハウとも言えるでしょうし…
 いくつか、自分が嵌められた?エラーとその解決法についてメモしておきます。

1)MicroBlazeにあったdebug_moduleを消して、手動でまた追加する場合
 別のプロジェクト開いたら、xmdでfpga -f ***.bitはいけるのにconnect mb mdmでMDMがねえよって怒られたので…(このときのエラーメッセージはコピペしてメモしてないんだ、ごめん)

 まず、microblaze_0をダブルクリックし、Configuration WizardでEnable Debugにチェックを入れる。
 次に、IP CatalogからDebug→MicroBlaze Debug Module (MDM)を選択し、追加する。
IPコアの追加(Debugの一番下のやつね)
で、これだといろいろと配線が足りないと思うので、Bus Interfaceから
・debug_moduleのMBDEBUG_0を、microblaze_0_debugに
・debug_moduleのS_AXI(AXIバスを使っている場合)を、なんかそれっぽいのに(てきとう)
・Portsタブから、debug_moduleのDebug_SYS_Rstを右クリックして[Make External]、リセットのところの(名前がまちまちだろうけど、例としてproc_sys_reset_0)のMB_Debug_Sys_Rstにそれぞれ繋ぎます。
要は、debug_module⇔microblaze、debug_moduleのバス接続、Reset接続です(もしかしたらバスは要らないのかもしれない。Resetはないとエラーが出る)。
microblaze_0とdebug_moduleを繋げる。Bus Interfacesから。
Reset信号のモジュール同士の接続は、右クリック→[Make External]からだ。
でいいような気がする。変に直接ポート名をタイプすると、エラーだらけになって手に負えなくなるのでやらない。
MicroBlaze Debug Module 
で、最後にAddressesタブを開き、AXIバス上での(かなあ)アドレスを指定してあげます(すでにアドレスが割り当ててあるなら、この手順は別にいらないかもですね)。これには、モジュールを選択して右上にあるGenerate Addressボタンを押すだけで終わります。
Addressを割り当ててもらう。
参考:Xilinx エンベデッド システム開発 v12.3 8-14 アドレスの割り当て
//ハウツーマニュアルが、セミナーに行かないと貰えないのってちょっとどうかと思うんです…いくら商売とは言え…

2)逆に、debug_module(MDM)を2つ以上つないじゃった場合
 多分Run DRCsのところで SIGNAL: Ext_BRK - multiple drivers found: のようなエラーが出て通らないと思います。しかし困ったことに、これでもGenerate Netlist、Generate BitStreamは一応選択できるんですね…
 普通にBus Interfacesのところを右クリックして、Delete Instanceすればオッケーです(禍根を残さないようにAll Connectionをdeleteしてもらう)。で、自分は通った。
debug_moduleとmdm_0って名前が違うから、最初重複してることに全く気付かなかったのがそもそもの原因…

参考:http://forums.xilinx.com/t5/Embedded-Processors-and/Multiple-debug-modules-instantiation/td-p/273698

 ちなみにこの時はExport DesignからSDKが起動できなくて嘆いてた。その時のログは以下のようなもの。これだけだと通ってるように見えるから困る。
********************************************************************************
At Local date and time: Wed Aug 21 15:38:48 2013
 make -f system.make exporttosdk started...
IF NOT EXIST "SDK\SDK_Export\hw" @mkdir "SDK\SDK_Export\hw"
psf2Edward -inp system.xmp -exit_on_error -dont_add_loginfo -make_inst_lower -edwver 1.2 -xml SDK\SDK_Export\hw/system.xml 
Release 14.5 - psf2Edward EDK_P.58f (nt64)
Copyright (c) 1995-2012 Xilinx, Inc.  All rights reserved.

Checking platform configuration ...
IPNAME: plb_v46, INSTANCE: mb_plb - 2 master(s) : 9 slave(s) 
IPNAME: lmb_v10, INSTANCE: ilmb - 1 master(s) : 1 slave(s) 
IPNAME: lmb_v10, INSTANCE: dlmb - 1 master(s) : 1 slave(s) 

Checking port drivers...
Done!

3)Generate BitStreamに反応がない場合
 例として、というか自分の場合Run DRCs、Generate Netlistまでは通っているのに、Generate BitStreamを押しても以下のようなメッセージがコンソールに吐きだされて、Generateされない。
********************************************************************************
At Local date and time: Wed Aug 21 18:01:16 2013
 make -f cpu.make bits started...
"This project has been instantiated in Xilinx ISE Project Navigator. Please use ProjNav to generate the bitstream. "
Done!
もう知らん。そもそもXPSからProjectを開いたときに、以下のようなダイアログが出てくる時点でイミフだって
どゆこと…
(2013/09/08)これは、ISPのProject Navigatorで作られたプロジェクトは、ISEから開くべき、みたいなやつだったような気がする…

4)Linuxのコンパイルについて

 多分自分のことだからどうせまた記事を書いちゃうんでしょうけど、Linuxのコンパイル時にはXilinx Wikiに書いてあるやり方だと怒られてビルド通りません。
 どうやらCROSS_COMPILEオプションを指定してあげた方がいいみたい?で、mb-かmicroblazeel-xilinx-gnu-だったかを書いてあげたら通りました。(要検証)

0)各ファイルの場所
最初のモジュール名がsystemなら、system\implementation\にsystem.bitとかができる。
最終的に生成されるdownload.bitは\software\cpu_hw_platform\以下。\software\は多分SDKで聞かれるworkspaceの場所。
\software\uboot_bsp_0\microblaze_0\libsrc\uboot_v4_00_c\にconfig.mkとxparameters.h

余談
http://blog.cronus-embedded.com/article/57563399.html
なるほどねーって思ってたら、1年前の記事だった。
Read more →

2013/08/20

[FPGA][MicroBlaze]MicroBlaze用u-bootのコンパイルと実行

,
 Xilinxの組み込みIPコアの一つであるCPU、MicroBlaze上でu-bootを実行するお話です。悲しいかなネットにある大量の情報の海に溺れかけ、ここまで2日かかりました。かなりいろいろとややこしいのでメモしておきます。Linuxが起動できればいいなあ(というかその前座)。

 まず、開発環境をメモしておきます。
・Xilinx ISE 14.5
・Xilinx Platform Studio 14.5
・Xilinx Software Development Kit Release Version: Release 14.5 Build SDK_P.58f
・ターゲットボードは、Xilinxの評価ボードSP605
・後UbuntuとTeraTermが必要。


 基本的な開発の流れは、XilinxのWikiであるところのこのページに従います。

MicroBlazeのハードウェア層を、XPSで設計する(ISE使わずともいけるっぽい)。

SDKの方で、u-bootの設定をする(u-bootのコンパイルに必要な、config.mkとxparameters.hを生成する)。

SDKで、.bmmと.bit(と後.elf?)を統合し、download.bitを生成しておく。

Ubuntuで、u-bootのコンパイルをする(上記2ファイルが必要。これでu-bootファイル(拡張子なし)を生成する)

必要なファイル(download.bit、u-boot)がそろったので書き込みする


1)とりあえず、最初に、Xilinxのページから、SP605用MicroBlazeのサンプルプロジェクトをダウンロードします。

2)旧バージョンのファイルを新しくする。

 展開したらsp605_bistというフォルダが出来たと思います(多分)。そしたら、XilinxのSDKの方を立ち上げ、[File]→[Open File]でsp605_bist/system.xmpを開きます。すると、XPSが立ち上がり「旧バージョンのファイルを新しくするよ」的なダイアログが出るので、Nextをペペペと押していきます。
※system.xmpをXPSで開いても、ただ中身を表示するだけで、ダイアログが出ない故のSDKからの起動であります。

3)MicroBlazeにMMUを載せる

 まずやることは、MMUをのっけることです。なぜならば、u-bootにはMMUが必要ですが、リファレンスデザインのデフォルト設定のまま書き込んでxmdからconnect mb mdmすると、No-MMUと見えたので…
(2013/09/06)MMU無しでも普通に動くらしいです。動きました。

 XPS上で、Bus Interfaceタブにあるmicroblaze_0をダブルクリックします。

 Configuration Wizardが立ち上がりますので、左のSelect configuration:からLinux with MMUを選びます。(Low-end Linux with MMUでも大丈夫なのかもしれない。uCLinux向け?)
 [Next]ボタンを押して設定を一通り見てもいいですが、別に見なくてもよかったような気がします。[OK]ボタンを押して、Wizardを閉じます。

4)MicroBlazeのBitStreamを生成し、XPSでやることを終わらせる。

 左のNavigatorから、Run DRCs、Generate Netlist、Generate BitStreamを順にやっていきます。多分エラーは出ません、出てもちょっとどうにもならないです…(無い場合は[View]→[Toolbars]→[Navigator]?)。ちなみにこの作業は結構時間がかかります。までもNavigatorがやることをわかりやすくリストアップしてくれてるので、めっちゃいいですねこれ。

5)SDKへの開発に移る

 Export Designを押し、ダイアログが出たら[Export & Launch SDK]をクリックします。すると、SDKのWindowが表示されるかと思います。ここからは、Eclipseの操作に慣れた方ならすいすい行くと思うんですが、とりあえずWelcome的なウィンドウを閉じます。

 えっと、ここで追加のプラグインみたいなものが必要になります。u-boot-xlnxです。Xilinxのgitにあるので、Ubuntuマシンの方でgit cloneしてDLしておきます。
※Eclipseへの追加から先は、このページによくまとめられています。めっちゃ参考にしました
 このページからuboot_bsp.tar.gzをDLします。どうにかして展開します。したらXilinx\14.5\ISE_DS\EDK\sw\lib\bsp以下に放り込みます。結果として、
Xilinx\14.5\ISE_DS\EDK\sw\lib\bsp\uboot_v4_00_c\data\uboot_v2_1_0.mld
Xilinx\14.5\ISE_DS\EDK\sw\lib\bsp\uboot_v4_00_c\data\uboot_v2_1_0.tcl
の様になってればオッケーっぽいです。

したら、SDKから[File]→[New]→[Board Support Package]を選択します。図のようなダイアログが出ると思うので、左下をubootに変えて[Finish]を押します。
ubootのためにconfigファイルを作ります。
次に、よくわからないセッティングをします。下のようなウィンドウが出ると思うので(このSSはすべて設定し終えたときのもの)、Valueのところをデフォルトのnoneから繋ぎたいものに変えていきます。
セッティング
 終わったらOKを押すと、自動的にmakeが始まります。ここで結構エラー出ること多いです。MicroBlazeのピン接続が少しでも違うとダメっぽいです(Enable Debugにしたままデバッグポート繋げないとかするとエラーでた)。
 Can't find variable 'flash_memory_bank'みたいなエラーもでます。よくわからないので、出てきた解決策の通りに0固定にします。(これやるとu-bootのビルド時にgpioあたりでundefined referenceで落ちる?)
バンクってなんだよ…

ログ:
17:58:59 **** Build of project uboot_bsp_0 ****
make -k all 
libgen -hw ../sp605_bist_hw_platform/system.xml\
      \
      -pe microblaze_0 \
      -log libgen.log \
      system.mss
libgen
Xilinx EDK 14.5 Build EDK_P.58f
Copyright (c) 1995-2012 Xilinx, Inc.  All rights reserved.

Command Line: libgen -hw ../sp605_bist_hw_platform/system.xml -pe microblaze_0
-log libgen.log system.mss 


Staging source files.
Running DRCs.
#--------------------------------------

# uboot BSP DRC...

#--------------------------------------

Running generate.
#--------------------------------------

# uboot BSP generate...

#--------------------------------------

/* Main Memory is ddr3_sdram */

INFO automatic U-BOOT position = 0x57c00000

Running post_generate.
Running execs_generate.
'Finished building libraries'

17:59:03 Build Finished (took 3s.431ms)

 もしコンパイルがうまくいったならば、projectのuboot_bsp_0\microblaze_0\libsrc\uboot_v4_00_cあたりにconfig.mkとxparameters.hが出来てると思います。これをつかってu-bootをビルドします。

7)
 最後に、[Xilinx Tools]→[Program FPGA]を選択し、[OK]を押します。ここら辺の参考

6)書き込む

 ファイルが出来たら、いよいよ書き込みです。わけのわからない難解なジャンパの設定をしたら、電源を入れます。
 書き込みには、iMPACTではなくxmdというツールをCUIで使います。多分スタートメニューの[Xilinx Design Tools]→[ISE Design Suite 14.5]→[Accessories]に"ISE Design Tools 64bit Command Prompt"みたいなものがあります。それを選択します。
 コマンドラインが表示されたら、まずはdownload.bitとu-bootのあるフォルダに移動します。そうしたら
C:\***\***\***\>xmd
と打ちます。Xilinx Microprocessor Debugger (XMD) Engineだなどと表示されたかと思います。続いて、
XMD% fpga -f download.bit
XMD% connect mb mdm
XMD% dow u-boot
XMD% run
します。
xmdを使ってFPGAに書き込みする。
もしTeraTermなどのシリアルモニタを繋いでいれば(ボーレート115200)、u-bootが起動したメッセージが流れてきます。
u-bootの動作確認
ここら辺はこのページを参考にしました。

 ここまでXilinxのWiki通りに進めてきたわけですが、Xilinxに買収されたらしいPetaLinuxの話は一度も出てきませんでした。ネットにある僅かな情報によれば、それなりにコンパイルから書き込みまでが楽に行えるらしいのですが、一体どこに行ったんでしょう…

 後、実際に使うにあたってはFSBL(First Step Boot Loader)が無いと、起動してもu-bootすら読み込んでくれなくなりそうなんですが、どうすればいいんでしょう。SDKでApplication Projectを作成しようとすると、ExampleにSREC Bootloaderなるものが出てくるのですが、これなんでしょうかね…
SREC Bootloaderとは
ちなみになんでこんなことをやっているかというと、仕事でやることになったからです…Xilinx触ったことなかったんですが、仕事なのでそうも言ってられず。かといって初心者なので情報を端から端までいちいち眺めるわけです。とても覚えてられたもんじゃないので、Blogにまとめざるをえない…ですよねえ…

MicroBlazeを作りこむところからは、このpdfも参考になる。

おまけ:Xilinxの書き込みツールだけど、これで低価格品だと銘打っちゃうんだから、庶民には手の届かない世界のままなんだなあ…
Read more →

2013/08/15

[電子工作]ZedBoard用Linuxカーネルのコンパイル

,
 面倒くさかった。ネットに上がっているやってみた系サイトの情報の殆どが古くてなかなか進まなかった。
※私はLinux系を扱い慣れていませんので、冗長になっているかもしれません…

参考にさせていただいたサイト
Matrixのゆらぎ: Zed BoardのLinuxカーネルビルド編 http://goo.gl/jfC5ZP
FPGAの部屋 ZedBoardのLinuxカーネルコンパイルのテスト http://goo.gl/pgwT7z

ビルドした環境
OS:Ubuntu12.04 (Oracle VM VirtualBox上)
CPU:i7-3770K 1コア制限
メモリ:RAM 1GB割り当て

 基本的には、GitHubからソースコードをDLしてきて、後コンパイルに必要な物を揃える→makeするだけなんですが。以下やり方です。

1)まず最初に参考にした(上の方の)サイトに従って、色々とパッケージを入れていきます。ひたすらsudo apt-get install *****です。
※Cygwin環境だと、apt-getが存在しないので、代替としてapt-cygとか言うものを使うのが常套手段みたいです。しかし、自分がやってみたところ、setup.iniが無いだの、Package *** not found or ambiguous name, exitingというエラーが出てどれもインストールが出来なかったので、仮想マシン上のUbuntuで作業することにしました…
apt-cygは色々とダメ

2)GitHubからカーネルのソースコードとかをダウンロードします。コマンドは
git clone https://github.com/Digilent/linux-digilent.git kernel
です。(結構時間が掛かる)

3)参考にしたサイト(の下の方)通りに、ZedBoard_OOB_Design.zipを解凍し、でてきた/linux/.configをkernelフォルダにコピー。/linux/devicetree_ramdisk.dtsを/kernel/arch/arm/boot/dtsにコピー。
 
 で、参考にしたサイトを見ると、この先configurationをしていますが、まあZedBoard_OOB_Design.zipに入っている.configのままでいいかなあと思ったので、先ずコンパイルしてみます。

4)コンパイルにはXilinxのarm-xilinx-linux-gnueabi-gccが必要です。これはVivadoのSDKに入ってるみたいなので、それもDLしてきます。
 Xilinxのダウンロードページから、ソフトウェア開発キットの「Vivado 2013.2:スタンドアロン SDK 単一ファイル ダウンロード イメージ」を選択してDLしてきます(約1.7GB、tarファイル)。
SDKのダウンロードページ
解凍したら、/Xilinx_SDK_2013.2_0616_1/bin/linにあるxsetupを実行して、適当なフォルダにインストールします。(/Xilinx_SDK_2013.2_0616_1/xsetupではない模様、そっちを起動しても変なインストーラが出てきて終わる)
xsetupの実行

5)パスを通す
インストールフォルダが/home/***(ユーザー名)/Xilinx/とかの場合、端末から
export PATH=$PATH:/home/***/Xilinx/SDK/2013.2/gnu/arm/lin/arm-xilinx-linux-gnueabi/bin
export PATH=$PATH:/home/***/Xilinx/SDK/2013.2/gnu/arm/lin/bin
としてパスを通しておきます
Xilinxのページなどを見ると、/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/binに通せと書いてありますが、そんなフォルダは存在してません…このページに書かれているのが古いバージョンとかなんでしょうか…
多分どっちか一つでいいんだろうけど、どっちなのかあまり良く分からなかったので両方…後者でした
どっちが呼ばれるんだろう…(右側だった)

6)Makeする
パスを通したら、
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
として、コンパイルします。私が実行した限りでは、数分でコンパイルが完了しました。
コンパイルの終わり
kernel/arch/arm/boot以下に、zImageが生成されています。
zImageが生成されている。
実際にZedBoardで動かすには、SDカードにあるREADMEだかの内容のとおりにします、元からあるファイルのうちzImageだけを、コンパイルして出来たものに書き換えます。ジャンパの設定と、ZedBoardの電源を落としてまた付けたときは、TeraTermの方でも再接続することを忘れずに…
 シリアルポートでのモニタによると、今回コンパイルしたカーネルのバージョンは3.6.0っぽいです(本当か?)
kernelバージョンの確認
SDカードのファイル:
BOOT.BIN
devicetree_ramdisk.btb
ramdisk8M.image.gz
zImage
(README)
ファイルたちの解説
以上が流れになります。ボトルネックはVivadoとGitHubからのDL時間ですね
Read more →

2013/08/03

[雑記]アウトドア用コンパクトデジカメ(OLYMPUS TG-2)買いました。

,
 登山の際に、今のメイン機であるLUMIX GX1を持っていくのは、流石に嵩張るし、いろんな写真を取りたいので交換レンズも必要だし、全部合わせたら重いということに気付いてしまったので、新しくアウトドア用の便利なコンデジを買おうと考えた次第。そやもう防水にGPSに、便利な機能がついてたらいいよねってことで候補を絞り込んで行ったら、LUMIXの かOLYMPUSのTG-2になりました。
 (元々大手メーカーのアウトドア向けコンデジしか見てなかったという、視野の狭さはある…)

 画素数と重量ではパナソニの方に軍配が上がりますが、やはりF2.0の明るさ、それとスーパーマクロ機能(実はGX1のマクロレンズを持っていなかったので、とても欲しかった)に惹かれてこっちを買いました。おまけ程度でしょうけど、レンズのコンバージョンキットとかもあるのも魅力的でした。
魚眼モードでLPC-Link2をパチリ。スーパーマクロでチップ部品もくっきりです。

 使ってみた感想ですが、
・防水防塵機能を謳っているだけあって、どの蓋もガッチリ閉まる。
・内蔵メモリーは22MBくらいで少ないが、机に向かっている時に、そうだ1枚部品の写真を撮ろうか、なんてときにはメモリーカード要らないので便利。
・やはり起動時、シャットダウン時の遅さは少しある(デジカメならしょうが無い?)
・絞り優先モードが、F2.0/F2.8/F8.0しかない
 これはコンデジで絞り変えられるというだけでも評価するべきなのか、やはりもっと段階が欲しかったとダメ押しすべきか…
・よく見ると厚さが結構ある。ヨドバシで触ってたときは、そこまで大きいという印象はなかったので、ちょっとびっくりした。
・USBに繋ぐと起動できない。
撮影モードの魚眼は結構楽しい。

 まあまだ説明書殆ど読んでないので、この中の不便な点幾つかは、私の設定に問題があるのかもしれませんが、大体こんなところです。何しろマクロ機能がとても良いので、買ってよかったとは思ってますよ。
 多分本格的に使うのは、木曜からの後立山連峰縦走です。ですが、まだGPSをONにした時のバッテリーの持ち具合などが未だ謎なので、電池切れという事態だけは避けたいし何かで使いたいですね…
Read more →

[電子工作]LPC-Link2とaitendoのLPC1114Fボード

,
 試験が終わって暇だったのでARMいいよなあって思いが募ってきたので、秋月に閉店間際に駈け込んで、LPC-Link2買っちゃいました。10ピンヘッダが1.27mmピッチなので、それ用のヘッダと基板も一緒にレジに持って行きました…

 あっ、この投稿では、LPC-Link2のCMSIS-DAP化と、aitendoのLPC1114基板でLチカするまでのことを書いています。
LPC-Link2と、aitendoのLPC1114基板(やっすい!)

 これで、家にあるARM基板(LPC2388の載ったインターフェースの基板とか)もさわれるようになるんでしょうかね…
 とりあえず、aitendoのLPC1114ボードを買って来ました。書き込みコネクタは8ピン2.54mmピッチなので、どうにかこうにかしないといけないのですが、まあ何とかなるでしょう…

 とりあえず、Keilの統合開発環境μVision4と、MDK-ARMを入れて、LPC-Link2を認識してくれるかやってみました。

 KeilでLPC-Link2を使うには、LPC-Link2をCMSIS-DAPというデバッガとして認識させないといけません。その為には、LPC-Link2に搭載されているLPC4370のプログラムを書き換えないとダメです。方法に関してはNXPさんのHPに詳しく解説が書かれています。
 この方法でやってみたら、ちゃんと認識されました。1つ困った点は、図8ではJP1を解放してUSBを繋ぐと、自動的にStep1が赤になると書かれていますが、私が実行した時にはここは緑のままでした。ちょっとビビったのですが、Step2のボタンをポチったらちゃんとStep3の書き換え成功のテロップが出ました…(真似する人は自己責任でお願い、壊れても知らん)
Step1が緑のまま進む様子
以下、μVision4で認識してる様子です。ターゲットは繋いでないのでなしです。
デバッガの設定画面([Flash]→[Configure Flash Tools])
LPC-Link2がCMSIS-DAPとして認識されています。CoreSight(ARMのデバッグ用のIPコア)が、SWDで繋がってるのも見えます。
で、今から開発します…
μVision4では、新規プロジェクトは[Project]->[New μVision Project]を選択し、ダイアログに従ってプロジェクトの保存場所を選んだら、CPUを選択して終了です。
CPUの選択画面
LPC1114は、基本的なペリフェラルなどの機能を使ったプログラムが、LPC Wareにサンプルとして用意されていますので、それを参考にすることにします。
 流石にデータシートとかと睨めっこして、レジスタを1つ1つ叩いていくのも馬鹿らしいので、CMSISライブラリを使うことにします。インクルードしたり追加するべきファイルはここら辺にも書いてありますが、
・core_cm0.h
・LPC11xx.h
・gpio.h(これがないとLPC_GPIO->とかがエラーになる?)
と、
・core_cm0.c
・system_LPC11xx.c
・startup_LPC11xx.s(空プロジェクトでも、追加しますか?ってダイアログが出る)
・gpio.c
です。他にmain.cppを追加し、そのなかにエントリーポイントであるmain()を書きます。

 とりあえずLチカコードを書きます。
#include "LPC11xx.h"
#include "gpio.h"

//Blink LED(PIO2_0)

#ifdef __cplusplus
 extern "C" {
#endif

void SysTick_Handler(void);
  
#ifdef __cplusplus
 }
#endif
 
  
//wait for 500ms
void SysTick_Handler(void){
 static unsigned int counter; 
  //LPC_GPIO2->MASKED_ACCESS[(1 << 0)] = 0;
 //interrupt function
 if(counter++ > 500){
  //toggle LED port
  LPC_GPIO2->MASKED_ACCESS[(1 << 0)] = ~(LPC_GPIO2->MASKED_ACCESS[(1 << 0)]);
  counter = 0;
 }
}

void portInit(){
 //set port function(reference : UM10398(datasheet written in Japanese) p.56
 //[2:0] : FUNC function PIO(default) -> 000
 //                  function DTR(Active Low) -> 001
 //[4:3] : MODE pullup -> 10(default)
 //[5] : HYS
 //[31:6] : 
 //LPC_IOCON->PIO2_0 = (1 << 4);
 //set direction(care about JTAG/SWD port...)
 LPC_GPIO2->DIR |= (1 << 0);
 //set output high
 LPC_GPIO2->DATA |= (1 << 0);
}

int main(){
 portInit();
 if(SysTick_Config(SystemCoreClock / 1000)) { //1ms?
  //Handling error.
  
  LPC_GPIO2->MASKED_ACCESS[(1 << 0)] = (0 << 0);
  while(1);
 } 

 //dummy loop
 volatile int i = 0;
 while(1){
  i++;
 }
 return 0;
}
コードの解説です。
1)ポートの設定は、
・IOCONレジスタでポートの機能、プルアップorプルダウンなどの選択
・DIRレジスタで方向の選択
・DATAレジスタで出力の値の選択
です。データシートに書いてあります(最新版ではないと但し書きがありますが、日本語データシートもLPC1114にはあります)。
 例の如くレジスタにorなどで値を書き換えていきますが、どうやら"あるbitだけを書き換える"ということが出来るらしく、MASKED_ACCESSがそれになります。この解説は以下のページが詳しいです。
JugglerYou日記 :: LPCマイコンを使ってみる(IO編 その2) http://blog.livedoor.jp/juggleryou/archives/5796273.html

最初はPIO1_0を使おうと思ってたんですが、ちょっと特殊らしく?当たり障りの無い方を選びました。

2)SysTick_Config()でタイマーを設定し開始します。設定値はSystemCoreClock / 100だとエラーが出た気もしますゆえ、/ 1000にして1msごとに割り込みを発生させます。
 唯一つまったのが、SysTick_Handler()が呼ばれなかったことで、どうやらcppで書くとextern "C"の記述が必要ならしいです。以下のページに詳しい解説が書かれています。

マイコン風雲録: ARM: Cortex-M3 割込みハンドラと weakシンボルと C++ http://avr.paslog.jp/article/1587312.html
C++編(言語解説) 第38章 C言語との連携 http://www.geocities.jp/ky_webid/cpp/language/038.html

3)デバッグについてですが、LPC-Link2は1.27mmピッチのコネクタしか無いと思ってましたが、端っこのLPCXpresso向けのピンも普通に使えるんですね。回路図を見ると、うえから
1 VIO_3V3ZZ
2 TMS/SWDIO
3 TCK/SWCLK
4 TDO/SWO
5 TDI
6 nRESET
7 EXT_POW
8 GND
9 ISP_CTR_OD
になっています。SWDインターフェースで書き込みたい場合、SWDIOとSWCLK、nRESET、VCC(3.3V)、GNDを接続すれば大丈夫みたいです。
書き込み/デバッグの風景、ワイヤ5本だから楽といえば楽。aitendo基板のLEDは電源のインジゲータ。
デバッグ時のIDEのスクリーンショット。無償IDE+約2000円のデバッガでこれ。
μVision4でのデバッグの仕方がいまいちわかりませんが、基本的な機能の他に、ウォッチ式への追加(これは基本?)、IOの状態をPeripherals→GPIOとかで見られること、などはとても便利です。

 ちなみに、秋月で1.27mm1列40ピンのピンヘッダ買ったんですけど、幅があるので1.27mmピッチで2つ並べる(2*5とか)ことが出来ないんですね…マルツに売ってるこっちを買うべきみたいです、切るの難しそうだけど。あと1.27mm2*5のケーブルは、秋月に売ってたんですね…意外とこれレアだと思ってた

//関係ない話ですけど、変わったデバイスとして、電子ペーパー触ってみたいですね。こういうやつです。でも結構お値段高いので手が出せませんね…
BADGEr – EReader badge and shield « adafruit industries blog http://www.adafruit.com/blog/2013/07/22/badger-ereader-badge-and-shield/

//KeilでSTM8Sもいけるんじゃないかと思ってたんですが、ST-Linkは認識されたけれど、肝心のデバイスで選べなかったです。残念。
 LPC2388はデバイスで選べるので、JTAG配線すれば大丈夫だと思われる
Read more →