原创 Linux驅動開發(六)——內存使用

Linux 使用的是一個虛擬內存系統,意味着用戶程序所使用的地址和硬件使用的物理地址是不等同的。本篇博客首先會簡單描述相應的概念,然後介紹下內存存取的相應接口,最後討論下和硬件IO相關的知識。 一、Linux 內存管理 1. 地址類型

原创 Linux學習總結(七)——進程間通信

Linux 的進程間通信方式是從 UNIX 平臺繼承而來的。傳統的 UNIX 進程間通信方式有三種:管道、FIFO、信號。System V 進程間通信包括 System V 消息隊列、 System V 信號量和 System V 共享內

原创 Linux學習總結(四)——標準I/O與文件I/O

在應用開發中,經常要訪問文件,Linux 下的文件讀寫方式分爲兩大類:標準 I/O 和 文件 I/O,下面分別介紹下兩種 I/O 的相關操作,並比較下兩種 I/O 的特點。 一、標準I/O 標準I/O庫接口由ANSI C標準定義,標準

原创 Linux驅動開發(五)——中斷和時鐘

除了部分僅使用 I/O 寄存器的設備之外,大部分的設備都需要與外部打交道。這些外部的工作通常都是在與處理器完全不同的時間週期內完成的,且通常比處理器的處理速度要慢,所以一直讓 CPU 等待設備的處理是不能令人滿意的。這時候我們就需要使用中

原创 Linux學習總結(六)——進程

一、進程的概念 進程是一個程序的一次執行的過程,它包括程序的創建,執行,調度,消亡。從宏觀上講進程是並行的,但微觀層面是串行的。 進程和程序的區別: 程序是靜態的,它是一些保存在磁盤上的指令的有序集合,沒有任何執行的概念。 進程是

原创 Linux驅動開發(二)——字符設備驅動模型

一、驅動結構 如上篇博客所說驅動開發關注的是兩個重要的結構體:file_operations、inode,而對字符驅動設備來講,我們關注的是 inode 中的 cdev 結構體和 file_operations 中的相關的操作函數。

原创 C語言學習總結(五)——C庫函數總結

C 庫函數主要指那些由美國國家標準協會(ANSI)或國際標準化組織(ISO)發佈的標準中規定的庫函數,按照標準 C 的要求來進行 C 語言編程是很重要的,因爲這樣你的代碼纔有可能跨平臺使用。 最早的 C89 中有15個標準頭文件:

原创 Linux驅動開發(一)——驅動開發基礎

從本篇博客開始,嘗試給自己掌握的 Linux 設備驅動開發進行一個總結,這並不是一個很簡單的工作,因爲自己的確目前對 Linux 驅動開發也只是一知半解。儘自己所能吧。今天是第一天,先來談談 Linux 驅動開發的基礎知識。 一、設備

原创 Linux學習總結(二)——Shell編程

Shell 是 Unix 系統下的一個命令解釋器,主要用於系統和用戶的交互。在 Unix 上有各種不同版本的 Shell,Bash是Linux標準默認的Shell,它是BourneAgain Shell的縮寫。我們這裏主要討論的也是 Ba

原创 Linux學習總結(三)——Shell常見命令解析

Shell 的命令有很多,再加上相關軟件的命令,更是多不勝數,但是常見的命令大致也就可以分爲這五類: * 文件相關:諸如文件及目錄的創建/編輯/傳輸等 * 磁盤相關:磁盤的檢查/掛載/查看等 * 系統相關:系統的相關設置等