




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于linux的EEPROM的读写控 制设计 毕业设计论文 题目:基于linux的EEPROM的读写控制 华中科技大学文华学院毕业设计(论文) 毕业论文(设计)原创性声明 本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作 及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设 计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的 研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明 本论文(设计)作者完全了解林学院有关保留、使用毕业论文(设计) 的规定,学校有权保留论文(设计)并向相关部门送交论文
2、(设计)的电 子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论 文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或 部分内容。保密的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名: 日期: 日期: III 注意事项 1. 设计(论文)的内容包括: 1)封面(按教务处制定的标准封面格式制作) 2)原创性声明 3)中文摘要(300字左右)、关键词 4)外文摘要、关键词 5)目次页(附件不统一编入) 6)论文主体部分:引言(或绪论)、正文、结论 7)参考文献 8)致谢 9)附录(对论文支持必要时) 2. 论文字数要求:理工类设计(论文)正文字数不少 于1万字
3、(不包括图纸、程序清单等),文科类论文 正文字数不少于1.2万字。 3. 附件包括:任务书、开题报告、外文译文、译文原 文(复印件)。 4. 文字、图表要求: 1)文字通顺,语言流畅,书写字迹工整,打印字 体及大小符合要求,无错别字,不准请他人代写 R=1 2)工程设计类题目的图纸,要求部分用尺规绘制, 部分用计算机绘制,所有图纸应符合国家技术标准 规范。图表整洁,布局合理,文字注释必须使用工 程字书写,不准用徒手画 3)毕业论文须用A4单面打印,论文50页以上的 双面打印 4)图表应绘制于无格子的页面上 5)软件工程类课题应有程序清单,并提供电子文 档 5 装订顺序 1)设计(论文) 2)附
4、件:按照任务书、开题报告、外文译文、译 文原文(复印件)次序装订 3)其它 华中科技大学文华学院毕业设计(论文) ABSTRACTIll 1绪论1 11开发背景1 1.2 EEPROM的开发意义1 i介3 21开发工具简介3 22编译工具简介5 23 bootloader 简介6 3操作系统的移植8 3.1 LINUX内核的移植8 3.2 LINUX内核的目录结构9 33 LINUX源代码的安装10 4 EEPROM的概要设计13 41 IIC总线的读/写控制逻辑13 42设计操作过程16 43设计参考程序17 44实验结果分析20 结束语21 参考文献22 致谢23 基于I inux的EEP
5、ROM的读写控制 摘要 本文着眼于在linux开发环境下实现EEPROM的读/写控制访问方法.Linux操作系 统作为新兴的操作系统,具有内核强大、开源、易扩展和裁减以及丰富的硬件支持等诸 多优点,其嵌入式应用具有实时处理能力,广泛应用于智能设备、智能仪器仪表、信息 电器领域。随着计算技术向微型化、网络化方向的发展,嵌入式软件极大地提高了传统 工业控制、医疗、办公乃至家用消费类电子产品的附加值和易用性,市场应用前景极为 广阔。项目必要性软件在信息系统中起着核心和灵魂的作用。 本设计在EduKit2410实验平台上,通过编写程序在EEPROM器件AT24C04进行读写 访问,掌握EEPROM器件
6、在LINUX下的读/写访问方法,然后把实验数据写入整个EEPROM 的存储空间,接着读出来而进行比较。通过检测EEPROM器件AT24C04和处理器1七 总线接口及驱动程序的工作是否正常,比较写入数据与读出数据的结果。 关键词:EEPROMC总线读写控制 III 华中科技大学文华学院毕业设计(论文) Based on Linux Read-Write control of EERROM Abstract This article focuses on realizing read/writes control access method of EEPROM under the linux de
7、velopment environment. The Linux operating system as a emerming operating system, has strong core, open - source, easy to expand and the reduction and the rich hardware support and so on, its embedded application has the real-time processing ability, widely applies in the intelligent equipment, the
8、smart instrument measuring appliance,the information electric appliance domain. Along with the computation technology to the microminiaturization, the network direction developing, the embedded software enhanced the tradition industrial control, medical, the work and even the home use expense class
9、electronic products added value and the usability enormously the market application prospect is extremely broad. The project necessary software is playing the core and the soul role in the information system. This design is in EduKit2410 experiment platform, carries on the read-write visit through t
10、he write program in AT24C04 of EEPROM component AT24C04, grasps the access method under the Linux of write-read in EEPROM component, then read and compare it. Through examineing AT24C04 of EEPROM component and the processor I2C bus interface ,then examining if the driver work is normal, comparing th
11、e result of write data and read date. Key words: EEPROM I2C Bus Read-Write control hi 华中科技大学文华学院毕业设计(论文) 仁1开发背景 linux是当前最流行的操作系统之一。它具有高效、健壮、安全以及功能齐全等特 性,因而贏得了人们的青睐。它是一个完全免费的UNIX操作系统,来自世界各地的志 愿者为这个充满魅力的操作系统的发展贡献着自己的才能。可以说,LINUX的发展凝 聚了世界各地无数开发人员的大量心血,体现了一种信息世界的共建、共享和共荣的精 神叭 Linux操作系统作为新兴的操作系统,其嵌入式应用具有
12、实时处理能力,可广泛应 用于智能设备、智能仪器仪表、信息电器领域。随着计算技术向微型化、网络化方向的 发展,嵌入式软件极大地提高了传统工业控制、医疗、办公乃至家用消费类电子产品的 附加值和易用性,市场应用前景极为广阔。项目必要性软件在信息系统中起着核心和灵 魂的作用。与其他嵌入式操作系统相比,Linux的源代码是开放的,不存在黑箱技术。 Linux作为一种可裁剪的软件平台系统,是发展未来嵌入式设备的绝佳资源。在保持 Linux内核系统更小、更稳定、更具价格竞争力等优势的同时,对系统内核进行实时性 优化,使之适应于对工业控制领域高实时性的要求。这是嵌入式linux操作系统更适合 在嵌入式工控系统
13、中应用。Linux是免费的操作系统。Linux的创始人LfnusTorvalds 将Linux适时地放到GNU公共许可证下,使得Linux本身在短短的几年发展成为一个 稳定,健壮的OS,也使得人们不用花钱就可以使用。使得操作系统真正走上平民化。 Linux的源代码是开放的,源代码随处可得,即使最困难的问题也有办法解决,不存在 黑箱技术。遇到问题时可通过网络,得到丰富的技术支持。可以看出,Linux用于嵌入 式系统方面是可行的,具有广泛的应用前景。 1.2 EEPR0M的开发意义 EEPROM是一种具有掉电记忆功能的存贮器,其内容可以象普通RAM 一样进行 改写,而且改写时能够自动擦除并换成新内
14、容。它不象EPROM那样需要紫外线擦除; 而只需用电即可擦除并改写存贮在其内部的内容。EEPROM通常在内部带有编程电源。 由于它只需外接单一+ 5V电源,因此使用起来十分方便。和串行芯片相比,并行 EEPROM的电路接口和编程设计均简单得多,所以在对电路板面积要求不很苛刻的情 况下,使用EEPROM存贮器还是十分的方便。 电可擦除可编程EEPROM在应用系统中既可由软件对其内容进行随机读写,又可 在芯片断电的情况下长期保存片内信息,因此兼备了 RAM和ROM的基本特点。 EEPROM有串行和并行两大类。并行EEPROM存储容量较大,读写方法简单,但价 格较高,适用于信息量较多的场合。串行EE
15、PROM结构简单紧凑,价格低廉,但其读 写方法复杂,存储单元较小,一般用于掉电情况下需要保存或一些数据需要在线修改的 场合,这类数据不多却很重要,若使用常规的RAM芯片,就必须附带一套性能可靠的掉 电保护系统,这不仅增加了线路设计的复杂性,同时也给设备的运行和维护带来了诸多 不便。使用串行EEPROM来存储这类数据是最合适不过的同。尤其随着当今智能化仪 表趋于小型化,再加上真正需要保存的以及预设的数据位、控制位、保密位并不占据太 多的存储空间,串行EEPROM的体积小,功耗低,硬件接口非常简单,因而越来越受 到人们的重视,在智能化仪器仪表、控制装置等领域得到广泛的应用。 III 2 LINUX
16、技术简介 2.1开发工具简介 开发嵌入式limix系统最方便的方法还是够建一个标准的linux开发环境。这将会 大大简化linux开发的编译,调试等工作。EduKit2410系统 的limix开发就可以在 标准linux环境下进行。 一.Cygwin 安装: 1)运行 Cygwin 安装程序 setup.exe,然后选择Install from Local Directory “, 选择“下一步”,如图21所示。 图2-1 Cygwin 安装 1 2)选择Cygwin的安装目录,注意Cygwin的安装目录必须位于硬盘NTFS分区, 否则会影响文件属性和权限操作,导致错误的结果。选择Unix文本
17、文件类型。选择“下 一步”,如图22所示。 华中科技大学文华学院毕业设计(论文) Cyuwiri Setup - Select Locol Pockage Directory Select Root Inttol Directory Select lhe diecky whwe yw wrl to insUl Cygwi Ako chowe a fev inslcl dbn paomcis. InMil For ( Al Useis Just bJe DHaul Ted Fit T财 DQS a M | 取消 I in 图2-2 Cygwin 安装2 3)选择Cygwin安装程序包所在的本地目
18、录。选择“下一步”,如图23所示。 l Dl x| tyowin setup 5elecr Local Package Directory SfMect Loczl Package Directory Sdeck a diiectory wheco you wart S _-! x Cygwin Setup - Select Pesckaae CategoryCur. B . | SPackage + All Default + Bd O Install 4 Dowl Install. * Doc 0 Default + 5aues 0 Default + Interprtttrx Inxtf
19、cll + Libs Install + Math 0 Default + Wet O Default 4| Select Packages Select pockoges to install KeepPrev p ie內| Caregoryi B?消 | 图24 Cygwin软件包的选 软件包安装完成后,根据提示信息进行余下的操作,此后可以运行Cygwino 注意:由于cygwin是Windows环境下虚拟的Zimx开发环境,一般在AZJL处设 置为Install状态,即全 部安装。所以要建立一个完整的Linux开发调试环境,加上存放编译工具和例程 的空间,至少需要一个容量在2GB以上的分
20、区。 二、环境准备 1、拷贝以下文件到Cygwin安装后的Cygwin/tmp/目录下: 2、运行Cygwin开发环境,执行以下命令(注意空格及大小写): $ cd $ Is (.)v应该能看到目录列表 $ source /tmp/set_env_linux.sh Cross Tools for Cygwin Filesvstem Kernel Bootloader 2. 2编译工具简介 1)安装交叉编译工具 $ cd/ 交叉编译工具及函数库 文件系统源码 -Linux内核源码 启动代码源码 三. 把以下文件夹下所有文件拷贝到Cygwin/tmp/edukit-2410目录下: 华中科技大学文
21、华学院毕业设计(论文) $ tar -P -xvjf $SOURCEDIR/cross-armtools-linux-eduklt2410.tar.bz2 $ source /tmp/armtools-linux/cross-instalLsh 2)安装内核 注:如果关闭过 Cyg、vin 请先执行:source /tmp/set_env_linux.sh $ cd $VVORKDIR $ tar -xvjf $SOURCEDIR/kit2410.tar.bz2 $ cd kernel 3)编译配置 注:如果关闭过 Cygwin 请先
22、执行:source /tmp/set_envJinux.sh $ cd $VVORKDIR $ make xconfig make dep $ make zlmage 命令含义如下: make xconfig在图形截界面下对内核进行配置; make dep:搜索linux编译输出与源代码之间的依赖关系,并生成以来文件; make zlmage:编译linux内核住成压缩的内核映像文件。 2. 3 BOOTLOADER 简介 系统引导程序通常称为Boot Loader,是在系统复位后执行的第一段代码,相当于 PC上的BIOS以及商业实时操作系统中的板级支持包BSP, Boot Loader首先完
23、成系 统硬件的初始化,包括时钟的设置、存储区的映射等,设置堆栈指针,然后跳转到操作 系统内核的入口,将系统控制权交给操作系统,在此之后系统的运行和Boot Loader再 无任何关系。 Boot Loader独立于操作系统,必须由用户自己设计,uClinux的发行包中不包含 Boot Loader,但用户可以直接使用或参考一些开源的Boot Loader软件工程W Boot Loader的实现高度依赖于硬件,包括处理器的体系结构、具体型号、硬件电 路板的设计。 Boot Loader.内核映像和文件系统映像在系统中的存储的典型空间分配结构图如 图2-5所示。 RAM FLASH Boot L
24、oader Kernel File System III 图2-5典型空间分配结构图: 华中科技大学文华学院毕业设计(论文) Hnux提供生成压缩方式的内核映像,节省Flash的存储空间,这也是实际设计过 程中最经常使用的方式。linux将编译好的内核压缩后和linux附带的引导解压文件连 接,生成最终的映像文件。引导解压文件位于 /linux-2.4.x/arcl)/armnoininu/boot/coinpressed 目录,映像文件的入口是汇编文件 head.s,映像文件的起始地址在连接文件linux.Ids中设置,这个地址也就是Boot Loader 最后跳转的地址。在基于三星处理器S
25、3C4510评估板SNDS100的uClinux中,head.s 完成依次存储区的初始化、内核的拷贝和解压,存储区的重映射,然后跳转到内核的真 正入口 head-armv.s,如果不需要更复杂的功能,这部分引导解压文件基本上就可以做 为Boot Loader使用。实际设计过程中如果RAM空间紧张,并且对系统执行速度要 求不高,也常使用未经压缩的在Flash本地执行XIP (Execute In Place)方式的内核映 像文件。此时内核映像文件的入口是汇编文件head-armv.s ,该文件位于 /linux-2.4.x/arcl)/armnoininu/kernel目录,映像文件的起始地址在
26、连接文件 /linux-2.4.x/arcli/armnoinmu/vmlinijx.lds 中设置。 开发人员在调试过程中也经常使用未经压缩的在Ram本地执行XIP方式的内核 映像文件,与在Flash本地执行的映像文件的区别是它不需要将数据段从Flash拷贝 到Ram中的过程。这种方式下,需要Boot Loader具有通过网口或串口下载内核 映像文件并启动内核的功能。 最简功能设计设计一个最简单的Boot Loader,只需要依次完成以下功能: (1) 禁止所有的中断; (2) 设置处理器时钟、运行速度; (3) 存储区初始化; (4) 设置堆栈指针将bss段清零; (5) 跳转到内核映像的
27、入口。 在跳转到内核映像的入口前,以下条件必须满足: 寄存器询一一必须设置为0; 寄存器rl必须设置为唯一的处理器结构号,文件 linux/arcli/arin/tools/mach-types 中包含所有结构号的列表; 存储区管理单元MMU一一必须关闭; 指令缓存Icache 一打开或者关闭; 数据缓存D-cache 一一关闭。 完备功能设计。 设计一个完备的Boot Loader,可在最简功能基础上考虑是否增加以下功能: (1) 上电自检; (2) 支持串口通讯方式,提供串口方式的命令控制台; (3) 支持以太网通讯方式,提供以太网通讯方式的命令控制台; (4) 可以通过串口或以太网下载并
28、引导内核和文件系统映像文件; (5) 支持通过串口或以太网通讯烧写映像文件到Flash; (6) 能够读写I/O端口、存储区、寄存器; (7) 配置功能,包括设置IP地址、MAC地址、系统时间等。 ill 华中科技大学文华学院毕业设计(论文) 3操作系统的移植 3.1 LINUX内核的移植 3.1.1内核移植过程: 1)下载linux内核 下载 linux 内核至 home/arm/dev_home/kernel rootlocalhost #su arm armlocalhost #cd $KERNEL arm localhost kernel#tar -xzvf linux-2.6.14.
29、1.tar.gz arm localhost kernel# pwd /home/arm/dev_home/kernel armlocalhost kernel# cd linux-2.6.14 进入内核解压后的目录,以后示例中,只要是相对路径全部是相对于 /home/arin/dev_home/kernel/linux-2.6.14/ 此目录。 2)修改 Makefile 修改内核目录树根下的的Makefile,指明交叉编译器 armlocalhost linux-2.6.14# vi Makefile 找到 ARCH 和 CROSS_COMPILE,修 改 ARCH?= arm CROSS
30、_COMPILE ?= arm-linux- 然后设置你的PATH环境变量,使其可以找到你的交叉编译工具链: arm localhost linux-2.6.14# echo $PATH /usr/local/arm/3.4.4/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X 11 R6/bi n:/home/lv/bin 如果/usr/local/arin/3.4.4/bin 搜索路径,加入下面语句在-/.bashrc 中 arm localhostlinux-2.6.14#vi-/.bashrcexport PATH=/u
31、sr/local/arin/3.4.4/bin:$PATH 再重新登陆。 arm localhost Iinux-2.6.14#su arm 3)设置flash分区 指明分区信息,指定启动时初始化,禁止Flash ECC校验。 4)配置内核 配置内核产生-config文件,编译内核,下载zlmage到开发板。 3.1.2 创建 u I mage 1)获取mkimage工具 2.6内核树的Makefile提供了创建ulmage的方法,但需要我们提供相应的mkimage 命令。 所以首先拷贝u-boot中tools目录下编译后生成的mkimage到/usr/bin/下,然 后便可以在内核根目录下通
32、过make ulmage来创建ulmage文件。该文件生成在 arch/arm/boot/下。 2)修改内核的Makefile文件 armlocalhost Iinux-$ vi arcii/arin/boot/Makefile #MKIMAGE变量记录mkimage命令的路径mkuboot.sh脚本文件可以scripts目 录中找到 MKIMAGE:= $(srctree)/scripts/mkuboot.sh #zreladdr-y 与 params_phys-y 可以在 arcii/arin/mach-s3c2410/Makefile.boot 当中找 到 ZRELADD
33、R := $(zreladdr-y) PARAMS_PHYS := $(params_phys-y) INITRD_PHYS := $(lnitrd_phys-y) 生成ulmage的mklmage命令行,其中需要关注的就是与-e参数。 参数a:指明ulmage加载的SDRAM地址,内核默认指定加载地址为0 x30008000。 u-boot引导时,bootm命令跳到与上相同位置执行,检査完镜像头后,它会跳到内核真 正的入口点开始执行。 参数e:指明ulmage中刨去镜像头后真正的内核入口地址。 镜像头为0 x40长,故此处指定为0 x30008040o 3.2 LINUX内核的目录结构 现代
34、的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。 Llm匹核心源程序通常都安装ft/usr/src/linux下,而且它有一个非常简单的编号约 定:任何偶数的核心都是一个稳定地发行的核心,而任何奇数的核心都是一个开发中的 核心【。Linux内核源码的各个目录大致与此相对应,其组成如下(假设相对于 /usr/src/Linux-2.4.23 目录): 竺1L目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表 一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。 PC机一般都基于此目录。 COPYING目录下是GPL版权
35、申明。对具有GPL版权的源代码改动而形成的程序, 或使用GPL工具产生的程序,具有使用GPL发表的义务,如公开源代码。 CREDITS目录下是光荣榜。对Linux做出过很大贡献的一些人的信息。 documentation目录下是一些文档,没有内核代码,可惜都是English的,是对每 个目录作用的具体说明。 drivers目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动, 每一种有对应的子目录,如声卡的驱动对应于drivers/sound; block下为块设备驱动程 序,比如ide (idec)。如果你希望査看所有可能包含文件系统的设备是如何初始化的, in 华中科技大学文华学
36、院毕业设计(论文) 你可以看drivers/block/geiilid.cdevice_setup()o它不仅初始化硬盘,也初始化,因为安 装nfs文件系统的时候需要网络其他:如,Lib放置核心的库代码;Net,核心与网络相关的 代码;Ipc,这个目录包含核心的进程间通讯的代码;Fs,所有的文件系统代码和各种类型 的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2。 鱼目录存放Linux支持的文件系统代码和各种类型的文件操作代码。每一个子目录 支持一个文件系统,如ext3文件系统对应的就是ext3子目录。 include目录包括编译核心所需要的大部分头文件,例如与平台无关的
37、头文件在 include/linux子目录下,与intel cpu相关的头文件在include/asm-i386子目录下,而 include/scsi目录则是有关scsl设备的头文件目录“叫 辿目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两 个文件。这是研究核心如何工作的好起点。 1EL目录包含了核心进程间的通信代码。 Kernel内核管理的核心代码,此目录下的文件实现了大多数limix系统的内核函数, 其中最重要的文件当属sched.c;同时与处理器结构相关代码都放在arch/*/kernel目录 下。 也目录包含了核心的库代码,不过与处理器结构相关的库
38、代码被放在arch/*/Iib/ 目录下。 MAINTAINERS目录存放了维护人员列表,对当前版本的内核各部分都有谁负责。 Makefile目录第一个Makefile文件。用来组织内核的各模块,记录了个模块间的 相互这间的联系和依托关系,编译时使用;仔细阅读各子目录下的Makefile文件对弄 清各个文件这间的联系和依托关系很有帮助。 皿目录包含了所有独立于cpu体系结构的内存管理代码,如页式存储管理内存的 分配和释放等。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,例如 arch/1386/min/Fault.c。 in壘叵目录存放了已建好的、可动态加载的模块文件目录,
39、是个空目录,用于存 放编译时产生的模块目标文件。 晅目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。 ReadIe目录里是核心及其编译配置方法简单介绍。 REPORTING-BUGS目录里是有关报告Bug的一些内容。 Rules.make目录里是各种Makefilemake所使用的一些共同规则。 scripts目录包含用于配置核心的脚本文件等。 般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编 译时使用的辅助文件。仔细阅读这两个文件对弄淸各个文件之间的联系和依托关系很有 帮助。另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同
40、样有利 于对内核源码的理解。 3.3 LINUX源代码的安装 1 ) linux源代码包位于本书附带光盘CD2linux Source目录,文件名为 linux-dist-20040408.tar.gz,拷贝该文件所在目录所有文件到Cygwin/tmp文件夹下 解压Linux源代码包,执行如下命令: mkdir /usr/local/src cd /usr/local/src tar xzvf /tmp/uClinux-dist-20040408.tar.gz 命令执行结束时若提示: tar: Error exit delayed from previous errors 上述错误提示为正常现
41、象,可以忽略。 解压完毕后,在/usr/local/src下面会有一个文件夹uClinux-dist存放源代码,以后 的操作均在此目录下进行|lll9,o 注意:linux官方网站Linux源代码最新版本的下载地址为: /pub/Iinux/dist,源代码包名称为 Iinux-dist-20040408.tar.gZo 2)linux源文件修改 安装完linux源代码,为了在Embest EduKit44bO上运行,需要为修改源代码, 这里我们提供了两个补丁 文件 Hnux040408.EduKlt44b0.patch 和 linux040408.Edu
42、Kit44b0.Jffs2.patcho 这两个补丁文件位于本书附带光盘 linux Source 目录下。 将补丁文件linux040408.EduKit44b0.patch拷贝到cvgwinXtmp目录下,执行命令: cd /usr/local/src/uClinux-dist patch -pl /tmp/uinux040408.EduKit44b0.patch 如果要使用Jffs2文件系统,则将补丁文件linux040408.E(luKit44b0.jffs2.patch拷 贝到cygwintmp目录下,执行命令: cd /usr/local/src/uClinux-dist patc
43、h -pl A2器件/页面寻址地址输入端。在AT24C01/02中,引脚被硬连接;其他AT24CXX 均可接寻址地址线。 WP读写保护。接低电平时可对整片空间进行读写;高电平时不能读写受保护区。 Vcc/GND一般输入+5V的工作电压。 4.1.3 AT24C04结构与应用简述 AT24C04由输入缓冲器和EEPROM阵列组成。由于EEPROM的半导体工艺 特性写入时间为5-4-2ms,如果从外部直接写入EEPROM ,每写一个字节都要等候 5-4-2ms,成批数据写入时则要等候更长的时间。具有SRAM输入缓冲器的EEPROM 器件,其写入操作变成对SRAM缓冲器的装载,装载完后启动一个自动写
44、入逻辑将缓 冲器中的全部数据一次写入EEPROM阵列中。对缓冲器的输入称为页写,缓冲器的容 量称为页写字节数。AT24C04的页写字节数为8,占用最低3位地址。写入不超过页 写字节数时,对EEPROM器件的写入操作与对SRAM的写入操作相同;若超过页写 字节数时,应等候5-4-2ms后再启动一次写操作。由于EEPROM器件缓冲区容量较 小(只占据最低3位),且不具备溢出进位检测功能,所以,从非零地址写入8个字 节数或从零地址写入超过8个字节数会形成地址翻卷,导致写入出错。 4.1.4 AT24CXX的数据操作格式 在IIC总线中对AT24C04内部存储单元读写,除了要给出器件的设备地址 (DA
45、DDR)外还须指定读写的页面地址(PADDR)I4|7,两者组成操作地址(OPADDR) 如下: 1010 A2 Al- RAV(为无效) Embest JTAG教学系统中引脚A2A1A0为000,因此系统可寻址AT24C04全 部页面共4KB字节。按照AT24C04器件手册读写地址(ADDR=1010 A2 Al-RAV) 中的数据操作格式如下: X)写入操作格式 写任意地址ADDR,如图4-4所示。 III 华中科技大学文华学院毕业设计(论文) uia AT24L8C AOVDD AlWP A2SCL GNDSDA 图 4-8 AT24C04 EEPROM 控制电路 4. 2设计操作过程
46、1)编译应用程序 运行Cygwin,进入test-lie设计程序所在目录。执行以下命令编译链接测试程序: $source/tmp/edukit-2410/set_envjinux.sh $cd $ workdlr/examples/0504_test-eeprom $make clean $make $make ifstall 下载应用程序 # cd/tar #ifconflg dthO 192.192.16 /*读SIZE个字节*/ Read (fd,r_buf, SIZE); (2) 写操作:在写EEPROM之前,同样先要设置准备要写到的EEPROM内部的 数据地址,然后再执行写操作。写操
47、作一次最多可以写入一个页的数据,一次写入超过 页边界的数据会被丢弃。每执行一次写操作,根据不同的EEPROM器件,需要适当做 一些延时。使EEPROM器件把刚刚接收到的数据写入非易失性记忆体中,AT24C04 需要延时5-lOMSo程序代码如下: /*设置器件的内部数据访问地址*/ Ioctl(fd, I2C_SET_DATA_ADDR, 0); Write(fd, /*延时*/ Usleep(10*1000); (3)关闭设备:读/写操作完成后,需要关闭设备,关闭设备与关闭普通文件的操作类 似,执行close ()即可。程序代码如下: Close(fd); 4. 3设计参考程序 /* * *
48、 文件:test-iicc *说明:lie bus test example.read from or write to EEPORM *注释:program modify,Embest R.X.huang .2005.06.05 * include #include #include #include include #include /* control code */ #define I2C_SET_DATA_ADDR 0X0601 #define I2C_SET_BUS_CLOCK 0X0602 /* AT24C04N EEPROM definition */ #define SLAV
49、E_ADDR 0X50 #define PAGE_NUM 1 #define PAGE_SIZE 16 /* buffer*/ Char w_bufPAGE_NUM* PAGE_SIZE; Char r_bufPAGE_NUM* PAGE_SIZE; Int mainfint argc.char* * argv) hi 华中科技大学文华学院毕业设计(论文) int Lfd; static char * driver =,7dev/i2c/0; printf(uEEPROM ReadAVrite Example base on Linux.Xn); /* open device */ fd= o
50、pen(driverO_RDWR); /* set AT24C04N slave address(OxaO 1)*/ Ioctl(fd,I2C_SLAVE_FORCE,SLAVE_ADDR); /* set I2c bus clock 250KHZ */ Ioctl(fd,I2C_SET_BUS_CLOCK,250*1000); /* initialize write buffer */ Printf(uwrite random date.n); Srand(time(NULL); For (i=0;l PAGE_NUM* PAGE_SIZE;i+) w_biini=rand()% oxff;
51、 for (i=0;i=0;i-) /* AT24C04N inner data access address */ Ioctl(fd,I2C_SET_DATA_ADDR,t*PAGE_SIZE); Write(fd, /* delay some time for write nonvolatile memory. */ Usleep(10*1000); /* read data from AT24CO4N EEPROM */ Printf(uRead date.nw); for (i=0;l iPAGE_NUM;i+) /* AT24C04N inner data access addres
52、s */ Ioctl(fd,I2C_SET_DATA_ADDR,i*PAGE_SIZE); Read (fd, /* printf data */ for (i=0;i,); /* compare data */ If(memcmp(w_buf,r_buf,PAGE_NUM*PAGE_SIZE)= =0) Printf(“Very date successfulnw); Else Printf(“Very date failednM); Close(fd); Return 0; 4. 4实验结果分析 由于已编译的内核没有安装lie驱动,所以运行程序前需要安装lie算法驱动程序。 对于EduKi
53、t2410系统,提供了两个动态模块文件i2co.执行以下命令,使用TFTP下 载文件到开发板后,安装运行: # tftp-g 1-r./i2c.o-L/i2c.o #insmod 12c.o #lsmod Modulesize used byNot tainted I2c2672 O(uniised) 然后,再执行下载到Iim】x系统的test-iic测试程序,并在输入终端观察结果。本 程序是通过往EEPROM里写入一页16字节数据,并读出比较,检测是否一致。程序 如果正确运行,可以看到以下信息输出: #J test-ile ./ test-iic eeprom readAVrite Example base on Linux. Write random date 95 Read date 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 操作系统期末考试试题及答案
- 病区备用药品管理
- 物业安全培训试题及答案
- 物权法五套试题及答案
- 2025能源交易所规范交易合同
- 2025年贵州省中考数学试题(解析版)
- 2025国家科研经费资助合同
- 物料考核试题及答案
- 物理卓越计划试题及答案
- 2025影视制作合同书(标准版)
- 2025年一次性社保赔偿协议模板
- 园区安全培训
- 《中医经络学说》课件
- 港股基础知识入门培训
- 2 我是什么 第二课时(说课稿)-2024-2025学年统编版语文二年级上册
- 保证金合同模板
- 2025年山西航空产业集团有限公司招聘笔试参考题库含答案解析
- 口腔科突然停电应急预案
- 幼儿园教师事业编招聘考试真题及答案(共15套)
- 2025年临床医师定期考核必考复习题库及答案(900题)
- 桥梁检测评定与加固技术(第2版) 课件 第6章 桥梁检查与评定
评论
0/150
提交评论