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.

Interruptable boundary?

Other Parts Discussed in Thread: CCSTUDIO

Using C6748 on a Logic PD EVM. I updated CCS4 to 4.1.3.00038 today. Code that did work before the update now stops with the error message:

C674X_0: Trouble Halting Target CPU: Unable to find interruptible boundary. Not able to complete request because it requires an interruptible boundary to halt. Please check your application code for interruptibility.

It runs the GEL code apparently correctly then the error message appears, it should have halted at start. The application code does not use interrupts. Any ideas??

Regards   ---  Roger

  • This message is referring to an emulation process when trying to halt the CPU. It is not referring to CPU interrupts that your application code might use.

    Please clarify the sequence of events that you go through to get to this point so we can understand what is working before something that is not working happens. For example, do you connect in CCS, run a GEL script, load your application, Go main(), run to a breakpoint, then get this message? Or what is the real sequence?

  • The sequence is: Connect using CCS on XDS100 built into the EVM. Then run GEL script. I use the one provided with the EVM except I have modified it to turn on all PSC. It runs part of the script as script messages appear on the console. Then it starts to load the code, part way through this the error message appears twice. After this it does not stop at main() and if I hit HALT it will come up with the error message again. I don't think it is running any code.

    I've attached a screen shot immediately after the first error message while it is loading code.

    Regards   ---   Roger

  • You have a bunch of things running in the GEL script, trying to automate a process.

    First you need to get the process working manually, even if that only means separating GEL commands like GEL_load() and such. There are many commands that take a long time to execute, and the GEL environment is not synchronous. This means that the GEL commands will get initiated and then the next GEL command may be initiated before the previous one has completed. There are other scripting methods available that are synchronous, but GEL is easy to use for many simple applications.

    So to start, break down your GEL scripts into smaller functions and run them in order manually, waiting for each to complete before starting the next one. Then let us know how that progresses.

  • When you "Debug Active Project" it connects the target and runs OnTargetConnect(), its not clear to me what other functions may automatically get run after this, is this documented anywhere?

    Anyway if I manually connect and manually run OnTargetConnnect() that runs to completion OK. Then I manually execute GEL_Load(). Its during GEL_Load() that I get the error messages.

    Roger

  • roger littlewood said:
    its not clear to me what other functions may automatically get run after this, is this documented anywhere?

    The best place to start is the TI Embedded Processors Wiki pages. Here you can click on major topics from the first page to manually search for topics of interest, or you can use either the Google-based or Wiki-based searches to find helpful information. For example, try a Google-based search for "OnTargetConnect" or "GEL" or "built-in GEL commands". You will find FAQs and overviews and other topics that will help you understand the scripting capabilities in CCSv4.

    You can also find a lot of documentation on www.ti.com. One good place to start would be the CCStudio Product Folder. Click on Technical Documents and look through the list of App Notes and User's Guides. Or from the top of any page on www.ti.com you can enter a keyword like "GEL" and do a search for relevant documents and web pages; I would recommend after the initial search to then click on User Guides to get to documents rather than all the various Wiki pages you have already looked at, but look through either list to see what might be interesting.

    From inside CCS, you can try two avenues:

    1. Use the CCSv4 menu item Help->Help Contents to open an external Help window. Do a search on OnTargetConnect and you will find a couple of helpful topics or lists.
    2. Use the CCSv4 menu item Help->Search to open an internal Help Search window. Do a search here on C6000 Overview. In the C6000 DSPs Overview page, scroll down about 25% to find some documents under a heading IDE.

    roger littlewood said:
    manually run OnTargetConnnect()

    I expect you are doing this right, but how do you run OnTargetConnect() manually? If it is loaded, it will run automatically when you connect.

    roger littlewood said:
    Then I manually execute GEL_Load(). Its during GEL_Load() that I get the error messages.

    My recommendation is to check the .map file to see if any of the program is being placed somewhere it should not be placed. Are there any messages when you do a clean re-build?

    If there is nothing else running, there is no reason I can think of to get a message like this during a load. Is the ARM disabled, or is there a GEL script you are supposed to run on it to enable DSP operation? Or is there a jumper or switch setting to put it in the DSP-only mode?

    Maybe someone else will know more about this error message. But it will probably be Tuesday since Monday is a US holiday.

  • Hello Randy,

    I uninstalled & reinstalled CCS4 that did not help. So I went back over our archives of this project and found one that did work correctly with the new version of CCS4, this project that did work was a dozen or so revisions back in June. I could not see any difference in our project files, linker command file, GEL etc that could cause a problem between this version & the latest that did not work. So using the June version of our project as a base, I replaced files in the project with the equivalent ones from the September version that did not work, several at a time testing at each change. Now all the files are replaced and as far as the project is concerned the June version has been updated to the latest version of our project - and it now works correctly.

    There is an immense number of xml & bin files created by CCS & I assume somehow one of these got corrupted somehow here since June & it was only a problem when we updated CCS4 (or something). So I'm no better off understanding the issue and a day or so down, but at least the software is working now.

    As for GEL, I could not see a description of the sequence of events and routines it calls when a project is built.

    Thanks for your support in helping me get this sorted out, and I hope you are enjoying your labor day parades!

    Regards   ---   Roger

     

  • Further to this. I have found the problem can be caused by checking "Enable Silicon Real Time Mode....." in debug properties. Could anyone shed any light on why this is & how I can now use real-time debugging??

    Roger

  • I just made some updates to this page to help explain better:

    http://processors.wiki.ti.com/index.php/Real-Time_Mode

    My past experience with this capability is that it works fine when running code or single stepping through code.  However, if you try to do major things like load a program with it turned on then bad things tend to happen!  I haven't even looked recently, but is there still an option under the Target menu for enabling/disabling real-time mode?  Or is it only in the debug properties?

    The way I used to do it in CCS 3.3 was:

    • Load program
    • Enable real-time mode
    • Run/Debug/etc
    • Halt
    • Disable real-time mode
    • Make changes to code, rebuild, repeat process...

    I don't have time to look this second, but in CCS 3.3 you could turn real-time mode on/off through gel functions.  So for example you could add code to the OnPreFileLoaded callback to make sure real-time mode is disabled before you load a file. You could even have it disabled in the OnHalt function if you only want the capability of reading variables at run-time, i.e. if you're not trying to have ISRs continue running while you single step through some other code.

    Maybe someone from the CCS team can comment further.

    Brad

  • Brad,

    I have used this feature a lot on CCS3.3 and it does work if a little flakey sometimes. In CCS4 though it seems to have stopped working after a recent software update at least on the C6748 giving the error in the previous posts in this thread.

    I have another project running on a different PC using C2000 in a motor drive which I really should update to CCS4 but am now wary of doing this if real time mode does not work in that case. I could do without wasting the time to be spent finding that out for myself too. As well it is inconvenient running a mix of CCS3.3 & CCS4 on different machines. Also real time mode is a big plus for the C2000 against ARM solutions in motor drive type jobs, yet if the dev system does not support this the C2000 loses that advantage. This is in addition to my opinion that CCS4 is massively over complex and buggy relative to competitive IDE for the ARM. It would be good to see solutions to these issues and a simplification of CCS4 in future!

    Regards   ---  Roger