日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 获取设备树源文件(dts)里描述的资源,Linux 获取设备树源文件(DTS)里描述的资源...

發布時間:2025/3/8 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 获取设备树源文件(dts)里描述的资源,Linux 获取设备树源文件(DTS)里描述的资源... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在linux使用platform_driver_register() 注冊? platform_driver 時, 需要在 platform_driver 的probe() 里面知道設備的中斷號, 內存地址等資源。

這些資源的描述信息存放在 resource 數據結構中, 相同的資源存放在一個樹形樹形數據結構中, 通過父節點, 兄弟節點, 子節點相連。 比如中斷資源, IO端口資源, IO內存資源, DMA資源有不同資源樹。

Linux使用 struct resource 來描述一個resouce

struct resource {

resource_size_t start;? ? ? //資源范圍的開始

resource_size_t end;? ? ? ? //資源范圍的結束

const char *name;? ?//資源擁有者名

unsigned long flags;?//資源屬性標識

struct resource *parent, *sibling, *child;? //資源樹的父節點, 兄弟節點, 字節點指針

};

resource_size_t 由系統決定 為uint32_t 或uint64_t 。

在platform機制里, 使用platform_get_resource()來獲取指定的資源類型。

比如獲取想獲取中斷號,

irq = platform_get_irq(pdev, 0);

int platform_get_irq(struct platform_device *dev, unsigned int num)

{

struct resource *r = platform_get_resource(dev, IORESOURCE_IRQ, num);

return r ? r->start : -ENXIO;

}

EXPORT_SYMBOL_GPL(platform_get_irq);

platform_get_irq() 會返回一個start, 即可用的中斷號。

之后便可使用request_irq() 來注冊中斷服務函數。

再比如想要獲取IO內存資源:

struct resource *res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);

即可得到一個IO內存資源節點指針, 包括了地址的開始,結束地址等, 該IO內存的長度可用 resource_size() 來獲取, 但這段資源只是一個描述, 想真正使用這段IO內存, 還要經過先申請, 再映射的過程。例如可使用devm_request_mem_region()申請出使用這段IO內存, 再使用ioremap() 將其映射出來, 供用戶空間使用。

devm_request_mem_region(&pdev->dev, res_mem->start, resource_size(res_mem),

res_mem->name))

addr_start = ioremap(res_mem->start, resource_size(res_mem));

ioremap() 的返回值即為該資源的虛擬地址。

IO內存的資源是在設備樹源(Device Tree Source)文件(以.dts結尾)里給出的,.dts文件就是用來描述目標板硬件信息的, 在uboot啟動后, 使用uboot提供的特定API將其獲取出來, 如fdt_getprop(), fdt_path_offset(), 這些API包含在uboot 的頭文件 里面。

uboot將.dts文件里的描述解析出來, 再對相應寄存器賦值, 在linux啟動后, 使用? platform_get_resource() 即可獲取到這些給定的資源, 在驅動里使用。

例如一個在.dts文件中關于gpio資源的描述:

gpio: gpio-controller@1070000000800 {

#gpio-cells = <2>;

compatible = "cavium,octeon-3860-gpio";

reg = <0x10700 0x00000800 0x0 0x100>;

gpio-controller;

根據其描述, 可知道gpio控制器的IO內存起始地址為:0x107900000800, 長度為0x100.

即從 0x107900000800 到 0x1079000008ff.

在目標板里使用? cat /proc/iomem? 可以看到:

1070000000800-10700000008ff : /soc@0/gpio-controller@1070000000800

關于i2c 的描述:

twsi0: i2c@1180000001000 {

#address-cells = <1>;

#size-cells = <0>;

compatible = "cavium,octeon-3860-twsi";

reg = <0x11800 0x00001000 0x0 0x200>;

interrupts = <0 45>;

clock-rate = <100000>;

IO內存起始地址為: 0x118000001000, 長度為0x200.

從 0x118000001000 到 0x1180000011ff.

在目標板里使用? cat /proc/iomem? 可以看到:

1180000001000-11800000011ff : /soc@0/i2c@1180000001000

總結

以上是生活随笔為你收集整理的linux 获取设备树源文件(dts)里描述的资源,Linux 获取设备树源文件(DTS)里描述的资源...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久一区二区精品 | 无码 人妻 在线 视频 | 疯狂做爰的爽文多肉小说王爷 | 婷婷狠狠操 | 亚洲av无码乱码国产精品久久 | 日韩福利在线观看 | 91黑人精品一区二区三区 | 国产国拍精品亚洲 | 老司机深夜免费福利 | 最新av女优| 日干夜干天天干 | 狠狠操狠狠操 | 农村激情伦hxvideos | 一本综合久久 | 精品一区二区三区在线观看 | 懂色av一区二区在线播放 | 国产片高清在线观看 | 一区二区三区四区五区六区 | 国产丝袜美女 | 国产91精品欧美 | 男女羞羞在线观看 | 日本在线一级片 | 亚洲欧洲日韩综合 | а√天堂资源在线 | 国产凹凸一区二二区 | 国产又粗又猛又爽又黄视频 | 操屁股视频| 日韩一区二区三区在线 | 欧美1级片| 中文字幕一区二区三区门四区五区 | 欧美亚洲综合一区 | 欧美黄色成人 | 亚洲av永久一区二区三区蜜桃 | 亚洲网站在线播放 | 久久叉| 丁香花电影免费播放在线观看 | 天天狠狠干 | 一级国产黄色片 | 中国一级免费毛片 | 日日摸日日添日日碰9学生露脸 | 呦呦视频在线观看 | 天堂中文在线最新 | 国产一区二区三区自拍 | 国产精品久久久免费视频 | 欧美性猛交xxxx| 今天高清视频在线观看视频 | 极品美女av | 国产乱码在线观看 | 国产乱乱| 日本欧美一区二区三区 | 在线免费观看国产视频 | 视频在线观看电影完整版高清免费 | hd极品free性xxx护士 | 99热这里只有精品1 亚洲人交配视频 | 日本在线色 | 浪荡奴双性跪着伺候 | 中文字幕大全 | av免费久久 | 哪里可以看毛片 | 色噜噜视频| 国产sm主人调教女m视频 | 国产视频999| 成年人免费视频观看 | 天堂av网手机版 | 伊人夜夜| 欧美区亚洲区 | 日韩国产欧美一区二区三区 | 黄网站色视频免费观看 | av中文字幕在线播放 | 成人综合婷婷国产精品久久 | 国产日韩欧美二区 | 精品人妻无码专区视频 | 色哟哟网站在线观看 | 影音先锋中文字幕一区二区 | 韩国伦理电影免费在线 | 精品少妇人妻av一区二区三区 | 少妇激情偷人三级 | 伊人亚洲综合 | 最新成人| 亚洲天堂h | 亚洲日本精品 | 处女朱莉第一次 | 亚洲成人v | 久久av一区二区三区亚洲 | 一级片在线播放 | 天天摸天天插 | 国产主播精品在线 | 韩国三级国产 | 亚洲av无码一区二区三区在线观看 | 岛国大片在线免费观看 | 夜夜操夜夜操 | 亚洲欧美激情小说另类 | 国产日韩在线视频 | 一区二区三区视频网站 | 欧美一级性生活 | 91网站在线免费观看 | 欧美性免费 | 被绑在床强摁做开腿呻吟 | 视频一区二区欧美 |