いろいろ試す36
今年は本当に波乱に満ちた年でしたね…
それでも月一ペースで何が何でも記事を更新できた私をほめてあげたい(自画自賛
●4GBのマルチメディアカードをついに入手!…しかし…
流通在庫が高すぎて敬遠していたのですがebayで新個品が放出されたタイミングを
見逃さなかった!!!!!Transcend製の4GBもあるMMC「TS4GMMC4」です!
同じトラ製のSDHCカードと比べてみました。
当たり前ですがねむいさんのSTM32F7のいつものでしっかり認識します。
カード情報も拾ってみました
FatFs module test terminal for STM32F769NIH6
LFN Enabled, Code page: 932
AppVersion : W.I.P
Build Date : Sep 30 2018
>fg piano
rc=0 FR_OK
>fo 1 ftbt.mp3
rc=0 FR_OK
>fr 132949600
132949600 bytes read with 17609 kB/sec.
>fs
FAT type = FAT32
Bytes/Cluster = 32768
Number of FATs = 2
Root DIR entries = 0
Sectors/FAT = 960
Number of clusters = 122752
Volume start (lba) = 8192
FAT start (lba) = 14464
DIR start (lba,clustor) = 2
Data start (lba) = 16384
Volume name is TS4GMMC4
Volume S/N is 9FB2-841B
...
1 files, 132949600 bytes.
0 folders.
3928064 KiB total disk space.
3797920 KiB available.
>ds 0
rc=0
Drive size: 7872512 sectors
Erase block size: 512 sectors
Default r/w block size: 2048 bytes
Card type: MMC(Byte)
CSD:
00000000 90 2F 00 2A 1F 5B 83 C0 F6 DB BF FF 96 C0 00 1D ./.*.[..........
CID:
00000000 1E FF FF 4D 4D 43 20 20 20 10 00 00 02 2E BD 73 ...MMC ......s
Parsing MMC CID Register
Manufacturer ID :0x1E
OEM/Application ID :
Product Name :MMC
Product Rev :1.0
Serial Number :0x0000022E
DateCode.Month :11
DateCode.Year :2010
Detected as MMCv4.1 Device!
OCR:
00000000 80 FF 80 00 ....
>
今から8年前に造られた最後の方のロットのMMCですね〜
ebayの新古品は2000円近辺で購入できるので例のSDライセンス問題も全く心配なく
ホビーで使いまくれると思います!
…と思ったのですが!!!
なんとこのMMC、MMCv4.1なのですが今日びのSDカードですら存在する
SPI互換モードが存在しないためマイコンの工作でSPIで手軽に使用する
ことが一切できませんorz
上で認識してたのはSTM32F7のSDMMCからMMCネイティブモードで叩いたので
さくっと動いて見えたのですが…皆さんご注意ください。SPI互換モードが
存在しないのは4GB品だけで2GB以下の品種はちゃんとSPIでも動きます…。
外人さんも嘆いている
ちょうどeMMCへの過渡期だったので4GB品の製造の際に遅いSPIモードがオミット
されてしまったのでしょう…まぁ電子工作で4GBも使うって早早ないから2GBでも
十分じゃないかな〜…うっかりSDカードが動いてしまうこともありますし
というわけで古のデバイスにも癖があったというおはなしでした!
●サポート止めたプロジェクトをメンテしてみた
3年前に更新停止したLPC2388のプロジェクトとかを最新のFatFsとかにあてがって
みました。arm-gccは表向きはcortex-mのサポートとうたっていますが昔の
ARM7TDMIとかも余裕でビルドできます。
OpenOCDの書き込み・デバッグも順調です☆
あとLPC2388はUSBデバイス機能があってMSCやCDCなんかができるんですけど
たとえばCDCでは現在ではzadigを使用して汎用のCDCドライバをあてがう
ことができるので格段に使い勝手が上がってます!
まぁあえてLPC2388を使っていく意味も今となっては有りませんが余興ということで
そしてMicrochipになってしまったATMEL製のXMEGAもFatFsの最新版(0.13c(patch1))
をあてがって動作確認できました。
コード効率が悪い上に容量も128kbしかないのでexFATはおろかLFNすら乗っけられ
ませんがまぁ余興と(ry
ちなみにAVRToolchainは数年前に更新しなくなりましたが有志の方がavr-gccのツール
チェインを更新し続けているためほぼ同じ感覚でgccビルドができます。
avr-gccを使う上で注意すべき点はavr-size.exeがAVRのフォーマットが使えず、
汎用の動作しかしないのでFLASH/RAMの容量は自ら管理しなくてはいけません。
まぁここもARMマイコンいじるさいはリンカスクリプト自前で起こす必要あって
皆さん経験済みなので問題ないでしょう。
avrdudeも更新停止したと思ていたらさりげなく更新してたので久しぶりにビルド
しました。おきぱにあるのでどしどしご利用ください!
また、avr-gccにはavrdude.exeが同梱されてますがかなり古いのでavr-gccと
ねむいさんのavrdudeを組み合わせて使う際はバッティングにご注意ください。
同時にUrJTAG、flashromも微妙に更新がかかっていたのでビルドし直しました。
ビルドに当たってはOpenOCDも含めてMinGW-w64 GCC8.1.0を使用してますので
ビルド環境もアップデートしております!
●arm-gccの新しい奴が出た!
例年年末に出るやつがやっと来ました。
今回の変更点はGCCのバージョンがついに8になったところです!
さっそく導入してみました!
…
ナニコレ…ihexで出力できない…
64-bit address 0x4b4fa300000000 out of range for Intel Hex file
ってなんなんだYO!
arm-none-eabi-objcopyバグってる…?
調べてみると同じ症状に遭遇された方がいました。どうやらarm-gccの新しい奴にある
objcopyにバグがあり、IntelHEXフォーマットの出力ができないようですorz
対処法はどうしても新しいarm-gcc使いたい場合はarm-none-eabi-objcopy.exe
だけ一個前のverに差し替えるだけでおkです。
こんな基本的なところでエンバグするの止めてくださいよ〜!
※バグじゃなくてオプションのつけ方悪いだけならご指摘願います
20190131追:
公式も認めました!!
●転職しました
読んで字の通りでございます。
2012年から長きにわたる派遣ジプシー生活からようやく解放されて正社員になれたん
やなぁ…って
あまり詳しいことはお伝えできませんが正社員への転職に当たっては最初は自力で
転職サイトとかに登録して活動しておりましたが有効求人倍率が1倍を上回る状況
にもかかわらず年齢的にも経験的にも箸にも棒にも引っかからず全く太刀打ちでき
ませんでした。
しかしながら存在は知っていたものの興味が無かった転職エージェントを利用した
ことで状況は大きく変わり、そこそこの待遇で内定をたくさんいただくようになり
その中で納得がいく会社に2018年内に無事就職する運びとなり、今も頑張っています。
この時利用したエージェントさんですが"め"ではじまる名前と"あ"ではじまる名前の
二社で進めていき両社とも技術系に特化した所でしたので私の適正に近い会社様を
すぐに紹介していただけました。リクルートとかエン転職とか有名どころですが
某魔法少女より「それらは避けよ」と事前に忠告されていたため、ちょっとマイナー
ですが"め"と"あ"ではじまるところにお世話になった次第でございます。
ちなみに両者のエージェントさnより口をそろえてほぼ同じ内容を説教されましたが
「あなたのブログは選考者に対して大きなマイナスの印象を与えるので紹介しては
いけませんよ」って言われてもちろんgithubもそこからブログにたどり着けちゃう
ので当然ダメでそれらの要素省いた出がらしみたいなスキルシート作るのが一番
精神的に辛かったのですがたぶん自力でやってた頃あっさりbanされまくってたのって
これが原因かなと思ってたのですがねむいさん面白い記事書けるよう務めてきたはず
ですが、いないさんのちょっとぱんつがみえてるイラスツとか至って健全で普通なのに何故だ(錯乱
20190407追:
ねむいさんのぶろぐがスラドに!!!
マジレスしますと私のぶろぐ記事から読み取れる私の技術的能力・文章作成能力は
「ありものを組み合わせて動いたつもり分かったつもりの素人レベル」でこいつに
プロとしての仕事はできないと判断下され採用に至らなかったからですがorz
エージェントさんより指導入りまくった実務経歴の方はしっかりと評価していただけた
会社様が多かったので私がダメだっただけでホントに個別論ですね個別論♨
↑苦しい突っ込み入れられたら個別論で茶を濁して逃げるのいいですねねむいさんもよく使います♨
●ねむいさんFAQ
Q:昔のぶろぐ記事でdropboxの見えなくなった画像早く復旧してください
A:ぇっと…
今年は大事なことにたくさんエネルギー使っちゃったので
来年からがむばります!
近畿自然歩道を往く(熊野古道伊勢路(紀伊長島〜三野瀬〜船津))
先月苦闘した熊野脇道と合流して熊野古道伊勢路は一路新宮を目指します。
今回は合流地点の紀伊長島からのスタートとなりました。
●2018.12.28 近畿自然歩道(紀伊長島〜三野瀬〜船津)
虹裏メイドの朝は早いけど移動時間がさすがに長い…
6時に自宅を離れて阪急と近鉄とJRを乗り継ぎ11時にようやくスタート地点の
紀伊長島に降り立ちます…
紀伊長島は熊野古道伊勢時の要衝となっております。
時間的に厳しいのでそそくさとスタートです。
赤羽側を越えたら少しの間旧長島市街・魚町を走ります。
かなりさびれてますけど。
長島神社で今回の道中安全を祈りました。
国道42号に合流です。
熊野古道商工会ですって!
ブレンド・S
国道と離れ旧街道を進みます。
ありゃりゃ?いつの間にか高台に…??
何はともあれ一石峠です
トレイル区間を過ぎると柵の先には舗装路が‥たぶんここが平方峠です。
古里の街並みが広がります。
古里海岸に接近します
…
…
雪降ってて超寒い〜〜〜!!!
古里海岸を抜けて近年再発見された佐甫(サボ)鼻道を進みます。
サボ花展望台より。
粉雪が舞う松島の冬…。
道なりに下ると発掘された道にいざなわれ若宮神社に。
道瀬の海岸沿いを走り、再び高度を上げていきます。
世界遺産に登録された三浦峠への道を進みます。
と思ったらうっかり通り過ぎる所だった…
三浦峠です。
峠から下り、熊ヶ谷橋を越えると案内板があります。
JR三野瀬駅です。中間点のここで小休止。
近畿自然歩道はここで終了ですけど。
三野瀬駅を離れたらお次は始神(はじかみ)峠に向かいます。
始神峠への道はいくつかあり、のぼりはもちろん江戸道を上ります。
登り口は春になると桜で満開になるそう。
始神峠への本格的な道が始まります。
いい感じのトレイルを駆け上がっていくと平坦なばしょにでます。
茶屋跡もあり、ここが峠頂上部となります。
始神峠最高地点です。
ここからの長島の景色は格別です。うまい具合に天気も晴れてくれました☆
峠から下山にかかりましたが馬瀬側の江戸道は通行止めだったので
明治道をひたすらかけ下ります。
大曲の又谷の手洗い場です。
多分そのまま飲める水ですね。
宮谷池まで降りてきました。
近くには休憩所兼トイレもあります。
42号と再度落合います。
後はひたすらランニング!
ちょっと雪雲が晴れてきました!
やっぱりお日様が好きです♥
ラストスパートをかけてゴールの船津駅に無事たどり着きました。
なお交通機関の便が悪すぎるので電車ではなくバスで松坂に
帰りました…ここから松阪に替えると軽く1900円を超える
運賃のためねむいさんは株主優待拳を駆使して無料で
移動しちゃいます!三重交通は松阪⇔熊野市までいくと
2000円に近い運賃になるので優待拳のあるなしで交通費に
莫大な雑賀で来てしまいます…
話はそれましたがバスの移動距離がかなり長いので運転手さんが
トイレ休憩入れるとかざらです‥(そいえば今私が載ってた車両手すりなかった…)
あたりがすっかり暗くなったところで松阪駅に到着です…
2時間15分の長い旅路でした…
松阪駅の特急待ちに牛さんの雄姿を撮影です…
近鉄特急で帰りますが最後まで気は抜けません!
そんなこんなで今年も無事に熊野古道で走り納めができました。
来年からのルートは乗り換えの都合上前日から移動をせざるを得なくなる場所も
増えると思います。かつて東海自然歩道攻略時のようなタクティクスを
組み立て確実に進んでいこうと思います!
●2018.12.28 近畿自然歩道(紀伊長島〜三野瀬〜船津) GPSログ
今回も三重交通の株牛優待拳が大活躍でした。
尾鷲あたりまでバスがあるので当分の間は重宝しそうですね☆
GNSSモジュールを試用する19 -みちびき正式運用記念そしてGALILEO-
さる11月吉日、ついに、ついに日本製の準天頂衛星システムQZSSの正式運用
を開始しました!!!!!!!
2011年から東海自然歩道とともに開始したねむいさんのGPS/GNSS狂騒曲ですが
ついに円熟期を迎えつつあります。これから先みちびきの恩恵にあずかれる
機会がますます増えると考えられます!
そして2013年から今まで使用してきたねむいさんのメインウェポンのGms-g9
ですが製造元のGlobalTop社がSierraWirelessに吸収されてサポートも消滅して
しまいました…かにみえましたが
SierraWireless社が新たにリリースしたXAシリーズのGNSSモジュールには依然
としてMT3333が使用されており、ファームウエアも当然のごとくGms-g9等の
MT3333を使用したモジュールと互換性があるはずです!!!
てわけでXA1110のファームを焼いてみました
Sierra製のGPSソフトで接続しようと思ったら9600bpsで通信できない…
デフォルトが115200bpsになってやがる###
XA1110モジュールはファームウエアのアップデートでAXN5.1.xになりその時に
大幅な機能変更をしておりました。
リリースノートより変更箇所の表を抜き出します。
デフォルトボーレートが9600から115200になったの地味に痛いです…
Gms-g9に無理やり適用するに当たり気を付けるのはデフォルトのボーレートです。
従来のボーレート変更コマンドが使用できず新しく付与されたフラッシュに
書き込むタイプのコマンドのみが有効なのでご注意ください。
なお無理糞アップデートしたGms-G9でSierra製のGPSソフトのAGPSの更新を
かますとなぜかフリーズしやがりますので使わないようご注意ください。
尤もあとで結果をお伝えしますがAGPS使わなくとも捕捉性能がすさまじいので
もはやAGPS必要ないです。
そしてAXN5.1.xのファームは以前は無理だったGALILEOも当たり前のように
獲れます………………
…
ってわけで!
やることはただ一つ!
本州の南の果てに来るしか無いでしょ〜
今回は本州の南の果て、串本にてGNSSロガーとモジュールの新ファームの実力の
お手並み拝見といきます。そしてねむいさんのライフワークになった熊野古道の攻略も
ついでに兼ねてます…!念のためGP-101もロギングしておきました。
※検証の為ロガーのファームはGxGSVを獲れるようにしております。
しばしの間串本の町を南下します。
画像は街中にある串本無量寺です。
冬の串本は最高ですね…☆
景色のどこを切り取っても美しい思い出になる…♡
さて熊野古道大辺路は本来は串本市街を通過せず、鬮野川(くじのがわ)に沿って
姫という場所に向かいますが…かつての古道は"袋平見"と呼ばれる丘陵部の集落を
越えて向かっておりました。2000年代初頭まではこのルートが正式な熊野古道として
紹介されおりましたが高速道路敷設の計画により正式ルートが廃されてしまい
2018年現在では塩浜橋を越えた先にあるJRの高架下の道を進むのが正式ルートと
されてしまいました。そういった箇所はいくつかあり、田子-田並のにある堤平見も
立派な宝篋印塔があるにもかからわずなかったことにされてしまいました!!!!
もちろんねむいさんはなかったことにされた真の大辺路にむかいます!
廃された大辺路は今でも津波の避難路として使用されているようですが…
この傾斜はちょっと一般人にはむりやろ…
登りきると平坦な場所に降り立ちます…
そしてそこには廃されてしまったはずの真の大辺路の道標が出迎えてくれます…!
もちろん廃された道なので基本的に踏み跡はありません…
動物的直感に頼って下り道を見つけ大辺路に合流します…!
舗装路に合流して一安心です…
今回は東にまっすぐ、紀伊姫駅に向かって進みます
串本は橋杭岩や御前崎などいくつか見どころがあり当分の間はここに
くぎ付けになりそうですね〜
ちょっとした峠を越えると展望所があり、橋杭岩やいつか向かうことになる
串本大橋も見渡すことができます☆
妙にロマンティックな名前の紀伊姫駅です。
紀伊姫からは紀勢線に沿って走ります。
絶景ですね〜…♥
熊野古道大辺路は周参見を越えたらこのような美しい海未の連続です☆
古座駅です。ここでちょっと小休止。
古座川を越えます。水の透明度がやばいですね…
古座の集落を抜けていきます。
古座神社です。
おもえば京都からはるばる遠くまで来たもんだ…
目指す新宮もあと30と数キロ‥!
古座は漁業も盛んです。
天気の良い冬場にはひものを作っている場面に出くわすでしょう。
このあたりは朝霞が拝めるらしいです。
今回はドピーカンなので澄み切ってますがー!
熊野古道は田原地区からいったん山あいに入ります。
ここから清水峠へと向かいます。
めっちゃ工事中ですがハイキング道(大辺路)は確保されています…
ハイキング道を抜けて舗装路を駆け上がると世界遺産清水峠へのトレイルが
ひそかに待っています。
清水峠はあっさりと着いちゃいます
そして浦上港に…
紀伊浦上駅に到着…
ですが電車が来るまで時間が一時間以上余っちゃったので戻ります!
今度は国道に沿って戻ります…
口熊野・元熊野の道標を越えたら串本に再び戻ります…
紀伊田原駅に到着…まだ時間余ってるので猫さんと戯れます…
やっと電車が来た…
そこから2時間の小旅行…
真っ暗になった頃に紀伊田辺に到着です…
ここからの帰りは高速バスです…
まだまだ時間があるので駅前通りのラーメン屋で腹ごしらえ‥
高速バスで大阪に戻ります…そっから阪急に乗り継ぎます…
長い長い旅路が終わりました…
さて、新ファームはGALILEO採れてるはずですがその真価は!?
GALILEOを示すGAGSVのセンテンスが!!!やった!!
ていうかGPS,QZSS,GLONASS,GALILEO含めたら同時捕捉衛星数30超えちゃってて
すごいですね〜〜
そんなわけでGms-G9のファームでもXA1110の最新のファームがバリバリ使えることが
証明されました(多少癖がありますが)これからもバシバシ使い倒していきましょう!
●熊野古道大辺路・串本〜紀伊浦上GPSログ
こうしてみると京都から串本まで本当に遠い
足かけ数年ではるばる遠くまで来たものですね…
熊野古道も大辺路、中辺路、伊勢路とそれぞれ距離を新宮に詰めていき、
佳境となってきました。もうひと踏ん張りですね。
-
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (117)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (80)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- September 2024 (1)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (7)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.