MCU Flash中的只读文件系统
发布时间:2020-12-15 18:23:47 所属栏目:百科 来源:网络整理
导读:ROM文件系统 ROM文件系统(ROMFS)是一个由eLua构建的微型的,只读的文件系统,它与C库集成在一起,所以你可以使用标准的POSIX(fopen/fclose/fwrite...)来操作它。它也可以直接通过Lua的io模块来控制。这个文件系统中的文件是eLua二进制镜像中的一部分,所
ROM文件系统
ROM文件系统(ROMFS)是一个由eLua构建的微型的,只读的文件系统,它与C库集成在一起,所以你可以使用标准的POSIX(fopen/fclose/fwrite...)来操作它。它也可以直接通过Lua的io模块来控制。这个文件系统中的文件是eLua二进制镜像中的一部分,所以镜像构建以后它们不能被修改。因为同样的原因,在镜像构建后你不能增加或删除镜像文件。ROMFS不支持子目录。
为了最大化的在不同平台上得以操作的灵活性,ROMFS与构建系统结合在一起。因此,当eLua运行在开发板上时,你可以选择ROMFS中的内容。此外,你可以指定文件系统中所拥有的应用(代替单独的文件),因为相比一个简单的Lua程序来说,更需要一个实际的应用。
使用ROMFS
为了使用ROMFS,在构建eLua前,你得把文件拷贝到rom/文件夹下。记住一个ROMFS文件的最大名字字符数目为14个字符。包括后缀名和文件名之间的点号。确保这些文件名都来自rom/目录下的文件。然后编辑主要的构建脚本(SConstruct)来增加一个新的应用或者修改已经存在的。所有被包含进ROMFS中的应用被定义在Sconstrcut中的romfs数组里。每个应用会在romfs数组里列出它相关的文件。正如下面的代码所示,注意其中有些应用不止需要一个文件。
romfs = { 'bisect' : [ 'bisect.lua' ],'hangman' : [ 'hangman.lua' ],'lhttpd' : [ 'index.pht','lhttpd.lua','test.lua' ],'pong' : [ 'pong.lua','LM3S.lua' ],'led' : [ 'led.lua' ],'piano' : [ 'piano.lua' ],'pwmled' : [ 'pwmled.lua' ],'tvbgone' : [ 'tvbgone.lua','codes.bin' ],'hello' : [ 'hello.lua' ],'info' : [ 'info.lua' ],'morse' : [ 'morse.lua' ],'dualpwm' : [ 'dualpwm.lua' ],'adcscope' : [ 'adcscope.lua' ],'life' : [ 'life.lua' ] } 此后,你需要解决应用到开发板的映射关系。这些关系被定义在Sconstrcut中的另一个数组里,叫做file_list。此数组定义如下,不需要说明文件格式。 file_list = { 'SAM7-EX256' : [ 'bisect','hangman','led','piano','hello','info','morse' ],'EK-LM3S8962' : [ 'bisect','lhttpd','pong','pwmled','tvbgone','morse','adcscope' ],'EK-LM3S6965' : [ 'bisect','STR9-COMSTICK' : [ 'bisect','info' ],'PC' : [ 'bisect','life' ],'LPC-H2888' : [ 'bisect','MOD711' : [ 'bisect','dualpwm' ],'STM3210E-EVAL' : [ 'bisect','ATEVK1100' : [ 'bisect','ET-STM32' : [ 'hello','bisect' ],'EAGLE-100' : [ 'bisect','info' ] } 然后剩下的工作就是构建eLua了。作为构建过程的一部分,mkfs.py会被调用。此文件会读取romfs下的内容并且输出一个C头文件,此头文件包含了文件系统的二进制描述。使用C代码来操作ROMFS,当你某个时候想使用此文件,在文件名加上前缀/rom/。比如你想打开ROMFS中的一个a.txt文件,你可以这样写: f = fopen( "/rom/a.txt","rb" ) 如果你想执行一个来自ROMFS中的文件,你可以在shell中输入下面的语句, eLua# lua /rom/bisect.lua 或者这样也可以执行文件: > dofile "/rom/bisect.lua" ROMFS模式
从0.7版本开始,ROMFS可以使用3种不同的方法被加载进二进制镜像文件中:
水平有限,若有错误,给出指正。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |