
Linux 操作系統(tǒng)和驅(qū)動(dòng)程序運(yùn)行在內(nèi)核空間,應(yīng)用程序運(yùn)行在用戶空間,兩者不能簡單地使用指針傳遞數(shù)據(jù),因?yàn)長inux使用的虛擬內(nèi)存機(jī)制,用戶空間的數(shù)據(jù)可能被換出,當(dāng)內(nèi)核空間使用用戶空間指針時(shí),對(duì)應(yīng)的數(shù)據(jù)可能不在內(nèi)存中。
對(duì)于一個(gè)系統(tǒng)來講,會(huì)有很多的外設(shè),那么這些外設(shè)的管理都是通過CPU完成。那么CPU在這個(gè)過程中是如何找到外設(shè)的呢?
我們知道默認(rèn)外設(shè)I/O資源是不在Linux內(nèi)核空間中的(如sram或硬件接口寄存器等),若需要訪問該外設(shè)I/O資源,必須先將其地址映射到內(nèi)核空間中來,然后才能在內(nèi)核空間中訪問它。Linux內(nèi)核訪問外設(shè)I/O內(nèi)存資源的方式有兩種:動(dòng)態(tài)映射(ioremap)和靜態(tài)映射(map_desc)。
本文介紹了此RFID安檢系統(tǒng)的硬件框架和軟件設(shè)計(jì),實(shí)現(xiàn)了RFID安檢系統(tǒng)基于嵌入式Linux下的串口通信以及數(shù)據(jù)庫的應(yīng)用。最后通過實(shí)驗(yàn)證明并確定了其在速率、穩(wěn)定性方面的可行性,對(duì)于當(dāng)今大多數(shù)RFID安檢系統(tǒng)的開發(fā)具有一定的參考價(jià)值。
視頻監(jiān)控系統(tǒng)一直是監(jiān)控領(lǐng)域中的熱點(diǎn),它以直觀、方便、信息內(nèi)容豐富而在各個(gè)行業(yè)得到廣泛應(yīng)用,如:交通、電力、通信、石油、碼頭、倉庫、金融、政府機(jī)關(guān)企事業(yè)單位辦事窗口,和軍隊(duì)、公安、監(jiān)獄、水利/水廠、民航等要害部門。
很多人喜歡爭論什么什么編程語言好,我認(rèn)為這個(gè)話題如果不限定應(yīng)用范圍,就毫無意義。 每種編程語言必然有其優(yōu)點(diǎn)和缺點(diǎn),這也決定了它有適合的應(yīng)用場(chǎng)景和不適合的應(yīng)用場(chǎng)景。現(xiàn)代軟件行業(yè),想一門編程語言包打天下是不現(xiàn)實(shí)的。這中現(xiàn)狀也造成了一種現(xiàn)象,一個(gè)程序員往往要掌握多種編程語言。
對(duì)于初學(xué)者來說,gzip 工具主要用于壓縮或者展開文件。解壓時(shí),在 gzip 命令后添加 -d 選項(xiàng)即可,使用示例如下: gzip -d [compressed-file-name]
學(xué)習(xí)如何在 Linux 終端使用命令行工具 speedtest 測(cè)試網(wǎng)速,或者僅用一條 python 命令立刻獲得網(wǎng)速的測(cè)試結(jié)果。 我們都會(huì)在連接到一個(gè)新的網(wǎng)絡(luò)或者 WIFI 的時(shí)候去測(cè)試網(wǎng)絡(luò)帶寬。 為什么不用我們自己的服務(wù)器!下面將會(huì)教你如何在 Linux 終端測(cè)試網(wǎng)速。
Linux的同步機(jī)制從2.0到2.6以來不斷發(fā)展完善。從最初的原子操作,到后來的信號(hào)量,從大內(nèi)核鎖到今天的自旋鎖。這些同步機(jī)制的發(fā)展伴隨Linux從單處理器到對(duì)稱多處理器的過渡。 伴隨著從非搶占內(nèi)核到搶占內(nèi)核的過度。Linux的鎖機(jī)制越來越有效,也越來越復(fù)雜。
嵌入式Linux設(shè)備驅(qū)動(dòng)開發(fā)之驅(qū)動(dòng)分層/分離思想 我們?cè)趯W(xué)習(xí)I2C、USB、SD驅(qū)動(dòng)時(shí),有沒有發(fā)現(xiàn)一個(gè)共性,就是在驅(qū)動(dòng)開發(fā)時(shí),每個(gè)驅(qū)動(dòng)都分層三部分,由上到下分別是: 1、XXX 設(shè)備驅(qū)動(dòng) 2、XXX 核心層 3、XXX 主機(jī)控制器驅(qū)動(dòng)
互斥量從本質(zhì)上說就是一把鎖, 提供對(duì)共享資源的保護(hù)訪問。
微軟首次發(fā)布了自己的定制 Linux 內(nèi)核和發(fā)行版。在舊金山舉行的新聞發(fā)布會(huì)上,微軟宣布了 針對(duì)物聯(lián)網(wǎng)設(shè)備的解決方案 Azure Sphere。
Linux支持多種文件系統(tǒng),包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,為了對(duì)各類文件系統(tǒng) 進(jìn)行統(tǒng)一管理,Linux引入了虛擬文件系統(tǒng)VFS(Virtual File System),為各類文件系統(tǒng)提供一個(gè)統(tǒng)一的操作界面和應(yīng)用編程接口。
一直以來寫linux驅(qū)動(dòng),都是按照固定格式,定義一個(gè)初始化和退出函數(shù),書上告訴我這兩個(gè)函數(shù)會(huì)被調(diào)用,至于為什么會(huì)被調(diào)用,在哪調(diào)用,一直不清楚。
在嵌入式系統(tǒng)中,延時(shí)是經(jīng)常需要使用的一種手段,延時(shí)的方法可以通過使用類似于\"NOP\"的指令來實(shí)現(xiàn),但是如果延時(shí)的時(shí)間比較長,如果使用太多的\"NOP\" 指令則會(huì)消耗過多的儲(chǔ)存空間,最好的方法是使用子程序(匯編語言中)或子函數(shù)(高級(jí)語言中)。當(dāng)然這里并不打算討論如果使用定時(shí)器中斷來實(shí)現(xiàn)延時(shí)。下面就在C語言中使用子函數(shù)實(shí)現(xiàn)延時(shí)的幾個(gè)問題做些討論,當(dāng)然討論高級(jí)語言的延時(shí)就需要考慮編譯器和處理器,這里為了討論的方便,而且不失一般性,可以用標(biāo)準(zhǔn)51單片機(jī)作處理器和uVision2作為編譯環(huán)境,晶振為12MHz
在Linux中,先后出現(xiàn)了音頻設(shè)備的兩種框架OSS和ALSA,本節(jié)將在介紹數(shù)字音頻設(shè)備及音頻設(shè)備硬件接口的基礎(chǔ)上,展現(xiàn)OSS和ALSA驅(qū)動(dòng)的結(jié)構(gòu)。
SELinux帶給Linux的主要價(jià)值是:提供了一個(gè)靈活的,可配置的MAC機(jī)制。
在Linux中,僅等待CPU時(shí)間的進(jìn)程稱為就緒進(jìn)程,它們被放置在一個(gè)運(yùn)行隊(duì)列中,一個(gè)就緒進(jìn)程的狀 態(tài)標(biāo)志位為TASK_RUNNING。一旦一個(gè)運(yùn)行中的進(jìn)程時(shí)間片用完, Linux 內(nèi)核的調(diào)度器會(huì)剝奪這個(gè)進(jìn)程對(duì)CPU的控制權(quán),并且從運(yùn)行隊(duì)列中選擇一個(gè)合適的進(jìn)程投入運(yùn)行。
當(dāng)一個(gè)進(jìn)程結(jié)束了運(yùn)行或在半途中終止了運(yùn)行,那么內(nèi)核就需要釋放該進(jìn)程所占用的系統(tǒng)資源。這包括進(jìn)程運(yùn)行時(shí)打開的文件,申請(qǐng)的內(nèi)存等。
初學(xué)時(shí)最好從命令行入手,這樣可以熟悉從編寫程序、編譯、調(diào)試和執(zhí)行的整個(gè)過程。編寫程序可以用vi或其它編輯器編寫。