以下转载自:http://blog.csdn.net/henhen2002/article/details/4573447

GEL--通用扩展语言,无类型语言,只有int类型,当CCS运行时首先执行这个GEL函数

当我们自己需要设定某功能上电后立即开启,那么可以在这个函数里面实现。www.hellodsp.com5 H) I# g8 ~+ b2 n* G/ g4 |* Z( U5 U

以2407的看门狗为例子,因为上电后2407的看门狗是自动开启的,但我们在调试程序的时候

都是把看门狗关闭的,所以想在调试程序的时候可以把关看门狗的任务放在GEL中www.hellodsp.com1 o* c' Z* x6 ?

以下就是这个小程序(欢迎指正)

#define   WDCR    0X7029

#define   WDKEY   0X7025DSP交流网  DSP学习第一论坛 DSP技术应用与推广平台 DSP开发服务平台 6 j  d# U/ g5 h

Startup()DSP

{

      WDCR=0X68

    }

Startup()函数在GEL文件加载时会自动运行,这样就可以实现上电关闭看门狗功能了

.

GEL(General Extension Language 通用扩展语言)是一种解释语言,类似与C语言,这个文件中的函数是按照先后顺序执行的。

GEL函数可以用来配置CCS开发环境,也可以用来初始化目标CPU。当启动CCS时,扫描启动的GEL文件并加载文件中包含的GEL函数,如果文件中包含Startup()函数,则包含的所有函数都运行

GEL存储空间映射函数可以用来描述处理器的存储空间映射。

Startup()

{

/* startup 内的所有函数都要执行 */

GEL_MapOn();

GEL_MapAdd(0,0,0xf000,1,1);

GEL_MapAdd(0,1,0xf000,1,1);

}

1 GEL文件的改变

       使用CCSStudio Setup工具,可以为在系统配置中的每一个处理器指定一个启动GEL文件。当CCSStudio启动时,GEL文件加载到PC机的内存中,如果定义了StartUp()函数则执行该函数。在CCSStudio(V2.3或更早的版本中),主机和目标板的初始化工作都在Startup()函数中执行。但是对于支持Connect/Disconnect的CCSStudio,这样的GEL文件有可能没有正确的执行,因为CCSStudio启动时和目标处理器是断开的。当Startup()函数试图访问目标处理器时会出错。一个新的回调函数OnTargetConnect()来执行目标处理器的初始化工作。

2 GEL回调函数

2.1 Startup()函数

       如果指定的GEL文件中包含Startup()函数,当CCSStudio启动时执行Startup()函数。支持Connect/Disconnect的CCSStudio的启动时,Startup()函数中不包括访问目标处理器的代码,目标处理器由回调函数OnTargetConnect()来初始化。

       推荐:

l         建立基本的CCSStudio内存映射关系(不需要访问目标处理器)

l         任何不需要访问目标处理器的基本初始化

不推荐:

l         Get_Reset()(该函数通过仿真器复位目标处理器)

l         通过GEL_BreakPtAdd()设置断点

l         GEL_TextOUT()和GET_OpenWindow(),因为StartUp()执行时CCSStudio的任何控制窗口还没有打开

 

不支持Connect/Disconnect的CCSStudio GEL文件中的StartUp()函数:

/* The StartUp() function is called each time CCS is started. */

/* Customize this function to perform desired initialization. */

StartUp()

{

setup_memory_map();

GEL_Reset(); /* Do not call in StartUp() with CCStudio v2.4 or higher */

init_emif(); /* Do not call in StartUp() with CCStudio v2.4 or higher */

}

 

支持Connect/Disconnect的CCSStudio GEL文件中的StartUp()函数:

/* The StartUp() function is called each time CCS is started. */

/* Customize this function to perform desired initialization */

/* that will not access the target. */

StartUp()

{

setup_memory_map();

}

 

2.2 OnTargetConnect()函数

       推荐:

l         绝对最小的系统初始化处理,保证CCSStudio在目标处理器上处于一种可信赖的状态。例如:禁止看门狗时钟、DSP复位结束

 

       每一次和目标处理器建立连接时都调用OnTargetConnect()函数。

/* OnTargetConnect() is called every time a target is connected.*/

/* Its execution finishes before anything else occurs. Customize*/

/* this function to perform essential target initialization. */

OnTargetConnect()

{

// place critical target initialization steps here

GEL_Reset();

init_emif();

}

对某些平台,必须调用GEL_Reset()函数使得CCSStudio处于一种“Good”状态,可以通过测试来确定是否需要调用GEL_Reset()函数。应该尽可能的降低GEL startup functions复杂度-包括减少GEL_Reset()的调用。

 

2.3 OnPreFileLoaded()函数

       在 加载program/symbol(.out)文件之前该回调函数执行。在该函数中执行另外的目标处理器初始化操作以保证程序可以加载和调试是一个好的选择。

/* This function is called automatically when the 'Load Program'*/

/* Menu item is selected. */

OnPreFileLoaded()

{

FlushCache();

IER = 0;

IFR = 0;

init_emif();

}

2.4 OnReset()函数

       当目标处理器复位后该函数被调用。如果你需要每次重新启动程序设计了软复位,GEL_Restart()在此处调用。

/* This function is called automatically after a SW Reset has been executed. 

OnReset(int nErrorCode)

{

init_emif();

}

2.5OnRestart()函数

       当程序复位时调用该函数。

This function is called by CCS when you do Debug->Restart. The goal is to put the C6x into a known good state with respect to cache, edma and interrupts. Failure to do this can cause problems when you restart and run code multiple times.

OnRestart(int nErrorCode )

{

Turn off L2 for all EMIFA CE spaces. App should manage these for coherency 

GEL_TextOut("Turn off cache segment/n");

*(int *)0x1848200 = 0; /* MAR0 */

*(int *)0x1848204 = 0; /* MAR1 */

*(int *)0x1848208 = 0; /* MAR2 */

*(int *)0x184820c = 0; /* MAR3 */

/* Disable EDMA events and interrupts and clear any pending events. */

GEL_TextOut("Disable EDMA event/n"); */

*(int *)0x01A0FFA8 = 0; /* CIERH */

*(int *)0x01A0FFB4 = 0; /* EERH */

*(int *)0x01A0FFB8 = 0XFFFFFFFF; /* ECRH */

*(int *)0x01A0FFE8 = 0; /* CIERL */

*(int *)0x01A0FFF4 = 0; /* EERL */

*(int *)0x01A0FFF8 = 0xFFFFFFFF; /* ECRL */

/* Disable other interrupts */

IER = 0;

IFR = 0;

}

3 存储器映射

       CCSStudio存储器映射告诉调试器目标处理器的那些存储区域可以访问那些不能访问。CCSStudio存储器映射一般在StartUp()函数种执行。

3.1 GEL_MapAdd()函数

该函数添加一个存储区域到存储区映射中。

3.2 GEL_MapOn()和GEL_MapOff()函数

       可以调用GEL_MapOn() or GEL_MapOff()来打开或关闭存储区映射。当存储区映射关闭时,CCSStudio假定可以访问所有的存储区空间。

3.3 GEL_MapReset()函数

       GEL_MapReset()函数清除所有的存储区映射。没有存储区映射时,缺省设置是所有的存储区空间都不能访问。

4 尽量避免使用GEL初始化

       可以考虑在GEL文件中使用GEL_MapAdd()建立存储区映射以准许CCSStudio可以调试,但是不在GEL文件中执行外设设置例如:EMIF寄存器初始化、看门狗禁止。

因为GEL语法和C兼容,inif_emif()函数可以在.c文件中实现,和应用程序链接在一起。但是要注意以下几点:

l         使用“volatile”来保证变量不被优化。例如:

*(volatile int *)EMIFA_SDRAMTIM = 0x00000618; /* SDRAM timing (refresh) */

在编译调试过程中避免在GEL文件中进行外设设置,当到达了最终程序时,需要一个智能加载软件从FLASH或主机加载程序对EMIF进行设置,然后通过(E)DMA或memcpy()拷贝程序/数据。

*.gel是你的秘书,可以帮你打杂

Gel文件用来处理一些繁琐的事情,例如我总是用Gel来自动初始化DSP系统,代码如下:



StartUp()

{

    int i;



    //setup_memory_map();

    for( i=0; i<1000; i++)    i=i;

    GEL_Reset(); 

    for( i=0; i<1000; i++)    i=i;

    init_emif();

    for( i=0; i<1000; i++)    i=i;

    GEL_ProjectLoad( "D://ti//MyProjects//EagleEye//V100//EagleEye.pjt");

    for( i=0; i<10000; i++)    i=i;

    GEL_Load( "D://ti//MyProjects//EagleEye//V100//debug//EagleEye.out");

    for( i=0; i<10000; i++)    i=i;

    GEL_Go( main);





只要打开CCS,它就会自动依次执行:系统软件复位、配置EMIF的各种寄存器、打开项目文件、装载项目文件,并且自动执行到MAIN(),停在那里等着你继续操作。



如果不用Gel,你就麻烦了。

GEL 文件的功能同emuinit.cmd 的功能基本相同,用于初始化DSP。但它的功能比emuinit

的功能有所增强,GEL 在CCS 下有一个菜单,可以根据DSP 的对象不同,设置不同的初始

化程序。以TMS320LF2407 为例:

#define SCSR1 0x7018 ;定义scsr1 寄存器

#define SCSR2 0X7019 ;定义scsr2 寄存器 



#defineWDKEY 0x7025 ;定义wdkey 寄存器

#defineWDNTR 0x7029 ;定义wdntr 寄存器

StartUp() ; 开始函数

{

GEL_MapReset(); ; 存储空间复位GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间从0000

-7fff 可读写

GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间从8000-f000 可读写

GEL_MapAdd(0x0000,1,0x10000,1,1); 定义数据空间从0000-10000 可读写

GEL_MapAdd(0xffff,2,1,1,1); 定义i/o 空间0xffff 可读写

GEL_MapOn(); 存储空间打开

GEL_MemoryFill(0xffff,2,1,0x40); 在i/o 空间添入数值40h

*(int *)SCSR1=0x0200; 给scsr1 寄存器赋值

*(int *)SCSR2=0x000C; 给scsr2 寄存器赋值,在这里可以进行mp/mc 方式的转换

*(int *)WDNTR=0x006f; 给wdntr 寄存器赋值

*(int *)WDKEY=0x055; 给wdkey 寄存器赋值

*(int *)WDKEY=0x0AA; 给wdkey 寄存器赋值



}



GEL文件只是在仿真器和目标系统上电的时候起到初始化dsp的作用



在上电后再改变GEL文件将不会对DSP产生影响



除非断电后再上电



贴上DSP5416的GEL文件



/* set PMST to: MP =  OVLY = 1; DROM off, CLKOUT on */

#define PMST_VAL        0x0ffe0u  



/* set wait-state control reg for: 2 w/s or more on i/o; one for ext memory */

#define SWWSR_VAL       0x2009u



/* set external-banks switch control for: no bank switching; BH set */

#define BSCR_VAL        0x02u



/* Set Default Reset Initialization Value */

#define    ZEROS        0x0000u



这一部分是对寄存器初始化



/* Set Peripheral Control Register Addresses for DEV_RESET */

#define DMPREC          0x0054u

#define DMSA            0x0055u

#define DMSDI           0x0056u



#define DMA_CH0_DMFSC_SUB_ADDR  0x0003u

#define DMA_CH1_DMFSC_SUB_ADDR  0x0008u

#define DMA_CH2_DMFSC_SUB_ADDR  0x000Du

#define DMA_CH3_DMFSC_SUB_ADDR  0x0012u

#define DMA_CH4_DMFSC_SUB_ADDR  0x0017u

#define DMA_CH5_DMFSC_SUB_ADDR  0x001cu



#define MCBSP0_SPSA     0x0038u

#define MCBSP0_SPSD     0x0039u

#define MCBSP1_SPSA     0x0048u

#define MCBSP1_SPSD     0x0049u



#define MCBSP2_SPSA     0x0034u

#define MCBSP2_SPSD     0x0035u



#define MCBSP_SPCR1_SUB_ADDR   0x0000u

#define MCBSP_SPCR2_SUB_ADDR   0x0001u

#define MCBSP_SRGR1_SUB_ADDR   0x0006u

#define MCBSP_SRGR2_SUB_ADDR   0x0007u

#define MCBSP_MCR1_SUB_ADDR    0x0008u

#define MCBSP_MCR2_SUB_ADDR    0x0009u

#define SRGR1_INIT             0x0001u



#define PRD0            0x0025u

#define TCR0            0x0026u



#define PRD1            0x0031u

#define TCR1            0x0032u



#define TIMER_STOP             0x0010u

#define TIMER_RESET            0x0020u

#define PRD_DEFAULT            0xFFFFu   



#define GPIOCR                 0x0010u



StartUp()

{

C5416_Init(); 



GEL_TextOut("Gel StartUp complete./n");

}





menuitem "C5416_Configuration";

hotmenu CPU_Reset()

{

GEL_Reset();

PMST = PMST_VAL;



/* don't change the wait states, let the application code handle it */

/* note: at power up all wait states will be the maximum (7)        */

/* SWWSR = SWWSR_VAL;                                          */



BSCR = BSCR_VAL;



GEL_TextOut("CPU Reset Complete./n");

}



/* All memory maps are based on the PMST value of 0xFFE8 */



hotmenu C5416_Init()

{

GEL_Reset();

PMST = PMST_VAL;



/* don't change the wait states, let the application code handle it */

/* note: at power up all wait states will be the maximum (7)        */

/* SWWSR = SWWSR_VAL;                                          */



BSCR = BSCR_VAL;



C5416_Periph_Reset();



GEL_XMDef(0,0x1eu,1,0x8000u,0x7f);

GEL_XMOn();

GEL_MapOn();

GEL_MapReset();



GEL_MapAdd(0x80u,0,0x7F80u,1,1); /* DARAM */

GEL_MapAdd(0x08000u,0,0x8000u,1,1); /* External */

GEL_MapAdd(0x18000u,0,0x8000u,1,1); /* DARAM */

GEL_MapAdd(0x18000u,0,0x8000u,1,1); /* SARAM */

GEL_MapAdd(0x28000u,0,0x8000u,1,1); /* SARAM */



GEL_MapAdd(0x0u,1,0x60u,1,1);  /* MMRs */

GEL_MapAdd(0x60u,1,0x7FA0u,1,1); /* DARAM */

GEL_MapAdd(0x08000u,1,0x8000u,1,1); /* DARAM */



GEL_TextOut("C5416_Init Complete./n"); }





/* ****************************** */



C5416_Periph_Reset()

{

IFR = 0xFFFFu;  

IFR = 0x0000u;  



DMA_Reset();

MCBSP0_Reset();

MCBSP1_Reset();

MCBSP2_Reset();

TIMER0_Reset();

GPIO_Reset();

}



DMA_Reset()



MCBSP0_Reset()



MCBSP1_Reset()



MCBSP2_Reset()



TIMER0_Reset()



GPIO_Reset()



在上面的各个初始化函数中,多半是把0值付给寄存器。当然这些初始化值如果用户不使用的话必须在主程序中做修改。



所以加载了GEL文件以后,并不一定所有的寄存器都是复位值,主程序中没有赋值的寄存器并不一定就是它的上电复位值,因为加上了仿真器,加载了GEL文件,起到了作用。



程序员一定要好好注意。

以下转载自http://blog.sina.com.cn/s/blog_65d639d50100z3hr.html

首先,关于GEL的语法。GEL是类似C语言的一门语言。他的支持的语法有

1、GEL函数

2、Return语句

3、if_else语句

4、while语句

5、GEL注释语句

6、预处理语句

注意:GEL定义的函数与参数,跟DSP的程序没有太大关系,所以不需要在DSP函数中申明。

其次,是GEL函数的定义,格式如下:

funcname (parameter1,parameter2……)

{

statement;

}

函数定义,函数之间不能互相嵌套。GEL函数类型和参数类型不需要指定,这是跟C语言函数定义的区别(比如C语言的格式:int funcname (int parameter1,char parameter2……))。

还有,每个参数后面都可加字符串,起到注释的作用。

例如:

dialog Init (filename"File to be load",CPUname"CPU name",initvalue"Initinlization Value")

{

GEL_load(filename,CPUname);

a = initvalue;

}

再者,GEL函数的参数只允许如下的量:

1、DSP函数的参数

2、数字(表达式,常数)

3、字符串常量

注意 文件路径必须是双斜杠,不能用单斜杠,如:Iint("C:\\CCS3.3\\MyProjiects\\gpio\\Debug\\gpio.out","cpu_a",0)

下面开始说说GEL文件的关键字:menuitem(GEL的下拉菜单),hotmeun(给menuitem设置的下拉菜单设置选项),dialog(设置弹出窗口),slider(设置滑动条)。

1、关键字:menuitem

格式,附上截图效果如下:

2、关键字:hotmenu

格式:

效果如图:

。功能就是点击就可执行相应的函数。

3、关键字:dialog.

产生弹出窗口,非常好用

格式如hotmenu相似。

4、关键字:slider

滑动条,格式:

slider parma definition(最小值,最大值,每次滑动一次改变值,每次滑动一页改变值,传递值)

statement;

例如:

slidervomlumecontrol(0,10,1,1,volume)

{

varl=volume;

}



关于GEL文件的调试:

GEL文件在装载的时候,会校验GEL文件语法的正确性。即每次改写GEL文件的时候,都要依次执行保存--移除-重新装载。

还有一些GEL常用的函数,一下内容系转帖,总结的很好。

1 GEL文件基本作用

当CCSStudio启动时,GEL文件加载到PC机的内存中,如果定义了StartUp()函数则执行该函数。在CCSStudio(V2.3或更早的版本中),主机和目标板的初始化工作都在Startup()函数中执行。但是对于支持Connect/Disconnect的CCSStudio(V2.4或之后的版本,尤其3.1版本),这样的GEL文件有可能没有正确的执行,因为CCSStudio启动时和目标处理器是断开的。这个时候,当Startup()函数试图访问目标处理器时会出错。

因此,V2.4或之后的版本,尤其3.1版本CCS启动时候,一个新的回调函数OnTargetConnect()来执行目标处理器的初始化工作。

2 GEL回调函数

2.1 Startup()函数

如果指定的GEL文件中包含Startup()函数,当CCSStudio启动时执行Startup()函数。支持Connect/Disconnect的CCSStudio的启动时,Startup()函数中不包括访问目标处理器的代码,目标处理器由回调函数OnTargetConnect()来初始化。

推荐:

l         建立基本的CCSStudio内存映射关系(不需要访问目标处理器)

l         任何不需要访问目标处理器的基本初始化

不推荐:

l         Get_Reset()(该函数通过仿真器复位目标处理器)

l         通过GEL_BreakPtAdd()设置断点

l         GEL_TextOUT()和GET_OpenWindow(),因为StartUp()执行时CCSStudio的任何控制窗口还没有打开

不支持Connect/Disconnect的CCSStudio GEL文件中的StartUp()函数:

StartUp()

{

setup_memory_map();

GEL_Reset();

init_emif();

}

支持Connect/Disconnect的CCSStudio GEL文件中的StartUp()函数:

StartUp()

{

setup_memory_map();

}

2.2 OnTargetConnect()函数

绝对最小的系统初始化处理,保证CCSStudio在目标处理器上处于一种可信赖的状态。例如:禁止看门狗时钟、DSP复位结束

每一次和目标处理器建立连接时都调用OnTargetConnect()函数。

OnTargetConnect()

{

// place critical target initialization steps here

GEL_Reset();

init_emif();

}

对某些平台,必须调用GEL_Reset()函数使得CCSStudio处于一种“Good”状态,可以通过测试来确定是否需要调用GEL_Reset()函数。应该尽可能的降低GEL startup functions复杂度-包括减少GEL_Reset()的调用。

2.3 OnPreFileLoaded()函数

在加载program/symbol(.out)文件之前该回调函数执行。在该函数中执行另外的目标处理器初始化操作以保证程序可以加载和调试是一个好的选择。

OnPreFileLoaded()

{

FlushCache();

IER = 0;

IFR = 0;

init_emif();

}

2.4 OnReset()函数

当目标处理器复位后该函数被调用。如果你需要每次重新启动程序设计了软复位,GEL_Restart()在此处调用。

*(int *)0x1848204 = 0;

*(int *)0x1848208 = 0;

*(int *)0x184820c = 0;

GEL_TextOut("Disable EDMA event\n"); */

*(int *)0x01A0FFA8 = 0;

*(int *)0x01A0FFB4 = 0;

*(int *)0x01A0FFB8 = 0XFFFFFFFF;

*(int *)0x01A0FFE8 = 0;

*(int *)0x01A0FFF4 = 0;

*(int *)0x01A0FFF8 = 0xFFFFFFFF;

IER = 0;

IFR = 0;

}

3 存储器映射

CCSStudio存储器映射告诉调试器目标处理器的那些存储区域可以访问那些不能访问。CCSStudio存储器映射一般在StartUp()函数种执行。

3.1 GEL_MapAdd()函数

该函数添加一个存储区域到存储区映射中。

3.2 GEL_MapOn()和GEL_MapOff()函数

可以调用GEL_MapOn() or GEL_MapOff()来打开或关闭存储区映射。当存储区映射关闭时,CCSStudio假定可以访问所有的存储区空间。

3.3 GEL_MapReset()函数

GEL_MapReset()函数清除所有的存储区映射。没有存储区映射时,缺省设置是所有的存储区空间都不能访问。

4 尽量避免使用GEL初始化

可以考虑在GEL文件中使用GEL_MapAdd()建立存储区映射以准许CCSStudio可以调试,但是不在GEL文件中执行外设设置例如:EMIF寄存器初始化、看门狗禁止。

因为GEL语法和C兼容,inif_emif()函数可以在.c文件中实现,和应用程序链接在一起。但是要注意以下几点:

使用“volatile”来保证变量不被优化。例如:

*(volatile int *)EMIFA_SDRAMTIM = 0x00000618;        在编译调试过程中避免在GEL文件中进行外设设置,当到达了最终程序时,需要一个智能加载软件从FLASH或主机加载程序对EMIF进行设置,然后通过(E)DMA或memcpy()拷贝程序/数据。

加载了GEL文件以后,并不一定所有的寄存器都是复位值,主程序中没有赋值的寄存器并不一定就是它的上电复位值,因为加上了仿真器,加载了GEL文件,起到了作用。

这点需注意。

【DSP开发】gel文件编写的更多相关文章

  1. DSP中.gel文件的作用

    GEL是CCS提供的一种解释语言,使用该语言写出的GEL,函数具有两在功能,一是配置CCS工作环境,二是直接访问目标处理器DSP(包括DSP软/硬仿真器).用户可以使用GEL函数完成类似于宏操作的自动 ...

  2. DSP TMS320C6000基础学习(6)—— gel文件

    什么是gel文件?gel文件能干什么? gel全称General Extended Language,即通用扩展语言文件,gel文件中由类似C语言的代码构成,gel语言是一种解释性语言,gel文件扩展 ...

  3. 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤

    一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...

  4. 【DSP开发】DSP能用VS2010生成的链接库文件吗?

    [DSP开发]DSP能用VS2010生成的链接库文件吗? 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:可能这个问题让行家看上去就会莞尔一笑,但是很多 ...

  5. 【Linux开发】【DSP开发】利用CCS6.1生成out文件的同时生成bin文件

    [Linux开发][DSP开发]利用CCS6.1生成out文件的同时生成bin文件 标签:[DSP开发] [Linux开发] 尝试在windows上安装的CCS6.1开发AM4378-Linux下的应 ...

  6. DSP中CMD文件

    DSP中CMD文件 (2012-12-26 20:54:17) 转载▼ 标签: 杂谈 分类: DSP FPGA DSP的存储器的地址范围,CMD是主要是根据那个来编的.CMD 它是用来分配rom和ra ...

  7. Davinci DM6446开发攻略——DSP开发工程建立

    前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间 ...

  8. 【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程

    [DSP开发]利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:前端是时间基于VS ...

  9. DM642学习:CMD、GEL文件

    在建立ccs工程的时候,cmd文件和gel文件非常重要,如不能配置好会出现一些莫名其妙的问题. 1. CMD文件: 不同的DSP芯片内集成的存储器大小各异,但其配置方式是类似的.大家可通过查阅DSP芯 ...

随机推荐

  1. Modbus通讯协议

    <ignore_js_op> O1CN01P1wxTI1dCdw5nAeMO_!!85243700.jpg (287.43 KB, 下载次数: 0) 下载附件  保存到相册 2019-6- ...

  2. 洛谷P1020 导弹拦截【单调栈】

    题目:https://www.luogu.org/problemnew/show/P1020 题意: 给定一些导弹的高度. 一个导弹系统只能拦截高度不增的一系列导弹,问如果只有一个系统最多能拦截多少导 ...

  3. zabbix添加监控项以及常用的键值

      zabbix自身提供了丰富的监控项,下面以“cpu空闲值”为例介绍zabbix如何添加新的监控项 1.创建主机群组 配置——主机群组——创建主机群组 2.创建主机 配置——主机——创建主机 3.添 ...

  4. css(name|pro|[,val|fn])

    css(name|pro|[,val|fn]) 概述 访问匹配元素的样式属性.大理石平台支架 jQuery 1.8中,当你使用CSS属性在css()或animate()中,我们将根据浏览器自动加上前缀 ...

  5. 【csp模拟赛1】铁路网络 (network.cpp)

    [题目描述] 在暑假来临之际,小 Z 的地理老师布置了一个暑假作业,让同学们暑假期间 了解一下 C 国的铁路发展史.小 Z 在多番查证资料后发现,C 国在铁路发展初期, 铁路网络有着一个严密规整的结构 ...

  6. x86—EFLAGS寄存器详解[转]

    鉴于EFLAGS寄存器的重要性,所以将这一部分内容从处理器体系结构及寻址模式一文中单独抽出另成一文,这部分内容主要来自Intel Developer Mannual,在后续的内核系列中遇到的许多和EF ...

  7. 0和5 (51Nod)

    小K手中有n张牌,每张牌上有一个一位数的数,这个字数不是0就是5.小K从这些牌在抽出任意张(不能抽0张),排成一行这样就组成了一个数.使得这个数尽可能大,而且可以被90整除. 注意: 1.这个数没有前 ...

  8. codeforces405D

    Toy Sum CodeForces - 405D Little Chris is very keen on his toy blocks. His teacher, however, wants C ...

  9. 死磕Java之聊聊HashMap源码(基于JDK1.8)

    死磕Java之聊聊HashMap源码(基于JDK1.8) http://cmsblogs.com/?p=4731 为什么面试要问hashmap 的原理

  10. go面试

    **1**.简述golang中make和new的区别 make用于内建类型(只能用于创建map.slice 和channel)的内存分配.并且返回一个有初始值(非零)的T类型,而不是*T. new用于 ...