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 use interrupts without SYS/BIOS

I have a LogicPD OMAP L138 EVM and I am using CCS 4.2.4.00033. I want to create C (and possibly assembler) interrupt service routines (isr) without using SYS/BIOS. I cannot find any examples or documentation which shows how the vectors etc. should be setup and also how to create a interrupt from software to test the isr.

 
  
 

 

  • Keith,

    In another thread, you mentioned not getting a response on this one. You probably will not like my response, but it is the advice I give all of my direct customers, too.

    SYS/BIOS is the methodology we support to give our customers the best experience with programming and using our DSPs and also our ARM processors. SYS/BIOS solves a lot of problems that you will run into trying to develop your own micro-managed operating system. Since there are hundreds of ways to implement a DSP software system, it is impractical for TI to document every possible mistake you could make or to debug every possible error you make along the way.

    SYS/BIOS is designed to be low impact and low footprint. And at the same time it is designed to be feature-rich.

    You will complete your project quicker if you use SYS/BIOS that if you continue to write your own custom interrupt handlers and operation handlers. It is true that SYS/BIOS adds some overhead to each interrupt, but it also adds functionality.

    The one strong recommendation I will make is to start with SYS/BIOS. Implement your system to get it functional, then measure the performance to see how well it meets your real-time requirements. If all of your requirements are met, then you are done and can work on something else or bask in the glory of success.

    If you need to improve your performance, SYS/BIOS has built-in benchmarking support to help you profile your system to see where the most processing time is being used. With this information, you can figure out which portion of the application needs to be improved. Perhaps C code optimization or compiler optimization is needed to get the high-CPU-usage functions to run faster; perhaps the task or swi architecture needs to be combined in some way to minimize context switching.

    You do not have to use the HWI Dispatcher for your interrupts. There is not much difference between an interrupt implemented without HWI Dispatcher and an interrupt service routine service routine implemented without SYS/BIOS, other than the SYS/BIOS ease-of-use and the SYS/BIOS already being debugged.

    If you need to replace portions of SYS/BIOS with your own code, you will at least have a working project to compare results with. Everything that you need to implement in your own code has already been done in SYS/BIOS, and the SYS/BIOS source code is available to you so you can look there for an example or starting point, or at least a reference when your code runs into a problem.

    There are app notes and TI Wiki Pages articles that may give you guidance on your own code methodology. Search on various terms depending on what the current problem is that you are running into. The Assembly Language Tools Reference Guide and the Optimizing C Compilers User's Guide are the primary documents that you will need to learn in detail to understand how to write your own system architecture. There are archived training classes on the TI Wiki Pages that will have help for Interrupts; search for IW6000 and "C6000 workshop" (no quotes) to find these.

    The advantages of using SYS/BIOS strongly outweigh the disadvantages. Even if you only use it to generate your linker command file, it will be a benefit to you.

    Regards,
    RandyP

     

    If you need more help, please reply back. If this answers the question, please click  Verify Answer  , below.