搜档网
当前位置:搜档网 › Blackfin LDF文件格式详解

Blackfin LDF文件格式详解

Blackfin  LDF文件格式详解
Blackfin  LDF文件格式详解

Blackfin LDF文件格式详解

对ADSP-BF533 Blackfin处理器,VisualDSP++提供4个.LDF文件:如果.LDF文件名没有后缀,那它就是“缺省的.LDF文件”。即,如果没有明确指定某个.LDF文件,编译器连接应用程序时会使用缺省的.LDF文件。例如,ADSP-BF531.ldf是ADSP-BF531 Blackfin处理器的缺省的.LDF文件。

对每个处理器,有三个.LDF文件,后缀是_C、_CPP和_ASM (例如ADSP-BF533_C.ldf)。这些.LDF文件是Expert Linker的模板。

Blackfin处理器的.LDF文件可以分为5个主要部分:

?前导段

?库选择

?run-time头选择

?存储空间声明

?代码/数据到存储器映射定义

每个.LDF文件处理一系列命令,允许通过提供少量命令行选项来把多种配置植入应用。通过在.LDF文件中大量使用预处理器宏,

******************************************************************************* **

//ARCHITECTURE指令规定这个.LDF文件用于ADSP-BF533 Blackfin处理器。ARCHITECTURE(ADSP-BF533)

******************************************************************************* **

SEARCH_DIR指令识别标准run-time库的位置,像VisualDSP++安装目录的Blackfin\lib子目录一样。链接器将$ADI_DSP置为VisualDSP++安装目录。

如果选择__NO_STD_LIB选项,不包括SEARCH_DIR指令,这意味着链接器没有搜索run-time库的缺省空间。这个选项由-no-std-lib编译器开关选择,确保应用仅被用户提供的库链接。

#ifndef __NO_STD_LIB

SEARCH_DIR( $ADI_DSP/Blackfin/lib )

#endif

******************************************************************************* **

这部分.LDF文件构建不同的宏和变量,目的是产生$LIBRARIES表,按需要的顺序搜索库和目标文件,解决引用问题。一些选项指定选择一个库对另一个库(如工作区激活版本对普通版本),其它选项指定选择一个库对另一个库顺序(如选择完全兼容的IEEE浮点支持版本对较高性能版)。

USE_FILEIO选项是强制定义的。这对在大部分开发周期内使用的printf()和其它与stdio-相关的函数,是必要的。禁用USE_FILEIO选项就禁用了所有与stdio-相关的I/O操作

/* Moving to primIO means that we must always include the FileIO support,

** so that printf() will work.

*/

#ifndef USE_FILEIO /* { */

#define USE_FILEIO 1

#endif /* } */

******************************************************************************* **

/************************** USE_PROFILER *****************************/

#ifdef USE_PROFILER /* { */

#define USE_PROFILER0

#endif /* } */

******************************************************************************* **

/************************** USE_PROFILER0 ****************************/

#ifdef USE_PROFILER0 /* { */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define PROFFLAG , prfflg0_532y.doj

#else

#define PROFFLAG , prfflg0_532.doj

#endif /* } */

// The profiler needs File I/O to write its results.

#define USE_FILEIO 1

#ifndef USE_PROFILER /* { */

#define USE_PROFILER

#endif /* } */

#endif /* } */

/************************** USE_PROFILER1*****************************/

#ifdef USE_PROFILER1 /* { */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define PROFFLAG , prfflg1_532y.doj

#else

#define PROFFLAG , prfflg1_532.doj

#endif /* } */

#define USE_FILEIO 1

#ifndef USE_PROFILER /* { */

#define USE_PROFILER

#endif /* } */

#endif /* } */

/************************** USE_PROFILER2 ****************************/

#ifdef USE_PROFILER2 /* { */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define PROFFLAG , prfflg2_532y.doj

#else

#define PROFFLAG , prfflg2_532.doj

#endif /* } */

#define USE_FILEIO 1

#ifndef USE_PROFILER /* { */

#define USE_PROFILER

#endif /* } */

#endif /* } */

/************************** PROFFLAG ******************************/

如果需要profiling的话,PROFFLAG被定义为一个目标文件的名称。如果不需要,就不定义PROFFLAG。

#ifndef PROFFLAG /* { */

#define PROFFLAG

#endif /* } */

/************************** OMEGA ******************************/

OMEGA是包括idle程序的文件名称。如果应用自动终止,如从main()返回或通过调用exit(),就使用这个程序。只要链接时需要工作区,__WORKAROUNDS_ENABLED选项就被编译器驱动器定义;尽管编译时可以单独选择每个可用的工作区,不能对所有的工作区组合提供预构建库。因此,每个库和目标都有单个激活工作区版本,选择了所有的工作区。

#ifdef __WORKAROUNDS_ENABLED /* { */

#define OMEGA idle532y.doj

#else

#define OMEGA idle532.doj

#endif /* } */

/************************** MEMINIT******************************/

MEMINIT保持目标文件的名称,包括指向由存储器初始化实用程序产生的任何初始化数据的指针。除非随后的应用被存储器初始化程序处理,否则,这个指针是NULL指针。这个文件没有变量。

#define MEMINIT __initsbsz532.doj,

#ifdef __WORKAROUNDS_ENABLED /* { */

#define LIBSMALL libsmall532y.dlb,

#define FLT64 libf64ieee532y.dlb

#else

#define LIBSMALL libsmall532.dlb,

#define FLT64 libf64ieee532.dlb

#endif /* } */

M3_RESERVED选项用于模拟器。缺省时,模拟器将Blackfin处理器的堆栈用作工作区,不过,可以使用M3寄存器来替代它。构建的run-time库具有-reserve m3开关,允许使用寄存器替代堆栈用作工作区。但有少量程序需要额外的处理。如,如果保留了M3,中断处理程序可能不存储和恢复M3,但如果没保留,就必须进行这样存储和恢复。因此,用一些库的两个变量来处理这种情况。LIBM3包括异常处理程序setjmp()和longjmp(),而LIBDSP 包括与DSP有关的优化程序,当M3被模拟器保留时,会损失一些性能。

#ifdef M3_RESERVED /* { */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define LIBM3 libm3res532y.dlb

#define LIBDSP libdspm3res532y.dlb

#define SFTFLT libsftflt532y.dlb

#else

#define LIBM3 libm3res532.dlb

#define LIBDSP libdspm3res532.dlb

#define SFTFLT libsftflt532.dlb

#endif /* } */

#else

******************************************************************************* **

只要链接时需要工作区,__WORKAROUNDS_ENABLED选项就被编译器驱动器定义;尽管编译时可以单独选择每个可用的工作区,不能对所有的工作区组合提供预构建库。因此,每个库和目标都有单个激活工作区版本,选择了所有的工作区。

#ifdef __WORKAROUNDS_ENABLED /* { */

#define LIBM3 libm3free532y.dlb

#define LIBDSP libdsp532y.dlb

#define SFTFLT libsftflt532y.dlb

#else

#define LIBM3 libm3free532.dlb

#define LIBDSP libdsp532.dlb

#define SFTFLT libsftflt532.dlb

#endif /* } */

#endif /* } */

******************************************************************************* **

通过排序选择浮点库。完全兼容的库是独立的库,高性能库是LIBDSP的一部分。这两个库的排序根据需要的浮点库而改变。由–ieee-fp编译器开关设置IEEEFP选项,选择替代排序方案。

#ifdef IEEEFP /* { */

#define FPLIBS SFTFLT, FLT64, LIBDSP

#else

#define FPLIBS FLT64, LIBDSP, SFTFLT

#endif /* } */

#ifdef __WORKAROUNDS_ENABLED

#ifdef _DINKUM_IO

#define LIBC libc532y.dlb, librt_fileio532y.dlb, libio532y.dlb,

#else //_DINKUM_IO

#define LIBC libio532y.dlb, libc532y.dlb,

#endif

#else //__WORKAROUNDS_ENABLED

#ifdef _DINKUM_IO

#define LIBC libc532.dlb, librt_fileio532.dlb, libio532.dlb,

#else //_DINKUM_IO

#define LIBC libio532.dlb, libc532.dlb,

#endif

#endif

******************************************************************************* **

这样选择的库被汇编到LIBS表,如果设置了__ADI_LIBEH__(链接时由–eh设置),可以选择与C++异常(–eh和–rtti开关)一起构建的C++库。合适的文件I/O库附到这个表上,形成完整的$LIBRARIES表。

#ifdef __WORKAROUNDS_ENABLED /* { */

#ifdef __ADI_LIBEH__

#define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, libcpp532yx.dlb, libcpprt532yx.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, OMEGA

#else

#define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532y.dlb, libx532y.dlb, libcpp532y.dlb, libcpprt532y.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, OMEGA

#endif

#else

#ifdef __ADI_LIBEH__

#define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, libcpp532x.dlb, libcpprt532x.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, OMEGA

#else

#define LIBS LIBSMALL MEMINIT LIBC LIBM3, libevent532.dlb, libx532.dlb, libcpp532.dlb, libcpprt532.dlb, FPLIBS, libetsi532.dlb, libssl532.dlb, OMEGA

#endif

#endif /* } */

#if defined(USE_FILEIO) || defined(USE_PROFGUIDE)

#ifdef __WORKAROUNDS_ENABLED /* { */

$LIBRARIES = LIBS, librt_fileio532y.dlb;

#else

$LIBRARIES = LIBS, librt_fileio532.dlb;

#endif /* } */

#else

#ifdef __WORKAROUNDS_ENABLED /* { */

$LIBRARIES = LIBS, librt532y.dlb;

#else

$LIBRARIES = LIBS, librt532.dlb;

#endif /* } */

#endif /* } */

// Libraries from the command line are included in COMMAND_LINE_OBJECTS.

// If USER_CRT is defined to be a custom/SystemBuilder generated

// CRT file then link with that, otherwise determine which of the

// precompiled objects to use.

#ifdef USER_CRT /* { */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define CRT USER_CRT, libprofile532y.dlb PROFFLAG

#else

#define CRT USER_CRT, libprofile532.dlb PROFFLAG

#endif /* } */

#else

#ifdef USE_PROFILER /* { */

#ifdef USE_FILEIO /* { */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define CRT crtsfpc532y.doj, libprofile532y.dlb PROFFLAG

#else

#define CRT crtsfpc532.doj, libprofile532.dlb PROFFLAG

#endif /* } */

#else

#ifdef __WORKAROUNDS_ENABLED /* { */

#define CRT crtscp532y.doj, libprofile532y.dlb PROFFLAG

#else

#define CRT crtscp532.doj, libprofile532.dlb PROFFLAG

#endif /* } */

#endif /* USE_FILEIO */ /* } */

#else

#ifdef USE_FILEIO /* { */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define CRT crtsfc532y.doj

#else

#define CRT crtsfc532.doj

#endif /* } */

#else

#ifdef __WORKAROUNDS_ENABLED /* { */

#define CRT crtsc532y.doj

#else

#define CRT crtsc532.doj

#endif /* } */

#endif /* USE_FILEIO */ /* } */

#endif /* USE_PROFILER */ /* } */

#endif /* USER_CRT } */

#ifdef __WORKAROUNDS_ENABLED /* { */

#define ENDCRT , crtn532y.doj

#else

#define ENDCRT , crtn532.doj

#endif /* } */

$OBJECTS = CRT, $COMMAND_LINE_OBJECTS ,cplbtab533.doj ENDCRT;

MEMORY

{

******************************************************************************* **

核与系统的存储器映射的寄存器(MMR)在存储器的顶部。链接器不允许为核MMR定义存储器部分,这个存储器声明被通过注释去掉,不过还保留下来,以保持透明度。

MEM_SYS_MMRS { /* System memory-mapped registers - 2MB */

TYPE(RAM) WIDTH(8)

START(0xFFC00000) END(0xFFDFFFFF)

}

定义了L1中间结果暂存器,不过,.LDF文件不使用它。注意,静态初始化数据可能不会映射到中间结果暂存器。

MEM_L1_SCRATCH {

TYPE(RAM) WIDTH(8)

START(0xFFB00000) END(0xFFB00FFF)

}

******************************************************************************* **

L1指令存储器被分为代码和代码CACHE。代码CACHE可以被选作CACHE或代码空间。/* Instruction SRAM, 80K, some useable as cache */

MEM_L1_CODE_CACHE { /* L1 Instruction SRAM/Cache - 16K */

TYPE(RAM) WIDTH(8)

START(0xFFA10000) END(0xFFA13FFF)

}

MEM_L1_CODE { /* L1 Instruction - 64K */

TYPE(RAM) WIDTH(8)

START(0xFFA00000) END(0xFFA0FFFF)

}

******************************************************************************* **

L1数据存储器Bank B被分为数据和数据CACHE,前者进一步分为常数数据和堆栈使用的空间。总的来说,.LDF文件试图将堆栈放置到快速L1存储器中,因为编译器常常将堆栈用作函数参数和临时工作空间。

/* Data Bank B - 32K, half usable as cache. */

/* Split into sections for program layout. */

/* Data - normal data, 16K */

#ifdef USE_CACHE /* { */

MEM_L1_DATA_B_CACHE { /* L1 Data B SRAM/Cache - 16K */ TYPE(RAM) WIDTH(8)

START(0xFF904000) END(0xFF907FFF)

}

MEM_L1_DATA_B { /* L1 Data B SRAM - half of 16K */

TYPE(RAM) WIDTH(8)

START(0xFF902000) END(0xFF903FFF)

}

#else /* } { USE_CACHE */

MEM_L1_DATA_B { /* L1 Data B SRAM - half of 16K + 16K */

TYPE(RAM) WIDTH(8)

START(0xFF902000) END(0xFF907FFF)

}

#endif /* } USE_CACHE */

/* Stack - 8K */

MEM_L1_DATA_B_STACK { /* L1 Data B SRAM cont. - other half of 16K */ TYPE(RAM) WIDTH(8)

START(0xFF900000) END(0xFF901FFF)

}

******************************************************************************* **

L1数据存储器Bank A也有CACHE/非CACHE的划分。非CACHE区域有可选择的256字节用于命令行变量。这个IDDE_ARGS选项支持导配置文件导引优化(PGO),如前面所述。

/* Data Bank A - 32K, half usable as cache. */

/* Split into sections for program layout. */

/* Data - normal data, 16K. */

/* If cache disabled use MEM_L1_DATA_A_CACHE for heap else use SRAM */

MEM_L1_DATA_A_CACHE { /* L1 Data A SRAM/Cache - 16K */ TYPE(RAM) WIDTH(8)

START(0xFF804000) END(0xFF807FFF)

}

#ifdef IDDE_ARGS

MEM_ARGV {

#define ARGV_START 0xFF803F00

TYPE(RAM) WIDTH(8)

START(0xFF803F00) END(0xFF803FFF)

}

MEM_L1_DATA_A { /* L1 Data A SRAM - most of 16K */

TYPE(RAM) WIDTH(8)

START(0xFF800000) END(0xFF803EFF)

}

#else

MEM_L1_DATA_A { /* L1 Data A SRAM - 16K */

TYPE(RAM) WIDTH(8)

START(0xFF800000) END(0xFF803FFF)

}

#endif

******************************************************************************* **

定义了4个异步存储器Bank和一个SDRAM Bank。

MEM_ASYNC3 { /* Async Bank 3 - 1MB */

TYPE(RAM) WIDTH(8)

START(0x20300000) END(0x203FFFFF)

}

MEM_ASYNC2 { /* Async Bank 2 - 1MB */

TYPE(RAM) WIDTH(8)

START(0x20200000) END(0x202FFFFF)

}

MEM_ASYNC1 { /* Async Bank 1 - 1MB */

TYPE(RAM) WIDTH(8)

START(0x20100000) END(0x201FFFFF)

}

MEM_ASYNC0 { /* Async Bank 0 - 1MB */

TYPE(RAM) WIDTH(8)

START(0x20000000) END(0x200FFFFF)

}

******************************************************************************* **

一个SDRAM Bank是存储器的最低Bank,是一个32 MB的空间

#ifdef PARTITION_EZKIT_SDRAM

MEM_SDRAM0_BANK0 { /* SDRAM: Ext Bank0, Int Bank0: 8MB */

/* Used for heap */

TYPE(RAM) WIDTH(8)

START(0x00000004) END(0x007FFFFF)

}

MEM_SDRAM0_BANK1 { /* SDRAM: Ext Bank0, Int Bank1: 8MB */

/* Used for data */

TYPE(RAM) WIDTH(8)

START(0x00800000) END(0x00FFFFFF)

}

MEM_SDRAM0_BANK2 { /* SDRAM: Ext Bank0, Int Bank2: 8MB */

/* Used for data/bsz */

TYPE(RAM) WIDTH(8)

START(0x01000000) END(0x017FFFFF)

}

MEM_SDRAM0_BANK3 { /* SDRAM: Ext Bank0, Int Bank3: 8MB */

/* Used for program */

TYPE(RAM) WIDTH(8)

START(0x01800000) END(0x01FFFFFF)

}

#else

/* Claim some of SDRAM Bank 0 for heap */

/* since it needs a separate section */

MEM_SDRAM0 { /* SDRAM Bank 0 - 16MB-128M */

TYPE(RAM) WIDTH(8)

START(0x00004000) END(0x07FFFFFF)

}

******************************************************************************* **

最低16 KB被声明为堆使用。注意堆不包括地址0x0000 0000,这个地址为C中的NULL指针保留,不能用来指向有效的数据。

MEM_SDRAM0_HEAP { /* Claim some for ext heap - 16K */

TYPE(RAM) WIDTH(8)

START(0x00000004) END(0x00003FFF)

}

#endif

}

PROCESSOR P0

{

******************************************************************************* **

PROCESSOR指令将随后得到的.DXE文件写入$COMMAND_LINE_OUTPUT_FILE,这是链接器定义的输出文件名称,由编译器驱动器传递。

OUTPUT( $COMMAND_LINE_OUTPUT_FILE )

/* Following address must match start of MEM_PROGRAM */

RESOLVE(start,0xffa00000)

******************************************************************************* **

使用RESOLVE指令,start符号(CRT的第一个可执行部分)被直接映射到处理器的复位地址。如果使用配置文件导引优化(PGO),通过同样的方法,_argv_string符号被直接映射到变量部分的开头。

#ifdef IDDE_ARGS

RESOLVE(___argv_string, ARGV_START)

#endif

******************************************************************************* **

_main和start符号被明确命名,以免激活选项时,被链接器屏蔽。

KEEP(start,_main)

******************************************************************************* **

.LDF文件的其余部分将代码或数据通过存储区域从输入部分映射到输出部分。.LDF文件是通用的,目的是确保适用所有的情况。因此,像program和data1这样的部分,被映射到不同存储区域的大量输出部分中。当一个存储部分添满后,余下的可能会进入其它的部分。

SECTIONS

{

program_ram

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(L1_code) $LIBRARIES(L1_code))

INPUT_SECTIONS( $OBJECTS(cplb_code) $LIBRARIES(cplb_code))

INPUT_SECTIONS( $OBJECTS(cplb) $LIBRARIES(cplb))

INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))

INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program)) } >MEM_L1_CODE

******************************************************************************* **

一些项可以随意映射。C++对象仅能用于C++链接映射;代码和数据被映射到L1 SRAM (当指定USE_CACHE选项时,被映射到外部存储器)的CACHE区域中。

#ifndef USE_CACHE

l1_code

{

INPUT_SECTION_ALIGN(4)

___l1_code_cache = 0;

INPUT_SECTIONS( $OBJECTS(L1_code) $LIBRARIES(L1_code))

INPUT_SECTIONS( $OBJECTS(cplb_code) $LIBRARIES(cplb_code))

INPUT_SECTIONS( $OBJECTS(cplb) $LIBRARIES(cplb))

INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program)) } >MEM_L1_CODE_CACHE

#endif /* USE_CACHE */

data_L1_data_a

{

INPUT_SECTION_ALIGN(4)

#ifndef USE_CACHE

___l1_data_cache_a = 0;

#endif

INPUT_SECTIONS( $OBJECTS(L1_data_a) $LIBRARIES(L1_data_a))

INPUT_SECTIONS( $OBJECTS(vtbl) $LIBRARIES(vtbl) )

INPUT_SECTIONS( $OBJECTS(.frt) $LIBRARIES(.frt) )

INPUT_SECTIONS( $OBJECTS(.frtl) $LIBRARIES(.frtl) )

INPUT_SECTIONS( $OBJECTS(ctor) $LIBRARIES(ctor) )

INPUT_SECTIONS( $OBJECTS(ctorl) $LIBRARIES(ctorl) )

INPUT_SECTIONS( $OBJECTS(.gdt) $LIBRARIES(.gdt) )

INPUT_SECTIONS( $OBJECTS(.gdtl) $LIBRARIES(.gdtl) )

INPUT_SECTIONS( $OBJECTS(.edt) $LIBRARIES(.edt) )

INPUT_SECTIONS( $OBJECTS(.cht) $LIBRARIES(.cht) )

INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))

INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))

INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))

} >MEM_L1_DA TA_A

constdata_L1_data_a

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata)) } >MEM_L1_DA TA_A

data_L1_data_b

{

INPUT_SECTION_ALIGN(4)

#ifndef USE_CACHE

___l1_data_cache_b = 0;

#endif

INPUT_SECTIONS( $OBJECTS(L1_data_b) $LIBRARIES(L1_data_b))

INPUT_SECTIONS( $OBJECTS(.edt) $LIBRARIES(.edt) )

INPUT_SECTIONS( $OBJECTS(.cht) $LIBRARIES(.cht) )

INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))

INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))

INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))

} >MEM_L1_DA TA_B

******************************************************************************* **

.meminit部分被链接器区别对待。在链接时,.meminit中没有代码和数据。不过,一旦链接完成,.meminit部分会扩展,使存储区域中所有未使用的空间用来容纳被映射的内容。特殊的.LDF文件中,.meminit被映射到MEM_L1_DATA_B,因此,链接后,.meminit占据.DXE 文件未使用的MEM_L1_DATA_B的其余部分。这定义了一个空白空间,存储器初始化程序可以用它来存储配置表。像bsz_init一样,.meminit部分通常映射到只读存储器空间。

bsz_init

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(bsz_init) $LIBRARIES(bsz_init)) } >MEM_L1_DA TA_B

.meminit {} >MEM_L1_DATA_B

constdata_L1_data_b

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata)) } >MEM_L1_DA TA_B

******************************************************************************* **

BSZ部分被标记为ZERO_INIT,它指示存储器初始化时,将相应部分初始化为空并且在运行时应该填充零。bsz_init部分包括指向存储器初始化程序产生的表的开始处的指针,通常被映射到只读存储器。为简单起见,在开发的初期,它被映射到常规数据部分。

bsz_L1_data_b ZERO_INIT

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(bsz) $LIBRARIES(bsz))

} >MEM_L1_DA TA_B

bsz_L1_data_a ZERO_INIT

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(bsz) $LIBRARIES(bsz))

} >MEM_L1_DA TA_A

#ifdef USE_CACHE /* { */

l1_code

{

INPUT_SECTION_ALIGN(4)

___l1_code_cache = 1;

} >MEM_L1_CODE_CACHE

l1_data_a_cache

{

INPUT_SECTION_ALIGN(4)

___l1_data_cache_a = 1;

} >MEM_L1_DA TA_A_CACHE

l1_data_b_cache

{

INPUT_SECTION_ALIGN(4)

___l1_data_cache_b = 1;

} >MEM_L1_DA TA_B_CACHE

#endif /* } USE_CACHE */

******************************************************************************* **

堆栈和堆空间没有.LDF文件映射的数据。而是各自定义全局符号,包括它们的开始、结束地址和长度(对堆而言)。这允许Run-time Bank来决定运行时堆栈和堆的大小和位置,因此,在.LDF文件中,可以很容易地修改它们。注意CRT要求这些符号。

stack

{

ldf_stack_space = .;

ldf_stack_end = ldf_stack_space + MEMORY_SIZEOF(MEM_L1_DATA_B_STACK);

} >MEM_L1_DA TA_B_STACK

#if defined(USE_CACHE) || defined(USE_SDRAM)/* { */

#if defined(PARTITION_EZKIT_SDRAM) /* { */

heap

{

// Allocate a heap for the application

ldf_heap_space = .;

ldf_heap_end = ldf_heap_space + MEMORY_SIZEOF(MEM_SDRAM0_BANK0) - 1;

ldf_heap_length = ldf_heap_end - ldf_heap_space;

} >MEM_SDRAM0_BANK0

#else

heap

{

// Allocate a heap for the application

ldf_heap_space = .;

ldf_heap_end = ldf_heap_space + MEMORY_SIZEOF(MEM_SDRAM0_HEAP) - 1;

ldf_heap_length = ldf_heap_end - ldf_heap_space;

} >MEM_SDRAM0_HEAP

#endif /* PARTITION_EZKIT_SDRAM } */

#else

heap

{

// Allocate a heap for the application

ldf_heap_space = .;

ldf_heap_end = ldf_heap_space + MEMORY_SIZEOF(MEM_L1_DATA_A_CACHE) - 1;

ldf_heap_length = ldf_heap_end - ldf_heap_space;

} >MEM_L1_DA TA_A_CACHE

#endif /* USE_CACHE } */

#ifdef PARTITION_EZKIT_SDRAM /* { */

sdram0_bank1

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(sdram0_bank1) $LIBRARIES(sdram0_bank1))

INPUT_SECTIONS( $OBJECTS(sdram0_data) $LIBRARIES(sdram0_data))

INPUT_SECTIONS( $OBJECTS(cplb) $LIBRARIES(cplb))

INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))

INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))

INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))

INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data)) } >MEM_SDRAM0_BANK1

sdram0_bank2

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(sdram0_bank1) $LIBRARIES(sdram0_bank1))

INPUT_SECTIONS( $OBJECTS(sdram0_data) $LIBRARIES(sdram0_data))

INPUT_SECTIONS( $OBJECTS(cplb) $LIBRARIES(cplb))

INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))

INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))

INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))

INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data)) } >MEM_SDRAM0_BANK2

sdram0_bank2_bsz ZERO_INIT

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(bsz) $LIBRARIES(bsz))

} >MEM_SDRAM0_BANK2

sdram0_bank3

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(sdram0_bank3) $LIBRARIES(sdram0_bank3))

INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))

INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))

INPUT_SECTIONS( $OBJECTS(cplb_code) $LIBRARIES(cplb_code)) } >MEM_SDRAM0_BANK3

#else

sdram

{

INPUT_SECTIONS($COMMAND_LINE_OBJECTS(mydata1) $COMMAND_LINE_OBJECTS(mydata2) $COMMAND_LINE_OBJECTS(mydata3))

#if defined(USE_CACHE) || defined(USE_SDRAM) /* { */

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(sdram0) $LIBRARIES(sdram0))

INPUT_SECTIONS( $OBJECTS(noncache_code) $LIBRARIES(noncache_code))

INPUT_SECTIONS( $OBJECTS(program) $LIBRARIES(program))

INPUT_SECTIONS( $OBJECTS(cplb) $LIBRARIES(cplb))

INPUT_SECTIONS( $OBJECTS(cplb_code) $LIBRARIES(cplb_code))

INPUT_SECTIONS($OBJECTS(data1) $LIBRARIES(data1))

INPUT_SECTIONS($OBJECTS(voldata) $LIBRARIES(voldata))

INPUT_SECTIONS($OBJECTS(constdata) $LIBRARIES(constdata))

INPUT_SECTIONS( $OBJECTS(cplb_data) $LIBRARIES(cplb_data))

#endif /* USE_CACHE } */

} >MEM_SDRAM0

#if defined(USE_CACHE) || defined(USE_SDRAM) /* { */

bsz_sdram0 ZERO_INIT

{

INPUT_SECTION_ALIGN(4)

INPUT_SECTIONS( $OBJECTS(bsz) $LIBRARIES(bsz))

} >MEM_SDRAM0

#endif /* USE_CACHE } */

#endif

}

}

广告设计常用图像文件格式

广告设计常用图像文件格式 平面设计中我们会接触到很多图像格式,可是你真正地了解它们吗?下面我们就平面设 计中常见的图像格式为大家分别做简单介绍。 BMP格式 BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows 应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生 俱生来的缺点——占用磁盘空间过大。所以,目前BMP在单机上比较流行。 GIF格式 GIF是英文Graphics Interchange Format(图形交换格式)的缩写。顾名思义,这种格式是用来交换图片的。事实上也是如此,上世纪80年代,美国一家著名的在线信息服务机构CompuServe针对当时网络传输带宽的限制,开发出了这种GIF图像格式。 GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛的应用。最初的GIF只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF风光十足。目前Internet上大量采用的彩色动画文件多为这种 格式的文件,也称为GIF89a格式文件。 此外,考虑到网络传输中的实际情况,GIF图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像的大致轮廓,然后随着传输过程的继续而逐步看清图像中的细节部分,从而适应了用户的"从朦胧到清楚"的观赏心理。目前Internet上大量采 用的彩色动画文件多为这种格式的文件。 GIF格式只能保存最大8位色深的数码图像,所以它最多只能用256色来表现物体,对于色彩复杂的物体它就力不从心了。尽管如此,这种格式仍在网络上大行其道应用,这和GIF图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等优势是分不 开的。 JPEG格式 JPEG也是常见的一种图像格式,它由联合照片专家组(Joint Photographic Experts Group)开发并以命名为"ISO 10918-1",JPEG仅仅是一种俗称而已。JPEG文件的扩展名为。jpg或。jpeg,其压缩技术十分先进,它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘

常用图片文件格式

总的来说,有两种截然不同的图像格式类型:即有损压缩和无损压缩。 1.有损压缩 有损压缩可以减少图像在内存和磁盘中占用的空间,在屏幕上观看图像时,不会发现它对图像的外观产生太大的不利影响。因为人的眼睛对光线比较敏感,光线对景物的作用比颜色的作用更为重要,这就是有损压缩技术的基本依据。 有损压缩的特点是保持颜色的逐渐变化,删除图像中颜色的突然变化。生物学中的大量实验证明,人类大脑会利用与附近最接近的颜色来填补所丢失的颜色。例如,对于蓝色天空背景上的一朵白云,有损压缩的方法就是删除图像中景物边缘的某些颜色部分。当在·屏幕上看这幅图时,大脑会利用在景物上看到的颜色填补所丢失的颜色部分。利用有损压缩技术,某些数据被有意地删除了,而被取消的数据也不再恢复。 无可否认,利用有损压缩技术可以大大地压缩文件的数据,但是会影响图像质量。如果使用了有损压缩的图像仅在屏幕上显示,可能对图像质量影响不太大,至少对于人类眼睛的识别程度来说区别不大。可是,如果要把一幅经过有损压缩技术处理的图像用高分辨率打印机打印出来,那么图像质量就会有明显的受损痕迹。 2.无损压缩 无损压缩的基本原理是相同的颜色信息只需保存一次。压缩图像的软件首先会确定图像中哪些区域是相同的,哪些是不同的。包括了重复数据的图像(如蓝天) 就可以被压缩,只有蓝天的起始点和终结点需要被记录下来。但是蓝色可能还会有不同的深浅,天空有时也可能被树木、山峰或其他的对象掩盖,这些就需要另外记录。从本质上看,无损压缩的方法可以删除一些重复数据,大大减少要在磁盘上保存的图像尺寸。但是,无损压缩的方法并不能减少图像的内存占用量,这是因为,当从磁盘上读取图像时,软件又会把丢失的像素用适当的颜色信息填充进来。如果要减少图像占用内存的容量,就必须使用有损压缩方法。 无损压缩方法的优点是能够比较好地保存图像的质量,但是相对来说这种方法的压缩率比较低。但是,如果需要把图像用高分辨率的打印机打印出来,最好还是使用无损压缩几乎所有的图像文件都采用各自简化的格式名作为文件扩展名。从扩展名就可知道这幅图像是按什么格式存储的,应该用什么样的软件去读/写等等。 一、BMP图像文件格式 BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BblP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持BMP图像格式。

Freescale S19文件格式

S19文件格式介绍 S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming。 1、格式定义及含义 S-record每行最大是78个字节,156个字符 S-record form at type(类型):2个字符。用来描述记录的类型(S0,S1,S2,S3,S5,S7,S8,S9)。 count(计数):2个字符。用来组成和说明了一个16进制的值,显示了在记录中剩余成对字符的计数。 address(地址):4或6或8个字节。用来组成和说明了一个16进制的值,显示了数据应该装载的地址,这部分的长度取决于载入地址的字节数。2个字节的地址占用4个字符,3个字节的地址占用6个字符,4个字节的地址占用8个字符。 data(数据):0—64字符。用来组成和说明一个代表了内存载入数据或者描述信息的16进制的值。 checksum(校验和):2个字符。这些字符当被配对并换算成16进制数据的时候形成了一个最低有效字符节,该字符节用来表达作为补充数据,地址和数据库的字符对所代表的(字节的)补码的byte总和。即计数值、地址场和数据场的若干字符以两个字符为一对,将它们相加求和,和的溢出部分不计,只保留最低两位字符NN,checksum =0xFF-0xNN。 S0 Record:记录类型是“S0” (0x5330)。地址场没有被用,用零置位(0x0000)。数据场中的信息被划分为以下四个子域: nam e(名称):20个字符,用来编码单元名称 ver(版本):2个字符,用来编码版本号 rev(修订版本):2个字符,用来编码修订版本号 description(描述):0-36个字符,用来编码文本注释 此行表示程序的开始,不需烧入memory。

通用编程器软件使用说明(精)

通用编程器软件使用说明 V1.0 -------- -------- (一安装与删除 运行A:\Setup.exe即完成自动安装。 注意:本软件目前支持操作系统Win95/98/2000。XP下未测试。 删除时可用控制面板中的“添加/删除程序”,找到“通用编程器”, 单击“确定”即可。 (二运行 安装好软件后,“开始”菜单中会出现“通用编程器”菜单项,用户 点击该项即进入通用编程器用户界面。 (三功能介绍 系统界面采用windows窗口形式,软件运行后会自动检测串行口COM1、COM2,确认与编程器的连接;同时新建一个缓冲区文件,内容为全1。 系统主菜单包括:文件、缓冲区、通信串口选择、新增芯片类型、芯 片型号选择、自动操作编辑、操作选择和帮助八个菜单项。 文件菜单项包括打开、保存、另存为、退出以及以前打开的文件的快 速链接(最多4个。用于处理缓冲区的内容与磁盘文件的交互。目前

只支持Binary、Hex(H16、S19格式的磁盘文件。 缓冲区菜单项包括数据复制、数据填充、地址定位、查找。用于处理 缓冲区的内容。数据复制允许用户通过起始、结束地址指定缓冲区中 一段内容,复制到用户指定的地址后面区域。数据填充允许用户通过 起始、结束地址指定缓冲区中一段区域,以用户输入的数据填充其内 容。地址定位用于快速将屏幕显示调整到用户指定的地址。查找用于 在缓冲区中查找特定的数据。 通信串口选择用于设置与编程器连接的串口号。 新增芯片类型用于增加芯片类型,保存在chip.ini文件中。格式如下: 最大选择号 可选功能0芯片选择1编程2空片检查3读入4校验5加密6擦除7加锁一 8加锁二9加锁三 芯片名称 起始地址(16进制 长度(K为单位 芯片选择号 芯片型号选择用于选择编程器中的芯片型号,保存在type.ini文件中。格式如下:芯片选择号(回车 自动操作编辑用于编辑“自动”操作中的内容,保存在auto.ini文件。格式如下:

常见医学图像格式

附录C 图像格式 译者:Synge 发表时间:2012-05-03浏览量:1604评论数:0挑错数:0 翻译:xiaoqiao 在fMRI的早期,由于大多数据都用不同研究脉冲序列采集,然后离线大量重建,而且各研究中心文件格式各不相同、大多数的分析软件也都是各研究单位内部编写运用。如果这些数据不同其他中心交流,数据的格式不影响他们的使用。因此图像格式就像巴别塔似的多式多样。随着fMRI领域的不断发展,几种标准的文件格式逐渐得到了应用,数据分析软件包的使用促进了这些文件格式在不同研究中心和实验室的广泛运用,直到近期仍有多种形式的文件格式存在。这种境况在过去的10年里随着公认的NIfTI格式的发展和广泛认可而优化。该附录就fMRI资料存储的常见问题以及重要的文件格式做一概述, 3.1 数据存储 正如第2章所述,MRI数据的存储常采用二进制数据格式,如8位或16位。因此,磁盘上数据文件的大小就是数据图像的大小和维度,如保存维度128 ×128×96的16位图像需要25,165,824位(3 兆字节)。为了保存图像的更多信息,我们希望保存原始数据,即元数据。元数据包含了图像的各种信息,如图像维度及数据类型等。这点很重要,因为可以获得二进制数据所不知道的信息,例如,图像是128 ×128×96维度的16位图像采集还是128 ×128×192维度的8位图像采集。在这里我们主要讨论不同的图像格式保存不同的数量及种类的元数据。

MRI的结构图像通常保存为三维的资料格式。fMRI数据是一系列的图像采集,可以保存为三维格式,也可以保存为四维文件格式(第4维为时间)。通常,我们尽可能保存为四维数据格式,这样可以减少文件数量,但是有些数据分析软件包不能处理四维数据。 3.2 文件格式 神经影像的发展中出现了很多不同图像格式,常见的格式见表1.在这里我们就DICOM、Analyze和NIfTI最重要的三种格式做一讨论。 表1. 常见医学图像格式 Analyze .img/.hdr Analyze软件, 梅奥临床医学中心 DICOM 无ACR/NEMA协会 NIfTI .nii或.img/.hdr NIH影像学信息工具倡议 MINC .mnc 蒙特利尔神经学研究所(MNI,扩展名NetCDF) 3.2.1 DICOM格式 现今大多MRI仪器采集后的重建数据为DICOM格式。该数据格式源于美国放射学协会(ACR)和国际电子产品制造商协会(NEMA)。DICOM不仅仅是图像的存储格式,而且是不同成像系统的不同形式数据之间转换的模式,MRI图像只是其中一种特殊形式。目前使用的DICOM遵照1993年协议,且目前主要的MRI仪器供应商都支持该格式。 通常,DICOM把每一层图像都作为一个独立的文件,这些文件用数字命名从而反映相对应的图像层数(在不同的系统有一定差异)。文件中包含文件头信息,且必须要特定的软

图片常用文件几种格式

图片文件格式简介 一、格式 是英文(位图)地简写,它是操作系统中地标准图像文件格式,能够被多种应用程序所支持.随着操作系统地流行与丰富地应用程序地开发,位图格式理所当然地被广泛应用.这种格式地特点是包含地图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来地缺点占用磁盘空间过大.所以,目前在单机上比较流行. 二、格式 是英文(图形交换格式)地缩写.顾名思义,这种格式是用来交换图片地.事实上也是如此,上世纪年代,美国一家著名地在线信息服务机构针对当时网络传输带宽地限制,开发出了这种图像格式. 格式地特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛地应用. 最初地只是简单地用来存储单幅静止图像(称为),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续地动画,使之成为当时支持动画为数不多地格式之一(称为),而在图像中可指定透明区域,使图像具有非同一般地显示效果,这更使风光十足.目前上大量采用地彩色动画文件多为这种格式地文件,也称为格式文件. 此外,考虑到网络传输中地实际情况,图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像地大致轮廓,然后随着传输过程地继续而逐步看清图像中地细节部分,从而适应了用户地"从朦胧到清楚"地观赏心理.目前上大量采用地彩色动画文件多为这种格式地文件. 但有个小小地缺点,即不能存储超过色地图像.尽管如此,这种格式仍在网络上大行其道应用,这和图像文件短小、下载速度快、可用许多具有同样大小地图像文件组成动画等优势是分不开地. 三、格式 也是常见地一种图像格式,它由联合照片专家组()开发并以命名为" ",仅仅是一种俗称而已.文件地扩展名为或,其压缩技术十分先进,它用有损压缩方式去除冗余地图像和彩色数据,获取得极高地压缩率地同时能展现十分丰富生动地图像,换句话说,就是可以用最少地磁盘空间得到较好地图像质量. 同时还是一种很灵活地格式,具有调节图像质量地功能,允许你用不同地压缩比例对这种文件压缩,比如我们最高可以把地位图文件压缩至.当然我们完全可以在图像质量和文件尺寸之间找到平衡点. 由于优异地品质和杰出地表现,它地应用也非常广泛,特别是在网络和光盘读物上,肯定都能找到它地影子.目前各类浏览器均支持这种图像格式,因为格式地文件尺寸较小,下载速度快,使得页有可能以较短地下载时间提供大量美观地图像,同时也就顺理成章地成为网络上最受欢迎地图像格式. 四、格式 同样是由组织负责制定地,它有一个正式名称叫做" ",与相比,它具备更高压缩率以及更多新功能地新一代静态影像压缩技术. 作为地升级版,其压缩率比高约左右.与不同地是,同时支持有损和无损压缩,而只能

photoshop常用图像文件格式

常用图像文件格式 1.PSD格式 PSD格式是Photoshop的专用格式,能保存图像数据的每一个细小部分,包括像素信息、图层信息、通道信息、蒙版信息、色彩模式信息,所以PSD格式的文件较大。而其中的一些内容在转存为其他格式时将会丢失,并且在储存为其他格式的文件时,有时会合并图像中的各图层及附加的蒙版信息,当再次编辑时会产生不少麻烦。因此,最好再备份一个PSD 格式的文件后再进行格式转换。 2.TIFF格式 TIFF格式是一种通用的图像文件格式,是除PSD格式外唯一能存储多个通道的文件格式。几乎所有的扫描仪和多数图像软件都支持该格式。该种格式支持RGB、CMYK、Lab 和灰度等色彩模式,它包含有非压缩方式和LZW压缩方式两种。 3.JPEG格式 JPEG格式也是比较常用的图像格式,压缩比例可大可小,被大多数的图形处理软件所支持。JPEG格式的图像还被广泛应用于网页的制作。该格式还支持CMYK、RGB和灰度色彩模式,但不支持Alpha通道。 4.BMP格式 BMP格式是标准的Windows及OS/2的图像文件格式,是Photoshop中最常用的位图格式。此种格式在保存文件时几乎不经过压缩,因此它的文件体积较大,占用的磁盘空间也较大。此种存储格式支持RGB、灰度、索引、位图等色彩模式,但不支持Alpha通道。它是Windows环境下最不容易出错的文件保存格式。 5.GIF格式 GIF格式是由CompuServe公司制定的,能保存背景透明化的图像形式,但只能处理256种色彩,常用于网络传输,其传输速度要比其他格式的文件快很多,并且可以将多张图像存储为一个文件形成动画效果。 6.PNG格式 PNG格式是CompuServe公司开发出来的格式,广泛应用于网络图像的编辑。它不同于GIF格式图像,除了能保存256色,还可以保存24位的真彩色图像,具有支持透明背景和消除锯齿边缘的功能,可在不失真的情况下进行压缩保存图像。在不久将来,PNG格式将会是未来网页中使用的一种标准图像格式。 PNG格式文件在RGB和灰度模式下支持Alpha通道,但是在索引颜色和位图模式下,不支持Alpha通道。 7.EPS格式 EPS格式为压缩的PostScript格式,可用于绘图或者排版,它最大的优点是可以在排版软件中以低分辨率预览,打印或者出胶片时以高分辨率输出,可以达到效果和图像输出质量两不耽误。EPS格式支持Photoshop里所有的颜色模式,其中在位图模式下还可以支持透明,并可以用来存储点阵图和向量图形。但不支持Alpha通道。 8.PDF格式 PDF格式是Adobe公司开发的Windows,MAC OS,UNIX和DOS系统的一种电子出版软件的文档格式。该格式源于PostScript Level2语言,因此可以覆盖矢量式图像和点阵式图像,且支持超链接。此文件是由Adobe Acrobat软件生成的文件格式,该格式文件可以存储多页信息,包含图形,文档的查找和导航功能。因此在使用该软件时不需要排版就可以获得图文混排的版面。由于该格式支持超文本链接,所以是网络下载经常使用的文件。

印前常用图像文件格式

印前常用图像文件格式 EPS DCS 是EPS格式的一种,会将档案储存为五个档案,分别是CMYK各版及预视的影像档案 特性:全名是Desktop Color Separation,是EPS格式的一种,在PhotoShop内可以储存这格式。档案储存DCS后,会共有5个档案出现,包括有CMYK各版以及预视的72dpi影像档案;即所谓“Master file”,这样便合成5个档案格式。 用途:EPS DCS最大的优点是输出比较快,因为档案已分成四色的档案,在输出分色菲林计算机时,影像传送时间可最高缩短75%,所以适合于大档案分色输出。 另一个优点是制作速度亦较快,其实DCS格式是OPI(Open Prepress Interface)工作流程概念的一个重要部份,OPI是指制作时会置入低解像度的图像,到输出时才连接高解度图像,这样便可令制作速度加快,这种工作流程概念尤其是适合一些多图像的书刊或大盒制作,所以DCS 格式亦只是与OPI概念相似,将低像度图像置入文档,至输出时,输出机便会连接高解像度图像。 所有的常用软件都能支援DCS格式。由于五个档案才是合成一个图像,所以要注意五个档案的名称一定要一致,只是多了C、M、Y、K在原本名称之后,不能改动任何一个的名称。 TIFF 是Aldus公司开发,不仅是Mac,连IBM PC相容电脑排版软版也广泛采用 特性:全名是Tagged Image File Format,是由Aldus公司开发,是一个压缩图像格式。不仅是Mac,连IBM PC相容电脑排版软件也广泛采用,所以在PhotoShop内储存TIFF时可以选择IBM或Mac。主要是描述图像的资料,包括黑白、彩色及灰度的图像。 用途:大部分的软件都支援TIFF格式,只有Illustrator5.5及5.0C不可以置入此格式,但较新的版本6.0及7.0已经可以,而且7.0更可以把档案储存成RGB或CMYK的TIFF格式,以便其他软件所使用。 在桌面排版上,TIFF及EPS都是最受欢迎的档案格式,笔者建议正常情况下可以选择TIFF格式,因为档案较细,传送时间会较快。正如上述所说,如果有clipping path的PhotoShop档案置入其它软件,应该要储存为EPS。但其实PhotoShop可以将有clipping path的相片储存为TI FF,不过并非所有软件支援,只有PageMaker6.0及6.0C能够支援有clipping path的TIFF格式,所以如果需要退出的话,可能需要考虑用EPS 格式。 当你选择TIFF的格式时,可选用IBM PC或Macintosh,而且更可选用LZW Compression,这是TIFF档案格式的压缩方式,LZW压缩后的档案品质不会劣化的,但并非所有软件及输出设备能够支援这个压缩档案,因此选用的时候必须要小心。 JPEG 是Apple公司发明,是一种高度压缩的格式,但压缩后的图像的颜色质素会较低,一个20MB的TIFF可存成4.5MB的JPEG 特性:全名是Join PhotoGraphic Experts Group,乃Apple公司其中一项重要发明,JPEG是一种高度压缩格式。在PhotoShop4.0中,当你选JPEG时,可以选择压缩后档案的质素,有高中低及最高(high、medium、low及maximum)四种选项,选最高即是颜色质素最好,但MB数会最多,如果选低颜色质素,压缩得最大,MB数会最少,例如一个20MB的TIFF压缩成最低质素后只是814Kilobytes,如果压缩成最高质素例便成为4.5MB。 用途:最初推出的JPEG格式主要地用作压缩在QuickTime上所用的图相,而后来亦备受排版及设计所使用,因为压缩后的档案传送速度较快。虽然档案传送速度快,但压缩后的图像颜色质素较低,所以一般设计师未必使用此格式。因一般的报纸所用的印刷精度较低,而压缩后的图像颜色质素亦较低,因此这格式会较多报纸商使用。 较新版本的软件能够置入JPEG格式的档案,另外亦只是采用PostScript Level II的输出设备才可支援此格式,而较特别的就是lllustrator 6. 0、7.0及Freehand7.0均可输出JPEG格式,但只是RGB模式。在PhotoShop内除了可以存JPEG压缩,只要在Emcoding上选JPEG,更可以同时使用clipping path。另外JPEG也是Internet上常用的档案格式,但观看者的电脑要有QuickTime。 PICT 主要是描述灰阶及黑白的图像 特性:主要是描述灰阶Gray Scale及黑白的图像的档案格式。储存成可以选择不同的解像度和压缩档案与否。 用途:全部软件都能够支援此格式,但是置入lllustrator 5.0 C就只能将PICT档案格式当作为模板(Template),即只是一个底板做绘图,令用者容易绘画图像而已。几个版本的Freehand都可储存成PICT的格式。 Scitex CT 是专为Scitex的产品与影像资料能直接互通的档案格式 特性:Scitex是一间以色列公司,主要产品包括一系列的高档印前系统,如输出机、扫描机及高解像度彩印机等。Scitex CT是专为Scitex 的产品与影像资料能直接互通的档案格式,通常使用于灰阶或CMYK模式的影像。 用途:在常见的软件当中,排版软件如QuarkXPress及PageMaker、图像修描软件像PhotoShop及Live Picture都能支援此格式。另外需注意,输出设备是否支援此格式,当然Scitex的输出设备是支援。

S 文件格式详解

S19文件格式详解 1.概述 为了在不同的计算机平台之间传输程序代码和数据,摩托罗拉将程序和数据文件以一种可打印的格式(ASCII格式)编码成s格式文件。 S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,S格式文件是Freescale推荐使用的标准文件传送格式。编译完成之后,Freescale CodeWarrior编译器将在bin文件夹下自动生成“*.abs.s19”文件,这个文件包含最终下载带单片机中的所有内容。 是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming。 2.格式定义及含义 S-record每行最大是78个字节,156个字符。 S格式文件中的每一行称为一个S记录,每个S记录由记录类型、记录长度、存储地址、代码/数据、校验和5个部分组成。 每字节数据被编码成2个16进制字符,第一个字符代表数据的高四位,第二个字符代表数据的低4位。 5个部分具体内容如下: 记录类型/ 记录长度/ 存储地址/ (代码/数据) / 校验和 记录类型: 2个字符(即1个字节),用来描述记录的类型。记录供定义了8种类型: S0:S格式文件的第一个记录,表示文件名(含路径),存储地址部分没有使用,以0000置位。此记录表示记录的开始,无需下载到MCU。 S1: 地址长度为2字节(4个字符)的记录。记录类型是“S1”(0x5331)。地址场由2个字节地址来说明。数据场由可载入的数据组成。 S2: 地址长度为3字节的记录。记录类型是“S2”(0x5332)。地址场由3个字节地址来说

Mot文件格式介绍

mot文件 单片机常用输出格式:--Motorola S-records(S19文件)Motorola S-records 16进制文件格式是嵌入式中除intel hex之外很常见的格式,下面是它的格式: +-------------------//------------------//-----------------------+ | type(hex1) | count(hex 1) | address | data | checksum(从count累加到checksum,总和为0xFF) | +-------------------//------------------//-----------------------+ ?S0 :标识记录,地址域长度为2个字节,并用0000填充,数据区记录了一些模块名称和版本之类的信息 ?S1 :数据记录,地址域长度为2个字节,数据区域为数据内容。 ?S2 :数据记录,地址域长度为3个字节,数据区域为数据内容。 ?S3 :数据记录,地址域长度为4个字节,数据区域为数据内容。 ?S5 :统计记录,地址域长度为2个字节,内容是之前数据记录(S1,S2,S3)的个数,数据区域空。 ?S7 : 运行记录,地址域长度为4个字节,内容是程序启动的地址,数据域空。 ?S8 :运行记录,地址域长度为3个字节,内容是程序启动的地址,数据域空。 ?S9 :运行记录,地址域长度为2个字节,内容是程序启动的地址,数据域空。 下面是一个例子,大家看看: S02B0000433A5C446F63756D656E747320616E642053657474696E67735C7A6F75642E 4143434F554E54535C7D S208010000FFFFFFFFFA

S19文件格式详解

S19文件格式详解 S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming。 【注意:编者】: 上面“是一段直接烧写进MCU的ASCII码”,这样说可能会误导初学者,因为并不是直接将ASCII码写进MCU,写进MCU前还要对S19文件进行一个解析,把有用的机器代码分解出来,然后再进行写入,写入的也不是ASCII而是二进制码。 网上有关S-record格式文件的资料很少,经过我的收集和实验,整理出以下文档,方便大家对Freescale单片机做深入了解。 1、格式定义及含义 S-record每行最大是78个字节,156个字符 S-record format type(类型):2个字符。用来描述记录的类型 (S0,S1,S2,S3,S5,S7,S8,S9)。 count(计数):2个字符。用来组成和说明了一个16进制的值,显示了在记录中剩余成对字符的计数。 address(地址):4或6或8个字节。用来组成和说明了一个16进制的值,显示了数据应该装载的地址,这部分的长度取决于载入地址的字节数。2个字节的地址占用4个字符,3个字节的地址占用6个字符,4个字节的地址占用8个字符。 data(数据):0—64字符。用来组成和说明一个代表了内存载入数据或者描述信息的16进制的值。 checksum(校验和):2个字符。这些字符当被配对并换算成16进制数据的时候形成了一个最低有效字符节,该字符节用来表达作为补充数据,地址和数据库的字符对所代表的(字节的)补码的byte总和。即计数值、地址场和数据场的若干字符以两个字符为一对,将它们相加求和,和的溢出部分不计,只保留最低两位字符NN,checksum =0xFF-0xNN。 S0 Record:记录类型是“S0” (0x5330)。地址场没有被用,用零置位(0x0000)。数据场中的信息被划分为以下四个子域:

格式大全

1.常用的文件格式及其特点 补充:.txt(软件:记事本).html(网页).rtf(写字板,简化的word).wps(软件:金山公司).pdf(电子文档) . jpg(数码相机照片通常的格式).exe可执行文件.zip压缩文件 .rar压缩文件.xls电子表格.ppt纪灯片.frm窗体文件.vbp工程文件

常用的视频、音频、图像文件格式及其特点一、视频文件格式 (1)、AVI格式: AVI它于1992年被Microsoft公司推出,AVI是非编中最常用的视音文件格式,可以被称为影音格式的鼻祖。它的英文全称为Audio Video Interleaved,即音频视频交错格式,所谓“音频视频交错”,就是可以将视频和音频交织在一起进行同步播放。这种视频格式的优点是图像质量好,可以跨越多平台使用,其缺点是体积过于庞大,而且更糟糕的是压缩标准不统一,最普遍的现象就是高版本Windows媒体播放器播放不了采用早期编码编辑的AVI格式视频,而低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI 格式视频。在我们的非编中,不论早期的DVStorm还是现如今的EDIUS所使用的视频文件都是AVI格式,因为它兼容性好,调用方便,图像质量好。 另外还有DV-AVI格式(摄像机采集常用),DV的英文全称是Digital Video Format,是由索尼、松下、JVC等多家厂商联合提出的一种家用数字视频格式。目前非常流行的数码摄像机就是使用这种格式记录视频数据的。它可以通过电脑的IEEE 1394端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种视频格式的文件扩展名一般是.avi,所以也叫DV-AVI格式。

文件的常见储存格式

各种储存格式 文字: 、txt 纯文本文件,不携带字体,字形,颜色等文字修饰控制格式,一般文字处理软件都能打开它。 、doc 使用Microsoft Word创建的格式化文件,用于一般的图文排版。 、html 用超文本标记语言编写生成的文件格式,用于网页制作。 、pdf便携式文档格式,就是由Adobe系统公司开发的一种文件格式,主要应用于电子文档,出版等方面。 图形图像: 、jpg JPEG文件格式就是静态图像压缩的国际标准,就是应用广泛的图像压缩格式,多用于网络与光盘读物上。 、gif 支持透明背景图像,文件很小,色彩限定在256色以内,主要应用在网络上。 .bmp Microsoftpaaint的固定格式,文件几乎不压缩,占用磁盘空间大,普遍应用于Windows中。 动画: 、gif通过同时存储若干幅图像,进而形成连续的动画。主要用于网页。

、swf应用Macromedia公司的Flash制作的动画。具有缩放不失真、文件体积小等特点,它采用了流媒体技术,可以一边下载一边播放,目前被广泛应用于网络上。 音频: 、wav 该格式记录声音的波形,声音文件能够与原声基本一致,质量非常高,主要应用于许忠实记录原生的地方。 .mp3 一种压缩储存声音的文件格式,就是音频压缩的国际标准。特点就是声音失真小,文件小,目前网络上下载歌曲多为此格式。 、midiMIDI就是数字音乐/电子合成乐器的统一标准。MIDI文件储存的就是一系列指令、不就是波形,就是因为它需要的磁盘空间非常小,目前主要用于音乐制作。 视频: 、avi Microsft公司开发的一种数字音频与视频文件格式,主要应用在多媒体光盘上,用来保存电影、电视等各种影像信息。

16进制Motorola S-records 文件格式

S16 进制 Motorola S-records 文件格式 点击数:2358 发布日期:2006-1-9 19:06:00 【收藏】 【评论】 【打印】 【编程爱好者论坛】 【关闭】 Tag:Motorola s-records
Motorola S-records 16 进制文件的另一种常见格式,Fujitsu 平台的 Softune 编译出来就是这种格式 这篇文章介绍了一下各个数据记录的意义。 The following fairly complete description of Motorola S-records was f ound a number of years ago on the man pages of a UNIX system. ------------------------------------------------------------------------------NAME srec - S-record file and record format DESCRIPTION An S-record file consists of a sequence of specially formatted ASCII character strings. An S-record will be less than or equal to 78 bytes in length. The order of S-records within a file is of no significance and no par ticular order may be assumed. The general format of an S-record follows: +-------------------//------------------//-----------------------+ | type | count | address | data | checksum | +-------------------//------------------//-----------------------+ type -- A char[2] field. These characters describe the type of record (S0, S1, S2, S3, S5, S7, S8, or S9). count -- A char[2] field. These characters when paired and interprete d as a hexadecimal value, display the count of remaining character pa irs in the record. address -- A char[4,6, or 8] field. These characters grouped and inte rpreted as a hexadecimal value, display the address at which the data field is to be loaded into memory. The length of the field depends o n the number of bytes necessary to hold the address. A 2-byte address uses 4 characters, a 3-byte address uses 6 characters, and a 4-byte address uses 8 characters. data -- A char [0-64] field. These characters when paired and interpr

s19文件格式介绍

S19文件格式简述 1.概述 为了在不同的计算机平台之间传输程序代码和数据,摩托罗拉将程序和数据文件以一种可打印的格式(ASCII格式)编码成s格式文件。s格式文件是Freescale推荐使用的标准文件传送格式。编译完成之后,Freescale CodeWarrior编译器将在bin文件夹下自动生成“*.abs.s19”文件,这个文件包含最终下载带单片机中的所有内容。 2. 格式定义及含义 S格式文件中的每一行称为一个S记录,每个S记录由记录类型、记录长度、存储地址、代码/数据、校验和5个部分组成。 每字节数据被编码成2个16进制字符,第一个字符代表数据的高四位,第二个字符代表数据的低4位。 5个部分具体内容如下:

S9: 地为2字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU。 记录长度: 2个字符(即1个字节),显示在记录中剩余的字节数。即 记录长度 = 存储地址字节数 + 代码/数据字节数 + 校验和字节数 存储地址: 2或3或4个字节(由记录类型决定),用来表示代码/数据应该装载的起始地址。 代码/数据: 0-64字符(即0-32字节),表示需要下载到MCU中的数据。 校验和: 2个字符(即1字节),校验数据,计算方法: 校验和 = 0Xff – (记录长度 + 存储地址 + 代码/数据) (注意,为校验和不是字符的校验和,而是实际二进制数的校验和) 3. 实例: S01F0000443A5C50726F6A6563745F335C62696E5C50726F6A6563742E61627371 S123C000CF2100C6055B134A800BFE4A8000FE0000C015C03100000000000000000 0000092 S218FE8020F2FEC013EC31270BED31180A30700434F920F10A0B S9030000FC 说明; 第一行:S0,表示S19文件格式开始;1F为剩余字节数;0000无用; 443A5C50726F6A6563745F335C62696E5C50726F6A6563742E616273 为D:/Project_3/bin/Project_3.abs.的ASCII码;71为校验和. 第二行: S1,表示本条记录存储地址长度为2字节;23(注意为16进制)剩余字节数,C000,表示起始地址,92表示校验和。即,本行表示将 CF2100C6055B134A800BFE4A8000FE0000C015C03100000000000000000 00000依次下载到从地址C000开始的一段连续地址中。 第三行: S2,表示本条记录存储地址长度为3字节,18(16进制数)表示剩余字节数,FE8020表示起始地址,0B为校验和。 校验和的计算:以S2记录为例,

常用图形、图像文件格式及特点

1.JPEG格式 简称JPG,是比较流行的文件格式,适用于压缩照片类的畏途图像,可支持不同的文件压缩比,由于压缩技术先进,对图像质量影响不大,因此可用最少的磁盘空间得到最好的最好的图像质量,是目前最好的摄影图像的压缩格式。由于JPG格式一直在不断的发展演化,及其标准中有可选项,所以会存在不兼容的现象。 色彩信息比较丰富的图像适用于JPG压缩格式。 2.GIF格式 GIF格式是一种流行的彩色图形格式,常见应用于网络。GIF是一种8位彩色文件格式,它支持的颜色信息只有256种,但是它同时支持透明和动画,而且文件量较小,所以广泛用于网络动画。 3.BMP格式 BMP格式的文件名后缀是:.bmp,它的色彩深度有1位、4位、8位及24位几种格式。BMP格式是应用比较广泛的一种格式,由于采用非压缩格式,所以图像质量较高,但缺点是这种格式的文件占空间比较大,通常只能应用于单机上,不适于网络传输,一般情况下不推荐使用。 4.TIFF格式 简称TIF格式,适用于不同的应用程序及平台,用于存储和图形媒体之间的交换效率很高,并且与硬件无关,是应用最广泛的点阵图格式,是最佳的无损压缩选择之一。TIF格式具有图形格式复杂、存储信息多的特点,它最大的色彩深度为48bit,这种格式适合从

Photoshop中导出图像到其他排版制作软件中。 5.PSD格式 PSD是Photoshop的默认格式,在Photoshop中这种格式的存取速度比其他格式都要快,功能也叫强大。扩展后缀名为.psd,支持Photoshop的所有图像模式,可以存放图层、通道、遮罩等数据,便于使用者反复修改,但是此格式不适用于输出(打印、与其它软件的交换) 7.PNG格式 PNG是新兴的一种网络图像格式,结合了GIF和JPG的优点,具有存储形式丰富的特点,PNG最大的色深为48bit,采用无损压缩方式存储,是Fireworks的默认格式。 二、常用图形文件格式及特点 1.EPS格式 EPS格式是专门为存储矢量图设计的特殊的文件格式,输出的质量很高,能够描述32位色深,分为Photoshop EPS和标准EPS格式两种,主要是用于将图形导入到文档中。这种格式与分辨率没有关系,几乎所有的图像、排版软件都支持EPS格式。 在将EPS图性质入导桌面出版程序后,可能只显示一个灰色的方框或瞻为辅,这部是图形导入不正确,而是DTP程序不能显示而已,正常打印此图形会正常输出。如相在布局中显示出图片,掏出使,选择“位图预览”选项。这时画面中可生成一个低分辨率的预览图,DTP 程序可正常的将其显示出来。

图像文件格式BMP文件格式详解

BMP文件格式 BMP文件格式是Microsoft Windows下最常见的图像文件格式之一,它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍数。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像都支持BMP图像格式。 典型的BMP文件由四部分组成: 1、位图头文件数据结构 主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息; 2、信息数据结构 包含图象的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息; 3、 包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操作调色板。 4、位图数据 记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序是 在扫描行内是从左到右, 扫描行之间是从下到上。这种格式我们又称为Bottom_Up位图,当然与之相对的还有Up_Down形式的位图,它的记录顺序是从上到下的,对于这种形式的位图,也不存在压缩形式。 BMP文件结构 位图文件(bitmap file, BMP)格式是Windows采用的图像文件存储格式,在Windows 环境下运行的所有图像处理软件都支持这种格式。以后的BMP格式与显示设备无关,因此把这种BMP格式称为设备无关位图(Device Independentbit Bitmap , DIB)格式,Windows 能够在任何类型的显示设备上显示BMP位图。BMP位图默认的文件扩展名是bmp。 1、文件结构 位图文件可看成由4个部分组成:位图文件头(Bitmap-File)、位图信息头 (Bitmap-Information Header)、彩色表(Color Table)和定义位图的字节阵列,它们的名称和符号如下表1所示:

相关主题