BinFS文件系统

对于BinFS文件系统,提几个概要的点:

对于.nb0文件,可以说就是由若干个Region组成的。例如说RamImage是一个Region,NandImage是一个Region。Region的结构式这样的。最开始的64个字节为第一部分,其中开始四个字节为一个跳转指令(EA XX XX XX),其余的60个位NULL Data。紧接着这64个字节的是一个标志“ECEC”,紧接ECEC的是ROMHDR结构的地址,根据这个地址可以找到ROMHDR这个结构。紧接ROMHDR之后就是若干个TOCentry的结构。

BinFS加载由KDATA里面的pTOC的指针找到chain的内容,这个pTOC就是在RamImage里面的,RamImage里面的pTOC(这个pTOC就是ROMHDR结构的地址),根据pTOC找到chain,再根据chain找到每个Region。我们有3个Region,RamImage,NandImage和chain。chain我们不要,只保留RamImage和NandImage,RamImage会置CHAIN_TYPE_XIP的标志,而NandImage会置CHAIN_TYPE_BIN的标志,接下来在加载的过程中BinFS文件系统只会对CHAIN_TYPE_BIN部分进行加载,也就是会构成Volume的结构,每个module构成一个pDirectory的链表节点。

如何获得Image上的module?在Loader.c中对于这部分有比较明确的介绍,对于XIP部分,通过OpenFileFromROM可以拿到,实际上就是根据之前的pTOC,也就是在RamImage中的这个pTOC。根据这个pTOC找到ROMHDR,偏移一个ROMHDR后遍历TOCentry找对应的module;对于BIN部分,通过OpenFileFromFilesys,根据之前生成Volume结构的pDirectory的链表来获得module。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值