Time of Update: 2018-12-03
4 匯流排驅動4.1 概述I2C匯流排驅動是I2C適配器的軟體實現,提供I2C適配器與從裝置間完成資料通訊的能力,比如起始,停止,應答訊號和master_xfer的實現函數。I2C匯流排驅動由i2c_adapter和i2c_algorithm來描述 4.2
Time of Update: 2018-12-03
3 i2c-dev3.1 概述之前在介紹I2C子系統時,提到過使用i2c-dev.c檔案在應用程式中實現我們的I2C從裝置驅動。不過,它實現的是一個虛擬,臨時的i2c_client,隨著裝置檔案的開啟而產生,並隨著裝置檔案的關閉而撤銷。I2c-dev.c針對每個I2C適配器產生一個主裝置號為89的裝置檔案,實現了i2c_driver的成員函數以及檔案操作介面,所以i2c-dev.c的主題是”i2c_driver成員函數+字元裝置驅動”。 3.2
Time of Update: 2018-12-03
網上找到的getch()函數源碼如下:#include <termios.h>#include <unistd.h>#include <stdio.h>int getch(void) {struct termios tm, tm_old;int fd = STDIN_FILENO, c;if(tcgetattr(fd, &tm) < 0)return -1;tm_old =
Time of Update: 2018-12-03
2 I2C子系統2.1 LinuxI2C子系統架構在核心中已經提供I2C子系統,所以在做I2C驅動之前,就必須要熟悉該子系統。2.2 三大組成部分1、I2C核心(i2c-core)I2C核心提供了I2C匯流排驅動和裝置驅動的註冊、登出方法,I2C通訊方法(algorithm)上層的、與具體適配器無關的代碼以及探測裝置、檢測裝置地址的上層代碼等。 2、I2C匯流排驅動(I2Cadapter/Algo
Time of Update: 2018-12-03
linux系統中如何通過程式來獲知系統資訊 最近在做一個項目,遇到要在程式中動態擷取裝置硬體資訊。糾結了我很長時間,今天突然發現原來在linux中有API函數直接就可以實現。對於好東西,當然要和大家share下了。一.uname()函數1.使用uname函數來實現擷取系統資訊1>函數原型#include <sys/utsname.h>int uname(struct utsname
Time of Update: 2018-12-03
6.Gpio-keys6.1 概述l Gpio-keys是基於input子系統實現的一個通用的GPIO按鍵驅動。工程中我們常常會利用它來寫按鍵驅動。 l gpio-keys驅動是基於platform來實現,platform driver(通用的部分)位於drivers/input/keyboard/gpio_keys.c,platform device通常和硬體有關,需要我們在BSP中實現。 6.2 通用驅動部分(platform driver)分析l 初始化和卸載模組static
Time of Update: 2018-12-03
1、main函數參數void main(int argc, char* argv[ ]) 假設程式編譯成為 cpp然後在命令列中輸入./cpp a b這行中有三個字串分別為 "./cpp" "a" "b"則argc為3,即argc是命令列中參數的個數。char *argv[]為一個指像字串的數組argv[0]="./cpp"argv[1]="a"argv[2]="b"即命令列中各各字串儲存在 *argv[]中。2、驅動程式中的ioctl與應用程式中的ioctl如何相關聯參考《write的秘密》:
Time of Update: 2018-12-03
5 客戶驅動5.1 概述I2C客戶驅動是對I2C從裝置的實現,一個具體的I2C客戶驅動包括兩個部分:一部分是i2c_driver,用於將裝置掛接於i2c匯流排;另一部分是裝置本身的驅動。I2C客戶驅動程式主要由i2c_driver和i2c_client來描述。 5.2 執行個體源碼分析好了,我們來深入瞭解客戶驅動代碼的實現,drivers/misc/eeprom/at24.c檔案支援大多數I2C介面的eepromI2c_driver實現static struct i2c_driver at24_
Time of Update: 2018-12-03
本文分析基於核心Linux
Time of Update: 2018-12-03
測試核心版本:Linux Kernel 2.6.35----Linux Kernel 3.2.1原創作品,轉載請標明http://blog.csdn.net/yming0221/article/details/7572382更多請查看專欄http://blog.csdn.net/column/details/linux-kernel-net.html作者:閆明知識基礎:本防火牆的開發基於對Linux核心網路棧有個良好的概念,本人對網路棧的分析是基於早期版本(Linux
Time of Update: 2018-12-03
主機平台:Gentoo Linux 11.2 with linux kernel 3.0.6硬體平台:FL2440(S3C2440)with linux kernel 2.6.35原創作品,轉載請標明出處http://blog.csdn.net/yming0221/article/details/72113961、首先下載DNW for linux http://download.csdn.net/source/10111402、解壓檔案、3、編譯主機的USB驅動make -C
Time of Update: 2018-12-03
硬體平台:FL2440核心版本:2.6.28主機平台:Ubuntu 11.04核心版本:2.6.39原創作品,轉載請標明出處http://blog.csdn.net/yming0221/article/details/6584285首先修改核心源碼/arch/arm/mach-s3c2410/mach-smdk2410.c添加紅色字型部分static struct platform_device *smdk2410_devices[] __initdata = {&s3c_device_
Time of Update: 2018-12-03
Google開發人員社區GDG(原Google技術使用者組GTUG),將於6月15日(周六)下午1:30-5:00,在北京翠宮飯舉辦一場開源Linux開發經驗及典型應用案例分享講座,培訓講座中將通過三個專題與眾多開源Linux技術愛好者一起分享嵌入式Linux及Android開發的進階應用程式進階技術,以引領大家進入Linux開發進階應用程式領域。 活動限額300名,先到先得!我們將根據註冊的先後順序、選擇場地能夠容納的人數給您發參加講座的確認信。若超出場地容納限制,我們會邀請這次不能來
Time of Update: 2018-12-03
基於Linux的多播編程一.單播,廣播和多播1.單播用於兩個主機之間的端對端通訊,廣播用於一個主機對整個區域網路上所有主機上的資料通訊。單播和廣播是兩個極端,要麼對一個主機進行通訊,要麼對整個區域網路上的主機進行通訊。實際情況下,經常需要對一組特定的主機進行通訊,而不是整個區域網路上的所有主機,這就是多播的用途。2.多播的概念:1>多播,也稱為“組播”,將區域網路中同一業務類型主機進行了邏輯上的分組,進行資料收發的時候其資料僅僅在同一分組中進行,其他的主機沒有加入此分組不能收發對應的資料。
Time of Update: 2018-12-03
10.Platform10.1 overviewl 一個現實的Linux裝置和驅動通常都需要掛接在一種匯流排上,對於本身依附於PCI、USB、IIC、SPI等的裝置而言,這自然不是問題,但是在嵌入式系統中,SoC系統中整合的獨立的外設控制器,掛接在SoC記憶體空間的外設(IIC,RTC,SPI,LCD,看門狗)等卻不依附於此類匯流排。基於這一背景,Linux發明了一種虛擬匯流排,稱為platform匯流排,相應的裝置稱為platformdevice,而驅動稱為platform driver。
Time of Update: 2018-12-03
ARM-LINUX下一些常用庫的移植 2010-04-28 10:51:47| 分類:arm-linux | 標籤:|字型大小大中小 訂閱一些庫在各個項目經常重用.如jpeg,freetype,iconv 等.每次大型項目均會反覆重用.因此按照原來項目規範,一般都放在項目libs目錄下,但後來發現,每個項目都做重複操作.也完全沒有必要.因為現在是將其歸綱到一個comm_lib公用資訊. 以下是常用庫的ARM-Linux移植,我是放在/home/hxy/common_lib
Time of Update: 2018-12-03
驅動程式:/*whjled.c*/#include<mach/regs-gpio.h>#include <mach/hardware.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/mm.h>#include <linux/fs.h>#include
Time of Update: 2018-12-03
在裝置驅動程式中經常會見到和platform相關的欄位,分布在驅動程式的多個角落,這也是2.6核心中比較重要的一種機制,把它原理弄懂,對以後分析驅動程式很有協助:在linux2.6裝置模型中,關心匯流排,裝置,驅動這三個實體,匯流排將裝置和驅動綁定,在系統每註冊一個裝置的時候,會尋找與之匹配的驅動。相反,在系統每註冊一個驅動的時候,尋找與之匹配的裝置,匹配是由匯流排來完成的。一個現實的Linux 裝置和驅動通常都需要掛接在一種匯流排上,對於本身依附於PCI、USB、I2C、SPI
Time of Update: 2018-12-03
Linux上TCP丟失小包不可見的解決 作者:千裡孤行(http://blog.csdn.net/yanghehong) 有網友在做一個Linux上的用戶端碰到這樣的問題: 我們在Linux下開發一個網路用戶端程式(伺服器是不可修改的),不斷向伺服器不定期發送一些很小的包(一般只有幾十位元組),現在出現這種情況:大部分包正常發送,但是當無線Modem斷開的時候,如果這個時候剛好有一個小包,就可能丟失,但在程式中卻顯示已經發送成功,導致丟包。我們分析原因是這樣:1:主程式建立Socket,TCP
Time of Update: 2018-12-03
並行啟動應用程式從而加速 Linux 的引導對於 Linux的最大抱怨(尤其來自開發人員)就是 Linux 的引導速度。預設情況下,Linux 是一個通用的作業系統,可以作為一個開箱即用的客戶機案頭或伺服器使用。由於 Linux 具有很好的靈活性,因此可以用作各種用途的基礎,但對於任何特定的配置來說,尚不是最理想的選擇。本文將向您展示可以提高 Linux 引導速度的一些方法,包括兩種可以對初始化過程進行並行化操作的方法。本文還介紹了如何圖形化地表現引導過程的效能。 對於 GNU/Linux