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

网站建设与栏目设置美橙建站十四年

网站建设与栏目设置,美橙建站十四年,数据分析师报名官网,o2o平台网站建设FDS系统学习 文章目录FDS系统学习一、ROM#xff0c;RAM#xff0c;FLASH作用二、ROM,RAM和FLASH在单片中的运作原理三、Flash访问模块FDS用法1. FDS在sdk_config.h中的配置2. fds_register()注册3. fds_record_write()写记录4. fds_record_find()查找5. fds_record_open()读…FDS系统学习 文章目录FDS系统学习一、ROMRAMFLASH作用二、ROM,RAM和FLASH在单片中的运作原理三、Flash访问模块FDS用法1. FDS在sdk_config.h中的配置2. fds_register()注册3. fds_record_write()写记录4. fds_record_find()查找5. fds_record_open()读记录/fds_record_close()结束访问flash6. fds_record_update()更新记录7. fds_record_delete()删除操作8. fds_gc()垃圾回收9. fds_stat()FDS状态获取参考 https://blog.csdn.net/android_lover2014/article/details/88658883https://zhaoch.cn/2020/07/11/Nordic-FDS/一、ROMRAMFLASH作用 ROM——存储固化程序的存放指令代码和一些固定数值程序运行后不可改动 c文件及h文件中所有代码、全局变量、局部变量、’const’限定符定义的常量数据、startup.asm文件中的代码类似ARM中的bootloader或者X86中的BIOS一些低端的单片机是没有这个的通通都存储在ROM中。 RAM——程序运行中数据的随机存取掉电后数据消失 整个程序中所用到的需要被改写的量都存储在RAM中“被改变的量”包括全局变量、局部变量、堆栈段。 FLASH——存储用户程序和需要永久保存的数据。 例如现在家用的电子式电度表它的内核是一款单片机该单片机的程序就是存放在ROM里的。电度表在工作过程中是要运算数据的要采集电压和电流并根据电压和电流计算出电度来。电压和电流时一个适时的数据用户不关心它只是用来计算电度用计算完后该次采集的数据就用完了然后再采集下一次因此这些值就没必要永久存储就把它放在RAM里边。然而计算完的电度是需要永久保存的单片机会定时或者在停电的瞬间将电度数存入到FLASH里。 二、ROM,RAM和FLASH在单片中的运作原理 1、程序经过编译、汇编、链接后生成hex文件 2、用专用的烧录软件通过烧录器将hex文件烧录到ROM中 注这个时候的ROM中包含所有的程序内容一行一行的程序代码、函数中用到的局部变量、头文件中所声明的全局变量const声明的只读常量等都被生成了二进制数据。 Q既然所有的数据在ROM中那RAM中的数据从哪里来什么时候CPU将数据加载到RAM中会不会是在烧录的时候已经将需要放在RAM中数据烧录到了RAM中 A 1ROM是只读存储器CPU只能从里面读数据而不能往里面写数据掉电后数据依然保存在存储器中RAM是随机存储器CPU既可以从里面读出数据又可以往里面写入数据掉电后数据不保存这是条永恒的真理始终记挂在心。 2RAM中的数据不是在烧录的时候写入的因为烧录完毕后拔掉电源当再给MCU上电后CPU能正常执行动作RAM中照样有数据这就说明RAM中的数据不是在烧录的时候写入的同时也说明在CPU运行时RAM中已经写入了数据。 三、Flash访问模块FDS用法 https://www.cnblogs.com/iini/p/9338169.html FDS用来访问芯片内部Flash的。把数据存储在Flash中或者读取Flash中的用户数据或者更新或者删除Flash中的数据FDS模块是最好的选择。 FDS采用文件和记录方式来组织Flash数据也就是说真正的数据是放在一条记录中而多条记录组成一个文件。根据应用的需要整个系统可以只有一个文件也可以包含多个文件。文件采用文件ID来标示文件ID为2个字节注不能取值为0xFFFF。一个文件下面可以放一条记录也可以放多条记录记录是通过记录key来标示的记录key也是2个字节长度注不能取值为0x0000。这里需要注意的是同一个文件下面的两条或者多条记录他们的key可以是一样的比如我们可以建立如下文件系统文件1包含2条记录文件2包含3条记录文件2包含2条key为0x0003的记录 1. FDS在sdk_config.h中的配置 2. fds_register()注册 通过fds_register注册FDS事件回调函数及通过fds_init初始化FDS模块。FDS模块的初始化写记录更新记录删除记录以及垃圾回收这些API都是异步的。也就是说调用这些FDS操作的API只是把相应操作放入队列然后立即返回队列大小由上述的FDS_OP_QUEUE_SIZE控制真正的Flash操作结果是通过事件回调函数通知你的 3. fds_record_write()写记录 ret_code_t fds_record_write(fds_record_desc_t * const p_desc,fds_record_t const * const p_record);参数及说明 必须保证输入的参数是全局变量或者static的局部变量 p_record需要给出要写入的记录的FILE IDrecord key以及记录的内容指针 p_desc是fds返回该记录的描述符 为fds模块内部使用因为file id和record key不要求唯一性所以fds模块内部定义了一个record id 来保证每个记录块的唯一性内部可以通过record id来区分 4. fds_record_find()查找 ret_code_t fds_record_find(uint16_t file_id, uint16_t record_key, fds_record_desc_t * const p_desc, fds_find_token_t * const p_token);参数及说明 通过file id和record key找到flash中符合的第一个记录并通过p_desc返回这个记录的描述符 Q那如何找到剩下的相同file id和record key的记录呢A这就需要用到第四个参数p_token这个结构体变量保存的是找到的这个记录所在的页和地址。 找到了第一个记录并获取到了该记录所在的页和地址那么下一个直接从前一个开始找即可综上只需要设置p——token初始值为0memset(p_token,0x00,sizeof(fds_find_token_t));然后循环迭代使用fds_record_find()函数就可以找全所有相同file id和record key的记录了 5. fds_record_open()读记录/fds_record_close()结束访问flash ret_code_t fds_record_open(fds_record_desc_t * const p_desc,fds_flash_record_t * const p_flash_record);ret_code_t fds_record_close(fds_record_desc_t * const p_desc);参数及说明 读记录之前必须先通过fds_record_find找到该记录fds_record_open通过唯一的p_desc描述符去打开这个记录并通过p_flash_record这个结构体返回这个记录数据包括file idrecord key长度实际内容(CRC)。对flash访问结束后通过fds_record_close结束访问。 6. fds_record_update()更新记录 ret_code_t fds_record_update(fds_record_desc_t * const p_desc,fds_record_t const * const p_record);参数及说明 更新记录内容实际上是重新写入一个记录新建的记录的file id和record key可以和旧记录一样也可以不一样然后通过旧的记录描述符找到旧记录去无效它即可新建的记录的描述符会存在p_desc变量中。 7. fds_record_delete()删除操作 ret_code_t fds_record_delete(fds_record_desc_t * const p_desc);参数及说明 删除某个记录并不是真正的删除实际上fds内部是使这个记录无效删除依靠具有唯一标识的参数p_desc中的record id进行 delete并不会回收Flash空间无效记录仍然占据着Flash空间这些无效的记录占据着的Flash空间只有经过垃圾回收才能再次给新记录使用 8. fds_gc()垃圾回收 ret_code_t fds_gc(void);参数及说明 垃圾回收机制会将所有没有打开记录的的脏页都做一次回收处理释放其中的无效记录所占的flash空间所以fds的垃圾回收比较耗时因此fds不会主动做垃圾回收的处理 9. fds_stat()FDS状态获取 ret_code_t fds_stat(fds_stat_t * const p_stat);参数及说明 获取当前fds模块的总装图该函数返回的p_stat记录了fds管理的flash存储空间的状态
http://www.hkea.cn/news/14367757/

相关文章:

  • 做网站下载那个数据库好建设企业网站首页
  • 本地的赣州网站建设奉化首页的关键词优化
  • 手机网站开发费用搜狐快站做网站教程
  • 网站开发的前后台的步骤分别为深圳的设计网站公司
  • 4399自己做游戏网站药品行业做网站
  • php网站开发外文文献四川省住房城乡建设厅官网查询
  • 先做网站再付款 怎么回答常宁网站
  • 昌平区事业单位公共知识培训网站河北廊坊seo网站建设网站优化
  • 备案的网站名称能重复备案吗怎么购买云服务器
  • 网页建站的费用深圳定制展会时间表
  • 深圳网站建设公司衣服 div网站
  • 一元云淘网站开发找销售的网站
  • 网站推广基本方法网站建设实训报告目的
  • 外贸网站建设案例个人注册登录入口
  • 常州网站推广软件做短视频网站收益
  • 如何做网站拓扑结构图湖南长沙旅游攻略自助游
  • 宁波网站制作公司推荐长沙市房产交易中心官网
  • 东阿网站建设价格自动生成设计logo图标
  • asp.net 怎样生成网站微信小程序注册流程
  • 白云营销型网站建设国和建设集团网站
  • 哪个网站做设计可以挣钱免费网站如何注册
  • 电子商务网站方案微信公众平台做微网站吗
  • 网站建设论团logo查询网站
  • 如何做适合网站大小的图片手机网站 生成
  • 做拍卖网站怎么样网站建设需要精通什么知识
  • 江北网站建设什么是域名
  • 视频分享网站开发玉林网站建设培训
  • 乡镇网站个人做可以不网站添加搜索
  • 深圳网站建设那家好怎么建com的网站
  • 做全房订制网站公司企业网站建设的步骤