采用SD卡存储配置数据的配置方案
来源:元器件交易网 作者:—— 时间:2012-02-08 13:52
2.3.3 配置文件的格式
FPGA 支持将配置文件生成为几种不同的格式,但在本方案中不是所有格式都可以使用的。一般最常用的格式是.BIN 和.BIT 格式。由于.BIT 格式包含头部开销,会增加额外的处理过程,因此本方案没有支持.BIT 格式的数据,仅推荐使用.BIN 格式。
2.4 文件在SD卡中的存储
发送数据前,需要先从SD卡中读取配置文件。所有文件在SD卡中都是按照一定的格式来组织的,本方案默认文件采用FAT16 格式进行存储。FAT16 格式下,SD卡的结构如下图所示[3]。

主引导记录中最重要的参数是逻辑扇区的起始地址。获得该参数后即可以读取BIOS 参 数数据块(BPB)。BPB 中存储了扇区(Sector)、簇(Cluster)、文件分配表(FAT)的 大小,以及分区总扇区数等参数,是文件进行操作时必不可少的。文件分配表则是指明了文 件存储的位置,这些位置是以簇为单位的。每个簇包含的扇区数目在BPB 中说明。根文件 夹中存储了各不同文件的文件名和起始簇以及文件大小等信息。
2.5 配置文件的读取和发送
根据上述SD卡存储格式的说明,可以对存储在其中的配置数据进行读取并发送出去。在本方案中,数据的读取和发送是同时进行的。
在对SD卡进行读取时,首先需要读取主引导记录(MBR),获得逻辑扇区的位置,然 后根据该位置读取BIOS参数数据块(BPB),得到文件分配表(FAT)的位置以及扇区大小等参数。在读取文件分配表之前,需要先读取根文件夹来获得文件的起始位置,然后再通过文件分配表获得后续数据的位置。
得到文件的起始簇号之后,在文件分配表中读取对应该起始簇的字节,获得文件存储的下一个簇的簇号,这样可以连续的进行读取。在读取一个簇后,即将整簇的数据发送出去。如果发现文件分配表中某一簇对应的数值是0xFFFF,则说明是文件最后一个簇,这时该簇 的数据可以不足一个整簇,需要对其中的数据进行取舍,以保证发送数据的正确性。
对配置文件读取和发送的函数伪码如下所示。
ReadSD_FAT16(){
读取物理第0 扇区内容,即MBR,获取逻辑0 扇区的位置;
读取逻辑0 扇区的内容,获取每扇区字节数,每簇扇区数,FAT表占据的扇区数等参数;
读取根文件夹的内容,根据配置文件的文件名获取其起始簇号和文件长度;
将当前簇设置为起始簇;
While(1){
读取FAT中对应当前簇的内容,获得下一个簇的簇号;
FAT表中对应当前簇的内容为0xFFFF 时,即说明当前簇是最后一个簇,计算该簇内的有效数据,并进行发送;
读取当前簇内容,进行发送;
当前簇指向下一个簇;
3 结束语
在当前FPGA 使用领域日趋广泛的情况下,对现有的含有FPGA 的嵌入式产品进行升级更新成为了一项比较繁琐的工作,特别是在产品数量较多的情况下。本方案提出了采用SD卡存储配置数据的配置方案,使用了目前嵌入式系统中常见的ARM 微处理器和SD 卡,不仅降低了成本,而且利用了现有资源,节省了电路板布线布局的空间。最重要的是使升级 过程更加简洁,在进行调试时也可以灵活使用。本文只给出了对Virtex FPGA 进行配置的情况,该方案也可以适用于Spartan 系列FPGA。
- •【会议议程】12月19-21日2022(十四届)传感器与MEMS产业化技术国际研讨会(暨成果展)佛山南海瞻云酒店召开2022-12-16
- •FORESEE XP1000 PCIe SSD开启Gen3后时代发展之路2021-08-02
- •FORESEE工规级SSD应用宽温技术,加速智能工业场景落地2021-07-21
- •基于J750EX测试系统的SRAM VDSR32M32测试技术研究2017-09-05
- •Vishay检查表: 采用安规电容防止过载的12点注意事项2017-07-28
- •汽车系统的USB供电2017-06-08
- •适用于 FPGA、GPU 和 ASIC 系统的电源管理2017-05-11
- •一文读懂SPI串行外设接口2017-04-27
- •TLV3501滞回比较器电路设计2017-04-14
- •ZigBee无线呼叫系统硬件电路2017-04-05