**GDBでARM Cortex‑M の現在のセキュリティ状態を判断する方法**

2025/12/29 6:25

**GDBでARM Cortex‑M の現在のセキュリティ状態を判断する方法**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

記事では、Arm Cortex‑MマイクロコントローラでArmv8‑Mをサポートし、任意のTrustZone機能が有効な場合に、GDB を使用して現在のセキュリティコンテキストを迅速に判定する方法を説明しています。スタックポインタ(SP)と CONTROL レジスタの SPSEL ビットを調べることで、コアが Secure モードか Non‑Secure モードで動作しているかを判断できます。TrustZone が有効な場合、各スタックポインタには Secure (_S) と Non‑Secure (_NS) のバリアント(MSP_S, MSP_NS, PSP_S, PSP_NS)が存在します。

GDB では次のコマンドで現在の SP とその _S/_NS 対応を表示できます。

(gdb) i r sp psp_ns msp_ns psp_s msp_s

SP が PSP_NS または MSP_NS と等しい場合、プロセッサは Non‑Secure 状態にあります。PSP_S や MSP_S と一致すれば Secure です。CONTROL レジスタの第2ビット(SPSEL)は次で確認できます。

(gdb) print $control & 0x2

非ゼロの結果は SPSEL = 1 を示し、アクティブなスタックポインタが PSP であることを意味します。

例として、TrustZone が有効な Cortex‑M33 のリセット時にはコアは Thread モードと Secure 状態(SP = MSP_S)で開始します。Zephyr RTOS アプリケーションでは

main
でブレークすると SP = PSP_NS が表示されます。これはプロセッサが Thread / Non‑Secure モードに切り替わったことを示しています。

この方法は、Armv8‑M コアの現在のセキュリティ状態を迅速に判断する複数の手段の一つであり、エンジニアがコードの実行コンテキストを検証し、デバッグ時間を短縮するのに役立ちます。

本文

2025年12月24日 – 3分読了

私の本業と自由時間では、Arm Cortex‑M マイクロコントローラ(MCU)を頻繁にデバッグしています。
近年、この種の MCU が Armv8‑M を実装するケースが増えており、その中でも Cortex‑M33 は非常に人気があります。

Armv8‑M にはオプションのセキュリティ拡張機能(Cortex‑M Security Extension、略して CMSE)があり、マーケティング名では TrustZone と呼ばれています。
このセキュリティ拡張により、コア―または Arm 公式マニュアルでいう Processing Element(PE)がメモリを Secure 区域と Non‑Secure 区域に分割できます。Secure 区域内で命令を実行している場合は PE が Secure 状態にあると言い、Non‑Secure 区域では Non‑Secure 状態になります。


スタックポインタ(SP)の挙動

Armv8‑M の PE で現在使用されているスタックポインタ(SP / R13)は、実行モード(Handler モードか Thread モード)と

CONTROL
特殊レジスタの
SPSEL
フィールドに応じて Main Stack Pointer(MSP)または Process Stack Pointer(PSP)を参照します。

  • Handler モードでは、SP は常に MSP と一致します。
  • Thread モードの場合、
    SPSEL
    が 0 のときは MSP、1 のときは PSP を指します。

セキュリティ拡張が実装されていると、多くのレジスタには

_S
(Secure)と
_NS
(Non‑Secure)の両方が用意されています(例:
MSP_S
,
MSP_NS
,
PSP_S
,
PSP_NS
)。
これにより、デバッグ時に現在のセキュリティ状態を素早く確認できるようになります。


GDB で簡単チェック

実行:

(gdb) i r sp psp_ns msp_ns psp_s msp_s
  • SP が
    PSP_NS
    または
    MSP_NS
    と一致すれば、PE は Non‑Secure 状態です。
  • PSP_S
    MSP_S
    と一致すれば、PE は Secure 状態です。

例 – セキュリティ拡張付き Cortex‑M33 のリセット時

プロセッサは Thread モードで Secure 状態から開始し、SP は

MSP_S
に一致します。

sp             0x20004000          0x20004000
psp_ns         0x2001ad40          0x2001ad40 <z_main_stack+4048>
msp_ns         0x0                 0x0 <_vector_table>
psp_s          0x0                 0x0 <_vector_table>
msp_s          0x20004000          0x20004000

これは Zephyr RTOS アプリケーション(

z_main_stack
シンボルが示すように)です。
main
でブレークし、再度確認すると SP は
PSP_NS
と一致します。プロセッサは Thread モードかつ Non‑Secure 状態になり、
CONTROL.SPSEL
が 1 に設定されているためです。

sp             0x2001ad40          0x2001ad40 <z_main_stack+4048>
psp_ns         0x2001ad40          0x2001ad40 <z_main_stack+4048>
msp_ns         0x20019c30          0x20019c30 <z_idle_stacks>
psp_s          0x20001eb8          0x20001eb8 <z_main_stack-97976>
msp_s          0x20000bf8          0x20000bf8 <sector_buffers+1688>

SPSEL
フィールドを確認するには、
CONTROL
レジスタの第2ビットだけをマスクして表示します。

(gdb) print $control & 0x2
$0 = 2   # 非ゼロなら SPSEL が 1

Armv8‑M コアで現在のセキュリティ状態を判断する方法は他にもありますが、デバッグ時に即座かつ確実に確認できる便利な手段です。

同じ日のほかのニュース

一覧に戻る →

2026/01/04 1:20

**2025年におけるハッカーニュースで最も人気のあるブログ一覧**

## Japanese Translation: --- ## 要約 この記事は、投稿量、総投票数、およびフロントページへのリーチで評価された2025年の最も影響力のあるHacker Newsブロガーをランキングしています。 - **Simon Willison** は、1,000件以上(118本の全文)にわたる公正なAIツールレビューに焦点を当てた投稿で3年連続王者となっています。リンクブログスタイル―短い引用やコメント付きリンクのみ—は手間が少なく高価値なコンテンツを提供します。 - **Jeff Geerling** が2位にランクインし、10,813投票を集めてわずか9ポイントで3位を抜きます。100万人以上のサブスクライバーを持つYouTubeクリエイターであり、自動生成されたトランスクリプトを避けたテキスト中心の投稿を書いて、HN上で読みやすさを高めています。 - **Sean Goedecke** が新たなパワーハウスとして登場します。2025年に140件の投稿と47件のフロントページヒットを記録し、最も人気のある「How I ship projects at big tech companies」投稿は年間トップ100に入っています。技術職への明確な意見とビッグテック組織政治の解説でエンジニア層に共感されています。 - **Brian Krebs** は常にトップブロガーとして残り、2025年には政治的に重いトランプ時代の言論自由ストーリーを投稿し、一時的に#1になりましたがモデレーションで削除されました。 - **Neal Agarwal** はインタラクティブアートとビジュアルエッセイでフロントページを支配し、投稿の約半分が#1に達します。「Stimulation Clicker」は2025年で4番目に人気のある投稿です。 - **John Gruber** が6位で終わり、2011年以来最高の一年となり、2020年以来初めてトップ10入りしました。潜在的なシャドウバンを疑問視したことで注目されました。 - **Mahad Kalam** は単一投稿リストのトップに立ち、その年で最も投票されたエントリーです;**Byrann Huang** が続き、3位の投票数を記録しました。 この記事は2025年の完全なトップ100リストが別途文書化されていることを指摘し、将来の発表をほのめかしています。これらのランキングは読者がテックニュースにどのように関与するか、AI・職場文化・政治に関する議論を形作り、Hacker Newsや類似プラットフォームでのコンテンツ戦略のベンチマークとなります。

2025/12/29 1:12

**Ed25519‑CLI – Ed25519署名システム用コマンドラインインターフェース**

## Japanese Translation: ドキュメントは、Ed25519 用の lib25519 コマンドラインツールがどのように機能するかを説明しており、主に 3 つのユーティリティ―`ed25519-keypair`、`ed25519-sign`、`ed25519-open` に焦点を当てています。 * `ed25519-keypair` はランダムな鍵ペアを生成します:公開鍵をファイルディスクリプタ 5 に書き込み、秘密鍵を fd 9 に書き込みます。 * `ed25519-sign` は fd 8 から秘密鍵を読み取り、stdin(fd 0)からメッセージを読み取って署名し、署名済みメッセージを stdout(fd 1)に出力します。 * `ed25519-open` は fd 4 からアリスの公開鍵を読み取り、stdin(fd 0)から署名済みメッセージを読み取って検証し、復号された平文を stdout(fd 1)に書き込みます。 検証失敗時、`ed25519-open` はコード 100 で終了し、出力は行いません;他のエラーではすべてのツールが非ゼロで終了し、成功時にはゼロで終了します。 CLI は lib25519 の一部であり、X25519 暗号化と Ed25519 署名の両方を実装しています。2 つの X25519 ツールも存在しますが、別途ドキュメント化されています。現在のドキュメントバージョンは「Ed CLI」ウェブページ用で 2024.02.18 です。関連ユーティリティには `x25519-cli(1)` と `lib25519(3)` が含まれます。 これらのツールにより、ユーザーはシェルから直接暗号操作をスクリプト化したり、他言語で FFI を介して lib25519 の C API を呼び出すことで、安全な認証ワークフローをソフトウェアプロジェクトに組み込むことが可能になります。

2026/01/04 6:58

「一歩だけ踏み出しましょう」

## Japanese Translation: (全ての重要ポイントを組み込んでいます)** この文章は、大きな目標を設定すると扁桃体が闘争・逃走反応を起動し、ストレスや回避行動、進捗の停滞を引き起こすと説明しています。対照的に、目標を小さく段階的に分解することでこの反応を迂回し、不安を軽減しながら安定した行動が可能になります。実践的な戦術は次の通りです: - 「次に何をすべきか?」と自問すること; - 完全感覚でビジュアライゼーションを用いること; - 本全体ではなく1ページだけ読むこと; - ドアの近くにランニングシューズを置く(あるいは新しいものがない場合は注文しておく)ことで歩き始める。 これら小さな問題―例えば靴を持っているかどうか―を解決することで、後で大きな障害になるのを防げます。靴を履いたり短い散歩を終えたりといった控えめな報酬を祝うことは進捗を強化します。毎日1つの小さなステップ(例:1週間ドアにシューズを置き、次にそれらを履く)を繰り返すことで勢いが生まれ、各行動が徐々に長距離散歩や最終的には大きな野心へと導きます。マイクロアクションの累積効果は、個人開発コーチングや職場での目標設定において、生産性と幸福感を高めるために有用であることを示しています。

**GDBでARM Cortex‑M の現在のセキュリティ状態を判断する方法** | そっか~ニュース