原创 linux下TTY驅動(serial)

/dev/console是系統控制檯,是與操作系統交互的設備,系統所產生的信息會發送到該設備上。 如果一個終端設備要實現console功能必須向內核註冊struct console結構,如果要實現tty功能,要向內核tty子系統註冊str

原创 linux下I2C驅動

默認情況下,I2C以從模式工作。接口在生成起始位後,會自動由從模式切換到主模式,並在仲裁丟失或生成停止位時從主模式切換爲主模式。 在主模式下,I2C接口會啓動數據傳輸並生成時鐘信號。 任何能夠進行發送和接收的設備都可以成爲主設備。一個主控

原创 linux下VFS

  通用文件模型由下列對象類型組成: 超級塊對象:存放已安裝文件系統的有關信息 索引節點對象:存放關於具體文件的一般信息 文件對象:存放打開文件和進程之間交互的有關信息 目錄項對象:存放目錄項與對應文件進行鏈接的有關信息   所有的超級塊

原创 MPlayer上支持RTSP流媒體(live555作爲流媒體播放器)

    條件: 在中天CK810的CPU上運行linux12.04操作系統以tft傳輸方式加載uImage; 考慮到針對性,一開始mplayer的編譯選項並不是mplayer官網上下載下來的configure,很多條件都是disable的

原创 linux下I/O體系結構和設備驅動程序

一臺計算機包括集中不同類型的總線,它們通過被稱爲“橋”的硬件設備連接在一起。 任何I/O設備有且僅能連接一條總線。 linux內核包含了輔助函數來簡化彙編語言指令的訪問I/O端口(inb(),inb_p(),outb(),outb_p()

原创 VMware配置靜態IP

  已經很久沒有在Windows上用虛擬機了,因爲最近工作需要用到虛擬機所以在筆記本上安裝了VMware(爲了搭建這個環境還專門買了一臺二手的筆記本電腦!!!).   首先VMwareWorkstation 12上安裝了ubuntu14.

原创 linux下MTD驅動

struct device中的platform_data是我們自己在編寫驅動程序的時候自己定義的設備結構體的指針。   因爲之前不是很瞭解文件系統,所以要探究一下mtd來加深一下印象。 NAND FLASH每一頁大小通常是512+16字節

原创 linux下內存

MMU由一個或一組芯片組成,其功能是把邏輯地址映射爲物理地址,進行地址轉換(MMU是CPU的一部分) 機器指令仍然用邏輯地址指定一個操作數的地址或一條指令的地址 每一個邏輯地址都由一個段選擇符(16位)和段內的相對偏移量(32位)組成。段

原创 linux下SPI驅動

SPI設備分爲主設備和從設備兩種,用於通信和控制的四根線分別是 CS:片選信號 SCK:時鐘信號 MISO:主設備的數據輸入,從設備的數據輸出管腳 MOSI:主設備的數據輸出,從設備的數據輸入管腳 SPI外設的寫操作和讀操作是同步完成的,

原创 linux下時間子系統

每個architecture相關的代碼中要有實現clock event會讓clock source模塊。 一般而言,每個CPU形成自己的一個小系統,有自己的調度,有自己的進程統計,這個小系統都是擁有自己的tick設備,而且是唯一的。 硬件

原创 linux下模塊編譯基本知識和格式

Make -c 只編譯不鏈接 Make -C切換到指定目錄再執行make過程 make -C $(LINUXROOT) M=$(PWD) EXTRA_CFLAGS="$(EXTRA_FLAGS)" modules 當用戶需要以某個內核爲基

原创 linux下網絡驅動

物理層定義數據發送和接收所需要電與光信號,線路狀態,時鐘基準,編碼和電路等,並向數據鏈路設備提供標準接口,物理層芯片稱爲PHY。 數據鏈路層則提供尋址機構,數據幀的構建,數據差錯檢查,傳送控制向網絡層提供標準的數據接口功能。 IEEE80

原创 linux下中斷子系統

在驅動程序初始化時,若使用到中斷,通常調用函數reqeust_irq() 建立該驅動程序對應的irqaction結構體,並登記到irq_desc[irq_num]->action鏈表中去。 當發生中斷後,首先獲取觸發中斷的HW inter

原创 linux系統調用

Unix通過系統向內核發出系統調用實現了用戶態進程和硬件設備之間的大部分接口。 系統調用通過軟中斷向內核發出一個明確的請求。 lib的標準C庫所定義的一些API引用了封裝例程(其唯一目的就是發佈系統調用)。通常情況下,每個系統調用對應一個

原创 linux下進程

從內核的觀點來看,進程的目的就是擔當分配系統資源(CPU時間,內存等)的實體。 儘管父子進程共享含有程序代碼的頁,但是他們各自有獨立的數據拷貝(堆和棧),因此子進程對一個內存單元的修改對父進程是不可見的。 多線程應用程序多個執行流的創建,