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

正文內(nèi)容

嵌入式linux系統(tǒng)的搭建與配置過程(參考版)

2025-04-12 11:41本頁面
  

【正文】 北京:電子工業(yè)出版【4】馬忠梅馬廣云徐英慧天澤編著.ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ).北京航空航天大學(xué)出版社,【5】杜春雷編著.ARM體系結(jié)構(gòu)與編程.清華大學(xué)出版社,【6】6陳文智等編著.嵌入式系統(tǒng)開發(fā)原理與實(shí)踐.清華大學(xué)出版社,【7】胡曉軍張愛成編著.USB接口開發(fā)技術(shù).西安電子科技大學(xué)出版社,2005.5,l~74【8】皺思軼編著.嵌入式Linux設(shè)計(jì)與應(yīng)用.清華大學(xué)出版社,2002.1,241—282【9】T_學(xué)龍,嵌入式Linux系統(tǒng)設(shè)計(jì)與應(yīng)用.清華大學(xué)出版社,2001.8,243~358【10】孫天澤袁文菊張海峰編著.嵌入式設(shè)計(jì)及Linux驅(qū)動(dòng)開發(fā)指南.基于ARM9處理器,電子工業(yè)出版社。這個(gè)模板是以以太網(wǎng)設(shè)備為對(duì)象的,以太網(wǎng)的處理在Linux系統(tǒng)里有特殊“待遇”,所以如果不是以太網(wǎng)設(shè)備,有些細(xì)節(jié)上要注意,主要在初始化程序里。我編寫驅(qū)動(dòng)程序時(shí)參閱的主要資料包括:Linux內(nèi)核源代碼 by Michael K. Johnson by Ori Pomerantz by olly in BBS可以選擇一個(gè)模板作為開始,內(nèi)核源代碼里有一個(gè)網(wǎng)絡(luò)驅(qū)動(dòng)程序的模板,drivers/net/。這就是開放源代碼的好處。編譯好的目標(biāo)文件放在/lib/modules/,在啟動(dòng)文件里用insmod加載。編譯驅(qū)動(dòng)程序用gcc,主要命令行參數(shù)DKERNEL DMODULE。還有kerneld自動(dòng)加載模塊。Cleanup_module()在驅(qū)動(dòng)程序被卸載時(shí)調(diào)用,清除占用的資源,調(diào)用unregister_netdev()。 Init_module()在加載此模塊時(shí)調(diào)用,在這個(gè)函數(shù)里可以register_netdev()注冊(cè) 設(shè)備。調(diào)試驅(qū)動(dòng)程序可以用module方式加載?!≌{(diào)試很多Linux的驅(qū)動(dòng)程序都是編譯進(jìn)內(nèi)核的,形成一個(gè)大的內(nèi)核文件。另外高層協(xié)議也會(huì)有一個(gè)最大的等待處理的數(shù)據(jù)量。接收流控也分兩個(gè)層次。發(fā)送時(shí)另一個(gè)方面的流控是更高層協(xié)議的發(fā)送窗口(TCP協(xié)議里就有發(fā)送窗口)。實(shí)際上如果看源碼可以知道,設(shè)置了devtx_queue_len并不是為緩存這些數(shù)據(jù)申請(qǐng)了空間。每個(gè)設(shè)備數(shù)據(jù)結(jié)構(gòu)里都有一個(gè)參數(shù)devtx_queue_len,這個(gè)參數(shù)標(biāo)明發(fā)送時(shí)最多緩存的數(shù)據(jù)包?!×髁靠刂?flow control)網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送和接收都需要流量控制。但是遍循內(nèi)核源碼中的網(wǎng)絡(luò)驅(qū)動(dòng)程序,似乎沒有這樣處理的。系統(tǒng)會(huì)一直嘗試重發(fā)。2M線路只有10%不到的使用率。但在具體實(shí)現(xiàn)我的驅(qū)動(dòng)程序時(shí)發(fā)現(xiàn),這樣的處理系統(tǒng)好象并不能及時(shí)地知道硬件已經(jīng)空閑了,即在mark_bh()以后,系統(tǒng)要等一段時(shí)間才會(huì)接著發(fā)送。一般對(duì)發(fā)送忙的處理在前面設(shè)備的發(fā)送方法(hard_start_xmit)里已經(jīng)描述過, 即如果發(fā)送忙,置tbusy為1。 硬件發(fā)送忙時(shí)的處理主CPU的處理能力一般比網(wǎng)絡(luò)發(fā)送要快,所以經(jīng)常會(huì)遇到系統(tǒng)有數(shù)據(jù)要發(fā),但 上一包數(shù)據(jù)網(wǎng)絡(luò)設(shè)備還沒發(fā)送完。一 般dev_id就設(shè)為device結(jié)構(gòu)本身。需要注意所有用到這個(gè)中斷的設(shè)備在調(diào)用request_irq()都必須設(shè)置這個(gè)屬 性。系統(tǒng)提供的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)。 | Tail room(free) | After alloc_skb() | Head room | Tail room(free) | After skb_reserve() | Head room | Data area | Tail room(free) | After skb_put() |Head| skb_ | Data | Tail room(free) | |room| push | | | | | Data area | | After skb_push() | Head | skb_ | Data area | Tail room(free) | | | pull | | | | Head room | | | After skb_pull() 中斷共享Linux系統(tǒng)運(yùn)行幾個(gè)設(shè)備共享同一個(gè)中斷。即把Head room中的空間移一部分到Data area。見下面的圖。在alloc_skb以后,申請(qǐng)到的sk_buff的緩沖區(qū)都是處于空(free)狀態(tài),有一個(gè)tail指針指向free空間,實(shí)際上開始時(shí)tail就指向緩沖區(qū)頭。這個(gè)空間一般是用做下一層協(xié)議的頭空間的。一些協(xié)議(如TCP)對(duì)沒按順序到達(dá)的數(shù)據(jù)進(jìn)行重組時(shí)用到skb_insert()和skb_append()。.skb_insert() 在鏈表的某個(gè)元素前插入一個(gè)元素。這也是常用的一個(gè)操作。.skb_queue_head() 在一個(gè)sk_buff鏈表頭放入一個(gè)元素。返回取出的sk_buff,如果鏈表空則返回NULL。.skb_copy()完全復(fù)制一個(gè)sk_buff。.kfree_skb() 釋放一個(gè)sk_buff。.dev_alloc_skb()類似alloc_skb,在申請(qǐng)好緩沖區(qū)后,保留16字節(jié)的幀頭空間。(translated from article written by Alan Cox)常用的方法包括:.alloc_skb() 申請(qǐng)一個(gè)sk_buff并對(duì)它初始化。Sk_buff組織成雙向鏈表的形式,根據(jù)網(wǎng)絡(luò)應(yīng)用的特點(diǎn),對(duì)鏈表的操作主要是刪除鏈表頭的元素和添加到鏈表尾??刂品椒ò垂δ芊譃閮煞N類型。Sk_buff提供一套管理緩沖區(qū)的方法,是Linux系統(tǒng)網(wǎng)絡(luò)高效運(yùn)行的關(guān)鍵。Register_netdev()返回0表示成功,非0不成功。對(duì)以太網(wǎng)這么特別對(duì)待大概和Linux的歷史有關(guān)?;蛘遪ame[0]為空格(space),則系統(tǒng)把你的設(shè)備做為以太網(wǎng)設(shè)備處理。Name指針空(NULL)或者內(nèi)容為39。在register_netdev()時(shí),dev結(jié)構(gòu)一般填寫前面11項(xiàng),即到init,后面的暫時(shí)可以不用初始化。 void unregister_netdev(struct device *dev)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1