QEMUを使用した組み込みLinuxシステムのエミュレート

QEMUを使用した組み込みLinuxシステムのエミュレート

 

はじめに

組み込みソフトウェアの開発は、開発ボードや外部モジュールデバイスなどの組み込みハードウェアデバイスに依存していますが、デバッグ作業が周辺機器と関係がない場合、ハードウェアを購入せずにQEMUを使用してシミュレートできるのはカーネルデバッグのみです。

LinuxおよびWindowsホスト、およびエミュレートされたPowerPC、ARM、MIPS、およびSPARCターゲットで使用できます。 QEMUは、ホストとターゲットプロセッサの間に最小限の変換レイヤーを提供するというアプローチを採用しています。 ホストプロセッサはエミュレータを実行しているプロセッサであり、ターゲットプロセッサはエミュレートされているものです。

以下は、QEMU開発環境をセットアップするプロセスの詳細な紹介です。

 

2。 環境

2.1使用環境

* Ubuntu-18.04.1

また:

※パソコン:Windows10

*仮想マシン:VirtualBox-5.18

*仮想OS:Ubuntu-18.04.1

*シミュレートされた開発ボード:vexpres

2.2環境のセットアップ時に使用されるツール

* qemu-4.2.0

* linux-4.14.172(Linuxカーネル)

*u-boot-2017.05

*busybox-1.31.1

* アーム-linux-gnueabi-gcc

関連するすべてのファイルを/ home / joe / qemuに配置します

3.クロスコンパイルツールをインストールします

#sudo apt install gcc-arm-linux-gnueabi

 

インストールが成功したかどうかを確認します

$ arm-linux-gnueabi-gcc -v

組み込み仕様を使用します。

COLLECT_GCC = arm-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER = / usr / lib / gcc-cross / arm-linux-gnueabi / 7 / lto-wrapper

ターゲット:arm-linux-gnueabi

構成:../ src / configure -v –with-pkgversion = 'Ubuntu / Linaro 7.5.0-3ubuntu1〜18.04'–with-bugurl = file:/// usr

スレッドモデル:posix

gccバージョン7.5.0(Ubuntu / Linaro 7.5.0-3ubuntu1〜18.04)

 

4.Linuxカーネルを構成およびコンパイルします

4.1Linuxカーネルのダウンロード

必要なカーネルバージョンをwww.kernel.orgからダウンロードします。

ここでは、比較的最新の長期的にサポートされているカーネルバージョンlinux-4.4.157をダウンロードします。

wgetの https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.157.tar.xz  / qemuディレクトリへ

4.2Linuxカーネルを解凍します

#tar xvJf linux-4.4.157.tar.xz

4.3Linuxカーネルのコンパイル

//カーネルソースファイルディレクトリを入力します

#cd linux-4.4.157

CROSS_COMPILE = arm-linux-gnueabi- ARCH = armvexpress_defconfigを作成します

CROSS_COMPILE = arm-linux-gnueabi- ARCH = armmenuconfigを作成します

menuconfigを実行すると、ncursesパッケージが欠落していることが示される場合は、次のコマンドを実行してインストールします)

$ sudo apt-get install libncurses5-dev

メニュー設定を入力し、以下の設定を行います

クロスツールチェーンでコンパイルする

コンパイルが成功したら、ディレクトリの下にカーネルイメージファイルを生成します

arch / arm / boot、zImageおよびdtbは、便利な使用のために別のフォルダーにコピーできます

 

5.QEMUツールをインストールします

5.1QEMUをインストールする

* wget https://download.qemu.org/qemu-4.2.0.tar.xz

* tar xvJf qemu-4.2.0.tar.xz

* CD qemu-4.2.0

5.2QEMUを構成する前に依存パッケージをインストールする

#apt install zlib1g-dev
#apt install libglib2.0-0 libglib2.0-dev
#apt install libsdl1.2-dev
#apt install libpixman-1-dev libfdt-dev

コンパイル後にファイルが乱雑になるのを防ぐために、コンパイルの中間ターゲットパスとしてビルダーディレクトリを作成します。

QEMUを構成、コンパイル、インストールします。

5.3アームアーキテクチャの下ですべてのボードをサポートするようにQEMUを構成する

#.. / configure –target-list = arm-softmmu –audio-drv-list =

次のプロンプトが表示されたときにpixmanが見つからない場合は、

sudo apt-get installlibpixman-1-devを使用してインストールします。

5.4QEMUバージョンを表示する

5.5QEMUでサポートされている開発ボードを表示する

5.6QEMUの実行

#qemu-system-arm -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append“ console = ttyAMA0”

OR:

$ pwd

/ home / joe / qemu

#qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-.4.157 / arch / arm / boot / zImage -dtb linux-4.4.157 / arch / arm / boot / dts / vexpress-v2p-ca9。 dtb -nographic -append“ console = ttyAMA0”

qemuのテストと起動を改善するために、起動スクリプトstart.shを作成し、スクリプトにchmod + xstart.shを実行する権限を与えることができます。

 

#!/ bin / bashに

 

qemu-システムアーム\

-m vexpress-a9 \

-m 512M \

-カーネル/home/joe/jemu/linux-4.4.157/arch/arm/boot/zImage \

-dtb /home/joe/jemu/linux-4.4.157/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \

-ノグラフィック\

-「console = ttyAMA0」を追加します

 

6.ルートファイルシステムを作成します

busyboxを使用して、単純なルートファイルシステムを作成します。

6.1busyboxツールのダウンロード

https://busybox.net/downloads/からbusyboxをダウンロードします

#wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2

#tar xjvfbusybox-1.31.1.tar.bz2

#cdbusybox-1.31.1

#defconfigを作成します

#CROSS_COMPILE = arm-linux-gnueabi-を作成します

#make install CROSS_COMPILE = arm-linux-gnueabi-

次の情報が表示され、インストールが成功したことを示します。

インストールが完了すると、生成されたターゲットファイルはデフォルトで./_installディレクトリになります。

 

6.2ルートファイルシステムを生成する

6.2.1busyboxをコンパイルしてインストールする

#mkdir rootfs

#sudo cp -r _install / * rootfs /

6.2.2ルートファイルシステムにglibcライブラリを追加し、ローダーとダイナミックライブラリを追加します

#sudo cp -r _install / * rootfs /

#sudo cp -p / usr / arm-linux-gnueabi / lib / * rootfs / lib /

6.2.3 4つのtty端末デバイスを作成します(cは文字デバイス、4はメジャーデバイス番号、1〜4はマイナーデバイス番号をそれぞれ表します)

 

6.3SDカードファイルシステムイメージの作成

6.3.1空のSDカードイメージを生成する

#dd if = / dev / zero of = rootfs.ext3 bs = 1M count = 32

6.3.2SDカードをextsファイルシステムとしてフォーマットする

#mkfs.ext3 rootfs.ext3

6.3.3rootfsをSDカードに書き込む

#sudo mount -t ext3 rootfs.ext3 / mnt -o loop

#sudo cp -rf rootfs / * / mnt /

#sudo umount / mnt

 

7.確認します

7.1Qemuを起動する

次のコマンドを実行してテストし、コンパイルされたカーネルが正常に実行できるかどうかを確認します

#sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel〜 / qemu / zImage –dtb〜 / qemu / vexpress-v2p-ca9.dtb -nographic -append“ console = ttyAMA0”

またはスクリプトを使用する:

 

上記のテストでは、カーネルがパニックを報告し、ルートファイルシステムが不足していることを示しています。

上記の問題は、x86環境で生成されたbusyboxツールが原因です。

busyboxのインストール時にmakeinstallを使用したので、

ARCH = arm CROSS_COMPILE = arm-linux-gnueabi-installを作成します

 

コンパイルツールは、armプラットフォームで使用されるbusyboxツールを生成します

#ファイルrootfs / bin / busybox

rootfs / bin / busybox:ELF 32ビットLSB実行可能ファイル、ARM、EABI5バージョン1(SYSV)、動的リンク、インタープリター/ lib / ld-、GNU / Linux 3.2.0用、BuildID [sha1] = cbcd33b8d6c946cb19408a5e8e714de554c87f52、削除

 

7.2再確認

これで、QemuはLinuxカーネルを起動し、ファイルシステムを正常にマウントし、シリアル端末を介して簡単な機能でシステムと対話できるようになりました。 印刷プロセスで/etc/init.d/rcSを実行できないという問題は、/ etc / init.d / rcSファイルを追加するだけで済みます。 ファイルの内容は、プロンプトステートメントにすることができます。

 

7.3QEMUを終了します

qemuを終了するXNUMXつの方法

*別の端末入力:すべてのqemu-system-armを強制終了します

* Qemu入力の場合:Ctrl + A; NS

QEMU:終了しました

 

8.u-bootを使用してLinuxカーネルを起動します

組み込みシステムには通常、u-boot、kernel、rootfs、およびappfsが含まれます。 下図に示すARM開発ボード上のこれらの部品の位置関係

 

ブートローダー ブートパラメータ カーネル rootfs アプリ

 

RootfsはボードまたはPCで実行できます

 

8.1Uブーツを準備する

8.1.1u-bootをダウンロードする

http://ftp.denx.de/pub/u-boot/、使用します:u-boot-2021.01.tar.bz2

#tar -jxvf u-boot-2018.09.tar.bz2

8.1.2u-bootをコンパイルします

#vim Makefile

CROSS_COMPILE = arm-linux-gnueabi-

#vim config.mk

ARCH =アーム

#vexpress_ca9x4_defconfig、エラーを作成します

必要:sudo apt install bison

sudo apt install flex

次に:#make-j4エラー

必要性:エクスポートCROSS_COMPILE = arm-linux-gnueabi-

エクスポートARCH = arm

もう一度:#vexpress_ca9x4_defconfigを作成します

#make -j4

 

 8.1.3テスト、u-bootの開始

$ sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot-2021.01 / u-boot –nographic

 

8.2カーネル構成のコンパイル

u-bootを使用してカーネルイメージを起動します。

カーネルをuImage形式にコンパイルする必要があります。

メモリ内のuImageのロードアドレスを指定する必要があります

カーネルをコンパイルするときに指定します。makeLOADADDR=? uImage -j4

 

#cd /home/joe/qemu/linux-4.4.157

#LOADADDR = 0x60003000 uImage-j4を作成します

 

u-bootのコンパイルが完了すると、ツールフォルダーの下にmkimageファイルが生成されます。このファイルをクロスコンパイラディレクトリの下のbinフォルダーにコピーします。

$ cd qemu / linux-4.4.157

エラー:

$ sudo apt install u-boot-tools

uImageを取得する

9.QEMUネットワーク機能の設定

Qemu仮想マシンがu-bootで起動するとき、uImageをメモリにロードする必要があり、uImageはTFTPサーバーを介してメモリ内の指定されたアドレスにダウンロードできます。

9.1ホストカーネルがtun / tapモジュールをサポートしているかどうかを確認します

//ブリッジネットワークが依存するXNUMXつのツールをインストールします

#sudo apt install uml-utilities bridge-utils

tunデバイスファイルの作成:/ dev / net / tun(通常は自動的に作成されます)

/ etc / network / interfacesを変更します(ネットワークを構成し、再起動して有効にします)

#sudo vim / etc / network / interfaces

auto loiface lo inet loopbackauto enp0s3 //仮想ネットワークカードの名前autobr0iface br0 inet dhcpbridge_ports enp0s3

 

再起動しない

#reboot

次に、Qemuのネットワーク環境を確認します

仮想ネットワークポートbr0は、Qemu仮想マシンとLinuxホスト間の通信用のネットワークポートです。

 

10.TFTPサーバーをインストールします

Qemuシミュレーション開発ボードのuImageを起動するときに、uImageをメモリにダウンロードするTFTPサーバーを作成します

 

10.1tftpツールをインストールします

 

$ apt-get install tftp-hpa tftpd-hpa xinetd

 

10.2構成ファイルを変更し、TFTPサーバーディレクトリを設定します

#sudo vim / etc / default / tftpd-hpa

......

TFTP_DIRECTORY =” / home / joe / tftpboot”

......

10.3Linuxホストにtftpディレクトリを作成します

#mkdir / home / joe / tftpboot

#chmod 777 / home / joe / tftpboot

 

10.4tftpサービスを再起動します

#sudo /etc/init.d/tftpd-hpa restart

 

10.5u-bootでカーネル起動パラメータを設定する

uImageとcexpress-v2p-ca9.dtbをtftpbootにコピーします

Qemuを起動して確認します

 

$ sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot-2021.01 / u-boot –nographic -net nic、vlan = 0 -net tap、vlan = 0、ifname = tap0 -sdrootfs。 ext3

 

現在、rootfsディレクトリは単純なルートファイルシステムであり、ミラーファイルにすることができ、ミラーファイルを開発ボードに書き込むか、LinuxカーネルをQemuのu-bootで起動してマウントすることができます。ミラーファイル。 また、NFSネットワークファイルシステムを介して起動するように設定することもできます。

 

11.NFSファイルシステムをマウントします

11.1NFSサービスのインストールと構成

11.1.1インストール

$ sudo apt install nfs-kernel-server

 

11.1.2構成

$ sudo mkdir / home / joe / qemu / rootfs

$ sudo chown nobody:nogroup / home / joe / qemu / rootfs

$ sudo chmod 777 / home / joe / qemu / rootfs

$ sudo nano / etc / exports

追加:/ home / joe / qemu / rootfs *(rw、sync、no_root_squash)

 

nfsサーバーを再起動します。

$ sudo /etc/init.d/nfs-kernel-server restart

または:$ systemctl restart nfs-kernel-server

 

NFS共有ディレクトリが作成されているかどうかを確認します

$ sudo showmount –e

NFSネットワークファイルシステムを使用する場合、Linuxホストはシステムファイアウォールを閉じる必要があります。そうしないと、システムの実行中に異常が発生します。

 

まとめ

うまくいけば、このブログの助けを借りて、あなたはQEMUについてもっと知っているでしょう。 上で示したすべてのテクニックは、私たちのプログラムへのさまざまな提出で使用されました。 QEMUでエミュレートする単一の固定された方法はありません。 さまざまなテクニックを調べて、何が効果的かを確認してください。 知識をよく理解してください。そうすれば、それが予期しない方法でどのように役立つかに驚くでしょう。

Orient Display EmbeddedProjectの紹介

Orient Display EmbeddedProjectの紹介

Orient Displayは、世界をリードするディスプレイのXNUMXつです。 LCDディスプレイメーカー これは、1996年に25年以上の研究開発と生産の経験を持つ経営幹部によって設立されました。 Orient Displayは、ディスプレイに加えて、ARMアーキテクチャを含み、組み込み製品で豊富な経験を蓄積している組み込み技術にも焦点を当てています。

現在、Orient Displayテクニカルサービスには、ハードウェア、ソフトウェア、およびコンサルティングが含まれています。

 

本サイトの ハードウェアチーム 設計のアイデアや要件に応じて、最短時間でプロトタイプを作成します。 私たちは、短い開発サイクルで高い信頼性の要件を満たすために、費用効果の高いまたは複雑な高性能ボードの設計を専門としています。

- 概略設計

–PCBレイアウト

–業界製品のカスタマイズ

 

本サイトの ソフトウェアチーム Linuxベースを専門としています ARM®デザインいくつか例を挙げると、PowerPCおよびx86プロセッサ。 組み込みシステムにおけるLinux、Android、およびWinCEの完全なソリューションプロバイダーとして、製品のエンドツーエンドのシステム関連の問題を解決できます。

–システムの移行、最適化、調整

–開発を推進する

–カーネルの調整

– LINUX KERNELをARM、PPC、またはx86ボードに移植する

– APP開発(アプリケーション、Linux QT、Linux C / ++)

 

本サイトの FAE チーム また、製品または半製品のすべてのテクノロジーを提供します。

–当社製品のソフトウェアおよびハードウェアリソースに関するコンサルティングを提供します。

–当社製品のソフトウェアおよびハードウェアマニュアルの使用中に発生した問題を解決します。

–OEMおよびODMのアフターセールステクニカルサポート。

–データの保守と更新。

– Orient Display製品は、当社の支援を受けています 最低価格保証.

 

開発シーケンス

 

1. システム要件分析

*設計タスク、目標、仕様

–これはお客様から提供されたものです

*機能要件と非機能要件

–システムのパフォーマンス、コスト、消費電力、ボリューム、重量、その他の要素を含める

 

2.アーキテクチャ設計

優れたアーキテクチャは、設計を成功させるための鍵です。 このステップでは、多くの場合、次のことを行う必要があります。

  • メインチップを選択します。

— ARM Cortex A、RまたはM、またはPowerPcまたはColdFire

  • RTOSを決定します。

— Linux、uClinux、Vxworks、freeRTOS、WinCE

  • [表示]を選択します。

- TFTパネル, 日光読み取り可能なTFT, LCDガラスパネル, グラフィックLCD,  有機ELディスプレイ, タッチパネル, 組み込みLCDディスプレイ or カスタムメイドのディスプレイ by オリエントディスプレイ

  • プログラミング言語:

— c / c ++、python、Java

  • 開発ツール:

u-boot、busybox、QT、Ubuntu、stm32CubeIde、ビジュアルスタジオ、androidスタジオ、keil uVision、RT-Treadスタジオ

 

3. ハードウェアとソフトウェアの共同設計

製品開発サイクルを短縮するために:

ハードウェア:  通常、オリエントディスプレイなどの評価ボードからプロジェクトを開始します aiy-a002m, aiy-a003m & aiy-a005m。 後でプロジェクトに合わせてボードをカスタマイズし、不要なパーツを破棄します。

ソフトウェア開発シーケンス:

  • 通常、ブートローダーとしてu-bootを選択します。これは、1)CPUを既知の状態に初期化する2)メモリを初期化する3)割り込みを初期化する4)クロックを初期化する5)カーネルを実行中のアドレスにロードする
  • カーネルの構成:

1)カーネルシステムの構成:*メモリ管理、*ファイルシステム、*デバイスドライバー、*ネットワークスタック、* I / Oシステム

2)I / Oデバイスドライバーの書き込み* charデバイスドライバー、* blockデバイスドライバー、* netデバイスドライバー

  • アプリケーションの選択:

*ユーザーライブラリを選択します*ユーザーアプリケーションを構築します*初期化プロセスを構成します*ルートFSを構築します

 

4。 Sシステム統合

システムのソフトウェア、ハードウェア、および実行デバイスを統合し、ユニット設計プロセスのエラーをデバッグ、検出、および改善します。

 

5.システムテスト

設計されたシステムをテストして、仕様に記載されている機能要件を満たしているかどうかを確認します。 組み込みシステム開発モデルの最大の特徴は、ソフトウェアとハ​​ードウェアの包括的な開発です。

 

まとめ

Orient Displayには、コンセプトから製造までの組み込みディスプレイモジュールを作成する経験と能力を備えた才能ある専門家の素晴らしいチームがいます。

ご不明な点がございましたら、次のエンジニアにお問い合わせください。 tech@orientdisplay.com。

ARMプロセッサの選択方法

ARMプロセッサの選択方法

概要

の最も広い範囲 マイクロプロセッサ ほぼすべてのアプリケーション市場のコア。 探検 ARM。 ほぼすべてのアプリケーション市場、プロセッサのパフォーマンス、電力、およびコストの要件は非常に重要です。 システムのパフォーマンスは、ハードウェアに大きく依存します。 この記事では、ARMプロセッサの研究をガイドし、意思決定に大いに役立ちます。

 

ARMの簡単な紹介

図1.ARMプロセッサのロードマップ

 

2003年以前は、ARM7(ARMv4アーキテクチャ)、ARM9(ARMv5アーキテクチャ)、ARM11(ARMv6アーキテクチャ)を含む従来のARMプロセッサがあります。 ARM7にはMMU(メモリ管理ユニット)がなく、LinuxやWinCEなどのマルチユーザーマルチプロセスシステムを実行できません。 MMUを必要としないucOSやucLinuxなどのシステムのみを実行できます。 ARM9およびARM11は、Linuxを実行できるMMUを備えた組み込みCPUです。

2003年以降、ARMv7アーキテクチャに関しては、Cortexにちなんで名付けられ、次のXNUMXつのシリーズに分けられました。 Cortex-A、Cortex-R、およびCortex-M。

  • 皮質A —パフォーマンスを重視するシステム用のアプリケーションプロセッサコア
  • コーテックス-R –リアルタイムアプリケーション用の高性能コア
  • コーテックス-M –幅広い組み込みアプリケーション向けのマイクロコントローラーコア

簡単に言えば、 皮質A このシリーズは、高いコンピューティング要件があり、豊富なオペレーティングシステムを実行し、インタラクティブなメディアとグラフィックスのエクスペリエンスを提供するアプリケーションに適しています。 コーテックス-R 信頼性、高可用性、フォールトトレランス、保守性、およびリアルタイムの応答を必要とする場合に適しています。 コーテックス-M このシリーズは、コストと電力に敏感なMCUとエンドアプリケーションを対象としています。

 

Cortex-A VS Cortex-R VS Cortex-M

皮質A

Cortex-プロセッサのカテゴリは、LinuxおよびAndroidデバイス専用です。 スマートウォッチやタブレットから始まり、ネットワーク機器に続くすべてのデバイスは、Cortex-Aプロセッサでサポートできます。

  • Cortex-Aプロセッサ(A5、A7、A8、A9、A12、A15、およびA17)は、ARMv7-Aアーキテクチャに基づいています。
  • Aプロセッサの一般的な機能のセットには、メディア処理エンジン(NEON)、セキュリティ目的のツール(Trustzone)、およびサポートされているさまざまな命令セット(ARM、Thumb、DSPなど)が含まれます。
  • Cortex-Aプロセッサの主な機能は、ユーザーに可能な限り最高のサービスを提供するために緊密にバンドルされた最高のパフォーマンスと優れた電力効率です。

Cortex-Aプロセッサの主な特徴:

Cortex-A5:Cortex A5は、Cortex Aシリーズの中で最小かつ最低電力のメンバーですが、マルチコアパフォーマンスを発揮でき、A9およびA15プロセッサと互換性があります。

Cortex-A7:A7の消費電力はA5とほぼ同じですが、A7によって提供されるパフォーマンスはA20よりも5%高く、Cortex-A15およびCortex-A17との完全なアーキテクチャ互換性があります。 Cortex-A7は、コストに敏感なスマートフォンやタブレットの実装に最適です。

コントレックス-A15: Cortex-A15は、このシリーズの最高性能のメンバーであり、A9の15倍の性能を提供します。 AXNUMXは、ハイエンドデバイス、低電力サーバー、およびワイヤレスインフラストラクチャでそのアプリケーションを見つけます。 これは、データ管理および仮想環境ソリューションに対する最初のプロセッササポートです。

コントレックス-A17: Cortex-A17は、A60よりも9%高いパフォーマンスを示します。 主な目的は、プレミアムクラスのデバイスのニーズを満たすことです。

コントレックス-A50:最新シリーズのContrex-A50は、ARMv8アーキテクチャ上に構築されており、エネルギー効率の高いArch64ビットシステムのサポートを提供します。 64ビットへの移行の明らかな理由は、4GBを超える物理メモリのサポートです。これはCortex-A15およびCortex-A7ですでに実現されています。

 

コーテックス-R

Cortex-Rプロセッサは、ハードディスクコントローラ、ネットワーク機器メディアプレーヤー、およびその他の同様のデバイスなどの高性能リアルタイムアプリケーションを対象としています。さらに、エアバッグ、ブレーキシステム、エンジン管理などの自動車業界を強力にサポートします。

Cortex-R4:  Cortex-R4は、自動車用途に最適です。 最大600MHzのクロックが可能で、デュアルイシュー、プリフェッチ、および低遅延割り込みシステムを備えた8ステージのパイプラインを備えているため、セーフティクリティカルシステムに最適です。

Cortex-R5: Cortex-R5は、R4が提供する機能を拡張し、効率と信頼性を高め、エラー管理を強化します。 デュアルコアの実装により、リアルタイムの応答を備えた非常に強力で柔軟なシステムを構築できます。

Cortex-R7: Cortex-R7はパフォーマンスを大幅に拡張します。 これらは11ステージのパイプラインを備えており、アウトオブオーダー実行と高レベルの分岐予測の両方を可能にします。 ツールは、ロックステップ、対称、および非対称のマルチプロセッシング用に実装できます。 汎用割り込みコントローラーは、言及する必要のあるもうXNUMXつの重要な機能です。

 

コーテックス-M

特にMCU市場をターゲットにするように設計されたCortex-M。 Cortex-MシリーズはARMv7-Mアーキテクチャ(Cortex-M3およびCortex-M4に使用)上に構築されており、小型のCortex-M0 +はARMv6-Mアーキテクチャ上に構築されています。 Cortex-Mは32ビットの世界向けになり、8051は8ビット向けになりました。これは多くのベンダーが提供する業界標準のコアです。 たとえば、Cortex-MシリーズはFPGAのソフトコアとして実装できますが、メモリ、クロック、および周辺機器が統合されたMCUとして実装されるのがはるかに一般的です。 エネルギー効率のために最適化されたものもあれば、高性能のために最適化されたものもあり、スマートメータリングなどの特定の市場セグメントに合わせて調整されたものもあります。

特にコストに敏感なアプリケーションや、8ビットから32ビットに移行するアプリケーションの場合、Cortex-Mシリーズの最小メンバーが最適な選択肢となる可能性があります。

Cortex-M0: Cortex-M0 +はThumb-2命令セットを使用し、2ステージのパイプラインを備えています。 重要な機能は、シングルサイクルGPIO用のバスとマイクロトレースバッファーです。

Cortex-M3&M4:  Cortex-M3とCortex-M4は非常によく似たコアです。 それぞれが3ステージのパイプライン、複数の32ビットバス、最大200 MHzのクロック速度、および非常に効率的なデバッグオプションを提供します。 大きな違いは、DS用のCortex-M4コアの機能です。 Cortex-M3とCortex-M4は、同じアーキテクチャと命令セット(Thumb-2)を共有しています。 アプリケーションで浮動小数点演算が必要な場合は、Cortex-M4よりもCortex-M3の方がかなり高速にこれを実行できます。 とはいえ、Cortex-M4のDSPまたはFPU機能を使用していないアプリケーションの場合、Cortex-M3で同じレベルのパフォーマンスと消費電力が見られます。 つまり、DSP機能が必要な場合は、Cortex-M4を使用してください。 それ以外の場合は、Cortex-M3がその役割を果たします。

 

まとめ

図2.皮質の概要

 

ARMプロセッサは、さまざまな目的のためにさまざまな機能を提供します。 少し考えて調査することで、アプリケーションのニーズに合った適切なプロセッサを見つけることができます。 ハイエンドタブレット用か、超低コストのワイヤレスセンサーノード用か。

Cortexコアを正しく選択し、アイデアを実現することは課題です。 しかし、経験豊富な専門家のチームがすべての問題を処理し、あらゆる複雑さの概念を実装できます。

Orient Displayは、長年にわたってARMプロセッサ関連のテクノロジに焦点を当てており、ARMアーキテクチャ製品の開発と実装において豊富な経験を蓄積してきました。 市場の一般的なニーズを満たす開発プラットフォームとコアボードを継続的に立ち上げながら、顧客の個々のプロジェクトのニーズにも対応します。 カスタマイズされたサービスを提供します。

当社のハードウェアチームは、お客様の設計アイデアとニーズに応じて、最短時間でプロトタイプを作成できます。 当社のソフトウェアチームは、カッティングドライバーレイヤーのすべての機能をカスタマイズするお手伝いをします。

お問い合わせ そして、私たちはあなたの最初のアイデアから最終製品までの計画を立てるのを手伝います。