This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678SYS/BIOS 代码与多线程问题

Other Parts Discussed in Thread: SYSBIOS

请教:

        刚刚开始接触SYS/BIOS中多线程开发的问题,遇到一些问题,希望高手指教:

       1、如何创建一段内存中的数据缓存,使多个线程都能访问呢?

       2、我如果想自定义一个段,类似.text这样,该怎么做呢?(以前在.cmd中,现在BIOS好像不许有自定义cmd)

       3、如果一个线程调用了外设(如SRIO),在启动之后会自动进入BLOCK状态是吗?如果我需要等待操作完成呢?

       4、使用semaphore和mailbox有什么不一样的地方吗?好像二者都是通过pend和post来控制流程的。

       5、在BIOS程序中调用CSL库代码是不提倡的是吗?如果是,那一般是调用什么库呢?

       初研究不久,问题较多,希望有开发经验人士能给予详细指导,多谢!

  • sysBios编程与不带bios的编程方式差异不大,主要是bios会进行任务调度、中断管理,其他的如共享内存、内存分配等都是可以使用与没有bios编程的方式一样。

    1 可以定义一个全局变量,指定存放在相应的memory section;如果需要多核访问,则需要放在shared memory;

    2 bios中有一个cfg文件,还可以添加一个cmd文件,可以在cmd中将相应的.section指定于相应的memory,具体请查看sysbios user guide memory章节有讲可以再带一个cmd;

    3 任务进入block状态与是否调用外设没有关联,任务状态切换方式请阅读sysbios threading scheduling task section;

    4 semaphore主要是用于避免多个master对共享资源访问产生冲突,同一时刻只允许一个master获取共享资源;而mailbox是用于任务之间消息及数据的传输。

    5 bios中可以调用CSL,只是对硬件中断控制器INTC的配置不能使用CSL,其他的都可以用CSL。

    上面这些问题在sysbios手册中都是有讲的,如有不清楚可以再结合sysbios wiki资料学习:http://processors.wiki.ti.com/index.php/Category:SYSBIOS

  • Andy您好:

            谢谢您的回答!基本都明白了,不过还有一些小疑问:

            1、如果中断不许用CSL配置的话,那么是BIOS自动进行配置,还是我用别的方法配置呢?如果我要挂中断函数,是不是创建HWI就足够了呢?

             2、mailbox用于任务间消息与数据传输,是不是说他可以作为任务的共享内存用呢?

             3、bios占用内存太大,导致程序在L2上放不下。我可以把一些程序放到MSMC上吗?对程序段在L2上还是MSMC上有什么限制吗?

             regards.

  • 1 可以在sysBios cfg进行界面配置,也可以调用HWI API进行动态配置,在sysbios user guide均有描述;

    2 可以进行任务间数据传输;

    3 可以放在shared memory,没有啥限制。