TI中文支持网
TI专业的中文技术问题搜集分享网站

C6747在任务里面调用TSK_Sleep(5);就跳不出来了,任务只能执行一次。

技术支持你好!我是在用C6747做一个东西,在上面跑到DSP/BIOS,当BIOS配置好后,中断可以用,但是涉及到CLK模块的都用不了,PRD模块中断也用不了,任务中调用TSK_Sleep后,任务就回不来了,开发板是研旭的C6747开发板,CLK模块的配置如附件所示,BIOS配置文件如下(CCS版本为CCS3.3.82):

这个问题困扰我好几天了,希望能给我指一个解决的方向,谢谢~~

utils.loadPlatform("ti.platforms.evm6747");

/* The following DSP/BIOS Features are enabled. */
bios.enableRealTimeAnalysis(prog);
bios.enableRtdx(prog);
bios.enableTskManager(prog);

bios.GBL.CLKIN = 24000;
bios.MEM.STACKSIZE = 0x4000;
bios.MEM.STACKSIZE = 0x2000;
bios.MEM.GBLINITSEG = prog.get("SDRAM");
bios.MEM.FARSEG = prog.get("SDRAM");
bios.MEM.CINITSEG = prog.get("SDRAM");
bios.MEM.CONSTSEG = prog.get("SDRAM");
bios.MEM.DATASEG = prog.get("SDRAM");
bios.MEM.BSSSEG = prog.get("SDRAM");
bios.TSK.create("TSK0_LCD_Disply");
bios.TSK.instance("TSK0_LCD_Disply").order = 1;
bios.TSK.instance("TSK0_LCD_Disply").fxn = prog.extern("Task_LCD_Disply");
bios.HWI.instance("HWI_INT4").interruptSelectNumber = 59;
bios.HWI.instance("HWI_INT4").fxn = prog.extern("DataSample");
bios.HWI.instance("HWI_INT4").useDispatcher = 1;
bios.TSK.instance("TSK0_LCD_Disply").stackMemSeg = prog.get("SDRAM");
bios.TSK.instance("TSK0_LCD_Disply").stackSize = 10024;
bios.TSK.instance("TSK0_LCD_Disply").priority = 7;
bios.MEM.NOMEMORYHEAPS = 1;
bios.MEM.GBLINITSEG = prog.get("IRAM");
bios.MEM.USERCOMMANDFILE = 0;
bios.MEM.BSSSEG = prog.get("IRAM");
bios.MEM.FARSEG = prog.get("IRAM");
bios.MEM.CINITSEG = prog.get("IRAM");
bios.MEM.DATASEG = prog.get("IRAM");
bios.MEM.PINITSEG = prog.get("L3_CBA_RAM");
bios.MEM.FARSEG = prog.get("L3_CBA_RAM");
bios.MEM.CINITSEG = prog.get("L3_CBA_RAM");
bios.MEM.FARSEG = prog.get("SDRAM");
bios.MEM.CONSTSEG = prog.get("L3_CBA_RAM");
bios.MEM.CONSTSEG = prog.get("SDRAM");
bios.MEM.CINITSEG = prog.get("IRAM");
bios.MEM.PINITSEG = prog.get("IRAM");
bios.MEM.CONSTSEG = prog.get("L3_CBA_RAM");
bios.MEM.CONSTSEG = prog.get("SDRAM");
bios.MEM.FARSEG = prog.get("L3_CBA_RAM");
bios.MEM.FARSEG = prog.get("SDRAM");
bios.CLK.create("CLK0");
bios.CLK.instance("CLK0").order = 1;
bios.TSK.instance("TSK_idle").order = 1;
bios.CLK.MICROSECONDS = 1000.0000;
bios.TSK.create("TSK0");
bios.TSK.instance("TSK0").order = 3;
bios.TSK.instance("TSK0").fxn = prog.extern("Task_LCD_Disply");
bios.MEM.CONSTSEG = prog.get("L3_CBA_RAM");
bios.HWI.instance("HWI_INT5").interruptSelectNumber = 69;
bios.HWI.instance("HWI_INT5").useDispatcher = 1;
bios.HWI.instance("HWI_INT4").fxn = prog.extern("HWI_unused", "asm");
bios.HWI.instance("HWI_INT5").fxn = prog.extern("DataSample");
bios.HWI.instance("HWI_INT5").interruptMask = "all";
bios.MEM.FARSEG = prog.get("IRAM");
bios.MEM.FARSEG = prog.get("SDRAM");
bios.MEM.BSSSEG = prog.get("SDRAM");
bios.MEM.SWITCHSEG = prog.get("SDRAM");
bios.CLK.instance("PRD_clock").order = 1;
bios.CLK.TIMERSELECT = "Timer 0";
bios.CLK.CONFIGURETIMER = 1;
bios.MEM.STACKSIZE = 0x4000;
bios.MEM.STACKSIZE = 0x3000;
bios.MEM.STACKSIZE = 0x1000;
bios.MEM.FARSEG = prog.get("IRAM");
bios.MEM.SWITCHSEG = prog.get("L3_CBA_RAM");
bios.MEM.BSSSEG = prog.get("L3_CBA_RAM");
bios.PRD.create("PRD0");
bios.PRD.instance("PRD0").order = 1;
bios.PRD.instance("PRD0").period = 2;
bios.PRD.instance("PRD0").fxn = prog.extern("test001");
bios.MEM.STACKSIZE = 0x10000;
bios.MEM.USEMPC = 0;
bios.MEM.NOMEMORYHEAPS = 1;
bios.MEM.SWITCHSEG = prog.get("IRAM");
bios.MEM.BSSSEG = prog.get("IRAM");
bios.MEM.CONSTSEG = prog.get("IRAM");
bios.MEM.FARSEG = prog.get("SDRAM");
bios.MEM.CINITSEG = prog.get("SDRAM");
bios.TSK.instance("TSK0_LCD_Disply").order = 2;
bios.TSK.instance("TSK0").destroy();
bios.MEM.NOMEMORYHEAPS = 0;
bios.MEM.instance("SDRAM").createHeap = 1;
bios.MEM.instance("SDRAM").heapSize = 0x00020000;
bios.MEM.instance("SDRAM").enableHeapLabel = 1;
bios.MEM.instance("SDRAM").heapLabel = prog.extern("SRAM_heap", "asm");
bios.MEM.BIOSOBJSEG = prog.get("SDRAM");
bios.MEM.MALLOCSEG = prog.get("SDRAM");
bios.MEM.instance("SDRAM").heapSize = 0x00004000;
bios.CLK.TIMERSELECT = "Timer 1";
bios.CLK.CONFIGURETIMER = 0;
bios.MEM.instance("SDRAM").len = 0x02000000;
// !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!

prog.gen();

Tony Tang:

换个timer试试,程序里是不是用了这个timer?

keyen wang:

回复 Tony Tang:

换了,还是不行,程序中没有用这个timer,是不是这个BISO版本有问题?DSP BIOS选则的是ti.platforms.evm6747.  版本是5.41.02.14,谢谢你帮我再分析一下。。

Tony Tang:

回复 keyen wang:

查了一下这个版本之后的几个版本的release note,里面都没有提到有这样的bug。

你直接相查看这几个timer的寄存器,看timer的counter在变没有?

如果怀疑是BIOS版本问题,也可从下面链接下载更高版本的试试:

http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/dspbios/index.html

赞(0)
未经允许不得转载:TI中文支持网 » C6747在任务里面调用TSK_Sleep(5);就跳不出来了,任务只能执行一次。
分享到: 更多 (0)