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

网站到期只续域名不续空间能打开吗互联网时代的营销

网站到期只续域名不续空间能打开吗,互联网时代的营销,网址导航app大全,肇庆网站制作企业文件系统I/O FATFS RW 源码分析 0 参考 FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 整个项目都按照 ANSI C (C89) 编写。与存储器 I/O 解耦良好#xff0c;便于移植到 8051、PIC、AVR、ARM、Z80、RX 等小型微控制器中。 下面是关于 FAT 文件系统格式…文件系统I/O FATFS RW 源码分析 0 参考 FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 整个项目都按照 ANSI C (C89) 编写。与存储器 I/O 解耦良好便于移植到 8051、PIC、AVR、ARM、Z80、RX 等小型微控制器中。 下面是关于 FAT 文件系统格式和 FATFS 项目的文档链接。 FatFs - Generic FAT Filesystem ModuleThe basics of FAT filesystemMicrosoft Extensible Firmware Initiative FAT32 File System Specification 1 如何写入 FATFS 提供了一系列使用例程通过 FATFS 接口把数据写入文件系统的流程如下 挂载文件系统 f_mount(FatFs, , 0); /* Give a work area to the default drive */根据文件路径打开文件 fr f_open(Fil, newfile.txt, FA_WRITE | FA_CREATE_ALWAYS); /* Create a file */把数据写入文件 f_write(Fil, It works!\r\n, 11, bw); /* Write data to the file */关闭文件 fr f_close(Fil); /* Close the file */如上FATFS 的使用和我们在桌面操作系统上读写文件大差不差使用这个包可以让我们在在 MCU 上存取数据时获得操作系统级的体验。下面是一个完整的 DEMO. example /*----------------------------------------------------------------------*/ /* Foolproof FatFs sample project for AVR (C)ChaN, 2014 */ /*----------------------------------------------------------------------*/#include avr/io.h /* Device specific declarations */ #include ff.h /* Declarations of FatFs API */FATFS FatFs; /* FatFs work area needed for each volume */ FIL Fil; /* File object needed for each open file */int main (void) {UINT bw;FRESULT fr;f_mount(FatFs, , 0); /* Give a work area to the default drive */fr f_open(Fil, newfile.txt, FA_WRITE | FA_CREATE_ALWAYS); /* Create a file */if (fr FR_OK) {f_write(Fil, It works!\r\n, 11, bw); /* Write data to the file */fr f_close(Fil); /* Close the file */if (fr FR_OK bw 11) { /* Lights green LED if data written well */DDRB | 0x10; PORTB | 0x10; /* Set PB4 high */}}for (;;) ; }2 f_write()里做了什么 2.1 逐行分析源码 为了搞清楚 FATFS 的写操作逻辑我们需要逐行分析 f_write() 的实现。 查看源码立即就能发现 f_write() 调用了一个名为 disk_write 的函数这很可能就包含着操作 磁盘/SD 卡等存储介质的底层实现。 if (disk_write(fs-pdrv, wbuff, sect, cc) ! RES_OK) ABORT(fs, FR_DISK_ERR);disk_write() 的原型如下 DRESULT disk_write (BYTE drv, /* Physical drive nmuber (0) */const BYTE *buff, /* Pointer to the data to be written */LBA_t sector, /* Start sector number (LBA) */UINT count /* Sector count (1..128) */ )参数 buff 和 count 很好理解就是数据缓存和数据大小无需多言。 参数 sector 则由“簇数” fp-clust计算得到 sect clst2sect(fs, fp-clust); /* Get current sector */fp-clust 从 fp-obj 中读出, 这个变量在 f_open() 中被初始化。 clst fp-obj.sclust; /* Follow from the origin */ ... fp-clust clst; /* Update current cluster */drv 的值即 disk_write() 的第一个参数 fs-pdrv 的值, fs 在 f_write() 开头的有效性检查 validate() 那里被初始化初始化时刻如下所示 static FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */FFOBJID* obj, /* Pointer to the FFOBJID, the 1st member in the FIL/DIR structure, to check validity */FATFS** rfs /* Pointer to pointer to the owner filesystem object to return */ ){ ...*rfs (res FR_OK) ? obj-fs : 0; /* Return corresponding filesystem object if it is valid */return res; }2.2 总结一下 f_write() 做了什么 解析在 f_open() 中初始化的 fp获取给定文件路径对应的簇号cluster number并转换成扇区号sector number获取文件系统的物理驱动号即fp 对应的区域在哪个物理设备/磁盘上以驱动号、扇区号、数据和数据大小为参数调用 disk_write() 3 我们实际上关心的是什么 依据上面的分析我们已经知道我们可以通过修改 disk_write() 的实现来适配不同的存储设备。 但我们真正关心的是如何在磁盘上找到某个文件所以我们还需要分析 f_open() 的实现。 3.2 f_open() 里做了什么 下面是 f_open 运行时的调用树看起来整个 open 的过程像是在树状结构中做检索。我想那么也许有必要看看 FAT 文件系统的原始定义也即文件系统的镜像格式。 f_open() follow_path() create_name() // iterator of dir name in file path dir_find() dir_sdi() get_fat() // get fat32 entry, ret cluster number clst2sect() // transfrom cluster number to section number 回到文件系统的镜像格式 FAT(File Allocation Table)最早在DOS v1.0 中被引入是一种极简的文件系统占用空间是目前最常见的文件系统之一。FAT 文件系统有多种历史版本比如 FAT12/FAT16/FAT32/exFAT/VFAT这里只介绍 FAT32 使用 FAT 管理的存储介质分为三个基本区域 启动记录 The boot record文件分配表 (FATThe File Allocation Table)目录和数据区The directory and data area “The boot record”引导记录是指存储在磁盘的第一个扇区的特殊区域。它也被称为引导扇区boot sector或主引导记录master boot recordMBR。 FAT32 的主引导扇区可分为两部分前 36 字节与其他版本的 FAT 一致36 字节以后的区域划分如下图所示。 origin_url.%2Fbehind36.pngpos_idimg-nzYYNo5c-1710653498658) 偏移 44 字节处为根目录所在的扇区通常为2打开文件系统镜像转到对应扇区可见目录中的文件列表如下。 额外提一句FAT 文件系统中的时间记录以 1980 年 1 月 1 日为基准如上图偏移0x10位置的两个字节为0X3C21高 7 位表示年数值为30对应的年份为 1980302010 年。
http://www.pierceye.com/news/588959/

相关文章:

  • 网站缩略图制作宁波商城网站建设
  • 公司网站公众号维护怎么做湖南网站建设
  • 商务网站建设实训结论装饰装修工程
  • dw做网站简单吗网络科技建设网站
  • 天台建设局网站wordpress编辑器没有16px
  • 携程网站建设计划管理与进度控制志鸿优化设计电子版
  • 网站一级域名和二级域名wordpress 插件 页面
  • 怎么做免费网站如何让百度收录网网站建设设计
  • 河北建设工程信息网官方网站证件在线制作免费
  • 推广网官方推广网站wordpress用户角色权限
  • 电子商务网站模板html淘宝网页版登录
  • 忆达城市建设游戏网站佛山市和城乡建设局网站
  • 备案后的域名改网站名青浦建设机械网站
  • 网站地图怎么做html网络营销论文2000字
  • 武进区城乡建设局网站组建网站建设团队
  • 做淘宝链接模板网站广安网站建设兼职
  • 受欢迎的网站建设平台有用的网站地址
  • 网站建设推广岗位网站建设法规
  • ftp两个网站子域名的绑定郑州网站推广公司
  • 安庆网站设计哈尔滨工程招标信息网
  • 精湛的佛山网站设计太原网站建设培训
  • 邹城市住房和建设局网站深圳比较好的vi设计公司
  • 企业网站建设维护方案一元购物网站怎么做
  • 网站建设优化公司哪家好兰州做网站公司es5188
  • jsp网站开发工资住建网查询
  • 长沙建网站需要多少钱夹江移动网站建设
  • 淄博网站制作高端网站后台任务
  • 营销型网站源码成都网站建设seo
  • 天津网上商城网站建设专业的猎头公司
  • 西平县住房城乡建设局网站西部数码网站管理助手3.0