강의

멘토링

커뮤니티

BEST
Hardware

/

Embedded IoT

ARM Cortex-M プロセッサのプログラミング

CORTEX-M プロセッサを体系的に学習したいですか? エンベデッド システムで最も重要な 2 つのトピックであるアセンブリアと割り込みを確実に整理します。

  • guileschool
ARM Architecture
Cortex
Embedded

学習した受講者のレビュー

受講後に得られること

  • 非順序アクセスを使用してもよいでしょうか?

  • アセンブリ言語の重要性

  • パイプラインの動作原理

  • インラインアセンブラ

  • リンクスクリプト

  • NVIC デバイスの動作原理

  • 例外処理手順の開始から終了までの完全な分析

  • クロック制御装置

  • ブートコードの解析

講義の一つにまとめるARM Cortex-Mプロセッサ
コンセプトから本物のノウハウまでご確認ください。

講座のテーマ📖

ARM Cortex-M

最も人気のある組み込みシステム用の32ビットマイクロプロセッサです。
代表的なプロセッサとして、CORTEX-M3、CORTEX-M4、CORTEX-M0、CORTEX-M33があります。
消費電力が少なく価格競争力もあり、さまざまな分野の製品に適用されています

ソース:ARM

CORTEX-Mプロセッサは、ドローン、スマートファクトリー、自律走行車、宇宙航空、医療診断機器、家電、モノのインターネット、環境エネルギーなど、さまざまな分野の組み込みシステムで使用される最も人気があり注目されている32ビットマイクロプロセッサです。

CORTEX-Mプロセッサは、性能よりも価格消費電力の効率を重視するアプリケーションに適しています。低ゲート数、低割り込みレイテンシ、デバッグ機能を備えたプロセッサです。
デフォルトの命令セットでTHUMB2命令をサポートします。
NVICはプロセッサコアと密接に統合され、低レイテンシの割り込み処理を実現しています。
割り込み応答時間を改善するための「テールチェーン」および「 LATE ARRIVING 」割り込みをサポートします。
アトミックアクセスをサポートするためのビットバンド書き込みおよび読み取り操作を含むビットバンドをサポートします。

STmicro社の100ドル未満のマイクロコントローラボードを簡単に入手できます。

開発者

過去数十年間、今ほど開発者の価値が尊重される時はなかったと思います。将来の希望が何かと青少年に聞いたとき、医師、検査という答えとともに「開発者」という言葉を聞くこともできるからです。

開発者が貴重になり、それに応じて身代金も上がるので、とにかく大学の人気順位にコムボール、電子工が上位ランクになるのを見ると映画タイトル「これ以上良くはない」という言葉のように、19世紀アメリカ西部時代の黄金を求めてエルドラドに去る人々が重なります。むしろ開発者全性時代と呼んでもいいようです。

問題解決能力を持つ開発者?

2016年に国内M社の内部から流れてきたこのコメントがニュースにも上がり、しばらく会ったことがありました。そして、このようなことがなかったとしても、誰もが一度ずつ生きてきて聞いたことがある言葉です。ところで問題解決能力を持つ開発者とは?これがなぜ問題になったのでしょうか。

私が理解しているこの文の意味は、単純な視点で見るとこれです。例を見てください。このコードは明らかに私が編んだコードです。このプログラムには間違いなくバグがあります。私もそれを知っています。ところでこれを解決できないのです。短くは数時間、数日、長くは数ヶ月間です。

本当にこのようなことが起きるのかと聞かれたら、当然、このような状況がいくらでも可能だと申し上げたいですね。だから問題化までになったのでしょう。

コーディングは少しの知識しか持っていれば誰でもできます。しかし、トラブルシューティングは異なる次元の問題です。

組み込みシステム開発者

組み込みシステムで動作するソフトウェアを作成することは困難ですが、まれに発生する難しい問題を解決することはさらに困難です。なぜなら事案によってはソフトウェアだけで問題の範囲を絞り込んで考えると問題解決ができないかもしれないからです。組み込みシステムのコンポーネントが「ハードウェア+ソフトウェア」であることを考える必要があります。

今でも毎年新しい多くの種類のシリコンが世界に出ています。さらに、これらのチップを適用したより多くの種類のハードウェアが作成されます。これはすべてハードウェア的に完璧だと信じられますか?

トラブルシューティングでは、ハードウェアのバグの可能性も考慮する必要があります。問題が簡単に解決されない場合、ソフトウェア開発者はこれがハードウェア問題かソフトウェア問題かを一度考えることができなければなりません。

ところがこれが普段に訓練されていなければならないという点です。何の根拠もなく、「これはハードウェアの問題だ」あるいは「ソフトウェアの問題だ」と主張するのは誰も説得しにくいです。

私が経験した少数のソフトウェア開発者は、自意であれ他のハードウェアについても知識が不十分であり、まったく興味がありませんでした。そのため、問題解決能力を持った開発者は、この分野ではさらに貴重であります。

パラダイムの切り替え

結論はすでに出てきたのです。ハードウェアを理解しようとする必要があります。
ハードウェアを理解することは、必ずしもプリント回路基板に電子部品をはんだ付けしてみることを意味するわけではありません。 LEDやボタンキーを完全に制御することを意味するわけでもありません。

むしろ、アセンブリを勉強しながら組み込みシステムが動作する基本原理を理解する必要があります。私が信じて理解する組み込みソフトウェアを解放する2つの重要なキーワードは、アセンブリー割り込みです。

アセンブリはハードウェアを理解するためであり、割り込みは非同期的に実行されるソフトウェアメカニズムであるだけにシステムの安定性を損なう可能性が高いです。したがって、信頼性の高いソフトウェアを作成するためによく学習しておく必要があります。

なぜアセンブリなのか

開発者の間では、アセンブリ言語を見ているさまざまな視点があります。まずはここ国内有名開発者コミュニティ掲示板の記事を一度読んでみてください

現代のコンパイラは、過去に比べてよりスマートになりました。最適化されたコードをうまく作成します。システムのパフォーマンスを向上させるために、アセンブリ言語でコーディングするのは過去の話です。それでは、私がアセンブリ言語を心から強調する理由はどこですか?

アセンブリを学ぶ理由は、組み込みシステムの動作原理をよりよく理解するためだと見なければなりません。アセンブリは、開発者が組み込みシステムの中身を覗くのを助けます

木を見ないで森を見るという言葉のように、どんな勉強をしているのか、常に学習対象の構造(体系)を理解しようと努力しなければなりません。組み込みシステムは「ハードウェア+ソフトウェア」であることをもう一度考えてみる必要があります。

2年以上開発しても組み込みシステムの開発能力が飛躍的に向上していない場合は、今やあなたの学習方法を根本的に変えてみてください。

「どんな分野でも10,000時間を投資すればその分野の専門家になる」という言葉があります。私も共感する言葉ですが、この文章を少し変えたいですね。そうです。 「どの分野でも効果的な方法で10,000時間を投資すれば、その分野の専門家になる」。

アセンブリ語学習の効果

上記の利点に加えて、アセンブリを勉強しておくと、いくつかの利点があります。

まず、どんなソフトウェアだった1~5%程度のアセンブリコードは無条件に含まれます(その理由はアセンブリ語を勉強してみると分かります)。その固有のアセンブリコードまで理解すると、そのソフトウェアの100%完全な制御が可能になります。
第二に、アセンブリ言語で書かれているブートコード(ブートローダではない)を理解し、自分でコーディングできる基盤を作成します。
に、デバッグ(問題解決)ツール使用能力のスペクトルが広がり、深くなります
第四に、ソフトウェアを質的に改善してシステムのパフォーマンスを向上させ、メモリを効率的に活用できます。
第五に、どのハードウェアで動作するソフトウェアを他のハードウェアで動作させることをポーティングと呼びますが、このときアセンブリーの使用能力は不可欠です。
第6に、C言語のポインタを簡単に理解できます。

結論

このトレーニング(ARM Cortex-Mプロセッサプログラミング)では、これら2つ(アセンブリ、割り込み)を確実に扱います。

私はアセンブリ言語に興味がないと思う人はこのコースを無視してフィルタリングしてください。真の価値を理解してくださる方とだけ一緒に行きたいです。

オフラインARMプロセッサ教育では、個人的な信念で受講生の方々にこの内容をずっと強調してきています。このコースでは、組み込みシステムを別の視点で見つめる視点を提供したいと思います。

次の内容を学びます📚

何を学びますか✅

  1. 非整列アクセスを使用してもよいですか?
  2. アセンブリーの重要性
  3. パイプラインの動作原理
  4. インラインアセンブラ
  5. リンカースクリプト
  6. NVIC装置の動作原理
  7. 受付処理手順の開始から終了までの完全分析
  8. クロックコントローラ
  9. テールチェーニング割り込みネストを実際に再現してみる
  10. ブートコード分析

上記はすべて今回の講義の重要なテーマです。さて、詳細を見てみましょう。

まず、非整列アクセスを使用してもよいでしょうか?

非整列アクセスを許可しなかった過去のARMプロセッサとは異なり、CORTEX-Mプロセッサではデフォルトで非整列アクセスを使用できるようになりました。非整列アクセスを使用することの得意と失望

第二に、アセンブリの重要性

組み込みソフトウェアを開発する際、ハードウェアは問題がないとあらかじめ決めておき、ソフトウェアを開発することになれば誰でもいつでも予期しない落とし穴に陥ることがあります。このような問題を見つけて解決するには、一定レベルのハードウェアの理解が必要です。メモリを含む個々のハードウェアデバイスには、それぞれ独自の動作特性があり、それについて理解しています。ハードウェアの理解を深めるために簡単にできる最初の実践は、アセンブリ言語の学習です。アセンブリ言語を通じてハードウェアを間接的に体験することが、ソフトウェアエンジニアがハードウェアについて理解できる開始点であることをもう一度申し上げたいと思います。

第三に、パイプラインの動作原理

パイプラインプロセッサがパイプラインをサポートしていないプロセッサよりも効率的です。パイプライン技術を使用しないARMプロセッサを想像するのは難しいです。 CORTEX-Mプロセッサのパイプライン動作原理とその意味について勉強します

第四に、インラインアセンブラ

インラインアセンブリというのはどんなものでしょうか。簡単に言えば、アセンブリコードをC関数の形で作成することを意味します。インラインアセンブリの外観的な形式はC言語の関数の外観を持っていますが、実際の内容はアセンブリ命令です。アセンブリ命令は、C関数内のローカル変数とも緊密に連動します。 C言語で置き換えられないMSR、MRS命令の場合、インラインアセンブリで実装して使用すると、そのときインラインアセンブリの使用価値は光を放ちます。

第五に、リンカースクリプト

STM32CubeIDEコンパイラは多くのソースを自動的に生成し、コンパイルに必要なメイクファイルを含むさまざまなファイルを自動化プロセスによって作成します。リンカスクリプトと呼ばれるファイルも自動生成されるファイルの1つとして、リンカは常にこのファイルを参照して、ユーザーが望む最終的な実行可能ファイルを作成します。リンカーの役割とリンカースクリプトの文法について学びます。

第六に、NVIC装置の動作原理

ARM7、ARM9、ARM11プロセッサの場合と異なり、CORTEX-Mプロセッサでは、割り込みコントローラユニットであるNVICをCORTEX-Mプロセッサの内部に組み込むことにより、より密接に接続性を持つように設計されています。 NVICの動作原理を理解することは、組み込みシステムで重要な役割を担う割り込みを理解する開始点でもあります。

第七に、受付処理手順の開始から終了までの完全分析

ハードウェア割り込みを含む受付が発生したときに受付ハンドラが実行されるまでのプロセス。エクセプションハンドラコードの実行からエクセプションが発生する直前のプログラムコードに復元されるまでの全過程を説明します。

8、クロックコントローラ

STM32 CORTEXプロセッサ内部でCORTEX-MコアをはじめとするAHB、APBインタフェースとなる様々なハードウェアデバイスにクロックを供給するデバイスであるクロックシステムの動作原理を学習し、実習過程を通じて直接システムクロック周波数を変えてクロック制御に対する自信を高めます。

9番目に、テールチェーニングと割り込みネストを実際に再現してみてください

CORTEX-Mプロセッサは、処理速度の効率を向上させるために、いわゆる「テールチェーン」技術をサポートしています。この技術が割り込み応答性の改善にどれくらいの貢献をするのか、動作原理を学んで実習してみます。また、割り込みのネストも一緒に調べます。

10番目に、ブートコード分析

どのソフトウェアのブートコードを理解するための努力は、組み込みシステムソフトウェアの全体的な構造を理解するのにも役立つでしょう。ブートコードを実際に使用するだけではなく、ブートコードに含まれている意味を解釈することで、私たちがより発展的なソフトウェアの方向を引き出すことができます。もちろん、これはブートローダやRTOS移植などの作業に必要な先行知識の重要性も持っています。

14年以上熟練したARMプロセッサ講義ノウハウ💡

皆さんの時間を私の時間のように大切に考えて講義を作りました。

14年の間に総受講者数1000人以上を対象にARMプロセッサの現場講義をしてきた積み重ねの経験で、より多くの学習者と出会うためにこんなにオンラインでも講義を作ることになりました。現場講義基準 5日分量の内容を15時間以内に最適化したオンライン講義で皆さんを探していきます。


こんな方におすすめです! 🔑

組み込みシステム
入門者

すでにCORTEX-M
使用していますが、
体系的な整理
必要な方

組み込みソフトウェアへ
理解度を高める
ハードウェア開発者

成功したRTOS移植と
運用のため
マイコンの知識
必要な方

加えて、こんな方も学べばいいです!

  • 👉 システム安定性、信頼性の高い製品開発をご希望の方
  • 👉 ARMアセンブリ言語を学びたい方
  • 👉インラインアセンブリ、リンカスクリプト、ブートコード学習が必要な方
  • 👉 オフラインクラスに参加する時間的な余裕がない方

📢選手の知識を確認してください!

  • 学習のための選手の知識としてC言語を知っておく必要があります。

この講義だけの特別な点✨

  • 特徴 1.映像を110以上の小チャプターで分け、後で閲覧にも役立つように構成しました。
  • 特徴 2. 2Dアニメーションを積極的に活用して理解に役立つようにしました。
  • 特徴 3.受講生が直接現場で実習に参加するのと同じ体験になるようにしました。
  • 特徴 4.不要な内容は大胆に捨てられ、さらにコアに集中するのを助けます。
  • 特徴 5.データブックのような開発者マニュアルを見なくても映像だけで学習できるようにできるだけ気にしました。

講義で使用されている400以上のスライドからなる教材(pdf)が付属しています。

使用ツールを確認してください🧰

  • コンパイラ:STM32CubeIDE
  • 練習ボード:STmicro社公式ボードSTM32F429I-DISC1
  • 練習の例と教材ファイル:CMPro_tutorials.zip( s102_実習環境構築STM32CubeIDEはじめに)
  • 講義で使用したボードはSTM32F429I-DISC1です。

講義を作った
知識共有者を紹介します✒️

ホン・ヨンギ(ガイルスクール)

主な履歴

  • 1994年:68HC11 MCUベースのセットトップボックスシステムソフトウェア開発
  • 1995年:68020セットトップボックスシステムソフトウェア開発
  • 1997年:MPC860 VoIPゲートウェイシステムソフトウェア開発
  • 2001年:ARM720TポータブルMP3プレーヤーの開発
  • 2003年:ARM920TポータブルMP3プレーヤーの開発
  • 2008年~現在:ARMプロセッサの構造及び活用実務現業講義

その他

  • BLOBオープンソースベースのUSBダウンロードサポートブートローダの開発
  • libjpegオープンソースをファームウェアに移植
  • YAFFS NANDフラッシュドライバ移植
  • miniGUI移植
  • FatFs + SDカード移植
  • YouTubeチャンネルフラッグハブ

予想される質問 Q&A 💬

Q. C言語を知らない人が受講してもいいでしょうか?

C言語を知らないと、授業中の実習に関わる部分については理解しにくいかもしれません。

Q. 中級者もこの講義を受講してもよいでしょうか?

組み込みシステムの開発に入門したい方はもちろん、すでにCORTEX-Mをお使いの中級者の方までもカバーできるよう講義を企画しています。 14年間、サムスン電子、SKハイニックス、ハンコムアカデミー、韓国電波振興院、KEA、モトローラ半導体、ポリテック(仁川)などでARMプロセッサ講義をした経験で、それなりにARMプロセッサ内蔵プログラミングで特に厳しい部分、重要なテーマを深く取り上げています。

Q. 実習のためのSTM32ボードの種類が多様ですが、何でも構いませんか?

映像では現在STM32F429I-DISC1ボード基準で授業を行います。
さらに、NUCLEO-F103RBNUCLEO-F401REボードもサポートしています。ボード以外の追加サポートプランはありません。このトレーニングのために新しいボードを購入する方は、
STM32F429I-DISC1ボードを強くお勧めします。

📢受講前に確認してください! (ライセンス)

  • 講義で使用されたプレゼンテーション資料は、PDF文書の形で受講生に無料で提供されます。
  • 付属の文書は、Inflearn内で講義映像の補助資料として個人的な使用目的にのみ利用する必要があります。本の内容の一部または全部を複製(ホームページや印刷媒体に転載すること、電子ファイルにコピーすることも含む)するときは、韓国著作権法第27条に規定した私的使用を除き、営利目的かどうかにかかわらず韓国著作権法第42条により、著作権者である知識共有者ホン・ヨンギの許可を求めます。

別の講義を一緒に見る 🔍

こんな方に
おすすめです

学習対象は
誰でしょう?

  • 組み込みシステム入門

  • 組み込みシステムの最適化について悩んでいる方

  • すでに CORTEX-M を使用していますが、体系的な整理が必要な方

  • ハードウェア開発者が組み込みソフトウェアの理解を深めたい場合

  • 成功的な RTOS の移植および運用にマイコンの知識が必要な方

  • ARM アセンブリ言語を学習したい方

  • インライン アセンブリ、リンカー スクリプト、ブート コードの学習が必要な方

  • 専門的な組み込みシステムソフトウェアのデバッグ手法が必要な方

前提知識、
必要でしょうか?

  • C言語

こんにちは
です。

3,302

受講生

233

受講レビュー

270

回答

4.7

講座評価

5

講座

인하대학교 공과대학에서 전자공학 학사 학위를 받았으며 임베디드 시스템용 소프트웨어 개발자로써 수년간의 경력을 쌓았습니다. 임베디드 시스템 및 프로그래밍을 위한 전문 강사로도 활동 중입니다. 아이폰 3GS 등장과 같은 시기에 맥(북)에 입문하였고, 그때부터 맥(북) 자동화에 관심을 갖게 되었습니다. '맥(북)에서 사용할 수 있는 시리 리모트', '키보드마에스트로를 이용한 구글번역기' 같은 오픈 소스를 깃허브(https://github.com/guileschool) 에 두고 개발 및 유지보수하고 있습니다. 오픈 소스 하드웨어 '비글본블랙' 에도 많은 관심을 가지고 있습니다. 맥(북) 자동화를 이용하여 생산성을 높일 수 있는 컴퓨터를 사용하는 모든 분야에 관심을 가지고 있고, 이를 필요로 하는 사람들을 돕고 있습니다.

강의 요청 및 기타 문의사항은 guileschool@gmail.com으로 보내주세요 :)

カリキュラム

全体

111件 ∙ (15時間 10分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

41件

4.9

41件の受講レビュー

  • Embedded June님의 프로필 이미지
    Embedded June

    受講レビュー 4

    平均評価 5.0

    5

    100% 受講後に作成

    ※ 1줄 요약: 아무 걱정 마시고 그냥 무조건 들으세요. 수강료가 100만 원이 돼도 무조건 들어야 합니다. <임베디드스케치>, <임베디드레시피> 책을 읽은 뒤 ARM 내용을 정리 & 실습하기 위한 목적으로 홍영기 선생님의 강의를 결제 후 완강까지 7일 소요됐습니다. ◆ 장점 - 너무 잘 설명해주셔서 이해하기 쉽습니다. - 말과 말 사이 간격 편집, 기다리는 과정 편집, 보드 영상 편집 등으로 수강하기 너무 편합니다. - 특히 마지막 챕터 링커스크립트와 부트로더 한 줄 한 줄 설명해주시는 게 가장 좋았습니다. ◆ 팁 - 질문에 정말 친절하게 답해주시고, 추가로 읽으면 좋은 자료도 소개해주십니다. 한 강의 수강하실 때마다 질문게시판 확인하세요. - PM0214, RM0090 두 datasheet 열어놓고 강의 들으시면 좋습니다.

    • 홍영기
      知識共有者

      완강하셨네요 ^^. 영상을 끝까지 봐주셔서 감사드리고, 수고하셨습니다. 부족한 점도 많을텐데 강의에 대한 좋은 평가도 감사드립니다. 적어주신 자세한 수강평 내용은 앞으로 이 강의 수강을 검토하시는 많은 분들에게 좋은 참고가 될 것입니다. 임베디드 쥰님 새해 복 많이 받으시고 꼭 소원 성취하세요 :-)

  • 현정호님의 프로필 이미지
    현정호

    受講レビュー 2

    平均評価 5.0

    5

    31% 受講後に作成

    Cortex-M에 대한 체계적인 정리가 됩니다. M0/M4/M7 모뚜 적용 가능할 뿐만 아니라 어셈블리어를 통한 디버깅을 이용해 다중 인터럽트 사용시 펌웨어가 어디서 꼬였는지 확인이 가능해서 고급 펌웨어 설계자한테는 필수가 되는 기초강의 입니다.

    • yoonhj님의 프로필 이미지
      yoonhj

      受講レビュー 1

      平均評価 5.0

      5

      49% 受講後に作成

      임베디드 소프트웨어를 사용하고 있었지만 어셈블리어는 낯선 영역이라 배워야한다고 생각은 하면서도 쉽게 엄두가 나지 않았습니다. 강사님의 강의를 통해서 조금은 자신감이 생긴 것 같습니다. 유익한 강의 감사합니다!

      • Taewan Sung님의 프로필 이미지
        Taewan Sung

        受講レビュー 3

        平均評価 5.0

        5

        100% 受講後に作成

        "임베디드의 인프라 기술, ARM 동작원리를 쉽게 알고 싶은 분들에게 추천하고 싶은 강의입니다. 컴파일 에러가 뜨면 심리적으로 위축되고, 그게 C 문법이 아닌 처음 보는 이상한 명령들이라면 더욱 더 스트레스를 받습니다. 이 강의를 수강하면서 그런 에러들을 좀 더 여유있게 처리할 수 있게 되었습니다. 핵심 내용을 짧게 나눠서 실습과 함께 설명해 주시기 때문에 이해하기 쉽습니다. 실무에서 ARM 명령어를 직접 다루지 않더라도 강의에서 배운 프로세서의 기반기술을 알고 있기 때문에 문제 해결을 좀 더 다양한 관점에서 접근할 수 있을것 같습니다. 강의를 만들어 주셔서 감사합니다^^

        • 홍영기
          知識共有者

          안녕하세요. Taewan Sung 님! 이 강의가 도움이 되셨다니 제가 더 감사한 일입니다. 앞으로도 더욱 유익하고 다양한 강의 제작에 힘쓰겠습니다. 강의에 대한 좋은 평가 감사드려요 :-)

      • ej3989님의 프로필 이미지
        ej3989

        受講レビュー 4

        平均評価 5.0

        5

        31% 受講後に作成

        ¥19,056

        guileschoolの他の講座

        知識共有者の他の講座を見てみましょう!

        似ている講座

        同じ分野の他の講座を見てみましょう!