首页 > 系统相关 >正点原子 第六十一章 Linux I2C驱动实验 编程感受

正点原子 第六十一章 Linux I2C驱动实验 编程感受

时间:2023-07-23 16:34:08浏览次数:53  
标签:i2c struct 第六十一章 --- platform client Linux I2C ap3216c

正点原子官方文档的代码结构太乱,我于是这样做了。

 

 我将主要的程序分2部分:

  • 第一部分:my_ap3216c.c 
  • 第二部分:my_ap3216c_base.c 

第一部分放 Linux 驱动框架,比如 fops 函数, platform 框架这些。

第二部分放 ap3216c 底层驱动,包括向ap3216c 如何读一个字节,写一个字节,从其寄存器读有效数据这些细节的东西。

但是 make 的时候总是出现如下错误,

 Makefile 我也不知道怎么改,因此又合二为一了。

 

另外,官方文档的代码的ap3216c 底层驱动太乱,数了数,要最后调用总共有4层( 调用链:ap3216c_readdata ---> ap3216c_read_reg--->ap3216c_read_regs---> i2c_transfer)

我干脆只写了一个 ap_readonebyte( 调用链:ap3216c_readdata ---> ap_readonebyte ----> i2c_transfer)

 

另外,还有一些问题搞不懂:

  1. 为什么 dev 要有 private_data,它是什么?
  2. 为什么fops 的 read函数 中,参数 *private_data; 成为了  struct i2c_client ?
  3.  i2c 的 gpio 如何初始化呢?(例程中没有获取节点、获取 gpio 编号、 设置为输出的代码)
  4. 为什么i2c platform 的 probe 函数和原来 platform 的不一样?

    ap3216c_probe(struct i2c_client *client, const struct i2c_device_id *id)
    参数 *client, id 到底是什么? 为什么不用原来的 struct platform_device *dev

标签:i2c,struct,第六十一章,---,platform,client,Linux,I2C,ap3216c
From: https://www.cnblogs.com/FBsharl/p/17575176.html

相关文章

  • linux 桌面todo软件-rainlendar2
    从官网下载时速度很慢,选择的是免费版本,下面有百度云的下载链接。  v2.19.2链接:https://pan.baidu.com/s/1AVENBcnIVHXbYq0zWM_0VQ提取码:dei7......
  • 【嵌入式】构建嵌入式Linux系统(uboot、内核、文件系统)
    原文:https://zhuanlan.zhihu.com/p/573207792?utm_id=0知识架构及层次Linux内核由三部分构成:Bootloader:启动引导系统(可执行文件)Kernel:内核(可执行文件)RootFileSystem:根文件系统嵌入式Linux系统构成及启动略析嵌入式Linux启动类同4X100米接力跑,是由多个部分共同完成......
  • Linux防火墙操作
    防火墙操作#查看防火墙窗台systemctlstatusfirewalld\firewall-cmd--state#暂时关闭防火墙systemctlstopfirewalld#永久关闭防火墙systemctldisablefirewalld#开启防火墙systemctlstartfirewalld#开放指定端口firewall-cmd--zone=public--add-port=8......
  • linux 终端 ctrl + c无法终止当前程序
     001、问题linux终端ctrl+c无法终止当前程序 002、解决方法01、ctrl+z:让程序后台运行02、找到该进程03、kill-9该进程名称或者号码 参考:https://blog.csdn.net/m0_67401382/article/details/126434550......
  • 部分 Linux 换国内源
    Centos/Redhat换国内源操作步骤先把原本的官方yum源删除或备份cd/etc/yum.repos.d/备份(Redhat同理)mvCentos-*Centos-*.backup删除(Redhat同理)rmCentos-*下载Centos8repo文件(Redhat也可用Centos源)wget-O/etc/yum.repos.d/CentOS-Base.repohttps://mi......
  • Linux目录和文件管理
    目录和文件管理树型目录结构,根目录“/”,常见子目录“/root管理员家目录/bin命令/boot开机启动文件/dev硬件文件/etc默认配置文件/home普通用户家目录的上级目录/var/usr/sbin”1、常见目录一级目录功能(作用)/bin/存放系统命令,普通用户和root都可以执行。放在/......
  • mongodb linux 启动命令 指定配置文件
    MongoDBLinux启动命令指定配置文件作为一名经验丰富的开发者,你需要教会这位刚入行的小白如何通过命令行启动MongoDB,并指定配置文件。下面是整个流程的步骤:步骤动作1打开终端2进入MongoDB的安装目录3创建一个配置文件4启动MongoDB服务下面是每个......
  • linux目录和文件管理
    一.目录层次1)一级目录/bin  存放系统命令/boot系统启动目录/dev 设备文件的保存位置/etc  配置文件保存位置 /home放置用户个性配置/mnt挂载目录/opt第三方安装的软件保存位置。/rootroot的主目录/sbin保存与系统环境设置相关的命令/tmp临时目录2)显示......
  • Linux内核6.3生命周期结束
    在kernel.org网站上,Linux 6.3内核系列已经被标记为EOL(生命周期结束),这意味着它将不再支持错误和安全修复,告别Linux6.3内核系列的时刻已经到来。早些时候,知名的Linux内核维护者GregKroah-Hartman宣布发布Linux内核6.3.13,这是Linux6.3内核系列的第13次维护更新,这次更新带......
  • mysql workbench linux
    在Linux系统中安装MySQLWorkbench的步骤MySQLWorkbench是一个强大的数据库设计和管理工具,可以在Linux系统上安装和使用。下面是安装MySQLWorkbench的步骤和相应的代码示例。步骤概述步骤描述步骤1更新软件包列表步骤2安装MySQLWorkbench依赖步骤3下载......