微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > +SYS\BIOS入门介绍

+SYS\BIOS入门介绍

时间:10-02 整理:3721RD 点击:

TI的大部分芯片都支持SYS\BIOS:如下面的介绍:



SYS\BIOS程序流程说明:
1,外设初始化
2,BIOS_start();
说明:外设初始化:包含电源,IO口,串口,等外设。BIOS_start();是系统启动函数。
SYS\BIOS优先级说明:


HWI 是硬件中断程序。主要是IO外设的中断。包含定时器的中断。优先级最高。
SWI 是软件中断程序。主要是时钟的中断。和相应的不涉及外设的程序标志中断。优先级第二。
TASK 是任务程序。主要系统运行的主要任务。优先级第三。

LDLE是空闲程序。主要是系统运行的空闲任务。优先级最低。

详细说明如图:



硬件中断线程:



硬件中断相关函数:



在SYS\BIOS的程序有有些函数不能全程使用的,都有限制的,使用在使用中需注意相关的限制:如图



下面是使用创龙的程序修改后的 不知道为什么,运行不了:

麻烦大家看看:

如下:

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

/*                                                                          */

/*              延时                                                        */

/*                                                                          */

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

Void Delay(UInt n)

{

        UInt i;


        for(i=n; i>0; i--);

}


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

/*                                                                          */

/*              空闲任务                                                    */

/*                                                                          */

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

Void LEDStatus(Void)

{

    System_printf("Enter LEDStatus\n");


    GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);

    GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_LOW);

    Task_sleep(5000);

    GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);

    GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_HIGH);


    System_printf("Exit LEDStatus\n");

    System_flush();

}

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

/*                                                                          */

/*              任务 2                                                       */

/*                                                                          */

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


Void led_timer3(UArg a0)

{


         System_printf("Enter taskMain1()\n");

         flag2=1;

        System_printf("exit taskMain1()\n");

                 System_flush();

}


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

/*                                                                          */

/*              任务 1                                                       */

/*                                                                          */

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

Void Timer_Isr(UArg a0)

{

    System_printf("Enter taskMain()\n");

    flag1=1;

        System_printf("exit taskMain()\n");

         System_flush();

}


Void led2(void)

{

        while(flag2)

        {

                        flag2=0;                        

                        GPIOPinWrite(SOC_GPIO_0_REGS, 1, 0);

                        GPIOPinWrite(SOC_GPIO_0_REGS, 2, 0);               

                        Delay(0x00FFFFFF);               

                        GPIOPinWrite(SOC_GPIO_0_REGS, 1, 1);

                        GPIOPinWrite(SOC_GPIO_0_REGS, 2, 1);

        }


}


Void led1(void)

{

         while(flag1)

         {

                         flag1=0;

                        GPIOPinWrite(SOC_GPIO_0_REGS, 6, 0);

                        GPIOPinWrite(SOC_GPIO_0_REGS, 3, 0);

                        // 延时

                        Delay(0x00FFFFFF);

                        GPIOPinWrite(SOC_GPIO_0_REGS, 6, 1);

                        GPIOPinWrite(SOC_GPIO_0_REGS, 3, 1);

         }


}


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

/*                                                                          */

/*              主函数                                                      */

/*                                                                          */

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

Int main()

{

        // 外设使能配置

        PSCInit();


    // 管脚复用配置

    GPIOBankPinMuxSet();


    // GPIO 管脚初始化

    GPIOBankPinInit();


    // 启动 SYS/BIOS 系统

    BIOS_start();


     led1();

     led2();


    return(0);

}IS

报错如下:Enter LEDStatus
Enter taskMain()
exit taskMain()
ti.sysbios.gates.GateMutex: line 97: assertion failure: A_badContext: bad calling context. See GateMutex API doc for details.
xdc.runtime.Error.raise: terminating execution
5、XDCtools

学习中………………

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

网站地图

Top