写在前面
在实际应用中,通常会使用serial nor flash作为rt系列mcu的代码储存设备,如qspi,hyperflash等,这些设备都支持xip特性,而这些flash除了储存代码外,剩下的空间可以用于存储数据,比如设备参数,log信息,并能用文件系统来管理,所以这次小编就分享一个可运行在qspi的littlefs的例程,可用于管理qspi的数据区域。
fig1
测试环境介绍
硬件平台:mimxrt1060-evkb;
fig2 mimxrt1060-evkb
ide:mcuxpresso;
移植步骤
我们直接以sdk中的littlefs_shell工程作为模板来避免重复造轮子,由于littlefs_shell工程是链接到ram中,所以我们需要对它进行改造。
添加flash项
fig3 添加flash
添加fdcb
littlefs_shell工程默认是链接到ram中,所以需要手动添加fdcb,具体如下所示。
在工程中添加xip(来自于sdk library)
fig4
在settings->preprocessor中,添加xip_external_flash=1和xip_boot_header_enable=1
fig5
函数重定位
fig6为littlefs_shell工程的代码分层图,其中结构体lfs_config包含块设备的各类操作接口函数及各种参数配置,而接口函数需要调用flexspi驱动函数才能真正实现qspi的读写,删除等操作。
fig6 代码分层
由于代码本身就是在qspi中运行,需要修改linker file把块设备的各类操作接口函数和flexspi驱动函数重定位到ram中运行。
fig7
修改flexspi clock
在littlefs_shell工程中,flex_spi时钟会被重新设置,这部分也需要进行重定位处理的,不然会触发hardfalut,当然,你可以在board_initbootclocks()中,就提前设置好想要的flexspi时钟频率,避免二次设置。
clock_initusb1pll(&g_ccmconfigusbpll); clock_initusb1pfd(kclock_pfd0, 24); /* set pll3 pfd0 clock 360mhz. */ clock_setmux(kclock_flexspimux, 0x3); /* choose pll3 pfd0 clock as flexspi source clock. */ clock_setdiv(kclock_flexspidiv, 2); /* flexspi clock 120m. */
微软Windows 10系统被曝出了一个史诗级的漏洞
尽管销量下滑 但去年全球智能手机收入仍然实现了增长
数智化时代 京东智联云提供更安全、高效、可靠的物联网服务
【服务器数据恢复】HP EVA存储数据恢复案例
AMD推出EPYC 3000系列处理器,8核16线程最低25W TDP
XIP模式的littlefs_shell代码实现
新思科技携手Juniper投资新公司,开拓快速发展的硅光子市场
配电箱的安装要求与规范
台湾前五大面板厂商去年净亏损合计34.5亿美元
鼠标的发展
苹果平板电脑销售量第一 是三星的两倍多
CS5260demoboard应用电路|Type-C转VGA电路原理图
从“Intel Inside”到“万有IN力”,“大米生意”如何长盛不衰?
苹果自动驾驶汽车项目的一些“蛛丝马迹”
c语言中函数的函数体用什么符号括起来
电力变压器主要组成部件及作用
平衡PN结能带图讲解
黑芝麻智能华山二号A1000系列芯片通过AEC-Q100认证
贸泽备货Molex Mirror Mezz连接器 封装互相兼容且公母同体
电源管理芯片的八个引脚的功能和用途