LINUX裝置驅動學習(十)–非同步通知

非同步通知:使用非同步通知機制可以提高查詢裝置的效率。通過使用非同步通知,應用程式可以在資料可用時收到一個訊號,而無需不停地輪詢。設定非同步通知的步驟(針對應用程式層來說的):1.首先制定一個進程作為檔案的屬主。通過使用fcntl系統調用執行F_SETOWN命令時,屬主進程的ID號就會儲存在filp->f_owner中,目的是為了讓核心知道應該通知哪個進程。2.在裝置中設定FASYNC標誌。通過fcntl調用的F_SETFL來完成。設定晚以上兩步後,輸入檔案就可以在新資料到達時請求發送一個

linux的NFS詳細配置方法

網路檔案系統(NFS,Network File System)是一種將遠程主機上的分區(目錄)經網路掛載到本地系統的一種機制,通過對網路檔案系統的支援,使用者可以在本地系統上像操作本地分區一樣來對遠程主機的共用分區(目錄)進行操作。  在嵌入式Linux 的開發過程中,開發人員需要在Linux 伺服器上進行所有的軟體開發,交叉編譯後,通用FTP 方式將可執行檔下載到嵌入式系統運行,但這種方式不但效率低下,且無法實現線上的調試。因此,可以通過建操作Linux

linux交叉編譯配置和檔案系統配置

1. 在redhat系統的profile檔案中,有如下內容:#path manipulationif [`id -u` = 0];then      pathmunge  /sbin      pathmunge  /usr/sbin      pathmunge  /usr/local/sbin#   pathmunge  /opt/EmbedSky/crosstool_3.4.5/gcc-3.4.5-glibc-2.3.6/arm-linux/bin      pathmunge 

linux ppp GPRS撥號問題

我3,4年前在一塊ARM板子上弄通過,由於嵌入式上很多要自己做,redhat上會更簡單,也更容易,如果做嵌入式,你應該先在PC上弄通,在移植到目標板上,大致給你說說,希望對你有所協助 1. 配置kernel使它支援如下PPP選項: PPP(point-to-point) support PPP multilink support(EXPERIMENTAL) PPP support for async serial prots PPP support for sync tty ports PPP

Linux核心線程之父pid=2的kthreadd線程

轉自http://embexperts.com/viewthread.php?tid=30因為所涉及的話題在代碼的實現上是體系架構相關的,所以本貼基於ARM架構。這裡所謂的核心線程,實際上是由kernel_thread函數建立的一個進程,有自己獨立的task_struct結構並可被調度器調度,這種進程的特殊之處在於它只在核心態運行。在Linux source code中, init/main.c中的rest_init()中就開始調用kernel_thread來構造核心線程了,比如:kernel_

基於ARM 的Linux 的啟動分析報告——ARM+Linux的啟動分析(3)

(9) 調用檔案misc.c的函數decompress_kernel(),解壓核心於緩衝結束的地方(r2地址之後)。此時各寄存器值有如下變化:r0為解壓後kernel的大小r4為kernel執行時的地址r5為解壓後kernel的起始地址r6為CPU類型值(processor ID)r7為系統類別型值(architecture ID)(10) 將reloc_start代碼拷貝之kernel之後(r5+r0之後),首先清除緩衝,而後執行reloc_start。(11)

Linux核心構建系統之-Kconfig文檔的作用

2.6核心的源碼樹目錄下一般都會有兩個文文:Kconfig和Makefile。分布在各目錄下的Kconfig構成了一個分布式的核心設定資料庫,每個Kconfig分別描述了所屬目錄源檔案相關的核心配置菜單。在核心配置make

linux裝置驅動學習(九)–進階字元裝置驅動

進階休眠 執行步驟:1.將進程置於休眠的第一個步驟是分配並初始化一個wait_queue_t結構,然後加入到對應的等待序列。2.設定進城的狀態,將其標記問休眠。TASK_RUNNING表示進程可運行,儘管進程並不一定在任何給定時間都運行在某個處理器上。TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE對應兩種休眠狀態。在2.6核心中,通常不需要驅動程式代碼來操作進城狀態,但是如果需要:void set_current_state(int

linux裝置驅動學習(五)

今天學習並發與競態一 並發及其管理競態通常是作為對資源的共用訪問結果而產生的。在設計自己的驅動程式時,第一個要記住的規則是:只要可能,就應該避免資源的共用。若沒有並發訪問,就不會有競態。這種思想的最明顯的應用是避免使用全域變數。但是,資源的共用是不可避免的 ,如硬體資源本質上就是共用、指標傳遞等等。資源共用的硬性規則:(1)在單個執行線程之外共用硬體或軟體資源的任何時候,因為另外一個線程可能產生對該資源的不一致觀察,因此必須顯示地管理對該資源的訪問。--訪問管理的常見技術成為“鎖定”或者“互斥”

linux的高端記憶體映射

我們在前面分析過,在linux記憶體管理中,核心使用3G—>4G的地址空間,總共1G的大小。而且有一部份用來做非連續空間的物理映射(vmalloc).除掉這部份空間之外,只留下896M大小供核心映射到物理地址。通常,我們把物理地址超過896M的地區稱為高端記憶體。核心怎樣去管理高端記憶體呢?今天就來分析這個問題。核心有三種方式管理高端記憶體。第一種是非連續映射。這我們在前面的vmalloc中已經分析過了,在vmalloc中請求頁面的時候,請求的是高端記憶體,然後映射到VMALLOC_STA

linux裝置學習學習(一)

地球人都知道LDD這書經典,但一直沒時間看(貌似是借口)現在開始啃,希望自己能堅持下去。God bless me!要看到核心的列印資訊,可以先執行下面的語句:echo 8 > /proc/sys/kernel/printk這裡,有blog不錯,可以學習下http://blog.chinaunix.net/u1/34474/showart_404278.html由於驅動程式可能同時被不同的程式並發訪問,解決並發的一些方法:1.可以在裝置上實現獨立於硬體功能的記憶體映射。2.

linux核心對記憶體的管理和使用

首先當程式需要一塊不存在的記憶體時(也即頁表項中已經標記出相應的頁面不在記憶體中),CPU通過80386的頁錯誤異常中斷來實現。當一個進程引用一個不存在的記憶體頁面時就會產生一個頁錯誤中斷,並把引起中斷的線性地址儲存在CR2寄存器中(便於高效快速存取),因此處理該中斷的程式就可以知道頁異常的確切地址,從而可以把進程要求的頁面從二級儲存空間(比如硬碟)載入到記憶體中。如果此時實體記憶體已經被佔用,則可以藉助二級空間的一部分作為緩衝區把記憶體中暫時不使用的頁面交換到二級儲存空間中,然後把進程需求的頁

基於ARM 的Linux 的啟動分析報告——ARM+Linux的啟動分析(1)

基於ARM 的Linux 的啟動分析報告摘要:本文主要分析基於ARM 的Linux-2.2.26 核心啟動過程。將首先從/arch/arm/Makefile著手,介紹三種不同的啟動方案,再剖析典型的壓縮核心zImage啟動方案的代碼結構,最後將詳細分析這種方案的啟動過程,直到調用start_kernel()為止。1、Linux 核心的啟動方案:由/arch/arm/Makefile的代碼可以看出,主要有三種啟動方案,分別是:echo '* zImage - Compressed kernel

四步完成Linux ppp撥號

在一些系統中,我們可以進行一下ppp撥號設定的實驗。那麼這裡我們就重點講解一下Liod平台的ppp撥號(linux)的內容和過程。硬體平台:億道Liod平台(基於PXA270),作業系統:嵌入式Linux。下面主要介紹一下如何在Liod平台上進行ppp撥號,實現GPRS上網.第一步:如果核心不支援ppp撥號,則要重新編譯核心,添加對ppp的支援,<*> PPP (point-to-point protocol) support

Linux核心設定檔.config與Makefile

轉載自:http://blog.csdn.net/lchjustc/article/details/6925545 ==========================================Makefile 初探 ==========================================Linux的核心設定檔有兩個,一個是隱含的.config檔案,嵌入到主Makefile中;另一個是include/linux/autoconf.h,嵌入到各個c源檔案中,它們由make

Gentoo Linux核心配置(五)

Device Drivers ---> Generic Driver Options --->//保持預設<*> Connector - unified userspace <-> kernelspace linker ---> //統一的使用者空間和核心空間連接器,工作在netlink socket協議的頂層.不確定可以不選連接器--使用者空間<-> 核心空間統一串連[*] Report process events to

Gentoo Linux核心配置(二)

[*] Enable loadable module support  ---> [ ]   Forced module loading //允許強制載入模組,不選[*]   Module unloading //允許卸載已經載入的模組,選上比較好[ ]   Forced module unloading //這個選項能強行卸載模組,即使核心認為這樣並不安全,也就是說你可以把正在使用中的模快卸載掉。如果你不是核心開發人員或者骨灰級的玩家,不要選擇這個選項[ ]   Module

arm linux 從入口到start_kernel 程式碼分析——head.S分析——7end

arm linux 從入口到start_kernel 程式碼分析 - 7(end)(2008-07-30 16:08:30)轉載標籤:it分類:kernel 6. 切換資料        在 arch/arm/kernel/head-common.S 中:00014:  .type __switch_data, %object00015: __switch_data:00016:  .long __mmap_switched00017:  .long __data_loc   @ r400018

linux下基於ARM的嵌入式開發環境的建立

 當在虛擬機器中成功安裝ubuntu10.4後(1)開啟終端 sudo -i  提示輸入密碼 然後以root身份登入(2)安裝G++    apt-get install g++ pentium-builder(3)安裝與 windows系統進行互動的軟體  apt-get install samba smbfs(4)smbclient //192.168.1.4/share -U yanzi  其中192.168.1.4為windows系統的IP

Linux核心啟動過程和Bootloader(總述)

 1.Linux核心啟動過程概述    一個嵌入式 Linux 系統從軟體角度看可以分為四個部分:引導載入程式(Bootloader),Linux 核心,檔案系統,應用程式。其中 Bootloader是系統啟動或複位以後執行的第一段代碼,它主要用來初始化處理器及外設,然後調用 Linux 核心。Linux 核心在完成系統的初始化之後需要掛載某個檔案系統做為根檔案系統(Root Filesystem)。根檔案系統是 Linux 系統的核心組成部分,它可以做為Linux 系統中檔案和資料的儲存地區,

總頁數: 3662 1 .... 946 947 948 949 950 .... 3662 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.