一直以來寫linux驅動,都是按照固定格式,定義一個初始化和退出函數(shù),書上告訴我這兩個函數(shù)會被調用,至于為什么會被調用,在哪調用,一直不清楚。
在嵌入式系統(tǒng)中,延時是經(jīng)常需要使用的一種手段,延時的方法可以通過使用類似于\"NOP\"的指令來實現(xiàn),但是如果延時的時間比較長,如果使用太多的\"NOP\" 指令則會消耗過多的儲存空間,最好的方法是使用子程序(匯編語言中)或子函數(shù)(高級語言中)。當然這里并不打算討論如果使用定時器中斷來實現(xiàn)延時。下面就在C語言中使用子函數(shù)實現(xiàn)延時的幾個問題做些討論,當然討論高級語言的延時就需要考慮編譯器和處理器,這里為了討論的方便,而且不失一般性,可以用標準51單片機作處理器和uVision2作為編譯環(huán)境,晶振為12MHz
在Linux中,先后出現(xiàn)了音頻設備的兩種框架OSS和ALSA,本節(jié)將在介紹數(shù)字音頻設備及音頻設備硬件接口的基礎上,展現(xiàn)OSS和ALSA驅動的結構。
SELinux帶給Linux的主要價值是:提供了一個靈活的,可配置的MAC機制。
在Linux中,僅等待CPU時間的進程稱為就緒進程,它們被放置在一個運行隊列中,一個就緒進程的狀 態(tài)標志位為TASK_RUNNING。一旦一個運行中的進程時間片用完, Linux 內核的調度器會剝奪這個進程對CPU的控制權,并且從運行隊列中選擇一個合適的進程投入運行。
當一個進程結束了運行或在半途中終止了運行,那么內核就需要釋放該進程所占用的系統(tǒng)資源。這包括進程運行時打開的文件,申請的內存等。
初學時最好從命令行入手,這樣可以熟悉從編寫程序、編譯、調試和執(zhí)行的整個過程。編寫程序可以用vi或其它編輯器編寫。
如果從應用層的應用開發(fā)出發(fā),建議先熟悉API函數(shù)。如果從應用層的界面開發(fā)出發(fā),則建議學習Qt,WinCE或Android等。
gcc是C編譯器,g++是C++編譯器,linux下cc一般是一個符號連接,指向gcc;gcc和g++都是GUN(組織)的編譯器。而CC則一般是makefile里面的一個名字,即宏定義,嘿,因為Linux/Unix都是大小寫敏感的系統(tǒng),這點一定要注意。
隨著GPS(全球定位系統(tǒng))和便攜移動設備的飛速發(fā)展,各種各樣以GPS為基礎的便攜式定位系統(tǒng)相繼出現(xiàn).嵌入式Linux以其開放性、安全性、健壯性和 穩(wěn)定性越來越成為各種便攜設備的主要開發(fā)平臺,因此GPS模塊與嵌入式Linux平臺之間的通信成了實現(xiàn)定位系統(tǒng)的基礎.
視頻監(jiān)控系統(tǒng)一直是監(jiān)控領域中的熱點,它以直觀、方便、信息內容豐富而在各個行業(yè)得到廣泛應用,如:交通、電力、通信、石油、碼頭、倉庫、金融、政府機關企事業(yè)單位辦事窗口,和軍隊、公安、監(jiān)獄、水利/水廠、民航等要害部門。
由于很多人總問這個問題,所以這里做一個總結供大家參考。這里必須先說明,以下的步驟都是針對Linux系統(tǒng)的,并不面向WinCE。
學習Linux,內核常識都有哪些?
Linux設備驅動的難點在于復雜的,龐大的結構。理清楚結構和一個結構與另外結構的關系,以及l(fā)inux設備驅動的層次性和層次封裝抽象性。對于linux設備驅動的結構有點像C++中的類,而層次與抽象有點像繼承的關系。
看到很多人提問非科班該如何學習編程,其實科班也基本靠自學。有句話叫“師傅領進門修行靠個人”,再厲害的老師能教你的東西都是很有限的,真正的修行還是要靠自己。我本科是學數(shù)學的,雖然研究生是計算機專業(yè),但研究生往往是做研究工作,并不會接觸編程這么基本的東西,關于編程相關我都是靠自學。對于Android這一塊,是參加工作還開始接觸,開始自己學習的。
Android是Google公司開發(fā)的基于Linux平臺的開源手機操作系統(tǒng),它包括操作系統(tǒng)、中間件、用戶界面和應用程序,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專利權障礙,并由Google公司于2007年11月5日正式發(fā)布。同時,Google公司組建了一個開放手機聯(lián)盟,這個聯(lián)盟由中國移動、摩托羅拉、高通、宏達電和T-Mobile等在內的全球30多家技術和無線應用的領軍企業(yè)組成,Google通過與運營商、設備制造商、開發(fā)商和其他有關各方結成深層次的合作伙伴關系,希望借助建立標準化、開放式的移動電話軟件平臺,在移
進程是UNIX操作系統(tǒng)抽象概念中最基本的一種,其中涉及進程的定義以及相關的概念,比如線程;它們在內核中如何被列舉?如何創(chuàng)建?最終又如何消亡?讓我們通過下面的分析,一步步解開內核進程的神秘面紗。
Linux中可以支持多種文件系統(tǒng),而且支持各種文件系統(tǒng)之間相互訪問,這是因為有一個虛擬文件系統(tǒng)。虛擬文件系統(tǒng)也叫虛擬文件系統(tǒng)轉換(Virtual Filesystem Switch,簡稱VFS),之所以說它虛擬,是因為該文件系統(tǒng)的各種數(shù)據(jù)結構都是隨時建立或刪除的,在盤上并不永久存在,只能存放在內存中。也就是說,只有VFS是無法工作的,因為它不是真正的文件系統(tǒng)。
這段時間看Linux內核源碼的時候,經(jīng)常碰到vdso這個東西(像在Feature-fixup中,獲取時間等操作時),網(wǎng)上搜了一下,才知道了含義,原來這是Linux為了解決和glibc兼容而想出的絕招啊。下面是從Fedora中文郵件列表轉過來的,和大家分享一下。
本文主要嘗試解釋兩個問題:1. swappiness的確切含義是什么,它對內核進行頁回收機制的影響。2. swappiness設置成0,為什么系統(tǒng)仍然可能會有swap發(fā)生。