裝置樹(一)linux核心主線瞭解dts
1)bindings是device tree裡面可已包含的specific types and classes of devices。
2)compatible特徵描述了節點編譯的specific binding;
3)當為一個裝置建立新的device tree時,應該建立a binding來描述裝置的全部細節。
=============================================
問題四:在哪裡可以找到Device Tree的文件呢?
1)所有可被核心識別的Device Tree bindings在文件Documentation/devicetree/bindings裡面;
2)每個binding文件描述了哪些properties可以被接受,可以使用哪些值,哪些特徵是必須的,哪些是可選的;
3)所有新的Device Tree bindings必須讓程式碼維護者稽核,提交到devicetree
=============================================
問題五:Device Tree中的常見關鍵字含義是什麼?
Device Tree organization: top-level nodes
在裝置的最頂層節點上,一般可以發現如下這些:
cpus:描述了系統的CPU
memory:定義了RAM的地址和大小
chosen:定義了boot時被系統韌體選擇或定義的引數;可用來傳遞kernel command line;
aliases:定義了certain nodes的shotcuts;
一個或多個匯流排定義;
一個或多個板上裝置定義;
下面是am33xx.dtsi中的定義:
/ {
compatible = "ti,am33xx";
interrupt-parent = <&intc>;
aliases {
i2c0 = &i2c0;
i2c1 = &i2c1;
i2c2 = &i2c2;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
serial3 = &uart3;
serial4 = &uart4;
serial5 = &uart5;
d_can0 = &dcan0;
d_can1 = &dcan1;
usb0 = &usb0;
usb1 = &usb1;
phy0 = &usb0_phy;
phy1 = &usb1_phy;
ethernet0 = &cpsw_emac0;
ethernet1 = &cpsw_emac1;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
compatible = "arm,cortex-a8";
device_type = "cpu";
reg = <0>;
/*
* To consider voltage drop between PMIC and SoC,
* tolerance value is reduced to 2% from 4% and
* voltage value is increased as a precaution.
*/
operating-points = <
/* kHz uV */
720000 1285000
600000 1225000
500000 1125000
275000 1125000
>;
voltage-tolerance = <2>; /* 2 percentage */
clocks = <&dpll_mpu_ck>;
clock-names = "cpu";
clock-latency = <300000>; /* From omap-cpufreq driver */
};
};
pmu {
compatible = "arm,cortex-a8-pmu";
interrupts = <3>;
};
/*
* The soc node represents the soc top level view. It is used for IPs
* that are not memory mapped in the MPU view or for the MPU itself.
*/
soc {
compatible = "ti,omap-infra";
mpu {
compatible = "ti,omap3-mpu";
ti,hwmods = "mpu";
};
};
/* ...... */
};
從上面的程式碼裡面可以找出四個compatible,分別是:
top: compatible = "ti,am33xx";
cpu0: compatible = "arm,cortex-a8";
pmu: compatible = "arm,cortex-a8-pmu";
soc: compatible = "ti,omap-infra";
怎樣使用compatible呢?
方法一是用來匹配DT_MACHINE結構體中的dt_compat域,方法二是使用of_machine_is_compatible函式。
在匯流排中,一般要定義compatile、#address-cells、#size-cells、ranges,比如:
i2c0:
compatible = "ti,omap4-i2c";
#address-cells = <1>;
#size-cells = <0>;
ti,hwmods = "i2c1";
reg = <0x44e0b000 0x1000>;
interrupts = <70>;
status = "disabled";
};
=============================================
問題六:有關DT的策略,你應該瞭解的~
DT是一種硬體描述,而不是一種配置。
它應該描述硬體的構成,和硬體工作的方式;
它不應該描述那種硬體配置你更加喜歡;
例如:
你可以在DT中描述是否硬體配置支援DMA;
但是你不要在DT中描述你是否想要DMA。
1)DT獨立於OS,它也需要非常穩定;
2)最初的設想是,DTBs由生產廠家燒寫進晶片中,使用者直接安裝系統就好了;
3)當Device Tree binding被定義,並且在DTBs使用之後,它就不能再改變,但可以擴充套件;
4)這意味著Device Tree binding是核心的二進位制程式介面(ABI),它需要same care;
5)但是核心開發者意識到了這個很難達到,並且會減慢驅動程式的整合:
ARM Kernel Mini-submit discussions放鬆了這些限制;
未來在Kernel Summit時會有additional discussion;
Basic guidelines for binding design:
1) A precise compatible string is better than a vague one.
2) Do not encode too much hardware details in the DT.
相關推薦
裝置樹(一)linux核心主線瞭解dts
由這張圖可見,如果included file中的某項,被including file檔案定義了,則會使用後者的定義,也就是使用更上層更新的定義;如果沒有被定義,則新增進入。 1)bindings是device tree裡面可已包含的specific types and classes of devices。
裝置樹(二)linux核心頂層am335x-evm.dts
瞭解基本的dts知識之後,就可以為編寫自己的dts檔案了。Forlinx的OK335xD核心板和底板包含的資源有NANDFLASH、SDRAM、MMC、LCD、UART、USB、ETHERNET等等,因此dts檔案必須要提供對它們正確的描述。第一步,複製相近硬體的dts檔案
【原創】IP攝像頭技術縱覽(一)---linux 核心編譯,USB攝像頭裝置識別
IP攝像頭技術縱覽(一)— linux 核心編譯,USB攝像頭裝置識別 開始正文之前先來認識一下我的開發環境: 系統:ubuntu 10.04 開發板:AT91SAM9260 + Linux-2.6.30 USB攝像頭:UVC無驅攝像頭(著手開發時只
Linux核心學習筆記(一)——Linux核心簡介
Unix系統業已演化成一個具有相似應用程式程式設計介面(API),並且基於相似設計理念的作業系統家族。 1、Unix的歷史 Unix是從貝爾實驗室的一個失敗的多使用者作業系統Multics中涅槃而生的。 時間 事件 19
ROS CAN匯流排裝置接入(一)Linux動態庫的顯式呼叫
前提: (1),如果在libpcan安裝正常的話,那麼可以用以下命令查詢到libpcan.so ls /usr/lib/libpcan* 查詢到方可進行api載入。 (2),確保CMakeList.txt 當前目標檔案已加入add_executable...;target_
Linux塊裝置驅動(一)————塊裝置的結構及磁碟的結構
塊裝置的結構及磁碟的結構 1、扇區 磁碟上的每個磁軌被等分成若干個弧段,這些弧段便是磁碟的扇區。磁碟驅動器在向磁碟讀寫資料時,都是以扇區為單位。一般為512個位元組,但也有1024或者
tiny4412學習(四)之移植linux-裝置樹(1)裝置樹基礎知識及GPIO中斷
#include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/gpio.h> #include <linux/of.
linux下的塊裝置驅動(一)
塊裝置的驅動比字符裝置的難,這是因為塊裝置的驅動和核心的聯絡進一步增大,但是同時塊裝置的訪問的幾個基本結構和字元還是有相似之處的。 有一句話必須記住:對於儲存裝置(硬碟~~帶有機械的操作)而言,調整讀寫的順序作用巨大,因為讀寫連續的扇區比分離的扇區快。 但是同時:SD卡和
(原創)Linux核心升級全過程 手把手教你一次成功(2.4.20-8到2.6.18)
Linux核心升級全過程 手把手教你一次成功(2.4.20-8到2.6.18) ============================= 時間:2007-01-08作者:飄揚首發:http://www.piaoyang.org/blog Q Q: 47720194郵箱:p
監督式學習 -- 分類決策樹(一)
cte 求解 分支 基本概念 tracking 它的 解決 mat 這就是 決策樹(decision tree)是一種基本的分類與回歸方法。其表示的樹型結構,能夠覺得是if-else規則的集合。基本的長處是分類可讀性好,速度快。一般會有三個步驟:特征選擇、決策樹的生成
數據結構之二叉樹(一)
reorder system style 序列 urn creat 編寫程序 space ont 設計和編寫程序,按照輸入的遍歷要求(即先序、中序和後序)完成對二叉樹的遍歷,並輸出相應遍歷條件下的樹結點序列。 1 //遞歸實現 2 #include
Linux系統管理(一)Linux系統安裝與修復
linux系統安裝與修復一. Linux多種安裝方式與應用軟件安裝1. Linux的硬盤安裝方式(1) 復制Linux的ISO文件到硬盤某個分區(2) 用Linux安裝啟動盤啟動/DOS啟動盤啟動計算機註: DOS啟動盤中必須要存放加載Linux系統的工具及Linux內核和initrd映像文件,主要文件包括:
Linux用戶管理(一)Linux系統概述
linuxLinux系統概述一. 認識Linux1.Linux的性質Linux為一種源碼公開的自由軟件,是一種真正多任務和多用戶的網絡操作系統。Linux的多用戶和多任務、同時開設多個用戶終端、可以由用戶同時運行多個程序 2. Linux的發展歷史(1) UNIX和Linux的發展:-1968年 美國的k
Linux系統管理(一)Linux設備和內核管理
linux設備和內核管理一. 設備管理概述1.Linux設備的分類字符設備(c):以字符為單位,傳輸速率較低,無需緩沖區。塊設備(b):以數據塊為單位組織和傳輸數據,需要建立緩沖區網絡設備(s):一種通過SOCKET接口進行主機通信的設備2.設備文件(1)功能用於用戶訪問設備進行輸入和輸出操作(2)常見的設
Skynet服務器框架(一) Linux下的安裝和啟動
進行 harbor 的人 新源 中心 -a 編譯 加載模塊 問題 根據雲風博客的描述,Skynet 的核心功能就是解決一個問題: 把一個符合規範的 C 模塊,從 動態庫(so文件)中啟動起來,綁定一個永不重復(即使模塊退出)的數字id做為其 handle。模塊 被稱為
大數據學習(一)linux基礎
info spa 包含 目的 創建 http -- 刪除 family 知識體系: 一、Linux基礎 二、Hadoop的背景知識與起源 三、搭建Hadoop環境 四、Apache Hadoop的體系結構 五、HDFS 六、MapReduce 七、MapReduce編
linux常用命令(一)linux開關機、重啟以及文本界面與圖形界面互換
調用 虛擬 界面切換 use entos span 常用 run 現在 1.開關機 reboot 重啟: shutdown [-efFhknr][-t 秒數][時間][警告信息] 關機: shutdown [-efFhknr][-t 秒數][時間][警告信息] 關機:
軟件性能測試技術樹(二)----Linux服務器性能
bsp 分析 處理方法 性能測試 linux ron j2e 跳轉 實時 全圖: 測試目的: 測試範圍&性能指標: 測試與生產環境服務器配置不同的處理方法: 實時CPU監控: 實時內存監控: 實時網絡監控: 實時磁盤監控: 萬能命令: Linux
Admin(一)——Linux簡介與簡單命令
linux centOS linux簡單命令 一、RHEL 與CentOS的區別 RHEL是紅帽公司提供的商業版Linux系統,若要獲取DVD鏡像、安全更新等技術服務支持,一般需要付費訂閱;不過構成RHEL系統的各種軟件包都是基於GPL開源協議免費發布的。 CentOS
(一)Linux實操之——權限、任務調度、磁盤分區
完成 sql數據庫 時間 特定 myshell 任務定義 磁盤 屬於 rwx權限 1. 權限 1.1 查看權限 通過ls -l命令可以看到文件的詳細信息 下面以一條信息解釋各個位置字符的作用 -rwxr--r--. 1 root root 32 6月