打印

基于嵌入式系统的I2C驱动编写及测试

[复制链接]
160|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
考哥|  楼主 | 2018-8-23 10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天给一个同学一起编写一个基于i2c总线的温度传感器的驱动,与大家分享一下。

用到的设备如下:


主机:Ubuntu 10.10

       目标机:FS_S5PC100

       目标机内核版本:2.6.35

       交叉编译器版本:arm-none-linux-gnueabi-gcc-4.5.1

主要步骤:


修改gedit drivers/i2c/busses/Kconfig

修改

config I2C_S3C2410

       tristate "S3C2410 I2C Driver"

       depends on ARCH_S3C2410 || ARCH_S3C64XX

       help

         Say Y here to include support for I2C controller in the

         Samsung S3C2410 based System-on-Chip devices.


为:

config I2C_S3C2410

       tristate "S3C2410 I2C Driver"

       depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100

       help

         Say Y here to include support for I2C controller in the

         Samsung S3C2410 based System-on-Chip devices.

内核配置并重新编译内核

$ make menuconfig

Device Drivers  --->

       <*> I2C support  --->

              <*>   I2C device interface

                     I2C Hardware Bus support  --->

                            <*> S3C2410 I2C Driver

$ make zImage

一、用户模式驱动别写

1、  拷贝模块到linux下

将实验代码中的s5pc100_temp_app拷贝到/home/linux目录下并进入s5pc100_temp_app目录。

2、  编译模块

$ make

3、  编译应用程序

$ arm-none-linux-gnueabi-gcc temp_app_mode.c –o temp_app_mode

4、  拷贝应用程序到目标板上

$ temp_app_mode /source/rootfs

5、  测试

# ./temp_app_mode

       用手按住温度传感器会发现值会改变

<img id="aimg_c1Vsd"  class="zoom" file="http://files.chinaaet.com/images/blog/2015/01/21/5440896012256.png"  lazyloadthumb="1" border="0" alt="" />

这个值是16进制数,前两位代表度,后两位是小数点后的值,大家可以自己转换一下

二、使用内核i2c子系统构建驱动

1、  修改平台代码并重新编译内核

修改arch/arm/mach-s5pc100/mach-smdkc100.c

修改:

static struct i2c_board_info i2c_devs0[] __initdata = {

};

为:

static struct i2c_board_info i2c_devs0[] __initdata = {

       {

              I2C_BOARD_INFO("lm75", 0x48),

       },

};

$ make zImage

2、  拷贝模块到linux下

将实验代码中的s5pc100_temp拷贝到/home/linux目录下并进入s5pc100_temp目录。

3、  编译模块

$ make

4、  编译应用程序

$ arm-none-linux-gnueabi-gcc test.c –o test

5、  拷贝驱动及应用程序到目标板上

$ cp s5pc100_temp.ko test /source/rootfs

6、  启动开发板后加载模块

# insmod s5pc100_temp.ko

7、  创建设备节点

# mknod /dev/temp c 250 0

8、  测试

# ./test

希望大家能开心每天。









——————————————————————————————————————

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

461

主题

477

帖子

0

粉丝