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.

Porting NDK 2.x to sysbios

Other Parts Discussed in Thread: SYSBIOS, DP83640, TMS320C6455

I have the NDK running on the EVM using CCS4 with Bios 5.4.  I am now trying to make the EVM run with bios 6. then I will port the device driver.

I have it compiling with one issue.  In ethdriver.c  function Interrupt_init(), there is a function call to BCACHE_invL1pAll();

This file was originally from the Bios 5 driver.  What's the correct way to get this working with sysbios?  For example, I find this table from the Legacy App Note a little confusing for this particular module:

On the one hand the BIOS 6 Legacy Module is "None" but on the the other hand the Legacy API Support is "Yes".  What's the distinction between these two?  How do I get it to link?

Thanks,
Brad

 

  • Sorry, I forgot -- this is C6747.

  • Brad --

    I did a bit of research since Mark recently asked me about same (he ported 6424 driver to BIOS 6.x and commented out that call).

    That BCACHE call is a holdover from the past.   There was a bug a long time ago in BIOS 5.x where the plug of interrupt vector might not be seen by the CPU on the next vector fetch(es).   We write the vector with a data memory write.  If the previous vector is still in the L1P, then the "old" value of the vector would be seen instead of the new value.   After writing the vector, we need to writeback the L1D data and then invalidate the L1P so that the old vectors are no longer in the L1P cache.   This bug was fixed in BIOS 5.x back in April 2005.  Not sure bug id or which release picked it up.   This is most definitely fixed in BIOS 5.33 and later.   I just double-checked code in BIOS 6.x and we also do the the writeback data cache and invalidate of L1P.

    You should remove this call to BACHE (and the #include of bcache.h).   Call is not needed for BIOS 5.33 or BIOS 6.x.

    BTW, the BCACHE module is supported in BIOS 6.x legacy, but you need to include ti.bios.tconf (or whatever -- check legacy app note) so that the library gets included.

    It is much cleaner and less confusing to use BIOS 6.x APIs and not use the legacy APIs, so I'd remove the BCACHE call and see where that takes you.

    -Karl-

  • Good day!

     

    I`m a novice in DSP/BIOS and NDK.

    Can you tell me what general steps should I pass to port NDK 2.00 to BIOS v6

     

    Thank you!

  • We will be releasing a new version of NDK later this month with SYS/BIOS 6.3x  and CCS4/5 support. Which device(s) are you interested in?

    Mark

  • Mark,

    I`m working with the EVMOMAPL137 board now. But in a few weeks I`ll get a custom board based on the OMAPL137.

    To work with it using CCSv4 and BIOS6 I`d like to get  some BIOS6 soft:

    DSPLink, NDK, NDK NSP (DP83640(National Instruments) driver for Ethernet PHY or at least SMSCLAN91C111 driver - RMII-based),

    PRU driver, EDMA3 driver, NAND driver, SPI driver, RTFS, BIOS USB stack, UART, MMC/SD

    These are devices I would use in my project.

    I plan to work using CCSv3.3 and DSP/BIOS v5.41because there is BIOS 6 support only for EDMA3 and NDK v2.01

    Am I right?

    Also I suppose it would be hard to me to get used with the RTSC to configure my target board properly.

    Maybe I should start development with BIOS 6 and CCSv4 despite of some difficulty?

    What are the main advantages BIOS 6 and CCSv4 vs BIOS 5.41 and CCSv3.3 now?

    What is your opinion?

    Best regards,

    Yuriy

  • That's great news!  I'm working on the dsk6455 for now, soon to be moving to a tms320c6455 custom board.  I've downloaded the NDK2.1.0 and am currently porting the board specific NSP from NDK2.0.  When the new sysbios support and/or NSP for dsk6455 are released, it would be great to know.  Thanks!

  • MarkGrosen said:

    We will be releasing a new version of NDK later this month with SYS/BIOS 6.3x  and CCS4/5 support. Which device(s) are you interested in?

    Mark

    Hey Mark,

    I just started trying to rebuild NDK for BIOS6 to remove all the printf's, and after trying to swap all the includes to the BIOS6 versions, many errors have erupted. After not knowing where to start to fix all of these I started to search the forums to see if anyone else has undertaken this yet. If a new version of NDK is going to be released at the end of September with BIOS6 support, should I just wait for the new version to come out? Is there a date set yet for the release?

    I am currently working with the EVM6472, and in about a month I will have two different custom hardware designs coming in. Both of which are direct MAC to MAC designs. One connects to a switch with GMII, the other to an FPGA with RGMII.

    Nick

  • @norton256: you can find ndk2.1.0 at http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ndk/2_01_00/index_FDS.html which supports BIOS5/6.  Unlike NDK2.0, the board specific libs are not included in the package; however, I did not have any trouble at all building up the various board specific libs for BIOS6 (i.e. by looking at the source for the board specific libs for ndk2.0, and replicating but using the ndk2.1 common libs).  However, I'm using a c6455.

    So you may not have to wait after all.  

  • Interesting. That is the version I have downloaded. The libraries work OK, but I'm having issues rebuilding it without any printf's. There must be something I'm missing in terms of how it was intended to be rebuilt.

    My how I miss plain old fashoned makefiles.....

  • Build issues? Run-time issues?  What exactly did you change and exactly what error is the result?

  • I actually ended up reposting this in another thread:http://e2e.ti.com/support/embedded/f/355/t/66519.aspx

    It is a build issue. I cannot get the source shipped with the NDK to compile at all with BIOS6.