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.

System Clock Manager not working with most clock choices on AM3359 ICEV2

Other Parts Discussed in Thread: SYSBIOS

Hi I'm just getting up and running with SYSBIOS and going through the training videos. I am using the ICEV2 eval kit so my examples are slightly different than what are in the training.

 I created a led toggle program using the I2C example as a starting point in the sysbios folder for this board. I've modified the code to use the clock manager to create an interrupt every 1mS and toggle the LED every 200mS. In the app.cfg window for the clock, if I choose "ANY" or "0" for my Timer ID my program works fine.

 If I choose Timer ID 7,or 6 I get build errors stating the chosen clock is invalid (why give me the choice then?).

If I chose "1"-"5", the project builds without errors, but the program crashes with various runtime issues after loading on the target as shown in the debug and console windows:

ti.sysbios.family.arm.exc.Exception: line 189: E_dataAbort: pc = 0x8000b2a4, lr = 0x8000b278.
xdc.runtime.Error.raise: terminating execution

 My questions are:

1) Why can't I use all the clocks that are offered in the app.cfg window other than ANY or 0?

2) Why can't I build with 6 or 7 since they're offered as timer ID's?

  • Bob,

    simply because the timers might not be enabled at the time of use. So ARM can't access registers and runs into a trap. Now SYSBIOS assumes you manage any resource during startup. That would include clocking the modules (most are in clock off mode after reset). Some may be enabled by the bootloader.

    Regards,

  • Hi Frank,

     So the compiler knows what' enabled in the boot loader if no code has run yet (while configuration is being from app.cfg)?

    Where can I find what's being enabled by the bootloader?

    Thanks,

    Bob

  • Bob,

    the compiler? no. Above message is a runtime error. The config tool is very generic and usually only has static peripheral info on the family level of the architecture only. So it might evne show you instances that don't exist on actual silicon or are not usable for some reason. So be careful...

    Once the ARM processor tries to access a register that is not enabled it reports an exception. You can only find what the bootloader is doing by looking at the sources supplied in IA-SDK. Don't think there is a lot of docs...Sorry.

    Regards,

  • Hi Frank, As I stated I'm getting build errors when trying to use clocks 6 or 7, so it's not a runtime error. According to the ARM data sheet for this device, there's 7 DMtimers.
    Regarding the bootloader question, I'm using CCS to just "load program" to the ICE board. I don't believe this is using the bootloader. Sorry for the naive questions but I'm just getting up and running with the BIOS on ICE. There doesn't seem to be a lot of concise documentation of the whole process about where things are and where to look.
  • I was refering to the 'exception' message you posted. For the build errors I don't know as there is no compile log. The fact this is not well documented I agree but I can't change that. We will help if you need to program timers. How many does your project need?
  • Hi Bob,

    I thought I'd chime in a little here as well as point you to some docs that you may be missing.

    The Timer IDs in the configuration tool are logical IDs.  You can find their logical ID to physical ID mappings in the SYS/BIOS API documentation for the dmtimer/Timer module (look for Timer Mapping Tables):

    Steve

  • Hi Steve, Thank you. That table explains why I can't use TimerID 6 and 7 since they're not mapped to a valid ARM DMTimer.
    Frank, I'm just trying to learn the ICE board with BIOS at this point. I don't have any specifics yet. I like to try things and see what happens. When something doesn't work and I can't figure it out from the error messages, I ask for help here.