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.

multiple CCS projects

The DM6437 based software we're developing using CCS contains a primary project and a number of dependant projects. One of these dependant projects contain a large number of bitmap image files (converted to 'C' files). Because of the size of this dependant project, downloads from CCS to a target board is a time consuming process (30 minutes). We're looking for a solution that will reduce this download time.  

One method we're looking at is to create a second project which will contain this large dependant project (moving it out of the primary project) and storing it in a second flashrom. Since it's unlikely the code in this dependant project will change, the thought here is to move this static code out of the primary project area, thereby reducing its overall size. In order to do this, the primary project will have to be able to reference the image data structures which will now reside in the second flashrom  We're trying to figure out how best to create and define this second project and how the primary project can reference the data structures in the second flashrom.  Any ideas on how best to go about this? Is there any documentation or examples we can reference as a starting point?

  • For starters, if you are not already using an XDS560 class emulator, that could speed up your load times significantly without changing your projects structure, however loading a large number of raw bitmaps even with the XDS560 could take a while, not to mention the XDS560 class emulators are typically much more expensive.

    I assume everything here is being loaded into RAM for now. While I suppose you could make a secondary dummy project that just held the data files with some careful memory mapping and explicit pointer assignments, it may make more sense to load the data with file -> data -> load... within CCS. This is what would typically be used when loading large amounts of test data such as images for a project to work with, so you can load the project without having to load all the data simultaneously every time, this would be more of a 'load the data once and than re use it throughout the debug session' setup. Incidenally you can also save the data off the target using this functionality, so if you have an image on the board you need to take off to the debug PC you can transfer it this way as well (you could move all your images in and out of memory at once this way assuming they are contiguous).

    You could also just burn the images into a flash device as you suggest, though this would probably be done with an entirely different project that has the flash burning algorithm within it.

    Once the image data is on the target in either form you would access it from the main project using explicit pointers, since you would know what addresses that the images exist at when you load them you just have to define them in your application code. This is sort of a hard coded method as opposed to a dynamic label you would get from having the images in the same loadable binary, however it is a tradeoff between ease of code and time of loading. Assuming you just have large image files this should not be too big of a deal since you would often be operating on such data based on a pointer anyway, as this is how the capture and display drivers function. Essentially you would access an image by:

    int *imagepointer;
    imagepointer = (char *) 0x12345678 //address where image is located
    *imagepointer = x //whatever you set the first byte to... and so on