2014/07/03

[ble][nrf51]S110 v7.0.0のリリースノート

S110 v7.0.0のリリースノートを読んでいる。
昨日、nRFgo Studioで焼くときに「Enable protectionってなんだろう?」と思っていたことと関係があることが書かれていた。

まず、Enable protectionについては、nRFgo Studioのヘルプファイルに書かれていた。

  • もしsoftdeviceのCLENR0(code-length value)が未定義なら、サイズを指定する。
    • HEXファイルにCLENR0がないので、ここではサイズしか設定できない
  • もしsoftdeviceがUICRのかわりにCLENR0を持っているなら、”Enable SoftDevice protection”チェックボックスを使って、CLENR0をUICRにコピーするかどうか選択できる。
    • DFUを使うなら、チェックを外す

うーん、いちいちわからん。
わからんが、リリースノートも見ておこう。

  • SoftDeviceのサイズは88kBと大きくなった
  • FWIDはもうUICRに書き込まれない。この変更に互換性を持つアップデートされたnRFgo StudioやnrfjprogはNordicのサイトからダウンロードできる。
  • SoftDeviceのHEXは、UICR.CLENR0レジスタを含まない。つまり、SoftDeviceはデフォルトでprotectedではない。アップデートされたnRFgo StudioやnrfjprogはデフォルトでUICR.CLENR0レジスタにSoftDeviceのサイズを書き込む。それによって、デフォルトのprotectionを実現している。protectionを有効にするとオリジナルサイズよりも大きいサイズのSoftDeviceをDFUで書き込むことができなくなる。よって、ツールがUICR.CLENR0レジスタへ書き込む動作はオプションとした。
  • sd_softdevice_forward_to_application()はsd_softdevice_vector_table_base_set()に置き換えられた。

うーーーん。。。

製品とかで書き換えをあんまりやりたくないなら、UICR.CLENR0レジスタには書き込まない方がよい、つまりEnable protectionにはチェックしない方がよい、ってことかしら。「DFUでは」って限定なのかな。

DFUもよくわかってないが、汎用のFLASH書き込みのしくみ、みたいなイメージでいるんだけど、ちゃんと調べておかないと失敗しそうだ。

UICR : User Information Configuration Register。アドレスは0x1000_1000。
CLENR0 : Length of code region 0 in bytes。FICR.CODEPAGESIZEの整数倍。

この「region」ってのが、0と1とあって、それぞれのregionで動いているコードからは他のregionへの書き込みができないようだ。
それが「Enable protection」ってことかね。
なら、JTAGとかなら関係はないから、どっちでもいいってことか。


では、今朝は終わりにするが、最後にS110 v7.0.0のHEXをバイナリ変換して、ベクタテーブルを見ておこう。

image

やっぱり、0x0000_07c0やん。
これだと、SPにこの値が入っているのは当たり前だ。

ちなみに、S110 v6.0.0は、こう。

image

そうそう!
そういうのを求めているんだよ!!

 

じゃあ、どうするのが正しいんだろう。。。。
なんか、新しいものがさらにリリースされるとか、何か見忘れてるとか、そんな感じがする。
少なくとも、S110 v7.0.0のHEXをRegion 0に書き込んでもだめだということはわかった。
アプリをRegion 0に、SoftDeviceをRegion 1に、とかか??

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。