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.

C6678 open一个外设后,何时close才合适



您好:

使用C6678时,比如使用定时器时,会调用open函数,这个定时器,我需要他一直工作,所以就不能用close了,但是一般来说,有open就会对应有close.这样出现矛盾了, 对于8个核均可以操作的对象,比如共享的定时器或者DMA控制器等,其中一个核open了一个对象,在close之前,其他核也需要open该对象,该如何处理?使用硬件信号量吗?

另外,如何一个共享对象被一个核open了,那么close可以由其他核执行吗?

  • si cheng您好,

    关于open与close的使用,关键是要理解其中执行的具体工作,如DMA及Timer的open是获取对应EDMA寄存器的起始地址,close是对相应句柄指针释放。所以对于单核而言,可以在初始化时open进行句柄指针初始化,在使用完后释放即可;而对于多核而言,可以每个核分别调用open分别存储一份句柄指针,这样就不需要考虑多核之间的问题,当然也可以多核共享一个句柄,此时需要注意确保多核均不使用该句柄指针后再释放。对于多核而言建议每个核分别存储一份句柄指针,避免多核同步问题。

    个人建议:在系统上电初始化时,调用open完成所需模块的句柄指针初始化一次即可,由于之后该指针一直需要利用,所以不需要去释放,并且便于可侧性观测。请参考。