alloc_bootmem_low_pages()定義在:include/linux/bootmem.h中,定義如下: #define alloc_bootmem_low_pages(x) \ __alloc_bootmem_low(x, PAGE_SIZE, 0) __alloc_bootmem_low()定義在:mm/bootmem.c,定義如下: void * __init
以下討論僅限i386平台,一般考慮典型情況 linux核心對整個系統的實體記憶體是通過類型為struct page的數組mem_map來管理的。系統中的夥伴系統分配演算法最終是通過操作這個數組來記錄實體記憶體的分配、回收等操作。在這裡不要被系統的高端記憶體、低端記憶體等概念搞混淆了,高、低端記憶體的分類主要在於區分實體記憶體地址是否可以直接映射到核心線性地址空間中。 我們知道,linux的核心地址空間大小為1G(使用者空間0~3G,核心空間3G~4G,這種分法最常見),
前不久,因為工作需要更換了液晶屏,解析度由原來的800*480換成了800*600。 當然首先更改了液晶屏驅動,修改了相應的參數。把開機Logo也進行了更換,解析度修改為800*600。 但是開機時,Logo無法顯示,提示以下錯誤。 fbcon_init: disable boot-logo (boot-logo bigger than screen).
庫的作用 大體上庫的存在,有兩方面的原因,一是代碼的複用,二是聲明和實現的分離。將功能相近的使用模組封裝成庫,使代碼的複用、管理和分發變得簡單了許多,例如著名的開源圖形庫ncurses,你可以自行編譯,更可以直接使用已經編譯好的現成的庫檔案。另外,由於庫是二進位檔案,某種意義上講,將功能的實現部分隱藏了起來,這就為商業代碼的保護提供了一種方式。 庫檔案按照連結方式和時機,可以分為動態庫和靜態庫,下面分別介紹它們在Linux環境中的建立和使用方法。 靜態連結庫
移植環境(紅色粗字型字為修改後內容,藍色粗體字為特別注意內容) 1,主機環境:VMare下linux5.7 ,384記憶體。 2,編譯編譯環境:arm-linux-gcc v4.4.3 3,開發板:FL2440,4M nor flash,256M nand flash。 4,u-boot版本:u-boot-2011.09 5,linux 版本:linux-3.1 6,參考文章: 嵌入式linux應用開發完全手冊,韋東山,編著。
本文基於mstar801平台Linux2.6.35.11核心。 一、ALSA驅動建立音效卡過程 1.建立音效卡 snd_card_create(Linux2.6.30及以後api),snd_card_new(Linux2.6.30以前api)。 說明:第一步要建立音效卡 2.建立pcm裝置,並加入音效卡 int snd_pcm_new(struct snd_card *card,const char *id,int
一 . 介紹 ALSA 標準是一個先進的 linux 聲音體系。它包含核心驅動集合, API 庫和工具對 Linux 聲音進行支援。 ALSA 包含一系列核心驅動對不同的音效卡進行支援,還提供了 libasound 的 API 庫。用這些進行寫程式不需要開啟裝置等操作,所以編程人員在寫程式的時候不會被底層的東西困擾。與此相反 OSS/Free 驅動在核心層次調用,需要指定裝置名稱和調用 ioctl 。為提供向後相容,
如何學習Linux
Linux 系統提供了input子系統,按鍵、觸控螢幕、鍵盤、滑鼠等輸入都可以利用input介面函數來實現裝置驅動,因此,12.1~12.2節的按鍵和觸控螢幕裝置驅動都可以作為input裝置驅動而實現。 在Linux 核心中,input裝置用input_dev 結構 體描述,使用input子系統實現輸入裝置驅動的時候,驅動的核心工作是向系統報告按鍵、觸控螢幕、鍵盤、滑鼠等輸入事件(event,通過input_event結構
核心組件用__setup宏來註冊關鍵字及相關聯的處理函數,__setup宏在include/linux/init.h中定義,其原型如下:__setup(string,
核心定時器(2.6.23) 一、定義:
Linux核心為不同驅動的載入順序定義不同的優先順序,見下面的宏: include/linux/init.h #define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define
在Linux中可以動態載入庫,其使用方法如下:1. 先產生一個動態庫libtest.so/* test.c */#include <stdio.h>#include <stdio.h>void test1(int no){ printf("*****************************************/n"); printf("
Win95 + WinNT + Linux multiboot using LILO mini-HOWTOnull null 〖 返回〗〖轉寄〗
ALSA,即Advanced Linux Sound Architecture。它是一款優秀的音效卡驅動,能驅動大部分的音效卡,而且支援多音頻流,支援多音效卡等等。使我們能在linux下享受到美妙的音樂。 1.確認有無核心源碼包到 /usr/src目錄下看看是否有一個名字類似linux-2.x.x-x的目錄,100多MB。如果沒有就得自己裝一個。發行版光碟片中帶有。 2. 做一個源碼包的連結。ln -s linux-2.x.x-x linux
一些前言 作者前言 知識從哪裡來 為什麼撰寫本文檔 為什麼需要彙編級調試 ***第一部分:基礎知識*** 總綱:核心世界的陷阱 源碼閱讀的陷阱 代碼調試的陷阱 原理理解的陷阱 建立調試環境 發行版的選擇和安裝 安裝交叉編譯工具 bin工具集的使用 qemu的使用 initrd.img的原理與製作 x86虛擬調試環境的建立 arm虛擬調試環境的建立 arm開發板調試環境的建立 gdb基礎 基本命令 gdb之gui
platform device註冊順序 在linux2.6裝置模型中,關心匯流排,裝置,驅動這三個實體,匯流排將裝置和驅動綁定,在系統每註冊一個裝置的時候,會尋找與之匹配的驅動。相反,在系統每註冊一個驅動的時候,尋找與之匹配的裝置,匹配是由匯流排來完成的。 一個現實的Linux 裝置和驅動通常都需要掛接在一種匯流排上,對於本身依附於PCI、USB、I2C、SPI 等的裝置而言,這自然不是問題,但是在嵌入式系統裡面,SoC
ALSA中的鏈表結構 在ALSA中設計到很多的鏈表結構,理解這些鏈表能更好的理解ALSA a) card->devices
本培訓以自學為主。 本培訓所使用的教材為中國電力出版社出版的《LINUX裝置驅動程式》第三版,學員自備教材。 參加本培訓的學員按照講師所要求的計劃閱讀此書,並且獨自完成書中或者講師額外布置的作業。 學員可以通過QQ群,email的方式和講師交流。 一般每周安排2次QQ群的交流。每周三,六的晚上20點到22點。 學員的疑問,將會以郵件或其他方式發送給學員。 並且blog中,將有記錄。 視培訓情況決定是否開展,嵌入式LINUX驅動開發的實戰階段培訓。
前一段時間看了《深入理解Linux核心》對其中的記憶體管理部分花了不少時間,但是還是有很多問題不是很清楚,最近又花了一些時間複習了一下,在這裡記錄下自己的理解和對Linux中記憶體管理的一些看法和認識。