Linux カーネル デバイス ドライバー アドレス マッピングに関する注意事項

Linux カーネル デバイス ドライバー アドレス マッピングに関する注意事項
#include <asm/io.h>
#define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE)
//cookie は物理アドレスを示し、size はマッピング サイズを示します。 ioremapは指定された物理アドレスをアイドル状態の仮想アドレスにマッピングします。void __iomem *
__arm_ioremap(符号なし long phys_addr、size_t サイズ、符号なし int mtype)
{
__arm_ioremap_caller(phys_addr, size, mtype, を返す。
__builtin_return_address(0) ; 組み込み戻りアドレス(0)
}

1. 物理アドレスからマッピング後の仮想アドレス

  • 仮想アドレス = ioremap(物理アドレス、マッピングサイズ);
  • 使用後、iounmap(仮想アドレス); //マッピングテーブルを削除します

2.

ioread8(アドレス)/readb()
ioread16(アドレス)/readw()
ioread32(アドレス)/readl()

iowrite8(値、アドレス) / writeb
iowrite16(値、アドレス) / writew
iowrite32(値、アドレス) / writel
#include <asm/sizes.h>
翻訳元
言語

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Linux コードを Windows に移植する簡単な方法
  • Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項
  • Linux カーネル デバイス ドライバー カーネル時間管理に関する注意事項
  • Linux カーネル デバイス ドライバー キャラクタ デバイス ドライバー ノート
  • Linux カーネル デバイス ドライバー仮想ファイル システムに関する注意事項
  • Linux カーネル デバイス ドライバー システム コールに関する注意事項
  • Linux カーネル デバイス ドライバー カーネル デバッグ テクニカル ノート集
  • Linux カーネル デバイス ドライバー カーネル リンク リストの使用上の注意
  • Linux カーネル デバイス ドライバー proc ファイル システム ノート
  • Linux カーネル デバイス ドライバー 高度な文字デバイス ドライバーのメモ
  • Linux カーネル デバイス ドライバー Linux カーネル モジュールの読み込みメカニズム メモの概要
  • Linux カーネル デバイス ドライバー Linux カーネル 基本メモの概要
  • 新しいカーネルをLinuxシステムに移植する手順

<<:  Linux システムで MySQL データベースにリモート接続する方法のチュートリアル

>>:  vue+django でファイルをダウンロードする例

推薦する

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

Windows に MySQL 8.0.16 をインストールする手順とエラーの解決方法

1. はじめに: mysql8以降は、これまでよく使われていたバージョンと比べてかなり変更点が大きい...

CentOS 7 で Apache (httpd) サービスをインストールおよびアンインストールする詳細な手順

アンインストールまず、次のコマンドを使用して、httpd サービスがインストールされているかどうか、...

Zabbix ベースの Jenkins プロセス監視の詳細な説明

1. 監視アーキテクチャ図 2. 実装のアイデアJenkins に Metrics プラグインをイン...

Navicat による MySQL パーティショニングの実践

MySQLのパーティショニングは、非常に大きなテーブルを管理するのに役立ちます。MySQLのパーティ...

MySQL の列から行への変換と年月グループ化の例

以下のように表示されます。 SELECT count(DISTINCT(a.rect_id)) zc...

Linux における効果的なユーザー グループと初期ユーザー グループの実装

まず、/etc/group ファイルを確認します。 [root@localhost /]# cat ...

VSCode 開発 UNI-APP 構成チュートリアルとプラグイン

目次前面に書かれた予防開発環境構築開発構成に関する注意事項前面に書かれたuni-app は、Vue....

Mysql の 2 つのテーブル間の結合クエリの 4 つの状況の概要

一般的に言えば、より完全な結果を得るためには、2 つ以上のテーブルから結果を取得する必要があります。...

HTML で複数のクラス属性を定義する場合の無効な解決策

HTML を記述する過程で、クラス属性に複数の値を定義することがよくありますが、定義した値が無効であ...

Linux (Ubuntu) での MySQL 5.7.17 のインストールと設定のチュートリアル

序文以前、MySQL 5.6 をインストールしました。3 か月後、開発者から MySQL で JSO...

Linux で MySQL 8.0 サービスを完全に削除する方法

この記事を読む前に、Linuxコマンド、特にcentos7.3環境でyumを使用してインストールされ...

Alibaba Cloud Server に MySQL データベースをインストールする詳細なチュートリアル

目次序文1. MySQLをアンインストールする2. MySQLをインストールする要約する序文学習中に...

単一のdivの正多角形変換を実現する純粋なCSS

前回の記事では、beforeとafterの擬似要素を使用してMaterial Designスタイルの...

Linux で PyCurl のエラーを解決する方法

「curl-config を実行できませんでした」の解決策 pycurl のダウンロード/解凍 (p...