• $p4p$文件用什么打开 > 基于 !"#$%&' 的#()* , 根文件系统的设计 -
  • 基于 !"#$%&' 的#()* , 根文件系统的设计 -

    免费下载 下载该文档 文档格式:PDF   更新时间:2014-06-12   下载次数:0   点击次数:1
    !信息化纵横" !""# 年第 # 期 欢迎网上投稿 随着电子产业和嵌入式设备的不断发展!基于!"# 技术的系统设计和开发平台越来越多地在控制领域"消 费产品"通 信领域等行业中广泛应用#从系统软件结构上看!基 于!"$ 技术的嵌入式%&'() 系统涉及到引导加载程序*+,,-.,/0123"%&'() 内核"根 文件系统"用 户应用程序几部分的设计456 $ 根文件系统是%&'()789:; 系统启动的一个重要组成部分!也是操作系统正常工作时的必要组成部分$%&'() 启动时!第 一个挂载的是根文件系统$若系统不能从指定设备上挂载根文件系统!则会出错而退出启动$根文件系统包含系统使用的库文件和应用软件!以 及用户的应用程序%此外!根文件系统可作为存储数据读写的区域$由于在嵌入式设备中存储资源"<$ 和=./>? 很紧张!如 何有效地使用有限的存储空间是嵌入式开发者必须考虑的!合 适的根文件系统格式是解决这一问题的关键所在$本文讨论了只读压缩@2/AB> 文件系统的特点!详 细地说明了建立一个@2/AB> 根文件系统的一般步骤!并将构建的@2/AB> 根文件系统烧写到开发板=CDE5F 上进行检验$!开发环境简介 本系统采用的是宿主机G目 标板的开发模式$在宿主机上安装 H#I/21 虚拟机! 在虚拟机上安装 %&'() 操作系 统%目标板是 =CDE5F!采用主频为 DFJ #KL&基于<"#MDFN 内核的处理器CJ@DE5F!支持9,2 =./>? 和9/'0 =./>? 两种启动方式!板载D#+ 的9,2 =./>? 和OE$+ 的9/'0 =./>?4D6 $ 在开发过程中!通 过8C+ 接口将目标板跟宿主机连接起来!将=CDE5F 设置为'从9/'0 =./>? 启动(!将 编译好的引导加载程序P+,,-.,/012Q加载到 9/'0 =./>? 的第一扇区!%&'() 内核加载到9/'0 =./>? 的第二扇区!根文件系统@2/AB> 加载到9/'0 =./>? 的第三扇区#本文讨论的前提是+,,-.,/012 和%&'() 内核已完成配置和移植!着 重讨论如何构建一个根文件系统#根文件系统简介 @2/AB> *@,AR21>>10 ",A =&.1 CS>-1AQ 是一个只读文件系统!采用了L.&T 压缩!压缩比一般可以达到5)D4D6 # 在嵌入式的环境下!内存和外存资源都需要节约使用#@2/AB> 是一种压缩格式的文件系统!它 并不需要一次性基于 !"#$%&' 的#()*+, 根文件系统的设计- 黄宇东#杨建华#陈安*华南理工大学 自动化学院!广东 广州 U5FOEFQ 摘要! 根文件系统是构建一个嵌入式 V&'() 系统的重要 组成部 分$本文章采 用@2/AB> 作为 嵌入 式%&'() 系统的根文件系统 # 讨论了 @2/AB> 文件系统的特点# 并详细地说明了 在=CDE5F 开 发板上 设 计一个 @2/AB> 根文件系统的一般步骤$ 关键词 ! CJ@DE5F%@2/AB> 根文件系统 中图分类号!NWJ5OXY5 文献标识码!+0)#"1 ,& 23'4567 K8<9Z 9Z ^&/' K(/!@K_9 <' *<(-,A/1]1! C,8'&'12>&-S ,B N1a?',.,]S! Z(/']L?,( U5FOEF! @?&'/Q B&.1 >S>-1A &> /' &AR,2-/'- a,AR,'1'- ,B T(&.0&'] 1AT10010 V&'() >S>-1AX 8>&'] @2/AB> /> 2,,- B&.1 >S>-1A B,2 1AT10010 V&'() >S>-1A! -?&> /2-&a.1 0&>a(>>1> -?1 a?/2/a-12&>-&a> ,B @2/AB> 2,,- B&.1 >S>-1A! /'0 01>a2&T1> -?1 ]1'12/. >-1R> ,B 01>2/AB> 2,,- B&.1 >S>-1A ,' =CDE5F &' 01-/&.X -./ 01$2(! CJ@DE5F% @2/AB> 2,,- B&.1 >S>-1A b 基金项目)国家自然科学基金P项目编号)OFYJUFF5Q 软件天地 31'+0%$. 4.,561718/ E !信息化纵横" !""# 年第 # 期地将文件系统中的所有内容都解压缩到内存之中!而 只是在系统需要访问某个位置的数据时!计 算出该数据在!"#$%& 中的位置!将它实时地解压缩到内存之中!然后通过对内存的访问来获取文件系统中需要读取的数据!因此!!"'$%& 根文件系统能大大节省系统资源而又不影响读取文件的速度!非 常适合应用于嵌入式系统中()* " 根文件系统制作 根文件系统目录一般来说!一 个完整的+"'$%& 根文件系统通常包含以下几个目录(,- # ./01 .234 .50/ .&/01 .6"74 .829 .:01;<"4 .$13 .;&" 本文要创建的基于=>? 体系的嵌入式根文件系统与通常@01;< 主机的根文件系统类似!只是它尽可能精简!仅 仅包括系统运行所必须的应用程序$库和相关文件的最小集合"在A>B 平台创建一个根文件系统并不是一件简单的事情!而且也没有通用的方法可以遵循"根据一般需要!结 合嵌入式系统的特点!一个根文件系统应该具有以下主要内容(C- # D,E库文件"库文件通常放在.50/ 目录下!后缀为F&7 的是共享库!后 缀F' 代表静态库"编译好的应用程序需要共享库才能在=>? 开发板上正常运行"DGH设备文件"所有的设备文件都在.829 目录下!实 际应用中应根据开发平台的硬件资源添加设备文件!例 如添加IJ 卡 $串 口$KIL 设备文件等等"DCH命令工具"命令工具包括系统命令D如5&$90H$服务器软件D如 %368H等 !放 在./01 或.&/01 目录下!这些程序都是二进制格式的" 命令工具 可以 使用 工具包 软件 来生 成!例如 L;&ML7[B %052 &M&32$ &;667"3 (W.$.1.X- W! >\V 文件系统的支持完成上述配置并编译后!50;1< 内核便有了支持+"'$%& 根文件系统的能力"!(*(* 拷贝命令工具和链接库D,H用L;&ML7< 生成命令工具L;&ML7< 是很多标准Q01;< 工具的一个单个可执行实现!有人将其称为Q01;< 工具里的瑞士军刀!简单地说L;&ML7< 就好像是一个大工具箱!它 集成压缩了Q01;< 的许多工具和命令!对 于嵌入式系统是一个非常有用的工具"配置L;&ML7< 最常用的命令是$'Y2 $21;471%0U! 以下介绍的是必须编译进L;&ML7< 的功能选项!其他选项可以根据需要自行选择"L;058 \63071&# (]- L;058 L;&ML7< '& ' &3'304 /01'"MD17 &S'"28 50/&H 这个选项是把L;&ML7< 编译成静态链接的可执行文件!运行时独立于其他函数库!否则必需其他库文件才能运行!它在单个Q01;< 内核中不能正常工作!这个选项必须选上"(]-J7 M7; ^'13 37 /;058 L;&ML7< ^03S ' +"7&& +7$6052" 根据开发者的宿主机交叉编译工具的路径!选 择实际的交叉编译环境"_1&3'55'3071 \63071&# (]- 871%3 ;&2 .;&" 这个选项一定要选!否则$'Y2 01&3'55 后L;&ML7< 将安装在原系统的.;&" 下 !这 将覆盖系统原有的命令"选择这个选项后!$'Y2 01&3'55 后会在L;&ML7< 目录下生成一个叫 '01&3'55 的目录!里面有 L;&ML7< 和指向它的链接 " 其他选项是一些Q01;< 命令工具!根据实际需要编译进去"编译L;&ML7< 后!在'01&3'55 目录下生成/01 和&/01 两个目录!在每个目录下都会有许多L;&ML7< 可执行文件的符号连接!L;&ML7< 可执行文件存放在/01 目录下!最后将生成的/01 和&/01 两个目录中的内容拷贝到将要制作的根文件系统中相同名称的目录下"软件天地 -.&/0$#1 21345.6.78 a !信息化纵横" !""# 年第 # 期 欢迎网上投稿 !"#拷贝常用的库文件拷贝应用程序运行时所需要的库到$%&' 目录下!库文件可以从宿主机上的交叉编译工具目录库下拷贝!如 0-"-(1"1-2-3-2 等#!"#"! 创建启动所需的文件一般情况下!系 统启动所需用到%&4567+"&4&)).'"7+8" 9().' 四个文件!下 面分别介绍四个文件的内容$:;<%&4567+$ 存放在根目录下!是一个可执行的脚本文件!负责加载内核访问根文件系统以及必须的驱动$一般情况下!其 具体内容格式如下%$'&4$=154) /9 /) +7.=9( /1 7>=154)!71 $*>?$'14$" $ $'&4$=154) /) 7.=9( 7.=9( $?.7 ---根据实际的硬件资源加载需要的驱动--- ---创建节点--- >6>+ $('&4$&4&) :"<&4&).'$ 存放在$>)+ 目录下!该文件的一般内容如下% %%(@(&4&4&)-*$7+8 $AB5(@'16 &4&) 进程执行的第一个脚本文件A$ %%.(C9&7()%$'&4$'.(D %%14+>%$5(7$>)+$7+-%1+.% %%+)7%4$7>'11) $A 按下E)7%/F%)/G>%>)> 组合键时运行的进程A$ %%7>().7)%('&4$&4&) $A 等待重新启动&4&) 进程A$ %%(D5)*1H4%$'&4$5=154) /. /7 $A 关机时卸载所有的文件系统A$ :0#7+8$ 存放在$>)+$&4&)-* 目录下!是 一个具有可执行权限的脚本文件!具 体内容如下%$'&4$=154) /. $5(7$>)+$I719&%> :J#9().'$ 文件挂载表!存 放在$>)+ 目录下$这个文件指定启动时需要自动安装的文件系统列表$9().' 文件列出了引导时需要安装的文件系统&类型&加载点及可选参数!一 般情况下!其 具体内容如下%KL9&M L=154) I)ML)@I>M L1I)&14(M L*5=IM LI.((M 414> ! ! $I71+ I71+ *>9.5%)( 3 3 414> $*>?$I)( *>?I)( =1*>N3O"" 3 3 )=I9( $*>?$(D= )=I9( *>9.5%)( 3 3 !"! 制作$%&'() 文件系统映像创建E7.=9( 根文件系统需要用到E7.=9( 工具包里的=C+7.=9( 工具P"Q $ 下载E7.=9( 工具包!解压后执行=.C> 命令!将 生成=C+7.=9( 工具$一般情况下要把已经规划好的目录结构转换成一个映像文件!=C+7.=9( 工具能把E7.=9( 目录树压缩成为单一的映像文件!这 个映像文件就是需要移植的根文件系统P"Q $ K=C+7.=9( =@+7.=9( =@+9.=9(-+7.=9( 用以上的命令生成=@+7.=9(-+7.=9(! 这就是需要的E7.=9( 根文件系统映像文件!并且这个映像文件的大小不到2RB!非常适合嵌入式系统使用$!"* 检验根文件系统!+*", 上电检验根文件系统在宿主机上!把做好的=@+7.=9(-+7.=9( 映像文件烧写到开发板S8"J;3 的T.4* S%.(D 第三扇区中!利用GTU 作为显示终端!启 动后界面如下图;所示$从GTU 显示终端的信息看到!系 统正常启动!根 文件系统目录结构正确!根 文件系统移植成功$!"*"- 应用程序检验根文件系统在制作=@+7.=9(-+7.=9( 文件系统映像前!把V)1I&. E17>/J-0-" 应用程序相关的库文件拷贝到$%&' 目录下!同时拷贝一个V)1I&. E17>/J-0-" 应用程序自带的时钟例程到$5(7 目录下!根文件系统=@+7.=9(-+7.=9( 制作好后!烧 写到S8"J;3 上!运行该V) 例程!以检验根文件系统的库文件是否正确!具体检验过程如下%系统上电 后!执行以下命令%'.(D/"-32'K +* $5(7$*&W&).%+%1+C$ '.(D/"-32'K -$*&W&).%+%1+C /XH( 运行V) 例程!运 行结果如图"所示$从图"中可以看到!时钟程序运行正确!应用程序在根文件系统中可以正常运行$根文件系统的库文件移植成功!使得在根文件系统上可以运行基于.7=/%&456 交叉编译器编译好的应用程序!使 根文件系统具有实际的应用意义$图;启动界面图"时钟程序运行图软件天地 ./(01&%2 32456/7/89 O !信息化纵横" !""# 年第 # 期根文件系统是嵌入式系统结构中非常重要的一部分!因为嵌入式系统的存储资源非常有限!如何制作一个大小合适"工 作效率高的根文件系统成为能否发挥硬件系统资源优势的一个指标作为一种压缩格式的文件系统!具 有较高的压缩比!节 省了存储空间!工 作时!不 需要一次性将文件系统中的所有内容都解压缩到内存之中!大大节省了内存的消耗!很适合嵌入式系统的场合$参考文献'() 孙纪坤!张 小全*嵌入式+,-./ 系统开发技术详解%% %基于012'23*北京&人 民邮电出版社!45567 849 李亚锋!欧文盛*:12 嵌入式+,-./ 系统开发从入门到精通829*北京&清 华大学出版社!455;* 8<3 孙天泽!袁 文莉*嵌入式设计及+,-./ 驱动开发指南%% % 基于=12> 处理器?第 4 版@8297 北京&电子工业出版社!ABB;7 ?收稿日期&4BBCD54D5EF 软件天地 0 ;
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • $p4p$文件怎么打开  $p4p$文件用什么打开  $p4p$文件  $p4p$文件是什么意思  $p4p$是什么文件  $p4p$怎么打开  $p4p$什么文件  $p4p$能删除吗  exe$p4p$能删吗  $p4p$