Linux裝置驅動程式學習(2)-調試技術

進入《Linux裝置驅動程式(第3版)》第四章調試技術的學習。一、核心中的調試支援在前面已經建議過:學習編寫驅動程式要構建安裝自己的核心(標準主線核心)。最重要的原因之一是:核心開發人員已經建立了多項用於調試的功能。但是由於這些功能會造成額外的輸出,並導致能下降,因此發行版廠商通常會禁止發行版核心中的調試功能。 為了實現核心調試,我在核心配置上增加了幾項: Kernel hacking ---> [*] Magic SysRq key

Linux裝置驅動程式學習(12) -Linux裝置模型(底層原理簡介)

以《LDD3》的說法:Linux裝置模型這部分內容可以認為是進階教材,對於多數程式作者來說是不必要的。但是我個人認為:對於一個嵌入式Linux的底層程式員來說,這部分內容是很重要的。以我學習的ARM9為例,有很多匯流排(如SPI、IIC、IIS等等)在Linux下已經被編寫成了子系統,無需自己寫驅動;而這些匯流排又不像PCI、USB等在《LDD3》上有教程,有時還要自己研究它的子系統構架,甚至要自己添加一個新的匯流排類型。對於這方面的學習,我推薦幾個網頁,這些也是我這部分文章的參考資料:(1)《

Linux裝置驅動程式學習(3)-並發和競態

 今天進入《Linux裝置驅動程式(第3版)》第五章並發和競態的學習。對並發的管理是作業系統編程中核心的問題之一。

Linux裝置驅動程式學習(3-補) -Linux中的迴圈緩衝區

  參考資料:《Linux核心中的迴圈緩衝區》作者:西郵 王聰 嚴重感謝文章作者! 但是(可能是源碼版本問題)有些結論並不正確: “而kfifo_init只會接受一個已指派好空間的fifo->buffer,不能和kfifo_free搭配,用kfifo_init分配的kfifo只能用kfree釋放。” 閱讀源碼可以得出這樣的結論:kfifo_init和kfifo_alloc分配的kfifo都能用kfree釋放。已經用實驗證實。原文連結地址:

Linux下的幀緩衝lcd應用編程及Framebuffer驅動程式模型

一、Linux的幀緩衝裝置 幀緩衝(framebuffer)是 Linux 為顯示裝置提供的一個介面,把顯存抽象後的一種裝置,他允許上層應用程式在圖形模式下直接對顯示緩衝區進行讀寫操作。這種操作是抽象的,統一的。使用者不必關心物理顯存的位置、換頁機制等等具體細節。這些都是由Framebuffer 裝置驅動來完成的。幀緩衝驅動的應用廣泛,在 linux 的案頭系統中,Xwindow 伺服器就是利用幀緩衝進行視窗的繪製。尤其是通過幀緩衝可顯示漢字點陣,成為

Linux裝置驅動程式學習(15) -Linux裝置模型(熱插拔、mdev 與 firmware)

熱插拔 有 2 個不同角度來看待熱插拔:    從核心角度看,熱插拔是在硬體、核心和核心驅動之間的互動。    從使用者角度看,熱插拔是核心和使用者空間之間,通過調用使用者空間程式(如hotplug、udev 和 mdev)的互動。 當需要通知使用者核心發生了某種熱插拔事件時,核心才調用這個使用者空間程式。 現在的電腦系統,要求 Linux

Linux裝置驅動程式學習(4) -進階字元驅動程式操作[(1)ioctl and llseek]

今天進入《Linux裝置驅動程式(第3版)》第六章進階字元驅動程式操作的學習。 一、ioctl 大部分裝置除了讀寫能力,還可進行超出簡單的資料轉送之外的操作,所以裝置驅動也必須具備進行各種硬體控制操作的能力. 這些操作常常通過 ioctl 方法來支援,它有和使用者空間版本不同的原型:int (*ioctl) (struct inode *inode, struct file *filp,unsigned int cmd, unsigned long

Linux裝置驅動程式學習(16)-USB 驅動程式(一)

從此文檔開始,核心使用2.6.29.4 很久沒有寫《LDD3》的學習筆記了,趁著做項目的機會,學習一下USB的驅動程式,並寫學習筆記。 。 如果剛開始接觸USB,會感覺無從下手,這種感覺就像我第一次接觸嵌入式Linux一樣。所以要對USB的硬體原理、資料轉送和在USB電纜上傳輸的資料格式有一定的瞭解。所以推薦一篇《實用USB術語詳解》。再去CEPARK ( China Electronics Park )

Linux裝置驅動程式學習(1) -字元裝置驅動程式

《Linux裝置驅動程式(第3版)》第三章字元裝置驅動程式的學習。 這一章主要通過介紹字元裝置scull(Simple Character Utility for Loading Localities,地區裝載的簡單字元工具)的驅動程式編寫,來學習Linux裝置驅動的基本知識。scull可以為真正的裝置驅動程式提供樣板。一、主裝置號和次裝置號 主裝置號表示裝置對應的驅動程式;次裝置號由核心使用,用於正確確定裝置檔案所指的裝置。 核心用dev_t類型(<linux/types.h&

Linux裝置驅動程式學習(17)-USB 驅動程式(二)

核心使用2.6.29.4 USB裝置其實很複雜,但是Linux核心提供了一個稱為USB core的子系統來處理了大部分的複雜工作,所以這裡所描述的是驅動程式和USB core之間的介面。 在USB裝置群組織結構中,從上到下分為裝置(device)、配置(config)、介面(interface)和端點(endpoint)四個層次。 對於這四個層次的簡單描述如下:     裝置通常具有一個或多個的配置     配置經常具有一個或多個的介面    

Linux裝置驅動程式學習(18)-USB 驅動程式(三)

USB urb (USB request block)核心使用2.6.29.4 USB 裝置驅動代碼通過urb和所有的 USB 裝置通訊。urb用 struct urb 結構描述(include/linux/usb.h )。 urb以一種非同步方式同一個特定USB裝置的特定端點發送或接受資料。一個 USB 裝置驅動可根據驅動的需要,分配多個 urb 給一個端點或重用單個 urb 給多個不同的端點。裝置中的每個端點都處理一個 urb 隊列, 所以多個 urb

Linux裝置驅動程式學習(7)-核心的資料類型

由於前面的學習中有用到 第十一章 核心資料結構類型 的知識,所以我先看了。要點如下:將linux 移植到新的體繫結構時,開發人員遇到的若干問題都與不正確的資料類型有關。堅持使用嚴格的資料類型和使用 -Wall -Wstrict-prototypes 進行編譯可能避免大部分的 bug。核心資料使用的資料類型主要分為 3 個類型: 標準 C 語言類型、確定大小的類型和特定核心對象的類型。 標準 C 語言類型當需要“一個2位元組填充符”或“用一個4位元組字串來代表某個東西”,就不能使用標準C語言類型,

Linux裝置驅動程式學習(9)-與硬體通訊

在學習有關I/O匯流排的內容時,最好先看看相關的知識:從PC匯流排到ARM的內部匯流排 I/O 連接埠和 I/O 記憶體每種外設都是通過讀寫寄存器來進行控制。 在硬體層,記憶體區和 I/O 地區沒有概念上的區別: 它們都是通過向在地址匯流排和控制匯流排發出電平訊號來進行訪問,再通過資料匯流排讀寫資料。因為外設要與I\O匯流排匹配,而大部分流行的 I/O 匯流排是基於個人電腦模型(主要是 x86 家族:它為讀和寫 I/O 連接埠提供了獨立的線路和特殊的 CPU 指令),所以即便那些沒有單獨I/O

Linux裝置驅動程式學習(11)-中斷處理

可以讓裝置在產生某個事件時通知處理器的方法就是中斷。一個“中斷”僅是一個訊號,當硬體需要獲得處理器對它的關注時,就可以發送這個訊號。 Linux 處理中斷的方式非常類似在使用者空間處理訊號的方式。 大多數情況下,一個驅動只需要為它的裝置的中斷註冊一個處理常式,併當中斷到來時進行正確的處理。本質上來講,中斷處理常式和其他的代碼並行運行。因此,它們不可避免地引起並發問題,並競爭資料結構和硬體。 透徹地理解並發控制技術對中斷來講非常重要。 安裝中斷處理常式核心維護了一個中斷訊號線的註冊表,類似於

Linux 常用搜尋檔案命令

Linux 常用搜尋檔案命令 whereis <程式名稱>尋找軟體的安裝路徑-b 只尋找二進位檔案-m 只尋找協助檔案-s 只尋找原始碼-u 排除指定類型檔案-f 只顯示檔案名稱-B <目錄> 在指定目錄下尋找二進位檔案-M <目錄> 在指定目錄下尋找協助檔案-S <目錄> 在指定目錄下尋找原始碼locate <檔案名稱>在檔案索引資料庫中搜尋檔案-d <資料庫路徑>

Linux建立檔案命令的方法

本文講解了Linux建立檔案命令的方法 ,希望對您的學習有所協助。   建立檔案夾  mkdir aaa  mkdir -p aaa  建立檔案命令  vi foo.txt  emacs foo.txt  echo "aaaa" > foo.txt  cat > foo.txt  清除命令  > foo.txt  mkdir /home/u1 建立檔案夾/home/u1  chown oracle /home/u1 表示改變目錄所有者為oracle賬戶;  chgrp dba

linux 常用命令每日更新

1, 修改IP        ifconfig + 連接埠號碼 + IP/netmask     啟動網卡       ifconfig etho up   Or   restart all interfaces       service networking start to     查看當前路由       route -n    加網關       route add default gw XXX2,使用apt-cache 尋找最新的軟體包比如想安裝gcc    sudo

Linux單網卡多個IP(或者多個網卡多個IP)設定

 Redhat Linux下修改ip:編輯檔案/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 //裝置名稱,不要修改BOOTPROTO=static //不要修改BROADCAST=10.10.22.255 //廣播位址,一般為本網段的最後一個IPIPADDR=10.10.22.145 //ip地址NETMASK=255.255.255.0 //子網路遮罩NETWORK=10.10.22.0 //網段地址ONBOOT=yes

linux和windows手動添加路由條目命令

如何 在windows添加一條靜態路由1、添加一條路由表Route add 60.232.142.40 mask 255.255.255.248 192.168.100.250 metric 3 if 2添加一條路由記錄,所有到60.232.142.40/29網段的資料包,都通過2號介面卡(網卡)走192.168.100.250的網關,優先順序為3。(結果會怎樣?)Route add –p 60.232.142.40 mask 255.255.255.248 192.168.100.250

linux運行層級

    

總頁數: 3662 1 .... 354 355 356 357 358 .... 3662 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.