微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +SYSBIOS例程学习再探(一个问题解决)

+SYSBIOS例程学习再探(一个问题解决)

时间:10-02 整理:3721RD 点击:
再探内容:
上次的贴子(http://bbs.elecfans.com/forum.ph ... d=519208&extra=)讲了如何找到SYSBIOS中的一些函数的说明及用法。但还是有一些遗漏。此次补充一下,以及解决一些网友的问题。
上次说到,新建clock时,指定了一个函数,这个函数会周期性的运行,这个周期就是这个函数参数中的“5”。

  1. Clock_create(clkMain, 5, &clkParams, NULL);

复制代码


但同时也注意到了另一个函数,就是:

  1. Void LEDStatus(Void)
  2. {
  3.     System_printf("Enter LEDStatus\n");

  4.     GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);
  5.     Task_sleep(2500);
  6.     GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);

  7.     System_printf("Exit LEDStatus\n");
  8.     System_flush();
  9. }

复制代码


这个函数的说明是一个空闲任务,就是在其他的任务都没有运行,或都在sleep的时候运行的任务,但是程序中并没有找到新建这个任务的程序,那么,它是在哪里建立的呢?
那就要看这个cfg文件了。
打开cfg文件,右键cfg文件,选择打开方式。


之后 ,可以看到如下界面。点击标出的连接。


可以看到:


在上图中,的Thrdads框中,可以看到空闲任务,Idle,点击进入 ,可以看到


在User idle function 0后,可以看到在main文件中的那个LEDSatus函数的名字,空闲任务就是从这里与系统关联在一起的。也可以看到在下面还可以再新建其他的空闲任务,空闲任务也不止是一个的。
而关于BIOS_start();函数,可以按上篇文章的方法可以看到它的说明:

  1. DETAILS
  2. The user's main() function is required to call this function after all other user initializations have been performed.
  3. This function does not return.
  4. This function performs any remaining SYS/BIOS initializations and then transfers control to the highest priority ready task if taskEnabled is true. If taskEnabled is false, control is transferred directly to the Idle Loop.
  5. The SYS/BIOS start sequence is as follows:
  6. Invoke all the functions in the startupFxns array.
  7. call Hwi_startup() to enable interrupts.
  8. if swiEnabled is true, call Swi_startup() to enable the Swi scheduler.
  9. Start any statically created or constructed Timers in the Timer_StartMode_AUTO mode.
  10. if taskEnabled is true, enable the Task scheduler and transfer the execution thread to the highest priority task in the Task_Mode_READY mode.
  11. Otherwise, fall directly into the Idle Loop.

复制代码


一个问题:
若是直接把光盘中的SYSBIOS整个文件夹复制到工作空间中,直接导入工程编译后会出现错误与警告。


这是因为Platform目录的路径设置不正确的原因。可以这样更改。


还有一个地方,就是Compoler version:的不同而存在的一个警告


更改成一样的版本后,再编译一直工程,就什么错误与警告也没有了。



Mark,学习了,sysbios还没来得及研究呢。小编真是快啊。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top