版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原科技大学学士学位论文摘要本文着重介绍了ARM7处理器S3C44B0X通过ide接口实现对硬盘的读写操作。ide接口是由compaq公司开发,westerndigital公司生产的控制器,本文所介绍的是使用40线扁平电缆连接硬盘和ide接口。S3C44B0X是面向嵌入式系统的高性价比微处理器,它采用ARM7TDMI核,工作在66MHz。通过硬件的接口设计实现微处理器对芯片的读写功能。关键词:S3C44B0X;ide接口;硬盘AbstractThisarticleemphaticallyintroducedARM7processorS3C44B0XthroughtheIDEinterfacerealizationtotheharddiskread-writeoperation.TheIDEconnectionisdevelopsbyCOMPAQCorporation,WESTERNDIGITALCorporationproduceswhatthecontroller,thisarticleintroducedisuses40flatelectriccablestoconnecttheharddiskandtheIDEconnection.S3C44B0Xisfacestheembeddedsystemthehighperformance-to-priceratiomicroprocessor,itusestheARM7TDMInucleus,worksin66MHZ.Throughhardwareconnectiondesignrealizationmicroprocessortochipread-writefunction.Keyword:S3C44B0X;IDEinterface;Harddisk目录摘要………………...…...1Abstract………………1目录……………………..2第一章概述……………3第一节嵌入式技术简介…………...3arm简介………………….4第二章S3C44B0X概述4第一节简介5第二节特性6内部结构图11芯片引脚定义12各引脚信号描述12第三章IDE接口概述16第四章FAT文件系统………………18附录:硬盘初始化及软件的读写实现程序…………...32结论34参考文献34致谢35第一章概述一简述嵌入式系统嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点:1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。3)可扩展的处理器结构,以能最迅速地开展出满足应的最高性能的嵌入式微处理器。4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。二简述arm 英国ARM
公司是全球领先的16/32
位嵌入式
RISC
微处理器解决方案的供应商,向全球各大领先电子公司提供高性能、低成本和高效率的RISC
处理器、外设和系统芯片技术授权。ARM
还为开发完整系统提供综合技术支持。ARM
的微处理器核技术广泛用于便携式通信产品、手持运算、多媒体和嵌入式解决方案等领域,已成为RISC
标准。
ARM公司是一家既不生产芯片(fabless)也不销售芯片(chipless)的公司,它通过出售芯片技术授权,建立起新型的微处理器设计、生产和销售商业模式。更重要的是,这种商业模式取得极大的成功,采用ARM技术IP核的微处理器遍及各类电子产品:汽车、消费电子、成像、工业控制、海量存储、网络、安保和无线等市场,ARM技术几乎无处不在。
ARM公司在1990年11月英国剑桥的一个谷仓里成立,最初只有12人,怀着一个梦想:推出一个好的32位RISC
CPU,让全世界每个人都至少有一个ARM芯片。经过11年多的发展,今日的ARM公司已经拥有700多名员工,其中60%以上都从事研发工作,在全世界8个国家和地区(中国台湾)设有分公司,并且即将在中国上海成立分公司。
很多以核为基础的系统芯片设计都以ARM核为基础。尽管Intel的微处理器在PC领域处于压倒优势地位,但在嵌入系统领域,Intel利用了ARM核的技术授权,例如,推出基于ARM的MP3播放器,Intel与TI在2001年7月30日同时取得ARM
V6结构的授权。微软的PocketPC今后只支持ARM结构。Motorola、National
Semiconductor、Lucent等一批厂商都取得ARM核的技术授权。
ARM技术具有很高的性能和更高的功效,因而容易被更多的厂商接受。同时,合作伙伴的增多,可获得更多的第三方工具、制造和软件支持,又使整个系统成本降低,产品进入市场的时间加快,从而具有更有利的竞争优势。
ARM(Advanced
RISC
Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、菲利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。
ARM架构是面向低预算市场设计的第一款RISC微处理器。第二章S3c44b0x的概述简介Samsung公司推出的16/32位risc处理器s3c44b0x为手持设备和一般类型应用提供了高性价比和高性能的微控制器解决方案。为了降低成本,s3c44b0x提供了丰富的内置部件,包括:8kBcache,内部SRAM,LCD控制器,带自动握手的2通道UART,4通道DMA,系统管理器(片选逻辑,FP/EDO/SDRAM控制器),代用PWM功能的5通道定制器,I/O端口,RTC,8通道10位ADC,IIC-BUS接口,同步SIO接口和PLL倍频器。S3C44B0X采用了ARM7TDMI内核,0.25UM工艺的CMOS标准宏单元和存储编译器。它的低功耗精简和出色的全静态设计特别适合用于对成本和功耗敏感的应用。同样s3c44b0x还采用了一种新的总线结构,即SAMBA2(三星ARMCPU嵌入式微处理器总线结构)。S3C44B0X的杰出特性是它的CPU核,是由ARM公司设计的16/32位ARM7TDMIRISC处理器(66MHZ)。ARM7TDMI体系结构的特点是它集成了THUMB代码压缩器,片上的ICE断点调试支持,和一个32位的硬件乘法器。S3C44B0X通过提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。本章将对下面所列的各种片上功能进行介绍。特性体系结构集成了手持设备和通用嵌入式系统应用的解决方案16/32位RISC体系结构和ARM7TDMI处理器内核强大的指令体系THUMB代码压缩机,最大化代码密度同时保持了32位指令的性能基于JTAG的片上集成ICE调试支持解决方案32*8位硬件乘法器实现低功耗SAMBA2的新型总线结构系统管理器支持大/小端方式寻址空间:每BANK32M字节支持每BANK可编程的8/16/32位数据总线宽度7个bank具有固定的bank起始地址和可编程的bank大小1个bank具有可编程的bank起始地址和bank大小8个存储器bank6个ROM,SRAM存储器bank2个ROM/SRAM/DRAM所有的存储器bank具有可编程的操作周期支持外部等待信号延长总线周期支持掉电时DRAM/SDRAM的自刷新模式支持均匀/非均匀的DRAM地址Cache存储器和内部SRAM一体化的8k字节cache未用的cache空间用来作为0/4/8k字节的SRAM存储空间支持LRU替换算法采用保持主存储器与cache内容一致性的“写穿式”策略写存储器具有4级深度当cache未命中时,采用“请求数据优首先填充”技术时钟和电源管理低功耗片上PLL使MCN工作时钟最大达到75MHZ可以通过软件设置各功能模块的输入时钟电源模式:正常,慢速,空闲和停止模式正常模式:正常工作模式慢速模式:不加PLL的低时钟频率模式空闲模式:只停止CPU的时钟停止模式:停止所有的时钟通过EINT[7:0]或RTC报警中断从停止模式唤醒中断控制器30个中断源采用向量化的IRQ中断模式以减少中断的延迟可选的电平/边沿模式触发外部中断电平/边沿模式具有可编程的优先级支持EIQ为紧急的中断请求进行服务定时器和PWM5个通道16位具有PWM功能的定时器,1通道16位内部定时器可编程的占空比周期,频率,和优先级能产生死区支持外部时钟源RTC充分的时钟特性:毫秒,秒,分钟,小时,日,星期,月,年32.768kHZ时钟定时警报,可用于唤醒CPU可产生时钟节拍中断通用I/O口8个外部中断口71个多功能输入/输出口UART2通道UART,可进行基于DMA或中断的操作支持5位,6位,7位或8位串行数据传输/接受支持在发送/接受期间的H/W握手功能可编程的波特率支持IrDA1.0支持用于测试的回馈模式每个通道具有2个内部32字节的FIFO分别用于输入和输出DMA控制器2通道通用DMA控制器,不需要CPU干预2通道DMA桥控制器支持I/O到存储器,存储到I/O,I/O到I/O的6种DMA请求:软件,4个内部功能模块,和外部引脚在同时发生的多个DMA之间具有可编程的优先级顺序采用猝发方式的传输模式以提高FPDRAM,EDODRAM和SDRAM的数据传输速率支持在外部设备到存储器和存储器到外部设备之间采用FLY-BY模式A/D转换器8通道的ADC最大500ksps/10-bitLCD控制器支持彩色/黑白/灰度LCD屏支持单路扫描和双路扫描支持虚拟显示屏功能系统存储器用来作为显示缓存用专门的DMA来从系统存储器中获得图像数据可编程的屏幕大小灰度等级;16级灰度最多256种颜色看门狗定时器16位的看门狗定时器在定时器溢出时发出中断请求或系统复位IIC总线接口1通道多主IIC总线,可进行基于中断的操作模式可进行串行,8位,双向数据传输,标准模式速度达到100kbit/s,快速模式达到400k比特/sIIS总线接口1通道音频IIS总线接口,可进行基于DMA的操作串行,每通道8/16位数据传输支持MSB-JUSTIFIED数据格式SIO1通道SIO,可进行基于DMA或中断的操作可编程的波特率支持8位串行数据的传输和接收操作工作电压范围内核2.5v,I/O;3.0V到3.6v工作频率最大75MHZ封装160LQFP/160FBGA内部结构图芯片引脚定义各引脚信号描述第三章IDE接口介绍1.IDE接口简介IDE(IntegratedDriveElectronics,集成驱动器电子部件)接口是由COMPAQ公司开发、WESTERNDIGITAI.公司生产的控制器。IDE接口也称ATA(AT—ATTACHMENT.AT嵌入式接口),使用40线扁平电缆连接硬盘和IDE接口。IDE接口的主要特点是,可同时接两个硬盘,但不允许接入CD—ROM或其他IDE设备,它支持的最大柱面数为1024,磁头数为16,扇区数为63,每扇区512字节,因此传统IDE接口支持的硬盘最大容量为1024×16×63X512/1000000—528MB。IDE接口支持的硬盘最大数据传输率为3MBps。IDE接口的硬盘驱动器提供了两种数据传输模式:可编程I/O模式(PIO模式)和DMA模式。ATA标准为PIO和DMA方式定义了3种工作模式。其中模式0是常用的一种方式,也是最慢的一种方式。可以从“确认驱动器’’命令的返回参数中了解驱动器当前的工作模式。P10模式控制相对容易,提供了一种编程控制输入/输出的快速传输方法。该模式采用高速的数据块I/0,以扇区为单位,用中断请求方式与CPU进行批量数据交换。在扇区读/写操作时,一次按16位长度通过内部的高速PIO数据寄存器传输。通常情况下,数据传输以扇区为单位,每传输一扇区数据产生一个中断。2.IDE硬盘读/写操作IDE接口是一种任务寄存器结构的接口,所有输入/输出操作均通过对相应寄存器的读/写完成。IDE硬盘驱动器中的寄存器及地址分配见表7—2。表7—3为状态寄存器,它反映了硬盘驱动器执行命令后的状态。表7—2IDE硬盘驱动器中的寄存器及地址分配地址寄存器名及功能CSlFXCS3FXDA2DAlC)A0读操作写操作O1OOO数据寄存器O1OO1错误寄存器特性寄存器O1O1O扇区数寄存器O1O11扇区号寄存器O11OO柱面号寄存器:低字节O11O1柱面号寄存器:高字节O111O驱动器/磁头寄存器O1111状态寄存器命令寄存器表7—3状态寄存器住D7D6D5D4D3D2D1DO名称BSYDRDYDWF[)St:I)RQC()RRIDXERR意义驱动器忙驱动器准备好驱动器写失败寻道结束请求服务,驱动器希望通过数据寄存器与CPU交换l字节数据当可以纠正的读错误发生时,该位置1,数据传输将继续进行收到综引信号命令执行出错在向硬盘驱动器发出命令前,必须先检测硬盘驱动器是否忙碌(D7—1)。如果在规定时问内硬盘驱动器一直忙碌,则置超时错;否则表示硬盘驱动器空闲,可接受命令。如果CPU要对硬盘写数据,则首先cPU把必要的参数写入对应的地址寄存器,等待DRDY有效;然后将操作码写人命令寄存器,同时驱动器设置状态寄存器的DRQ位,表示准备好接收数据,cPU通过数据寄存器将数据写入扇区缓冲区;当扇区缓冲区填满后,驱动器清除DRQ位,并置位BSY,驱动器将扇区缓冲区中数据写入磁盘;当写盘结束时,清除BSY位,发中断请求信号DNTRQ;cPu接收到中断信号后,读驱动器状态寄存器,同时将中断信号INTRQ撤除。如果CPU要对硬盘进行读数据操作,则首先把参数写入地址寄存器和特性寄存器(如果需要);然后把命令码写入命令寄存器,命令开始执行。这时驱动器置状态寄存器中的.BSY为1,同时将硬盘上指定扇区内的数据送人扇区缓冲区。当扇区缓冲区准备好数据后,置位DRQ,清BSY,发中断请求信号INTRQ。CPU检测到中断后,读取状态寄存器,测试ERR位,若等于1,则转入出错处理;否则DRQ位为1,CPU从扇区缓冲区读取数据。数据读完后,驱动器复位DRQ位,然后驱动器重新设置BSY位。第四章FAT文件系统硬盘的工作原理硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。因此只要能将盘片表面处理得更平滑、磁头设计得更精密以及尽量提高盘片旋转速度,就能造出容量更大、读写数据速度更快的硬盘。这是因为盘片表面处理越平、转速越快就能越使磁头离盘片表面越近,提高读、写灵敏度和速度;磁头设计越小越精密就能使磁头在盘片上占用空间越小,使磁头在一张盘片上建立更多的磁道以存储更多的数据。二、硬盘的逻辑结构:
硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、2、3……形成Cylinders×Heads×Sector个扇区。这三个参数即是硬盘的物理参数。我们下面的很多实践需要深刻理解这三个参数的意义。三、磁盘引导原理:
3.1
MBR(master
boot
record)扇区:
计算机在按下power键以后,开始执行主板bios程序。进行完一系列检测和配置以后。开始按bios中设定的系统引导顺序引导系统。假定现在是硬盘。Bios执行完自己的程序后如何把执行权交给硬盘呢。交给硬盘后又执行存储在哪里的程序呢。其实,称为mbr的一段代码起着举足轻重的作用。MBR(master
boot
record),即主引导记录,有时也称主引导扇区。位于整个硬盘的0柱面0磁头1扇区(可以看作是硬盘的第一个扇区),bios在执行自己固有的程序以后就会jump到mbr中的第一条指令。将系统的控制权交由mbr来执行。在总共512byte的主引导记录中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(Disk
PartitionTable,硬盘分区表),最后的两个字节“55
AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。
MBR不随操作系统的不同而不同,意即不同的操作系统可能会存在相同的MBR,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。我们来分析一段mbr。MBR区介绍: 起始位置:0柱面0磁头1扇区(硬盘的第一个扇区) 结束位置:0柱面0磁头1扇区 大小:512(硬盘每个扇区的所占用的字节数)个字节 000102030405060708090a0b0c0d0e0f000000000000000000000000-0000000000000000000000100000000000000000-0000000000000000………………-……000001b00000000000000000-0000000000008001000001c001000cfffffe3f00-0000fc8a38010000000001d00000000000000000-0000000000000000000001e00000000000000000-0000000000000000000001f00000000000000000-00000000000055aa图4.1现以第一个分区的入口参数为例:80分区状态(80H表示为激活分区,00H表示为非激活分区)01分区的开始磁头0100 分区的开始柱面和扇区(0~5位为扇区号、8~15位为柱面号的低8位,6~7位为柱面号的高两位)0c分区的类型(0c表示为FAT32,用LBA方式)ff分区的结束磁头fffe分区的结束柱面和扇区(表示同开始磁头)3f000000 从MBR到第一个分区扇区的扇区个数(硬盘扇区最大值)fc8a3801 分区的总扇区数(可以计算扇区的总大小)我们看DPT部分。操作系统为了便于用户对磁盘的管理。加入了磁盘分区的概念。即将一块磁盘逻辑划分为几块。磁盘分区数目的多少只受限于C~Z的英文字母的数目,在图4.1中DPT共64个字节中如何表示多个分区的属性呢?microsoft通过链接的方法解决了这个问题。在DPT共64个字节中,以16个字节为分区表项单位描述一个分区的属性。也就是说,第一个分区表项描述一个分区的属性,一般为基本分区。第二个分区表项描述除基本分区外的其余空间,一般而言,就是我们所说的扩展分区。这部分的大体说明见表(1)。表(1)每个分区表项占用16个字节,假定偏移地址从0开始。
1、0H偏移为活动分区是否标志,只能选00H和80H。80H为活动,00H为非活动。其余值对microsoft而言为非法值。
2、重新说明一下(这个非常重要):大于1个字节的数被以低字节在前的存储格式格式(little
endian
format)或称反字节顺序保存下来。低字节在前的格式是一种保存数的方法,这样,最低位的字节最先出现在十六进制数符号中。例如,相对扇区数字段的值0x3F000000的低字节在前表示为0x0000003F。这个低字节在前的格式数的十进制数为63。
3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时候我们分区是输入分区的大小为7000M,分出来却是6997M,就是这个原因。
偏移2H和偏移6H的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit),以偏移6H为例,其低6位用作扇区数的二进制表示。其高两位做柱面数10位中的高两位,偏移7H组成的8位做柱面数10位中的低8位。由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0开始编号,扇区从1开始编号,所以最多只能表示1024个柱面×63个扇区×256个磁头×512byte=8455716864byte。即通常的8.4GB(实际上应该是7.8GB左右)限制。实际上磁头数通常只用到255个(由汇编语言的寻址寄存器决定),即使把这3个字节按线性寻址,依然力不从心。
在后来的操作系统中,超过8.4GB的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移CH~偏移FH共4个字节32位线性扇区地址来表示分区所占用的扇区总数。可知通过4个字节可以表示2^32个扇区,即2TB=2048GB,目前对于大多数计算机而言,这已经是个天文数字了。在未超过8.4GB的分区上,C/H/S的表示方法和线性扇区的表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即使不协调,也以线性寻址为准。(可能在某些系统中会提示出错)。超过8.4GB的分区结束C/H/S一般填充为FEH
FFH
FFH。即C/H/S所能表示的最大值。有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。虽然现在的系统均采用线性寻址的方式来处理分区的大小。但不可跨柱面的原则依然没变。本分区的扇区总数加上与前一分区之间的保留扇区数目依然必须是柱面容量的整数倍。(保留扇区中的第一个扇区就是存放分区表的MBR或虚拟MBR的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。如果是第一个分区,保留扇区是本分区前的所有扇区。3.2
扩展分区
扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录(
Extended
Boot
Record,
EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区。第二项指向下一个逻辑驱动器的EBR。如果不存在进一步的逻辑驱动器,第二项就不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。通过一幅4分区的磁盘结构图可以看到磁盘的大致组织形式。如图4.2:图4.24分区基本磁盘关于扩展分区,如图4.3所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。该图显示了一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩展分区表中的差异。图4.3分区表链图示除了扩展分区上最后一个逻辑驱动器外,表2中所描述的扩展分区表的格式在每个逻辑驱动器中都是重复的:第一个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的EBR。最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。最后一个扩展分区表的第二个项到第四个项被使用。表(2)
扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位移的字节数。总扇区数字段中的数是指组成该逻辑驱动器的扇区数目。总扇区数字段的值等于从扩展分区表项所定义的引导扇区到逻辑驱动器末尾的扇区数。
有时候在磁盘的末尾会有剩余空间,剩余空间是什么呢?我们前面说到,分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。照道理说,磁盘的物理模式决定了磁盘的总容量就应该是整数个柱面的容量,为什么会有不够一个柱面的空间呢。在我的理解看来,本来现在的磁盘为了更大的利用空间,一般在物理上并不是按照外围的扇区大于里圈的扇区这种管理方式,只是为了与操作系统兼容而抽象出来CHS。4.1
关于DBR
DBR区(DOS
BOOT
RECORD)即操作系统引导记录区的意思,通常占用分区的第0扇区共512个字节(特殊情况也要占用其它保留扇区,我们先说第0扇)。在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOS
Parameter
Block),扩展BPB,os引导程序,结束标志几部分组成。4.2
关于保留扇区
在上述FAT文件系统DBR的偏移0x0E处,用2个字节存储保留扇区的数目。所谓保留扇区(有时候会叫系统扇区,隐藏扇区),是指从分区DBR扇区开始的仅为系统所有的扇区,包括DBR扇区。在FAT16文件系统中,保留扇区的数据通常设置为1,即仅仅DBR扇区。而在FAT32中,保留扇区的数据通常取为32,有时候用Partition
Magic分过的FAT32分区会设置36个保留扇区,有的工具可能会设置63个保留扇区。FAT32中的保留扇区除了磁盘总第0扇区用作DBR,总第2扇区(win98系统)或总第0xC扇区(win2000,winxp)用作OS引导代码扩展部分外,其余扇区都不参与操作系统管理与磁盘数据管理,通常情况下是没作用的。操作系统之所以在FAT32中设置保留扇区,是为了对DBR作备份或留待以后升级时用。FAT32中,DBR偏移0x34占2字节的数据指明了DBR备份扇区所在,一般为0x06,即第6扇区。当FAT32分区DBR扇区被破坏导致分区无法访问时。可以用第6扇区的原备份替换第0扇区来找回数据。4.3
FAT表和数据的存储原则
FAT表(File
Allocation
Table
文件分配表),是Microsoft在FAT文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。假如把磁盘比作一本书,FAT表可以认为相当于书中的目录,而文件就是各个章节的内容。但FAT表的表示方法却与目录有很大的不同。在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行。同时,FAT文件系统将组织数据时使用的目录也抽象为文件,以简化对数据的管理。FAT32存储原理:
FAT32是个非常有功劳的文件系统,Microsoft成功地设计并运用了它,直到今天NTFS铺天盖地袭来的时候,FAT32依然占据着Microsoft
Windows文件系统中重要的地位。FAT32最早是出于FAT16不支持大分区、单位簇容量大以致空间急剧浪费等缺点设计的。实际应用中,FAT32还是成功的。
FAT32与FAT16的原理基本上是相同的,图4.4标出了FAT32分区的基本构成图4.4FAT32分区的基本构成FAT32在格式化的过程中就根据分区的特点构建好了它的DBR,其中BPB参数是很重要的,可以回过头来看一下表4和表5。首先FAT32保留扇区的数目默认为32个,而不是FAT16的仅仅一个。这样的好处是有助于磁盘DBR指令的长度扩展,而且可以为DBR扇区留有备份空间。上面我们已经提到,构建在FAT32上的win98或win2000、winXP,其操作系统引导代码并非只占一个扇区了。留有多余的保留扇区就可以很好的拓展OS引导代码。在BPB中也记录了DBR扇区的备份扇区编号。备份扇区可以让我们在磁盘遭到意外破坏时恢复DBR。
FAT32的文件分配表的数据结构依然和FAT16相同,所不同的是,FAT32将记录簇链的二进制位数扩展到了32位,故而这种文件系统称为FAT32。32位二进制位的簇链决定了FAT表最大可以寻址2T个簇。这样即使簇的大小为1扇区,理论上仍然能够寻址1TB范围内的分区。但实际中FAT32是不能寻址这样大的空间的,随着分区空间大小的增加,FAT表的记录数会变得臃肿不堪,严重影响系统的性能。所以在实际中通常不格式化超过32GB的FAT32分区。WIN2000及之上的OS已经不直接支持对超过32GB的分区格式化成FAT32,但WIN98依然可以格式化大到127GB的FAT32分区,但这样没必要也不推荐。同时FAT32也有小的限制,FAT32卷必须至少有65527个簇,所以对于小的分区,仍然需要使用FAT16或FAT12。
分区变大时,如果簇很小,文件分配表也随之变大。仍然会有上面的效率问题存在。既要有效地读写大文件,又要最大可能的减少空间的浪费。FAT32同样规定了相应的分区空间对应的簇的大小,见表(3):表(3)
FAT32的另一项重大改革是根目录的文件化,即将根目录等同于普通的文件。这样根目录便没有了FAT16中512个目录项的限制,不够用的时候增加簇链,分配空簇即可。而且,根目录的位置也不再硬性地固定了,可以存储在分区内可寻址的任意簇内,不过通常根目录是最早建立的(格式化就生成了)目录表。所以,我们看到的情况基本上都是根目录首簇占簇区顺序上的第1个簇。FAT32对簇的编号依然同FAT16。顺序上第1个簇仍然编号为第2簇,通常为根目录所用(这和FAT16是不同的,FAT16的根目录并不占簇区空间,32个扇区的根目录以后才是簇区第1个簇)
FAT32的文件寻址方法与FAT16相同,但目录项的各字节参数意义却与FAT16有所不同,一方面它启用了FAT16中的目录项保留字段,同时又完全支持长文件名了。
对于短文件格式的目录项。其参数意义见表(4):表(4)说明:
(1)、这是FAT32短文件格式目录项的意义。其中文件名、扩展名、时间、日期的算法和FAT16时相同的。
(2)、由于FAT32可寻址的簇号到了32位二进制数。所以系统在记录文件(文件夹)开始簇地址的时候也需要32位来记录,FAT32启用目录项偏移0x12~0x13来表示起始簇号的高16位。
(3)、文件长度依然用4个字节表示,这说明FAT32依然只支持小于4GB的文件(目录),超过4GB的文件(目录),系统会截断处理。
FAT32的一个重要的特点是完全支持长文件名。长文件名依然是记录在目录项中的。为了低版本的OS或程序能正确读取长文件名文件,系统自动为所有长文件名文件创建了一个对应的短文件名,使对应数据既可以用长文件名寻址,也可以用短文件名寻址。不支持长文件名的OS或程序会忽略它认为不合法的长文件名字段,而支持长文件名的OS或程序则会以长文件名为显式项来记录和编辑,并隐藏起短文件名。
当创建一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:
(1)、取长文件名的前6个字符加上"~1"形成短文件名,扩展名不变。
(2)、如果已存在这个文件名,则符号"~"后的数字递增,直到5。
(3)、如果文件名中"~"后面的数字达到5,则短文件名只使用长文件名的前两个字母。通过数学操纵长文件名的剩余字母生成短文件名的后四个字母,然后加后缀"~1"直到最后(如果有必要,或是其他数字以避免重复的文件名)。
(4)、如果存在老OS或程序无法读取的字符,换以"_"
长文件名的实现有赖于目录项偏移为0xB的属性字节,当此字节的属性为:只读、隐藏、系统、卷标,即其值为0FH时,DOS和WIN32会认为其不合法而忽略其存在。这正是长文件名存在的依据。将目录项的0xB置为0F,其他就任由系统定义了,Windows9x或Windows
2000、XP通常支持不超过255个字符的长文件名。系统将长文件名以13个字符为单位进行切割,每一组占据一个目录项。所以可能一个文件需要多个目录项,这时长文件名的各个目录项按倒序排列在目录表中,以防与其他文件名混淆。
长文件名中的字符采用unicode形式编码(一个巨大的进步哦),每个字符占据2字节的空间。其目录项定义如表(5)。表(5)系统在存储长文件名时,总是先按倒序填充长文件名目录项,然后紧跟其对应的短文件名。从表15可以看出,长文件名中并不存储对应文件的文件开始簇、文件大小、各种时间和日期属性。文件的这些属性还是存放在短文件名目录项中,一个长文件名总是和其相应的短文件名一一对应,短文件名没有了长文件名还可以读,但长文件名如果没有对应的短文件名,不管什么系统都将忽略其存在。所以短文件名是至关重要的。在不支持长文件名的环境中对短文件名中的文件名和扩展名字段作更改(包括删除,因为删除是对首字符改写E5H),都会使长文件名形同虚设。长文件名和短文件名之间的联系光靠他们之间的位置关系维系显然远远不够。其实,长文件名的0xD字节的校验和起很重要的作用,此校验和是用短文件名的11个字符通过一种运算方式来得到的。系统根据相应的算法来确定相应的长文件名和短文件名是否匹配。这个算法不太容易用公式说明,我们用一段c程序来加以说明。
假设文件名11个字符组成字符串shortname[],校验和用chknum表示。得到过程如下:
int
i,j,chknum=0;
for
(i=11;
i>0;
i--)
chksum
=
((chksum
&
1)
?
0x80
:
0)
+
(chksum
>>
1)
+
shortname[j++];
如果通过短文件名计算出来的校验和与长文件名中的0xD偏移处数据不相等。系统无论如何都不会将它们配对的。
依据长文件名和短文件名对目录项的定义,加上对簇的编号和链接,FAT32上数据的读取便游刃有余了。附件:硬盘初始化及软件的读写实现程序1)硬盘的初始化通过向RESET引脚发送一个低跳变来实现,可按照如下代码来完成:*((p_u8)IDE_CONROL_ADDR)=ide_ctrl_value1IDE_CONTROL_RST;DELAY(100)/*产生负跳变*/*((p_u8)IDE_CONTROL_ADDR)=ide_ctrl_value&~IDE_CONTROL_RST;DELAY(200);/*恢复成正常操作*/*((p_u8)IDE_CONTROL_ADDR)=ide_ctrl_value1IDE_CONTROL_RST;Delay(100);2)读扇区操作硬盘扇区读操作有以下几个步骤:①主机设置扇区读操作的一些参数,如扇区数、扇区号、磁道号、柱面号、驱动器号。Outp(REG_SECTOR_COUNT,sec_cnt);Outp(REG_SECTOR_NUMBER,sec_num)Outp(REG_CYLINDER_LOW,clyn&0x00ff)Outp(REG_CYLINDER_HIGH,(CLYN>>8)&0x00ff);Outp(REG_DRIVE_HEAD,0xa01(head&0x0f));//CHSmodeandmasterdevice②主机发送读请求命令。Outp(REG_COMMAND,IDE_CMD_READ_SECTORS);③判断硬盘数据就绪:硬盘在收到命令后开始准备数据,并将BUSY置位,就绪后将清除BUSY,并且将DRQ置位。Do{status=inp(REG_STATUS);If((!(status&IDE_ST_BUSY))&&(STATUS&IDE_ST_DRQ))break;}While(status&ide_st_busy);④主机读取数据。For(index=0;index!=512;index+=2){*p_buffer=inw(REG_DATA);P_buffer++;}⑨读F一个厨区。3)写扇区操作①主机设置扇区读操作的一些参数,如扇区数、扇区号、磁道号、柱面号、驱动器号。②主机发送写请求命令。③检查硬盘就绪:硬盘在收到命令且就绪后将DRQ置位。④主机写一个扇区的数据到硬盘缓冲区。⑤硬盘在收到一个扇区的数据后,清除BUSY,并且将DRQ置位,从而将数据从缓冲区写到磁盘上。⑥一个扇区写完后,若还有数据需要传送,则硬盘会将DRQ重新置位,主机重复第④步操作,直到结束。4)格式化扇区操作①主机设置扇区读操作的一些参数,如扇区数、扇区号、磁道号、柱面号、驱动器号。②主机发送格式化请求命令。③检查硬盘就绪:硬盘在收到命令且就绪后将DRQ置位。④主机写一个扇区的数据到硬盘缓冲区。⑤硬盘在收到一个扇区的数据后,清除BUSY,并且将DRQ置位,从而将数据从缓冲区写到磁盘上。⑥一个扇区写完后,若还有扇区需要格式化,则硬盘会将DRQ重新置位,主机重复第④步操作,直到结束。结论本文主要介绍了arm7通过ide接口实现对硬盘的读写,简要的介绍了嵌入式技术的发展历程以及arm技术。对于s3c44b0x的内部结构及芯片各引脚做了详细的介绍。对于ide接口,介绍了它的传输方式以及对硬盘读写的实现方式。最后,对硬盘的工作原理及FAT文件系统做了详细的介绍。参考文献[1]陈赜等,《ARM嵌入式实践教程》,北京航空航天大学出版社,2005.2[2]《ARM应用系统开发详解--s3c44B0X》,[3]李(Li,Q),《嵌入式系统的实时概念》,北京航空航天大学出版社,2004.06.1[4]张茹,《嵌入式系统技术基础》,北京邮电大学出版社,2006.01.01[5]苏建平,《嵌入式微处理器系统设计实例》(第3版),电子工业,2004.03.1[6]赵星寒,《从51到ARM-32位嵌入系统入门》,北京航大出版社,2005.10.1[7]潘巨龙,《ARM7嵌入式系统构建与应用》,北京航空航天出版社,2005.01.10[8]CraigHollabaugh,《嵌入式Linux--硬件、软件与接口》,电子工业,2003.03.1[9]张祈文,《ARM嵌入式常用模块与综合系统设计实例精讲》,电子工业出版社,2007.01.01[10]
佚名,《嵌入式短程无线通信工程系统硬件设计》,来源网络[11]周立功夏宇闻,《单片机与CPLD综合应用技术》,北京航空航天大学出版社,2004.03.01[12]何立民,《I2C总线应用系统设计》,北京航空航天大学出版社.2005.3.1[13]李岩,《基于S3C44B0X嵌入式ΜCLINUX系统原理及应用》,清华大学出版社2005.1[14]Paret,《LeBusI2C:Principesetmiseenoeuvre》,(PaperbackDec2,1999)[15]MICROCHIPTECHNOLOGYDEBUTSFIRST512KBITI2CSERIALEEPROMIN8-LEADSOICPACKAGE.(MicrochipTechnology24LC515)(ProductAnnouncement):Anarticlefrom:SoftwareIndustryReport(Jun1,2005)致谢经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。
在这里首先要感谢我的导师孙老师。他平日里工作繁多,但在我做毕业设计的每个阶段,从外出实习到查阅资料,设计草案的确定和修改,中期检查,后期详细设计,设计草稿等整个过程中都给予了我悉心的指导。我的设计较为复杂烦琐,但是孙老师老师仍然细心地纠正图纸中的错误。除了敬佩孙老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。由于知识有限、经验不足,文中难免有一些不足之处,敬请各位老师提出宝贵意见。最后感谢百忙之中对我论文进行审稿的各位老师,感谢孙江波老师对我论文的耐心指导和审阅。
学士学位论文题目:Android二维码的扫描识别设计人:指导教师:所属系部:计算机科学与技术学院专业班级:计算机科学与技术太原科技大学学士学位论文第一章系统概述1.1系统开发背景和意义1.1.1系统开发背景条形码技术是集条码理论、光电技术、计算机技术、通信技术等技术于一体的综合性技术,起源于20世纪40年代。它具有输入速度快、可靠性高、采集信息量大、成本低等特点,近年来发展十分迅速,在国际上广泛应用于商品流通、物流仓储、信息服务等各个领域,极大地提高了生产效率。近几年,另一个广泛得到普及的领域就是手机,自90年代初以来,无线移动技术和市场应用得到飞速发展和成功。从寻呼机到目前3G手机的面市,中国人已经习惯了手中的移动手机不停地变化。移动通信发展的焦点已经由用户数量的增长,转为业务量和新业务的增长;由技术驱动转为业务驱动。在激烈的市场竞争中,越来越成熟的手机用户不仅注重手机硬件的外观,更注重手机所赋予的强大功能。以上两个普及领域催生了一个新的需求:即将二维码和手机结合起来,利用手机作为读取设备,实现条码识别。目前国际ISO标准已经有多种条形码,其中应用最广泛的有PDF417、DateMatrix、QR码等。QR码是矩阵式二维条形码的代表,它除了具有一维条码和其它二维条码所具有的信息容量大、可靠性高等特点外,还具有全方位识读、能有效表示中、英、简、繁、日、韩等文字、超高速识读以及超强的纠错能力和抗干扰能力等特性。适合于我国的国情以及汉字编码的特点。综上,QR码在手机中的应用有着良好的前景和潜力,它将有效地推动移动增值业务的快速增长,有利于为我国信息产业的发展和经济建设带来社会及经济效益。1.1.2系统开发的意义二维码作为一种全新的条码技术,已被广泛应用于国防、医疗保健、商业、金融、后勤管理等领域。由于QRCode二维码信息容量大,保密性能好,并且成本低,适合我国人口众多,计算机建设还不是很完善的国情,因此在我国有着十分广阔的应用前景。可以预见,二维条码技术在我国的推广上应用必将为我国信息产业的发展和现代化的经济建设带来可观的社会效益和经济效益。1.1.3二维码介绍二维码(2-dimensionalbarcode),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。在许多种类的二维条码中,常用的码制有:DataMatrix,MaxiCode,Aztec,QRCode,Vericode,PDF417,Ultracode,Code49,Code16K等。1.堆叠式/行排式二维条码,如,Code16K、Code49、PDF417(如下图)等。2.矩阵式二维码,最流行莫过于QRCODE。QR(Quick-Response)code是被广泛使用的一种二维码,解码速度快。它可以存储多用类型。现在使用的QRCODE二位条形码的规范一直遵循OMIA(OpenMobileInternetAlliance)的规范,QRCode基本结构如图1.1所示。图1.1QRCode基本结构其中:位置探测图形、位置探测图形分隔符和定位图形用于对二维码的定位;对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;规格确定,校正图形的数量和位置也就确定了;格式信息表示改二维码的纠错级别,分为L、M、Q、H;版本信息即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本每边增加4个模块。数据和纠错码字实际保存的二维码信息和纠错码字(用于修正二维码损坏带来的错误)。简要的解码过程:二维码图像->图像解析出01编码->按照规则解释为相应的内容。1.2开发工具介绍1.2.1Eclipse简介Eclipse是一个综合开发环境(IntegratedDevelopmentEnvironment)IDE,它是一个功能完整且成熟的软件,由IBM公司于2001年首次推出。大家可以在其官方网站免费下载该软件的打包文件,释放到文件夹即可使用。Eclipse是一个开放源代码、基于Java的可扩展开发平台。开放源代码的意思是让使用者能够取得软件的原始码,部分地有权去修改和传播这个软件。有人非常形象地将Eclipse比喻成软件开发者的“打铁铺”,它一开始备有火炉、铁砧与铁锤。就像铁匠会用现有的工具打造新的工具一样,程序员也能用Eclipse打造新工具来开发软件———这些新工具可扩充Eclipse的功能。就Eclipse本身而言,它只是一个框架和一组被称为平台核心的服务程序,用于通过插件组件构建开发环境。核心的任务是让每样东西动起来,并加载所需的外挂程序。当启动Eclipse时,先执行的就是这个组件,再由这个组件加载其他外挂程序。Eclipse附带了一个包括Java开发工具(JavaDevelopmentTools,JDT)的标准插件集,因此如果要使用Eclipse来开发Java程序,必须安装JDK作为它的插件才能使它正常运作。1.2.2JDK简介JDK(JavaDevelopmentKit,JDK)是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(JavaVirtualMachine,JVM)运行效率要比SunJDK包含的JVM高出许多。JDK的最重要命令行工具:java:启动JVM执行class;javac:Java编译器;jar:Java打包工具;javadoc:Java文档生成器。1.2.3AndroidSDK简介AndroidSDK(softwaredevelopmentkit,SDK)Tool软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合,是Android专属的软件开发工具包。1.2.4ADT简介目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。1.3项目开发环境1.3.1硬件环境处理器:IntelCeleron2.4GHz以上处理器及以上内存:1GB及以上硬盘空间:80GB及以上华为C8650手机一部1.3.2软件环境操作系统:WindowsXP(32-bit)或windowsvista(32位或64位)或MacOSX10.4.8或更新的版本(硬件必须是X86的版本)或Linux(在LinuxUbantuHardyHeron上)。开发工具:jdk-6u26-windows-i586、EclipseIndigoServiceRelease2、android-sdk_r18-windows、ADT18。1.4环境搭建在开始搭建Android开发环境之前,读者必须具有一定的Java编程基础,像JDK环境安装,环境设置之类的入门知识,这里不做详细的介绍,下面将从AndroidSDK的安装开始讲起,详细说明Android开发、测试环境的安装和使用。1.4.1下载和安装AndroidSDK登陆Android开发者网站/sdk/index.html即可下载AndroidSDK。下载和安装步骤如下:在Android1.5之前,Google提供了AndroidSDK的完整开发包;从Android1.6之后,Google不再提供完整开发包,开发者必须采用在线的方式安装AndroidSDK。此处以Windows开发平台为例,登陆界面之后点击“android-sdk_r18-windows.zip”连接,通过连接即可下载AndroidSDK的在线安装包。下载完成后得到android-sdk_r18-windows.zip文件。将该文件解压到任意路径,解压后文件夹,启动文件夹中SDKManager.exe,单击出现窗口左边“Installedpackages”项,可以查看已有安装工具,单击“Availablepackages”然后选安装工具,其中Android平台工具、Android文档、Android2.3SDK必须选,然后单击“InstallSelected”,窗口出现“AcceptAll”单选按钮,单击“Install”系统便开始安装AndroidSDK,安装时间可能要花费一两个小时。1.4.2安装Eclipse和ADT插件Eclipse是一个市场占有率很高的JavaIDE工具,JavaEE应用的开发者对Eclipse应该十分熟悉,Android推荐使用Eclipse来开发Android应用,并为它提供专门的插件ADT(AndroidDevelopmentTools,ADT)。安装Eclipse工具按如下步骤进行:登陆站点,下载EclipseIDEforJavaEEDeveloper的版本。下载完成后解压缩后双击eclipse.exe文件,即可看到Eclipse启动界面,表明Eclipse已经安装成功,为了在Eclipse中进行Android开发,还需要安装ADT插件。安装ADT请按如下步骤进行登陆下载:登陆网站:/sdk/eclipse-adt.html#installing下载ADT插件最新版本,下载后得到ADT-18.0.0.zip文件。启动Eclipse,单击Eclipse的主菜单上Help/InstallNewSoftware菜单项,单击窗口“Add..”按钮,选择ADT插件ADT-18.0.0.zip文件。选中“OK”按钮,在点击“next”,最后点击“Finish”,Eclipse开始安装ADT插件。稍稍等几分钟,ADT插件安装完成再配置相应环境变量即可进行Android软件开发了。
第二章可行性研究和需求分析2.1可行性研究一个项目的开发需要仔细分析,看它在目前的情况下是否可行,如果一个项目开发具有很好的背景和意义,但是在经济上或者是技术上是不可行的,那么它也只能称之为不能实现的项目。通过参照现有相似的其他网站的使用效果和分析实例进行可行性2]研究,主要从以下四个方面进行讨论。2.1.1技术可行性本次开发的android二维码扫描识别软件,用户通过手机对QRcode二维码进行拍照解码识别并且显示二维码隐藏的信息,如果二维码为“http://”,则打开手机浏览器直接上网;当发现为“wtai://”或“TEL:”规范,则调用手机拨打电话;而若未发现任何标准规范,则显示条形码的文字。如果拍照的图片不是QRcode二维码条形码或者程序无法识别,则不作任何处理。首先我们需要借助一个第三方的库函数QRCODE.jar.然后我们可以通过手机照相机获取二维码图片,然后将其送往QRCode的函数进行解码,对比我们的OMIA规范,即可实现,因此在技术上可行。2.1.2经济可行性二维码在国内应用引起众多用户群体的兴趣,国内许多厂商已经开始致力于二维码的研究,设备开发与应用系统的应用推广及新市场的培育,投资方很看好这个项目,在资金方面没有问题,所以在经济上可行。2.1.3操作可行性通过对android二维码扫描识别的研究,本系统能满足投资方的基本要求,同时由于本系统只需要有一台android手机即可对QRcode二维码进行扫描识别、在操作方面可行。2.1.4社会可行性本软件可以让用户通过手机对一些产品上的二维码进行扫描识别,从而查看该产品的真伪。对社会帮助很大。根据以上几个方面的研究分析,Android二维码的扫描识别在技术上可行、经济方面可行、操作方面可行、法律方面也是可行的,可得出结论:应该立即进行本项目的开发。2.2需求分析需求分析是软件定义的最后一个阶段,它的基本任务是回答“系统必须做什么”这个问题。需求分析的任务不是确定系统怎样完成他的工作,而仅仅是确定系统完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。可行性研究阶段产生的文档,是需求分析的出发点。从需求分析中已经划分出系统必须完成的许多基本功能,系统分析员将仔细研究这些功能并进一步将它们具体化。需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。因此,必须用行之有效的方法对软件需求进行严格的审查验证。本系统的实现要考虑到很多方面的因素,因此要求的方法和技术要相应的有些多。具体来说,在开发过程中,要熟悉QRcode二维码解码和图像处理的方法,能熟练运用JAVA语言,还要懂得软件工程技术和系统测试技术。由于此系统的开发是在XP环境下借助JDK、Eclipse、ADT和SDK完成的,所以还应熟练使用XP和这些开发工具。2.2.1系统功能需求1、相机预览需求此二维码识别系统必须能够调用手机上的照相机才能获取二维码的图像,因此需要一个相机预览功能,之后才能获取我们的二维码图片。2、关闭相机预览需求此系统既然要打开手机照相机,当然也能够关闭相机预览功能。3、图像处理和拍照解码需求既然此系统是要对二维码识别,我们通过相机预览后即可进行拍照截取图片,然后对图片进行处理,同时需要对二维码解码,因此需要有图像处理和解码的功能。4、调用浏览器功能当我们二维码隐藏的是一个网站信息时,我们需要访问该网站,那么我们这时候需要调用我们手机浏览器功能。5、调用手机拨打电话功能当我们二维码隐藏的是一个电话号码时,这个时候我们需要调用我们手机拨打电话功能。6、其他功能显示文本功能:当二维码隐藏的只是一些文本信息的时候能够文本信息显示出来。2.2.2系统功能结构图系统结构图是对软件系统结构的总体设计的图形显示,在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定的联系,这就是功能设计。在设计阶段,基于这个功能的层次结构把各个部分组合起来成为系统。如图2.1所示。图2.1系统功能结构图2.2.3系统用例图1、系统用户用例图用例图就是由主角、用例以及它们之间的关系构成的图。该图说明了用例模型中的关系。通过上面对系统的分析即可得到系统的用例图,如图2.2所示。图2.2系统用例图2、相机预览用例:调用手机照相机初始化相机模式。3、关闭相机用例:关闭手机照相机。4、拍照解码用例:通过手机照相机把二维码图片拍下来然后再送入系统解码。(1)调用浏览器用例:如果二维码信息隐藏的是以“http://”开头的网址,那么手机便调用默认浏览器浏览该网站。(2)调用拨打电话功能用例:如果二维码信息隐藏的是以“TEL:”或者是“wtai://”开头的电话号码,那么手机直接调用拨打电话功能。(3)显示文本信息用例:如果二维码信息只是包含一些文本信息,那么直接显示。2.2.4系统活动图活动图(activitydiagram,动态图)是阐明了业务用例实现的工作流程。业务用例工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。系统的活动图如图2.3所示。图2.3系统活动图2.3技术需求Android二维码扫描系统是一个综合性比较强的题目,它需要在学校学习多方面知识,具体的几个主要技术要求如下:1、android技术Android开发之前呢,需要配置Android开发环境。首先,Android开发所需要的开发包和工具,以及获得它们的方式;其次,如何正确安装和配置这些开发包;最后,为了测试安装的开发环境,创建了第一个Android项目--HelloAndroid,并在模拟器上运行和调试该程序,并且将该应用程序安装到Android手机上。2、照相机实现技术在了解了android开发的过程之后需要学习android怎样进行照相。Android应用提供了Camera来控制拍照,使用Camera进行拍照需要按照如下步骤进行即可.调用Camera的open()方法打开照相机。调用Camera和getParameters()方法获取拍照参数。该方法返回一个Camera.Parameters对象。调用Camera.Parameters对象方法设置相机参数。调用Camera的setParameters(),并将Camera.Parameters对象作为参数传入,这样即可对相机的拍照参数进行控制。调用Camera的startPreview()方法开始预览取景,在预览取景之前需要调用Camera的setPreviewDisplay(SurfaceHolderholder)方法设置使用哪一个SurfaceView来显示取景图片。调用Camera的takePicture()方法进行拍照。3、二维码图片处理技术首先二维码图片是图片的一种,当拍摄下来时需要将该图片送往解码函数解码,因此需要获取预览中图片,在这里用的是bitmap这个类。4、二维码解码技术将预览画面中的二维码图片送到我们的解码函数对二维码进行解码,因此需要应用android另外的一个JAR包。这个系统主要是对二维码的一种QRcode进行解码,因此这里需要引用sourceforge.jp里的qrcode项目。2.4性能需求Android二维码的扫描识别系统性能方面的要求主要体现在以下几个方面:1、时间需求本系统需要对二维码进行准确迅速的识别,所以对系统的时间要求更为严格。2、系统界面需求软件界面直观、简洁,人机交互性强。
第三章系统总体设计3.1系统总体设计目标经过可行性研究和需求分析阶段的工作,已经清楚系统必须完成的工作,下面的工作就应该是决定“如何做”的问题。概要设计的基本目的就是“概括地说系统应该如何实现?”通过该阶段的工作将划分出系统的物理元素——程序、文件、数据库、文档等,另一方面的主要工作是设计软件的结构,即确定系统都由哪些模块组成及模块之间的相互关系。3.2系统概要设计概要设计的主要任务是设计软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PETS英语等级考试模拟试题及详细参考答案
- 2026年河道修防工(中级)职业技能考试题库及答案
- 海水预处理操作工安全操作规程
- 肾损伤保守治疗影像复查周期规范共识
- 2025-2026学年云南省曲靖市初中数学九年级期末上册自测高频题(详细参考解析)
- Oracle数据库机考实操试题(含详细答案解析)
- OD机试真题(技术岗)含详细答案解析
- 轨道交通消防系统升级改造方案
- 2026年不动产登记代理人《不动产权利理论与方法》题库及答案
- OA系统面试题及详细参考答案(实操版)
- 水钻打孔协议书
- 毕业设计(论文)-干玉米脱粒机设计
- 《壮药养生膏方生产技术规范》(征求意见稿)编制说明
- T/SSR 705-2024空调器用全铝微通道热交换器腐蚀性能评价值及试验方法
- 河北省建筑工程施工现场安全生产承诺书模板
- 【课件】代数式的值课件2024-2025学年人教版数学七年级上册
- 新闻记者职业资格《新闻基础知识》考试题库(含答案)
- 北师大版(2024新版)七年级上册数学全册教案
- DL∕T 1657-2016 活性焦干法脱硫技术规范
- 半导体设备行业:玻璃基板从零到一TGV为关键工艺
- 中华人民共和国卫生部药品标准 中药成方制剂(全20册)
评论
0/150
提交评论