原创 內核模塊開發 初步

LINUX內核模塊基礎 什麼是內核模塊: Linux內核的整體結構非常龐大,其包含的組件也非常多,如何使用這些組件呢,有一種方法是:把所有的組件都編譯進內核文件,即:zImage或bzImage,但這樣會導致一個問題:佔用內存過

原创 C++語言 運算符優先級表(轉載)

C++語言 運算符優先級表(轉載)

原创 移植 bootm 命令啓動內核

bootloader 的兩個作用: 1、初始化硬件; 2、啓動OS。 bootm命令就是用來啓動操作系統的。 內核文件分爲 zImage 和 uImage, uImage 是 zImage 的基礎上增加了信息頭,bootm 命

原创 LINUX內核鏈表

鏈表簡介 鏈表是一種常用的數據結構,它通過指針將一系列數據節點連接成一條數據鏈。相對於數組,鏈表具有更好的動態性,建立鏈表時無需預先知道數據總量,可以隨機分配空間,可以高效地在鏈表中的任意位置實時插入或刪除數據。鏈表的開銷主要是訪

原创 Linux內核子系統---內存管理子系統、進程管理子系統

Linux內核子系統 Linux內核子系統的結構在前面的博客中提到過: 本次文章介紹其中的兩個主要部分:內存管理子系統 和 進程管理子系統。 Linux內存管理子系統 內存管理子系統模型圖: 內存管理子系統的職能: 1、

原创 C++中的冒號運算符 ---- : 和 ::

單冒號運算符( : ) (1)表示結構體內位域的定義(即該變量佔幾個bit空間) 如果是相同類型,只要位寬不超過sizeof,就一直是壓縮的。超過了就重新分配。 如果是不同類型,一個元素必須在一個字節中。 舉例說明: #in

原创 串口驅動程序設計

TTY 驅動程序架構 在Linux系統中,終端是一類字符型設備,它包括多種類型,通常使用 tty來簡稱各種類型的終端設備。主要包括以下幾種: 串口終端(/dev/ttyS*): 串口終端是使用計算機串口連接的終端設備。Linux

原创 按鍵驅動程序設計---混雜設備、中斷分層處理、工作隊列、阻塞型驅動

混雜設備 概念: 在Linux系統中,存在一類字符設備,它們擁有相同的主設備號,主設備號都爲10,但次設備號不同,我們稱這類設備爲混雜設備(miscdevice)。所有的混雜設備形成一個鏈表,對設備訪問時內核根據次設備號查找到相

原创 網卡驅動程序設計

Linux網絡子系統 系統調用接口層: 爲應用程序提供訪問網絡子系統的統一方法。 協議無關層: 提供通用的方法來使用傳輸層協議,對不同的協議有統一的接口。 協議棧的實現: 實現具體的網絡協議。 設備無關層: 協議與設備驅

原创 U-boot 入門

解壓縮、配置、編譯、下載 U-boot 將U-boot代碼通過smb服務器拷貝到Linux虛擬機的指定位置,通過tar命令解壓縮: tar xvzf uboot_ok6410.tar.gz 如下圖所示: 配置:輸入 make

原创 C語言的輸入和輸出函數

C語言提供了兩個控制檯格式化輸入、輸出函數printf() 函數 和scanf() 函數,這兩個函數可以在標準輸入輸出設備上以各種不同的格式讀寫數據。printf()函數用來向標準輸出設備(屏幕)寫數據; scanf() 函數用來

原创 平臺總線設備驅動設計

平臺總線概述 平臺總線(Platform bus)是linux2.6內核加入的一種虛擬總線,其優勢在於採用了總線的模型對設備與驅動進行了管理,這樣提高了程序的可移植性。 通過平臺總線機制開發設備驅動的 流程 如圖: 平臺設備

原创 字符設備驅動模型

編譯/安裝驅動程序 在Linux系統中,驅動程序通常採用內核模塊的程序結構來進行編碼。因此,編譯/安裝一個驅動程序,其實質就是編譯/安裝一個內核模塊。 字符設備文件 通過字符設備文件,應用程序可以使用相應的字符設備驅動程序來控制

原创 嵌入式 根文件 系統

創建根目錄 嵌入式linux系統可以包含多個文件系統,但是必須包含根文件系統,“根”的意思就是“第一個”,必須要有第一個文件系統。 文件系統包含兩層含義,一是系統中的一系列文件目錄,二是嵌入式系統掛載文件目錄的方式。 創建目錄:

原创 嵌入式 Linux 內核製作

Linux 內核簡介 Linux系統架構: Linux系統分爲用戶空間和內核空間兩大部分。 如下圖所示: Linux採用兩層結構的原因: ARM有7種工作模式: 每種工作模式下有不同的權限。 用戶空間和內核空間是