当前位置: 首页 > news >正文

网站制作步骤是什么国外做的比较的ppt网站有哪些方面

网站制作步骤是什么,国外做的比较的ppt网站有哪些方面,新手 网站建设 书籍,做毕设网站成员。我们可以看到消息结构体里面有从设备地址#xff0c;读写标志#xff0c;数据长度以及存储数据buf。这些成员我们看完之后会发现它大致符合先给设备地址#xff0c;然后给写信号以及数据的时序。其实但我们写代码的时候并不一定是addr非得定义在flags前面#xff0c;…成员。我们可以看到消息结构体里面有从设备地址读写标志数据长度以及存储数据buf。这些成员我们看完之后会发现它大致符合先给设备地址然后给写信号以及数据的时序。其实但我们写代码的时候并不一定是addr非得定义在flags前面因为内核会自动帮助我们完成这些具体的时序操作。但有一点我们必须要填充好nmsgs以及i2c_msg中的成员。那么我们具体的i2c下的 ioctl 函数是怎么样的呢我们暂且把i2c-dev.c看作一个设备驱动。里面的fops结构体显示我们继续追踪看看i2cdev_ioctl这个函数static long i2cdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg){struct i2c_client *client file-private_data;unsigned long funcs;dev_dbg(client-adapter-dev, ioctl, cmd0x%02x, arg0x%02lx\n,cmd, arg);switch (cmd) {case I2C_SLAVE:case I2C_SLAVE_FORCE:/* NOTE:  devices set up to work with new style drivers* cant use I2C_SLAVE, even when the device node is not* bound to a driver.  Only I2C_SLAVE_FORCE will work.** Setting the PEC flag here wont affect kernel drivers,* which will be using the i2c_client node registered with* the driver model core.  Likewise, when that client has* the PEC flag already set, the i2c-dev driver wont see* (or use) this setting.*/if ((arg 0x3ff) |(((client-flags I2C_M_TEN) 0) arg 0x7f))return -EINVAL;if (cmd I2C_SLAVE i2cdev_check_addr(client-adapter, arg))return -EBUSY;/* REVISIT: address could become busy later */client-addr arg; //设置addrreturn 0;case I2C_TENBIT://设置10 bit地址模式if (arg)client-flags | I2C_M_TEN;elseclient-flags ~I2C_M_TEN;return 0;case I2C_PEC://设置传输后增加PEC标志if (arg)client-flags | I2C_CLIENT_PEC;elseclient-flags ~I2C_CLIENT_PEC;return 0;case I2C_FUNCS://获取函数支持funcs i2c_get_functionality(client-adapter);return put_user(funcs, (unsigned long __user *)arg);case I2C_RDWR://读取和发送数据return i2cdev_ioctl_rdrw(client, arg);case I2C_SMBUS: //SMBUS协议数据传输return i2cdev_ioctl_smbus(client, arg);case I2C_RETRIES://设置重试次数client-adapter-retries arg;break;case I2C_TIMEOUT://设置超时时间/* For historical reasons, user-space sets the timeout* value in units of 10 ms.*/client-adapter-timeout msecs_to_jiffies(arg * 10);break;default:/* NOTE:  returning a fault code here could cause trouble* in buggy userspace code.  Some old kernel bugs returned* zero in this case, and userspace code might accidentally* have depended on that bug.*/return -ENOTTY;}return 0;}对于简单使用来说我现在并没有全深入整明白所以暂且知道ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。在驱动程序中实现的ioctl函数体内实际上是有一个switch{case}的结构每一个case对应一个cmd操作命令并有相对应的操作。我这里cmd参数使用的是I2C_RDWR这个命令码根据i2c-dev.c里的源码看i2cdev_ioctl_rdrw结构体可知I2C 设备的写操作经历了如下几个步骤。(1) 从用户空间到字符设备驱动写函数接口,写函数构造 I2C 消息数组。(2) 写函数把构造的 I2C 消息数组传递给 I2C 核心的传输函数 i2c_transfer()。(3) I2C 核心的传输函数 i2c_transfer()找到对应适配器 algorithm 的通信方法函数 master_xfer()去最终完成 I2C 消息的处理。PSI2c_transfer这个函数实现了core与adapter的联系。想更深入的探究可以自己去看看I2C总线驱动中的I2C_algorithm结构以及其中的s3c24xx_i2c_xfer()s3c24xx_i2c_doxfer()和s3c24xx_i2c_message_start()函数和i2c_transfer()函数。下面我们看看代码在开发板中运行的现象1.在把可执行文件放入开发板启动之前我们先检查下I2C控制器s3c2410-i2c节点是否配置好。上面的i2c_dev/i2c-0是在注册i2c-dev.c后产生的代表一个可操作的适配器。如果不使用i2c-dev.c的方式就没有也不需要这个节点。2.确保出现I2C控制器s3c2410-i2c后即可通过交叉编译器将编译后可执行文件放入开发板中执行。仔细看上面的结果。可以看到我们原本的数据test1234\n在上面的显示中出了点问题。后来我又测试一次test123\n与test12345678我第一次是通过at24.c的read和write以及lseek直接对eeprom读写所以可以一次写入超过8个字节第二次通过内部i2c控制器的ioctl来间接读写eeprom时则遭遇了阻击一次时序若超过8个字节超过的字节数自动将前面的数据覆盖掉。然后我想到at24c02是32个页一页8个字节。通过网上查阅知由于E2PROM的半导体工艺特性对E2PROM的写入时间要510ms但AT24CXX系列串行E2PROM芯片内部设置了一个具有SRAM性质的输入缓冲器称为页写缓冲器。CPU对该芯片写操作时AT24CXX系列芯片先将CPU输入的数据暂存页写缓冲器内然后慢慢写入E2PROM中。因此CPU对AT24CXX系列E2PROM一次写入的数据受到该芯片页写缓冲器容量的限制。页写缓冲器的容量AT24C01A/02为8BAT24C04/08/16为16BAT24C32/64为32B。注意写AT24CXX应用时若CPU需写入超过芯片页写缓冲器容量的字节数据应在一页写完后隔510ms重新启动一次写操作。其次若不是从页写缓冲器零地址(指AT24CXX片内末位地址0或8)写起一次写入不能超出页内地址111若超出页写缓冲器最大地址时也应将超出部分隔510ms重新启动一次写操作。最后通我们回顾AT24C02的官方datasheet来看看本质Byte writeByte write的操作时序如上图所示。主机在发送device address并且接受到确定回应Ask后再接着发送需要写的地址(把这个数据写到芯片的哪个地址上)然后收到确定回应ask后再发送数据。当AT24C02接受完毕这个数据时会输出一个确认回应Ack此时主机发送一个停止信号Stop然后AT240C2进入写时序将刚才接受到的数据从缓冲器写到存储单元中并在此期间不响应任何输入直到操作完成。PagewritePage write前面几步的操作和Bytewrite操作类似只是在成功发送第一个数据之后主机在收到AT24C02的确认回应Ask之后不会发送停止信号Stop而是继续发送剩余的7个字节数据。直到一个page的8字节数据发送完毕之后才发送停止信号Stop。在页操作的时候word address用与表示业内的低地址的低3bit会每收到一个数据就自动增长页地址维持不变。所以当业内地址到顶端时此时假如还有数据则数据将会被放到页的起始地址处页起始地址中之前存放的数据也将会被覆盖。即AT24C02页操作时写入的数据大于8byte则大于8byte的数据将重新从此页起始处存放并覆盖掉之前写入的的数据另外我们再说一下随机读取随机读写的操作就是主机先用一个写操作来骗过AT24C02器件使AT24C02内部的data word address中的地址值修改然后再通过current ad [1] [2] [3] [4] 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播或不应无偿使用请及时通过电子邮件或电话通知我们以迅速采取适当措施避免给双方造成不必要的经济损失。
http://www.yutouwan.com/news/116690/

相关文章:

  • 网站经营与建设黑糖主题2.0wordpress
  • 学院网站源码外贸电子商务网站建设平台
  • 汽车门户网站 源码企业管理咨询服务合同模板
  • 在线购物网站的设计与实现wordpress美化背景
  • 免费海外网站建设做学校网站的目的
  • 做家居用品亚马逊看哪些网站百度的营销推广模式
  • 网站制作应用知识贵州省住房和城乡建设网站
  • 做自己网站彩票网站首页有哪些内容
  • pc端网站建设价格明细表wordpress 登陆 插件
  • 网站开发技术是什么专业会的深圳seo网络推广
  • 我自己的网站做网站界面需要注意什么问题
  • 杭州公司建网站网站开发设计文档模板
  • asp制作网站教程网站建设返回函数
  • 网站开发的经验怎么上网站
  • 成都网站建设制作设计旅游网站的建设内容
  • 凉山州住房和城乡建设局网站青岛网站建设订做
  • 做网站需要一些什么东西免费追剧软件app
  • 经营网站赚钱wordpress目录
  • 上海网站制作最大的公司制作公司网站结构图
  • 网站vps怎样做地方门户网站
  • 网站名字起什么好处附近那里有做网站的
  • 厦门微信网站建做外贸网站流程
  • 手机管理wordpress站北京商城网站设计
  • 网站功能模块设计怎么写地图网站抓取
  • 做网站外包公司ssc网站开发
  • 对内部网站建设的意见和建议枞阳做网站的
  • 石家庄网站免费制作餐饮网站建设推广
  • 网站运营和维护都是干什么的设计网站推荐 zoo
  • 宁波易通宁波网站建设宝山北京网站建设
  • 新乡做网站公司电话国内贸易平台