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.

How to update my framework

Updated: I am going to try to use ExterlanRM as I said (see below original post), but in order to do this I need to update my framework from 1.20.03 to 2.20 or newer. I have been looking for documentation I have download the newest framework and read through pdfs, but I still do not know how to make a clean update. Could someone help me with this?

Second question: If I just update the framework, can I be sure that my third party application is going to work without trouble with the new framework, i.e., the backward-compatibility is assured? If not, I can't imagine how can I serve a peripheral using EDMA and use ACPY3 in the same application.

 

Thanks in advance

Original post:

Hello, I am facing the next problem: I have a third party application that use ACPY3 and DMAN3 to manage edma. I would like to integrate in this application a dma channel to serve mcbsp (for example). I would like to know how exactly would be the best way to achieve this.

One of the first approach that comes to my mind is use DMAN3.useExternalRM="true" parameter as this wiki says: http://tiexpressdsp.com/index.php?title=DMA_Framework_Components#DMAN3_Configuration_Examples


1º Would this really work? I would use the edma3 Driver to configurate my channels to serve peripeheral and Resource Manager to manage EDMA for DMAN3(=ACPY) and edma3 driver.
2º It seems that I have only installed Framework Comp. vers 1.20.03 (as the name of my folder shows)... but useExternalRm seems to be a new feature of framework 2.20. Could I updated my framework with no problem for my third party application?

 

Another approach that I am thinking that would be great, but I think is not possible is to configure my edma channel using the DMAN3... is this possible?? Would be great because in this way I would not touch anything of my third party application, but I think this is not an alternative as DMAN3 work only as a manager...

So, any advices or tips would be very welcome :)

 

Thanks in advance

  • I have just updated my post so.. up!

  • Any help? My workmate and me are getting crazy trying to look for documentation about this. We have tried in so many ways to copy/change environmental variables... and a lot of things, but no success. I can't imagine why there is not a commentary about how to make a clean new installation/update in the release notes. We just want to change the old framework, for this new version (2.2x, I do not remember exactly).

     

    Thanks in advance

  • Hi James,

    The Framework Components' DMAN3 library is a DMA resource manager library that is used to manage IDMA3-like DMA resources (i.e, QDMA channels, TCCs and PaRams). The ACPY3 library is used to perform efficient memory-to-memory transfers using the EDMA resources granted using DMAN3 (IDMA3 handles).In general, Framework components provides no support for programming the EDMA to serve a peripheral.

    You mention that you started with an application that uses ACPY3 and DMAN3, could you tell me a little more about how the application uses these libraries ? Are there  algorithms/codecs involved here or is the application using the DMAN3_createChannels API ?!

    If you would like to use the EDMA3 Low Level Driver to program the transfer for the McBSP, along with the DMAN3 in the application, all you  need to do is statically configure the driver and DMAN3 with mutually exclusive resources. You probably don't need to even upgrade FC versions for this.

    To program the Low Level Driver correctly:-

    - Make sure you pick the Low Level Driver for your device (there are different EDMA3 related configurations for different devices)

    - Make a note of all the resources being used by DMAN3 (QDMA channels being used DMAN3.qdmaChannels, TCCs being used, DMAN3.tccAllocationMaskL/H, PaRams being used DMAN3.nullParamIndex, DMAN3.paRamBaseIndex, DMAN3.numPaRamEntries).

    - When you call the EDMA3_DRV_open API, the EDMA3_DRV_InitConfig:initCfg parameter you pass as an argument has a field:-  EDMA3_DRV_InstanceInitConfig    *drvInstInitConfig. This structure, allows you to mark certain channels/tccs/qdma/edma channels as reserved. You should populate this structure to ensure that all the resources programmed for use by DMAN3 are marked as reserved or unavailable. Now you should be able to use the EDMA3_DRV_ APIs without any conflict.

    Let me know if this makes sense.

    Gunjan

  • Hello again, Gunjan thanks a lot for your help

     

             Well, I can't talk too much about how DMAN3 is used in my third application, because I have not access to the source code, but there is really some algorithms involved with it (although they only use ACPY3).

             About what you say that probably I will not need to upgrade FC I was thinking about the same, forgetting about useExternalRM parameter in DMAN3, and take care about channels, and configure driver taking in account dman3 config. Anyway... it would be still better to use "useExternalRM"... because I will not need to care about any kind of conflicts between them... nobody could told me how exactly can I upgrade it?

     

     

  • James,

    Using the "externalRM" parameter is helpful only if your drivers/other code is using the EDMA3 Low Level Resource Manager to do their transfers. If they using the Low Level Driver, you will still need to do static assignment of resources to avoid resource conflicts.

    If you still want to upgrade, here's some information:-

    Several releases were made between 1.20.03 to 2.20, and so some of the packages in FC broke compatibility. Release notes for both those releases will give you compatibilty keys that show whichpackages broke compatibility.

    1.20.03

    ti.sdo.fc.dman3:
    1, 0, 2,

    ti.sdo.fc.acpy3:
    1, 0, 2,

    =======

    2.20

    ti.sdo.fc.dman3:
    1, 0, 4,

    ti.sdo.fc.acpy3:
    1, 0, 4,

    The above compatibility keys indicate that your application needs to re-link with the new binaries, but should not be incompatibie. Explanation of meaning of the compatibilty keys is also availabe in the release notes.