freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式linux系統(tǒng)的搭建與配置過程(編輯修改稿)

2025-05-06 11:41 本頁面
 

【文章內(nèi)容簡介】 armlinuxgcc v 上面的命令會顯示armlinuxgcc信息和版本: Reading specs from /usr/local/arm/ Configured with :/work/  prefix=/usr/local/arm/ withheaders=/usr/local/arm/ linux/include withlocalprefix=/usr/local/arm/ nls enablethreads=posix enablesymvers=gnu enable__cxa_atexit enable languages=c,c++ enableshared enablec99 enablelonglong Thread model: posix gcc version World程序,測試交叉工具鏈 寫下下面的Hello World程序, include int main() { printf(Hello World!/n)。 return 0。 }執(zhí)行下面的命令: armlinuxgcc o hello 修改環(huán)境變量這一步修改/etc/profile文件在path中添加armlinuxgcc路徑if [ `id u` eq 0 ]。 then PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/arm/else PATH=/usr/local/bin:/usr/bin:/bin:/usr/gamesfi再source /etc/profile就可以刷新環(huán)境變量所有的Linux網(wǎng)絡(luò)驅(qū)動程序遵循通用的接口。設(shè)計時采用的是面向?qū)ο蟮姆椒?。一個設(shè)備就是一個對象(device 結(jié)構(gòu)),它內(nèi)部有自己的數(shù)據(jù)和方法。每一個設(shè)備的方法被調(diào)用時的第一個參數(shù)都是這個設(shè)備對象本身。這樣這個方法就可以存取自身的數(shù)據(jù)(類似面向?qū)ο蟪绦蛟O(shè)計時的this引用)。 一個網(wǎng)絡(luò)設(shè)備最基本的方法有初始化、發(fā)送和接收。|deliver packets   |  |receive packets queue| |(dev_queue_xmit())|  |them(netif_rx()) |      | methods and variables(initialize,open,close,hard_xmit,| | interrupt handler,config,resources,status...)             |       |                                   |send to hardware |            |receivce from hardware|              | hardware media | 初始化程序完成硬件的初始化、device中變量的初始化和系統(tǒng)資源的申請。發(fā)送程序是在驅(qū)動程序的上層協(xié)議層有數(shù)據(jù)要發(fā)送時自動調(diào)用的。一般驅(qū)動程序中不對發(fā) 送數(shù)據(jù)進行緩存,而是直接使用硬件的發(fā)送功能把數(shù)據(jù)發(fā)送出去。接收數(shù)據(jù)一般是通過硬件中斷來通知的。在中斷處理程序里,把硬件幀信息填入一個skbuff結(jié)構(gòu)中,然后調(diào)用netif_rx()傳遞給上層處理。 網(wǎng)絡(luò)驅(qū)動程序的基本方法網(wǎng)絡(luò)設(shè)備做為一個對象,提供一些方法供系統(tǒng)訪問。正是這些有統(tǒng)一接口的方法,掩蔽了硬件的具體細節(jié),讓系統(tǒng)對各種網(wǎng)絡(luò)設(shè)備的訪問都采用統(tǒng)一的形式,做到硬件無關(guān)性。下面是最基本的方法。(1) 初始化(initialize)(2)打開(open)(3)關(guān)閉(stop)(4) 發(fā)送(hard_start_xmit)(5) 接收(reception)(6)硬件幀頭(hard_header)(7) 地址解析(xarp)(8) 參數(shù)設(shè)置和統(tǒng)計數(shù)據(jù) 網(wǎng)絡(luò)驅(qū)動程序中用到的數(shù)據(jù)結(jié)構(gòu)最重要的是網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)結(jié)構(gòu)。定義在include/linux/?!〕S玫南到y(tǒng)支持 內(nèi)存申請和釋放include/linux/()和kfree()。用于在內(nèi)核模式下申請和釋放內(nèi)存。 Void *kmalloc(unsigned int len,int priority)。 void kfree(void *__ptr)。與用戶模式下的malloc()不同,kmalloc()申請空間有大小限制。長度是2的整次方??梢陨暾埖淖畲箝L度也有限制。另外kmalloc()有priority參數(shù),通常使用時可以為GFP_KERNEL,如果在中斷里調(diào)用用GFP_ATOMIC參數(shù),因為使用GFP_KERNEL則調(diào)用者可能進入sleep狀態(tài),在處理中斷時是不允許的。 Kfree()釋放的內(nèi)存必須是kmalloc()申請的。如果知道內(nèi)存的大小,也可以用kfree_s()釋放。 request_irq()、free_irq()這是驅(qū)動程序申請中斷和釋放中斷的調(diào)用。在include/linux/。Request_irq()調(diào)用的定義: int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs), unsigned long irqflags, const char * devname, void *dev_id)。irq是要申請的硬件中斷號。在Intel平臺,范圍015。Handler是向系統(tǒng)登記的中斷處理函數(shù)。這是一個回調(diào)函數(shù),中斷發(fā)生時,系統(tǒng)調(diào)用這個函數(shù),傳入的參數(shù)包括硬件中斷號,device id,寄存器值。Dev_id就是下面的request_irq時傳遞給系統(tǒng)的參數(shù)dev_id。Irqflags是中斷處理的一些屬性。比較重要的有SA_INTERRUPT,標明中斷處理程序是快速處理程序(設(shè)置SA_INTERRUPT)還是慢速處理程序(不設(shè)置SA_INTERRUPT)??焖偬幚沓绦虮徽{(diào)用時屏蔽所有中斷。慢速處理程序不屏蔽。還有一個SA_SHIRQ屬性,設(shè)置了以后運行多個設(shè)備共享中斷。Dev_id在中斷共享時會用到。一般設(shè)置為這個設(shè)備的device結(jié)構(gòu)本身或者NULL。中斷處理程序可以用dev_id找到相應(yīng)的控制這個中斷的設(shè)備,或者用irq2dev_map找到中斷對應(yīng)的設(shè)備。 Void free_irq(unsigned int irq,void *dev_id)?!r鐘時鐘的處理類似中斷,也是登記一個時間處理函數(shù),在預(yù)定的時間過后,系
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1