質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.98%

  • アセンブリ言語

    98questions

    アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

  • マイコン

    61questions

    マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

アセンブラでレジスタに値を転送するとその値が変わっている

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 243

minato_hy

score 32

Cortex-M3マイコンのスタートアップ処理をアセンブラで書いているのですが、

……
MV R0, 0x50
MSR BASEPRI, R0
……

という命令を書き、デバッガでマイコンにダウンロードして動かしこの時点でのBASEPRIの値を確認すると、0x40になってしまいます。
(すみません1行目はMVだったかうろ覚えですが、ともかくR0に値を転送しています。)
ステップ実行してみると、1行目の時点でちゃんとR00x50になっていて、2行目実行後もR00x50のままです。
このような現象が起こる原因に心当たりのある方はいらっしゃいますでしょうか。

ちなみに、

……
MV R0, 0x40
MSR BASEPRI, R0
……

と値を変えて試してみると、ちゃんとBASEPRIの値は0x40になります。R0の値ももちろん0x40です。

また、0xFF0xE0になります。

補足情報(言語/FW/ツール等のバージョンなど)

コンパイラ・デバッガ:IAR EWARM
東芝マイコンTMPM370グループ

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

東芝のマイコンは使ったことがないのですが、
「BASEPRIレジスタの0x10に該当するビットがread-onlyになっている」
可能性はありませんか。
たとえば、0x4fとか0xffを書き込んだ場合、どうなりますか?

ARMのリファレンスマニュアルによるとBASEPRIレジスタは8ビット長ですが、そのうちの何ビットが実際にR/Wできるかはマイコンの実装依存になっています。お使いのマイコンの割り込み優先度が8レベルしかない場合、BASEPRIは上位3ビットしかwriteできない仕様かもしれませんよ。
ARMv7-M Architecture reference manual

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/12 08:13

    東芝マイコンのリファレンスをよく見たところ、この製品では「3ビットで優先度を設定することができます」と記載がありました。
    納得できました、ありがとうございます。

    キャンセル

0

ちらっと Cortex-M3 Devices Generic User Guide を見ただけですが、
BASEPRIのRequired privilegePrivilegedになっています。
権限の設定は出来ているでしょうか?(権限の設定はCONTROLレジスタで行うようです)

的外れでしたらすみません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ググっただけなので、大いに外している可能性大ですけど、
msrで更新する前に、mrsでの読み込みはセットでなければならないように思います。

割り込みを制御するのだから、当然その間の割り込みが制御されなければならないはずで、
その為に、mrsでロックし、msrでロック解除みたいなシーケンスのような気がします。

デバッグでは値が正しいというのは、デバッグ自体が割り込みですから、そのような事ではないかと。

追記

よく読むと、ステップ実行したら、BASEPRIは正しいなどとは説明されていませんね。
案の定、外しましたすみません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • アセンブリ言語

    98questions

    アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

  • マイコン

    61questions

    マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。