自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (2)
  • 收藏
  • 关注

原创 littlefs系列:文件系统的format

在flaint lfs_format(lfs_t *lfs, const struct lfs_config *cfg) { int err = 0; { /* 初始化lfs结构 */ err = lfs_init(lfs, cfg); if (err) { LFS_TRACE("lfs_format -> %d", err); return err; }

2020-08-18 15:29:10 1864 2

原创 littlefs系列:Technical Specification

1、quick noteslittlefs是block-based文件系统。flash被划分成多个相同大小的block block pointer是32bits,0xFFFFFFFF表示空指针 除了逻辑block size(通常是erase block size),littlefs还有program block size和read block size,后面两个block size主要是用于flash 读写时的对齐 littlefs采用little-endian order2、Direct.

2020-08-18 15:28:27 929

原创 littlefs系列:The move problem

The move problem主要是指怎么在两个目录中原子移动文件。在littlefs中,可以原子提交到目录中,但是不能在两个不同的目录中完成原子提交。move操作需要经过两个不同的状态。通过引入『global state』解决。『global state』是一个小型的状态集合,这个集合中的状态可以通过任何一个metadata pair更新。把global state和metadata pair的一次提交更新多个entry的能力结合产生了一个有力的工具,可以解决复杂的原子操作问题。『globa

2020-08-18 15:19:55 447

原创 littlefs系列:Directories

每个目录都是一个metadata pair list。可以在一个目录内存储任意数量的文件,也可以把其他目录的指针存储到metadata pair中,构成目录树。最大的挑战是在constant amount of RAM中进行遍历,而树的结构是无法在constant amount of RAM内完成遍历的。而在littelfs中,目录树的元素是metadata pair,不像CTZ skip-list,不要求严格COW操作,因此可以把目录树变成线索list,这样就大大降低了遍历的代价。坏处是.

2020-08-17 10:58:14 1019

原创 littlefs系列:Files

1 文件的存储从前面的分析知道CTZ skip-list是一种高效的数据存储方法,因此在metadata pair中存储右skip-list,metadata pair的作用类似于inode。然而上述结构对于小文件存储效率比较低。比如一个只有4-byte的文件,metadata pair需要两个block,data需要一个block,总共需要3个block。改进点:1)不是每个文件都对应一个metadata pair,可以多个文件对应一个metadata pair。比如一..

2020-08-17 10:52:42 1071

原创 littlefs系列:wear leveling

wear leveling的功能是通过block alloctor实现的。littlefs通过两个方法实现磨损均衡:1) 检测和恢复bad blocks2)通过dynamic blocks均衡磨损检测和恢复bad blocks和block alloctor的关系并不紧密,主要依靠文件系统本身来检测坏块并标记。在littlefs中,检测坏块主要是通过写后回读并比较的方式实现的,如果数据不一致则说明是一个坏块。一旦检测到了坏块就要进行恢复。如果是写入错误,因为数据才RAM中还有备份,因此需.

2020-08-17 10:50:42 1715

原创 littlefs系列:block alloctor

根据前面的分析可知,medatada pair用于存储需要原子更新的信息,而CTZ skip-list用于存储COW数据。那么用于存储metadata pair和COW数据的block是怎么分分配的呢?block alloctor负责分配block。通常,文件系统会使用free list或者bitmap来表示空闲的block,这些free list和bitmap也是存储在文件系统中的,并随着空闲块信息的改变而不断的更新。由于这些信息也是存储在文件系统中,即使有掉电恢复的功能,保证这些信息的完整性也是很复

2020-08-17 10:49:29 738

原创 littlefs系列:metadata pairs

metadata pairs是littlefs的基石。metadata pairs是两个可以原子更新的block log。为什么要使用两个block呢?原因如下:1,log的工作原理是所有的entry否存储在一个环形buffer中。由于flash的擦写特性,需要用两个block来互相备份。2,也可以使用更多的block,但是需要额外的数据结构来跟踪所有的block,代价较高。1 metadata pairs中如何确定哪个metadata block是最新的呢?使用revision count

2020-08-17 10:48:12 1005 1

原创 littlefs系列:重要的数据结构

1、文件类型// File typesenum lfs_type { // file types LFS_TYPE_REG = 0x001, LFS_TYPE_DIR = 0x002, // internally used types LFS_TYPE_SPLICE = 0x400, ...

2020-03-15 11:49:06 3892

原创 littlefs系列:介绍

1、littlefs主要用在微控制器和flash上,是一种嵌入式文件系统。主要有3个特点:1)、掉电恢复在写入时即使复位或者掉电也可以恢复到上一个正确的状态。2)、擦写均衡有效延长flash的使用寿命3)、有限的RAM/ROM节省ROM和RAM空间2、已有的文件系统1)非掉电恢复,基于block的文件系统,常见的有FAT和EXT2。这两个文件系统在写入文件时是...

2020-03-11 22:13:23 9933 1

原创 mfgtools工具BootStrap阶段使用文件的介绍

目录1、概述2、4个文件2.1 uboot2.2 kernel2.3 dtb2.4 rootfs2.5 其他2.6 kernel的编译2.7 ramdisk的制作1、概述mfgtools烧录软件时分为两个阶段:BootStrap和Updater。BootStrap阶段会先下载临时的uboot、dtb、zImage和initramfs并运行,为后续的Upd...

2019-12-07 19:12:23 492

原创 ucl2.xml实例分析

目录1、概述2、分析2.1 cfg.ini2.2 ucl2.xmla) global configurationb) operation list2.3 sdcard.sh1、概述本文章中分析的uxl2.xml来自于NXP的官方例程。2、分析2.1 cfg.inicfg.ini的内容比较简单,略过。2.2 ucl2.xml由于现在单板上使用的...

2019-12-07 16:31:35 752

原创 ucl介绍

目录1、概述2、global configuration3、update command list3.1、UCL的格式:3.2、host commands3.3、firmware commands3.4、条件执行3.5、使用变量1、概述UCL是Update Command List的简称。从《mfgtools工作流程概述》这个文章中知道对目标单板的具体烧写过...

2019-12-07 14:22:02 1437

原创 mfgtools工作流程概述

目录1、概述2、mfgtools的工作流程2.1 4个核心文件2.2 提供SOC信息2.3 配置ucl2.xml的路径2.4 配置同时操作的设备数2.5 配置目标存储类型和目标单板2.6 提供operation list需要的文件2.7 总结1、概述mfgtools是NXP开发的用于单板固件烧录的工具,可以烧写uboot,image,dtb,rootfs...

2019-12-07 14:19:21 510 1

Infineon-IP_MultiController_Area_Network_MultiCAN-TR.pdf

Infineon-IP_MultiController_Area_Network_MultiCAN-TR.pdf

2021-12-06

将字符转换成16进制数字

将字符转换成16进制数字显示并存在文件中

2014-07-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除