www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]VMware虛擬機+Fedora10, 硬件平臺TQ2440, 內核2.6.30.4最近學習linux I2C驅動, 用劉洪濤老師的測試程序測試內核自帶的驅動, 打開調試語句dev_dbg后(具體參考我的另一篇博客),發(fā)現(xiàn)應用程序對應的驅動程序豁然開朗, 然

VMware虛擬機+Fedora10, 硬件平臺TQ2440, 內核2.6.30.4
最近學習linux I2C驅動, 用劉洪濤老師的測試程序測試內核自帶的驅動, 打開調試語句dev_dbg后(具體參考我的另一篇博客),發(fā)現(xiàn)應用程序
對應的驅動程序豁然開朗, 然后自己添加了一些dev_dbg后, 對于不理解的地方也有了一定的參考提示, 記錄下來與大家分享.
測試程序如下:
-----------------------------------------------------------------------------
/*i2c_test.c
* hongtao_liu
*/
#include
#include
#include
#include
#include
#include
#include
#include
#define I2C_RETRIES 0x0701
#define I2C_TIMEOUT 0x0702
#define I2C_RDWR 0x0707
/*********定義struct i2c_rdwr_ioctl_data和struct i2c_msg,要和內核一致*******/

struct i2c_msg
{
unsigned short addr;
unsigned short flags;
#define I2C_M_TEN 0x0010
#define I2C_M_RD 0x0001
unsigned short len;
unsigned char *buf;
};

struct i2c_rdwr_ioctl_data
{
struct i2c_msg *msgs;
int nmsgs;
/* nmsgs這個數(shù)量決定了有多少開始信號,對于“單開始時序”,取1*/
};

/***********主程序***********/
int main()
{
int fd,ret;
struct i2c_rdwr_ioctl_data e2prom_data;

fd=open("/dev/i2c-0",O_RDWR);
/*
*dev/i2c-0是在注冊i2c-dev.c后產生的,代表一個可操作的適配器。如果不使用i2c-dev.c
*的方式,就沒有,也不需要這個節(jié)點。
*/
if(fd<0)
{
perror("open error");
}
e2prom_data.nmsgs=2;
/*
*因為操作時序中,最多是用到2個開始信號(字節(jié)讀操作中),所以此將
*e2prom_data.nmsgs配置為2
*/
e2prom_data.msgs=(struct i2c_msg*)malloc(e2prom_data.nmsgs*sizeof(struct i2c_msg));
if(!e2prom_data.msgs)
{
perror("malloc error");
exit(1);
}
ioctl(fd,I2C_TIMEOUT,1);/*超時時間*/
ioctl(fd,I2C_RETRIES,2);/*重復次數(shù)*/

/***write data to e2prom**/
e2prom_data.nmsgs=1;
(e2prom_data.msgs[0]).len=2; //1個 e2prom 寫入目標的地址和1個數(shù)據(jù)
(e2prom_data.msgs[0]).addr=0x50;//e2prom 設備地址
(e2prom_data.msgs[0]).flags=0; //write
(e2prom_data.msgs[0]).buf=(unsigned char*)malloc(2);
(e2prom_data.msgs[0]).buf[0]=0x10;// e2prom 寫入目標的地址
(e2prom_data.msgs[0]).buf[1]=0x58;//the data to write

ret=ioctl(fd,I2C_RDWR,(unsigned long)&e2prom_data);
if(ret<0)
{
perror("ioctl error1");
}
sleep(1);
/******read data from e2prom*******/
e2prom_data.nmsgs=2;
(e2prom_data.msgs[0]).len=1; //e2prom 目標數(shù)據(jù)的地址
(e2prom_data.msgs[0]).addr=0x50; // e2prom 設備地址
(e2prom_data.msgs[0]).flags=0;//write
(e2prom_data.msgs[0]).buf[0]=0x10;//e2prom數(shù)據(jù)地址
(e2prom_data.msgs[1]).len=1;//讀出的數(shù)據(jù)
(e2prom_data.msgs[1]).addr=0x50;// e2prom 設備地址
(e2prom_data.msgs[1]).flags=I2C_M_RD;//read
(e2prom_data.msgs[1]).buf=(unsigned char*)malloc(1);//存放返回值的地址。
(e2prom_data.msgs[1]).buf[0]=0;//初始化讀緩沖

ret=ioctl(fd,I2C_RDWR,(unsigned long)&e2prom_data);
if(ret<0)
{
perror("ioctl error2");
}
printf("buff[0]=%xn",(e2prom_data.msgs[1]).buf[0]);
/***打印讀出的值,沒錯的話,就應該是前面寫的0x58了***/
close(fd);
return 0;
}
------------------------------------------------------------------------------------------------------
從UART口打印的調試信息如下:

i2c-adapter i2c-0: ioctl, cmd=0x702, arg=0x01

i2c-adapter i2c-0: ioctl, cmd=0x701, arg=0x02

i2c-adapter i2c-0: ioctl, cmd=0x707, arg=0xbeb95d28

i2c-adapt

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

驪住實驗室成為首家兩次成功獲得德國國家認可委員會(DAkkS)認證的衛(wèi)浴品牌。這家位于德國海默的開發(fā)實驗室主要從事配件測試。 測試程序遵照國際標準執(zhí)行。 驪住亦向其他有相應產品測試需求的企業(yè)開放獨立實驗室。...

關鍵字: 配件 測試程序 INNOVATION ISO

  本文根據(jù)網(wǎng)絡視頻采集的需要,將網(wǎng)絡傳輸與視頻采集相結合,設計了以S3C2440為核心的USB攝像頭視頻采集和嵌入式Linux系統(tǒng)下的視頻服務器,從而實現(xiàn)了遠程網(wǎng)絡視頻信息采集。   

關鍵字: s3c2440 視頻采集 usb攝像頭

         之前在提起自動化或是智能化時,人們會不自覺的想到工業(yè)生產,這是因為自動化這個字眼進入中國,確實是以工業(yè)

關鍵字: 嵌入式 Linux s3c2440 視頻采集

  引言   隨著科技的不斷發(fā)展,以數(shù)據(jù)業(yè)務為主的固定寬帶無線接入技術發(fā)展已經很成熟,而移動寬帶無線通信技術還并沒有得到廣泛的應用。由于移動寬帶無線接入系統(tǒng)需要解決帶寬、移動性和覆蓋范圍

關鍵字: IPv6 s3c2440 x86 架構

  1 引言   人們生活水平的提高以及科技的進步,特別是計算機技術、網(wǎng)絡技術和通信技術的發(fā)展,智能家居將慢慢成為未來家居生活的發(fā)展方向。1984年在美國誕生了世界上第一座智能家居建筑,

關鍵字: boa nrf24l01 s3c2440 智能家居

我們知道2440開發(fā)流程為:移植uboot--》移植內核---》掛接根文件系統(tǒng)。我們移植完內核需要掛接根文件系統(tǒng),那么首先我們必須擁有根文件系統(tǒng)。如何來制作我們的根文件系統(tǒng)呢?第一步:在linux下建

關鍵字: s3c2440 根文件系統(tǒng)

1.TQ2440u-boot-1.1.6修改文件所在的路徑是u-boot-1.1.6includeconfigsEmbedSky.h將#defineLCD_TFTxxx(LCD類型)W353.5寸TFT4802724.3...

關鍵字: s3c2440 lcd參數(shù)

2440的晶振頻率為12MHZ,有兩個PLL:MPLL和UPLL,其中MPLL產生FCLK、HCLK、PCLK;UPLL產生UCLK。FCLK為ARM核提供時鐘,HCLK為AHB總線時鐘,PCLK為APB總線時鐘,UCL...

關鍵字: s3c2440 時鐘初始化

開發(fā)板:TQ2440內核:Linux 2.6.32PC OS:Ubuntu 11.041.配置內核打開I2C功能:打開雜項設備,該選項打開后,EEPROM也就打開了。2. 修改代碼修改文件: linux/arch/arm...

關鍵字: at24c02 eeprom s3c2440 移植 linux驅動

在分析ARM-Linux s3c2440中UART的時有必要先了解 s3c2440A中串口的硬件知識。硬件篇:S3c2440A串口提供三個獨立的異步串行通信I/O端口(asynchronousserial I/O por...

關鍵字: ARM Linux s3c2440 uart
關閉