当前位置:文档之家› FLT文件格式

FLT文件格式

FLT文件格式
FLT文件格式

FLT文件格式

[摘要]

本文首先对FLT文件格式进行了简单的介绍,然后以一个简单的例子说明FLT文件的生成及加载过程。

[正文]

Linux系统支持ELF文件格式,利用虚拟内存机制,在编译时即可确定程序运行时的地址;而uClinux是针对无MMU的系统设计的,所以它没有虚拟内存机制,运行时的地址就是物理地址。由于程序被加载到的物理地址是不确定的,在uClinux中,程序在被加载时必须引入一种重定位机制进行地址重定位,ELF文件格式已经不能满足这种需求。在这种情况下,uClinux引入了一种新的文件格式——FLT文件格式。

一个简单的FLT文件结构如下:

Reloc info

Data

Text

Flat header

FLT文件就像是一个进程的内存映像,text段和data段是连续的,reloc info段位于文件的末尾,它包含了FLT文件的重定位信息。

FLT文件的头部定义如下:

struct flat_hdr{

char magic[4];

unsigned long rev;/*version(as above)*/

unsigned long entry;/*Offset of first executable instruction

with text segment from beginning of file*/ unsigned long data_start;/*Offset of data segment from beginning of

file*/

unsigned long data_end;/*Offset of end of data segment

from beginning of file*/

unsigned long bss_end;/*Offset of end of bss segment from beginning

of file*/

/*(It is assumed that data_end through bss_end forms the bss segment.)*/

unsigned long stack_size;/*Size of stack,in bytes*/

unsigned long reloc_start;/*Offset of relocation records from

beginning of file */

unsigned long reloc_count;/*Number of relocation records */

unsigned long flags;

unsigned long build_date;/*When the program/library was built */unsigned long filler[5];/*Reservered,set to zero */};

其中magic 字段固定为{‘b’,‘F’,‘L’,‘T’};rev 表示FLT 文件的版本,可以为1、2、3、4、5;entry 表示第一条指令相对于文件头的偏移地址,也就是text 段的偏移地址;data_start 表示data 段的偏移地址;data_end 表示data 段的尾地址,也就是bss 段的偏移地址;bss_end 表示bss 段的尾地址;stack_size 表示程序运行时栈的大小,缺省为4K ,可以在编译时指定;reloc_start 表示重定位信息的偏移地址;rcloc_count 表示重定位信息的个数;flags 的低5位用于表示文件的信息,其中最低位被置1时表示把程序的全部内容加载到内存,第2位被置1时表示(program is PIC with GOT ),第3位被置1时表示除头部外其它部分是压缩的,第4位被置1时表示仅数据段和重定位段是压缩的,第5位被置1表示为调试输出有用的内核跟踪信息;build_date 表示程序编译的时间;filler 为保留字段,当前全部用0填充。

要生成FLT 文件,必须先生成相应的ELF 文件,然后用elf2flt 工具将之转化为FLT 文件。下面用一个例子来说明其转化原理及过程。

有两个C 程序源文件main.c 和sub.c ,内容分别如表1:

表1C 程序源文件

在Linux 系统下,它们将被分别编译并链接成一个可执行文件,在虚拟内存中地址信息如表2(假设):

表2段/符号的地址信息

main.c

sub.c

extern void foo();extern int var;void (*ptr)()=bar;int main(){

foo();var =10;}

int var;

void foo(){

printf ("hello\n");}void bar (){}

段/符号名偏移地址text 0x08048000foo 0x08048400bar 0x08048500var

0x08049000

普通ELF 文件对段/变量的引用情况如下:1、在主函数中调用foo 的过程如下:

0x08048300:call 0x1002、使用变量var 的过程如下:

mov 0x08049000,r1st r1,#10

3、ptr 是静态变量,在data 段的视图如下:.data:

..................08048500........................

由于有虚拟内存的支持,该程序运行正常。但uClinux 没有虚拟内存,所以就遇到了问题,不同程序的地址空间相互重叠。要解决这个问题,就要用前文提到的FLT 文件格式。生成FLT 文件的过程如图1:

图1FLT 文件生成过程

elf2flt 工具假设a.out 中的text 段和data 段是连续的并且text 段的偏移地址为0,它的内存结构图如图2:

text len

text len + data len

图2a.out 内存结构图

为了获得如图2所示结构的a.out ,必须在链接时使用一个特殊的链接文件elf2flt.ld ,该文件在elf2flt 工具的源码包中可找到。另外,必须在链接时使用-r 选项以使a.out 包含重定位信息。

a.out 对段/变量的引用情况如下:1、在主函数中调用foo 的过程如下:

0x300:call 0x0

2、使用变量var 的过程如下:

mov 0x0,r1

st r1,#10

3、ptr是静态变量,在data段的视图如下:

.data:

..................

00000000........

................

elf2flt工具可以识别出a.out中的重定位信息并且修复它们(调用elf2flt.c文件中的函数output_relocs),生成的flt文件中text段将从0开始,data段紧跟text段。

重定位后生成的a.out.bflt对段/变量的引用情况如下:

1、在主函数中调用foo的过程如下:

0x300:call0x100

2、使用变量var的过程如下:

mov0x1000,r1

st r1,#10

3、ptr是静态变量,在data段的视图如下:

.data:

..................

00000500........

................

a.out.bflt的内存结构图如图3:

file start

图3a.out.bflt内存结构图

图3中,relocs段包含引用的信息,加载程序时需要它进行再次定位。

至此,FLT文件已经生成。但事情并未结束,只有程序被操作系统加载执行后才算完成。下面,仍以a.out.bflt为基础,讨论操作系统如何加载FLT文件。

假设程序被加载到内存的起始地址为0x4000,则任一对地址X的引用将翻译成0x4000+X。在内存中,对段/变量的引用情况如下:

1、在主函数中调用foo的过程如下:

0x4300:call0x100

2、使用变量var的过程如下:

mov0x5000,r1

st r1,#10

3、ptr是静态变量,在data段的视图如下:

.data:

..................

00004500........

................

至此,所有的事情均已完成,程序可以正常运行了。

[参考文献]

1、elf2flt源码及文档

2、uClinux源码

――――――――――

作者:枫风

版本:1.0

完成日期:2008-10-27

如有疑问或发现错误,请发邮件至cugfeng@https://www.doczj.com/doc/855967074.html,与我联系。更多信息请访问我的博客:https://www.doczj.com/doc/855967074.html,/cugfeng

怎么把爱奇艺的qsv格式转换成mp4

在网速越来越快的现在观看视频已经不再卡顿了,在线观看视频还需要缓存的时代已经成为过去,因此人们越来越喜欢用闲暇时间去观看一些电影电视剧,而爱奇艺由于自身众多的独家版权深受广大用户的喜爱。但在没时间上网或者流量有限时我们通常会把需要看的视频先缓存下来,那有时没有爱奇艺播放器时怎么办呢?下面就来教你用迅捷视频转换器快速把qsv格式转换成mp4格式用别的播放器打开下载的视频。 1、把爱奇艺的qsv格式的视频添加到软件中,添加的时候可以点击软件左上角的添加文件或添加文件夹按钮进行添加,如果不想点击左上角的两个按钮软件也支持直接把视频添加到软件中(这几种方式都支持批量添加文件或文件夹)。 2、选择视频的输出格式,输出格式又分为输出的视频格式和输出的分辨率。首先需要把视频格式设置为‘mp4’格式,而视频分辨率则越高越清晰,但是视频分辨率最高和你下载的视频相同的分辨率,因此可以把视频分辨率设置为‘同原文件’格式。

3、如果软件默认的‘mp4同原文件’格式或者其它预设格式满足不了需求可以点击添加自定义按钮根据自己的需求设置视频格式的视频编码、比特率、分辨率、帧数或音频格式的音频编码、比特率、取样频率、声道。如果软件预设的格式满足使用则可以忽略此步。 4、以上步骤都设置好后对输出路径进行设置,设置时可以在输出路径的输入框中直接输入需要存储的位置或者点击输入框右边的“更改路径”按钮选择保存位置。

5、上述准备工作都就绪后点击软件右上角的转换或软件右下角的全部转换按钮把爱奇艺的qsv格式转换成mp4格式。在转换时软件会出现转换进度条,当转换进度条达到100%时就表示视频已经转换好了,最后只需打开之前预设的输出路径就可以找到转换后的mp4视频了。 以上就是快速把爱奇艺的qsv格式转换成mp4的方法了。当你使用的设备因为各种原因没有爱奇艺播放器时你可以把qsv格式转换为mp4以提高视频的兼容性让视频能用更多的播放器打开以备不时之需。 迅捷视频转换器https://https://www.doczj.com/doc/855967074.html,/download-converter

qsv格式视频如何打开 qsv格式怎么转换为mp4

泰坦尼克号可谓是电影史上的经典之一了,当然了这也是与电影本身的优秀分不开的,要知道这部电影就算是现在看也是丝毫不过时,当初看不懂的现在来看可能会更加有感觉,当然现在这部电影在各大视频播放器就可以观看,当然有些播放器的格式可能会比较特殊,比如爱奇艺,今天就来告诉大家使用迅捷视频转换器将泰坦尼克号qsv 格式转换mp4的方法。 安装视频转换器 我们如果想要转换视频需要一些什么条件呢?有人说是视频文件,这当然是没错的,但是没有视频转换器我们也是转换不了的,所以我们需要搜索迅捷视频转换器来进行安装。

添加转换视频 安装好之后打开软件,这时候呢,我们就可以添加文件,进行文件的转换了,有些朋友可能会不知道如何把视频文件添加进软件当中,那我们把目光看向文件的左上角,点击添加文件就可以选择视频文件添加进软件当中了。不过qsv视频格式比较的特殊,转换的时候需要一段时间转码才可以。

选择格式参数 然后我们就可以调整文件的参数以及想要转换的格式了,点击软件上方的输出格式选项,我们可以看出来跳出了参数选项,前面已经说了把qsv格式转换成mp4,这里我们点击视频格式,在视频格式的下方选择mp4格式,跳转到主界面就说明我们的格式已经选择完成了。

选择文件位置 马虎的小伙伴肯定也不再少数,有时候转换后的文件不知道放到哪个位置了。小编来告诉大家。点击软件下方的自定义按钮,然后点击文件夹图标,就可以调整我们转换后文件的保存位置了。 转换视频 最后呢,我们点击转换按钮,就可以看到我们的视频文件已经开始转换了,视频越大所需要转换的时间也就越长,各位观众老爷一定要耐心等待。转换文件其实还是很快的。

怎么把爱奇艺QSV格式视频转换成MP4格式

平常在家闲来无事就喜欢追剧,因为这是打发时间的一种好方式。对于从不玩游戏的小编来讲几乎每个周末都是宅在家开启追剧模式。不过看了这么多电视剧,我倒是发现了一个问题。就是爱奇艺有一种特别的格式视频,通常普通的视频一般都是MP4,但是爱奇艺的是QSV而且这种格式视频在其他的播放器里都不能正常播放。只有将QSV格式转换MP4才能解决问题,接下来由小编给大家介绍一种方便快捷的转换方式。 QSV格式文件是一种视频加速格式。爱奇艺视频采用的高清加密的QSV格式,采用这个视频格式其实除去保护文件的版权之外,还有一种就是经营策略,这种QSV格式的文件只能在爱奇艺客户端进行播放,其他播放器都无法打开。

导语:现在网上可以看到,很多人都在寻找将QSV转换成MP4的方法,但是也因为QSV格式比较特殊,所以,很少有工具能够对QSV格式的文件进行转换,如果真心想将QSV转换成其他格式的话,大家可以试一试迅捷视频转换器,在新的版本中,该软件加入了QSV、qlv这两种格式的转换功能,也就是说,这是小编所发现的唯一一个可以支持转换QSV、qlv格式的工具。 软件简介: 迅捷视频转换器支持视频格式转换、音频格式转换、手机设备格式转换、用户自定义、分割视频和合并视频等多个功能。这款视频转换器支持QSV格式转换成MP4格式可以实现视频格式转换和提供多种高清格式输出。 方法步骤:

第一步:双击运行软件图标,然后进入软件操作界面。点击“添加文件”按钮将需要转换的QSV格式文件添加至软件中(这时软件会自动进入到格式转码界面)。 第二步:点击“开始转码”后进入转码程序中,转码完成后,在软件的界面中会新增一个转码后的视频文件。

教你如何高效把爱奇艺qsv格式转换成mp4的方法

对于爱奇艺视频播放器想必大部分人都不会陌生。爱奇艺由于有众多的独家版权资源所以深受广大用户的喜爱,而爱奇艺也逐渐成为人们手机中必不可少的软件之一。但是爱奇艺所下载的qsv格式不可以用爱奇艺之外的播放器打开。想使用别的播放器打开qsv格式可以用迅捷视频转换器把爱奇艺的qsv格式转换成mp4格式以提高视频的兼容性。 1、首先需要打开软件,并且把功能栏调整为“视频转换”功能,有些小伙伴在使用软件其他功能后容易忘记把功能调整回来,因此特别提醒对功能栏的设置。 2、把爱奇艺的qsv格式的文件添加到软件中,添加的时候可以点击软件左上角的“添加文件”或“添加文件夹”按钮,如果不想点击软件左上角的按钮也可以直接把视频拖拽到软件中。拖拽时也支持同时添加多个文件或文件夹提高添加视频的效率。

3、设置“输出格式”,输出格式又分为视频格式和视频分辨率。因为我们需要把qsv格式转换成mp4格式,所以把视频格式设置为‘mp4’格式,分辨率尽量设置为和原视频相同分辨率的‘同原文件’分辨率。 4、如果不想把“输出格式”设置为‘mp4同原文件’格式或者其它软件预设格式,可以根据各自需求点击“添加自定义设置”对‘视频’下的视频编码、比特率、分辨率和帧数,或‘音频’下的音频编码、比特率、取样频率和声道设置不同的参数以满足需求。

5、预设转换后mp4的“输出路径”,设置输出路径时可以在输入框中直接填写或者更改要保存到电脑的路径,也可以点击‘更改路径’按钮选择转换后mp4文件存储到电脑的位置。 6、在各项参数都设置好后就可以点击“转换”或“全部转换”按钮把qsv格式转换成mp4了。在转换时会有一个进度条出现,进度条到100%时就表示视频已经转换好了。最后只要点开覆盖在‘转换’按钮上的‘打开’按钮就可以找到转换后的mp4视频了。

qsv视频怎么播放 教你将qsv格式转换为MP4

平常我们都会看一些视频来打发时间,但是现在大部分的视频网上播放权都掌握在各大视频网站的手里,下载之后就只能在此播放器中播放,这就为我们造成了很多麻烦。在这里,我们希望能够下载视频,在自己的电脑端进行自由的观看,但是视频网站希望你从他们平台所下载的资源都在自家的平台上观看,所以就有了特殊格式视频这一发明。 一、QSV视频文件 大家熟知的QSV文件就是爱奇艺推广的独家的加密视频文件。那么我们面对这种的视频文件就真的只能在爱奇艺的播放器上播放了吗?今天就给大家讲一下,怎么巧妙打开QSV文件的办法? 二、源头入手,使用奇艺网视频下载器 第一种办法,安装奇艺网视频下载直接下载视频,但我们把想要的视频地址复制到该下载器的视频地址栏以后,点击右边的“下载”按键。然后在跳出来的软件窗口让你选择继续下载FLV或者MPEG视

频,选择好了,接下来只要等待下载完成,就能够拿到一个不是QSV 格式的文件了。 三、简单便捷的视频文件格式转换 前面介绍的是直接把QSV下载成其他普通文件格式的方法,还有一种方法就是当你把QSV下载到电脑端的时候,可以选择迅捷视频转换器来帮你转换成其他格式的视频。这种方法,适用于当你想要转换的文件格式较多,文件数量大,转换的参数要求高,迅捷视频转换器都能支持。 1、下载安装迅捷视频转换器,点击运行后,先在“输出格式”

那里设置转换视频文件的格式、各种视频的参数、甚至还可以根据手机品牌来设定转换的参数。拥有完全丰富的服务,满足手机一族的视频观看要求。 2、返回转换器的初始页面,添加文件。

3、最后点击“开始转换”按键即可转换QSV视频的格式了。 以上就是将qsv格式转换为MP4的方法了,大家都学会了吗?另外,这款软件还可以转换其他格式的音视频文件哦!

QSV格式转换器怎样转换爱奇艺视频格式

相信大家看电视应该都是使用爱奇艺视频观看吧。因为爱奇艺中有很多丰富的影视剧资源。这是众所周知的。但是看视频一般都是离线下载到本地播放比较方便。如果网络允许的情况下。当然可以直接下载下来。但是下载的视频文件并不是一般的视频文件,而是非常特殊的QSV视频格式。熟悉QSV格式的朋友都知道这个格式无法正常使用,下面就是QSV格式转换器怎样转换爱奇艺视频格式的方法了。 1、首先就是安装一个QSV格式转换器。目前也就是迅捷视频转换器转换QSV 视频的效果比较不错。在网站中下载软件到计算机桌面上,然后打开选择一个位置保存软件即可。点击立即安装就需要等待下载了。 2、软件安装之后点击立即体验打开软件,然后选择使用的功能,软件主界面中有很多的功能,但是这次是转换爱奇艺的QSV视频格式,所以只能选择视频转换功能了。如果需要使用其他的功能也可以选择的。

3、然后就是把需要转换格式的QSV视频添加到软件当中。点击软件当中的添加文件按钮然后在计算机中导入QSV视频。当然也可以点击添加文件夹或者是直接拖动文件到软件中也能正常添加文件。

4、视频添加完成后就可以设置转换输出的文件格式了。在软件下方的输出格式中选择MP4视频格式输出,分辨率则可以随便选择。一般都是默认选择原视频的分辨率大小。当然也是可以修改的。 5、然后就是设置输出文件的保存位置。一般软件都是默认保存在桌面上,当然也可以设置在其他的地方的。比如:D盘、E盘等位置。点击更改路径,然后在选择框中选择D盘为保存位置。点击选择文件夹即可。

6、最后就可以开始转换格式了。点击软件右下角的全部转换,然后再等待软件转换的进度到达100%,然后就可以在保存位置看到转换完成的MP4视频了。点击软件中的打开按钮然后就可以直接打开保存地址了。

相关主题
文本预览
相关文档 最新文档