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.

ISR implementation for Timer interrupt on OMAP3530 EVM

Other Parts Discussed in Thread: OMAP3530

Hi,

I would like to clarify the ISR implementation for Timer interrupt on OMAP3530 EVM.

I'm not sure that ISR returns "SYSINTR_TIMING" to a kernel on BSP (ver.6.14.01) for Windows Embedded CE 6.0. 

I tried to measure ISR and IST latency using ILTiming.exe on CE 6.0, but IST doesn' t receive SetEvent (an event object associated with SYSINTR_TIMING) from kernel. Therefore, ILTiming.exe (IST) times out at WaitForSingleObject(hEvent, 30000).

I guess ISR implemented in OAL doesn't work properly.

Is the code of ISR in the BSP (ver.6.14.01) implemented properly in order to receive timer interrupt and return SYSINTR_TIMING to a kernel?

  • Here is some information about ILTiming. Also there are CETK test logs (attached) for ILTiming that have passed (this was for an older release but it should work for 6.14.01 as well).

    The default high performance counter uses a 32768 Hz counter, to use a faster counter set ENABLE_OAL_MHZPROFILER=1 and do a clean build. Using the MHz counter will improve the resolution of the interrupt latency measurements.

    See PLATFORM\TI_EVM_3530\SRC\OAL\OALLIB\oem_latency.c and PLATFORM\COMMON\SRC\SOC\OMAP35XX_TPS659XX_TI_V1\omap35xx\OAL\TIMER\GPTIMER1\timer.c (OEMIdle) for details.
    Additional information available here  http://msdn.microsoft.com/en-us/library/ms902378.aspx

  • Hi Jatin,

    I set ENABLE_OAL_MHZPROFILER to 1, did clean build and ran ILTiming.exe, but the result was the same as when I used the default high performance counter.

    Here is a log from PB output:

    ----------------------------------------------------------------------------------------------------------

     447911 PID:111040e TID:5df031e OSAXST1: >>> Loading Module 'coredll.dll' (0x887A679C) at address 0x40010000-0x40124000 in Process 'ILTIMING.exe' (0x86C0BAD4)
     447986 PID:111040e TID:5df031e OSAXST1: >>> Loading Module 'ILTIMING.exe' (0x86C0BAD4) at address 0x00010000-0x00014000 in Process 'ILTIMING.exe' (0x86C0BAD4)
    PB Debugger Loaded symbols for 'D:\WINCE600\OSDESIGNS\WINCEPROJECT\WINCEPROJECT\RELDIR\TI_EVM_3530_ARMV4I_DEBUG\ILTIMING.EXE'
     448377 PID:111040e TID:5df031e ++ILTiming (Loader): (-t 10 -n 100)
     448382 PID:400002 TID:5df031e OSAXST1: >>> Loading Module 'iltiming_dll.dll' (0x86C814E0) at address 0xD9E40000-0xD9E49000 in Process 'NK.EXE' (0x8406DAA0)
    PB Debugger Loaded symbols for 'D:\WINCE600\OSDESIGNS\WINCEPROJECT\WINCEPROJECT\RELDIR\TI_EVM_3530_ARMV4I_DEBUG\ILTIMING_DLL.DLL'
     448724 PID:400002 TID:5df031e iltiming -t 10 -n 100
     448728 PID:7a30002 TID:7a40002 OSAXST1: >>> Loading Module 'coredll.dll' (0x887A679C) at address 0x40010000-0x40124000 in Process 'iltiming.exe' (0x86C818E0)
     448802 PID:7a30002 TID:7a40002 OSAXST1: >>> Loading Module 'iltiming.exe' (0x86C818E0) at address 0x00010000-0x00014000 in Process 'iltiming.exe' (0x86C818E0)
    PB Debugger Loaded symbols for 'D:\WINCE600\OSDESIGNS\WINCEPROJECT\WINCEPROJECT\RELDIR\TI_EVM_3530_ARMV4I_DEBUG\ILTIMING.EXE'
     449050 PID:7a30002 TID:7a40002 ++ILTiming (Loader): (-z -i0)
     449050 PID:400002 TID:7a40002 iltiming -z -i0
     449050 PID:400002 TID:7a40002 Secondary ILTIMING process starting.
     449551 PID:400002 TID:5df031e
     449551 PID:400002 TID:5df031e
     449551 PID:400002 TID:5df031e vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
     449551 PID:400002 TID:5df031e vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
     449551 PID:400002 TID:5df031e ===================================================================
     449552 PID:400002 TID:5df031e                 INTERPRETING THE ILTIMING RESULTS
     449552 PID:400002 TID:5df031e -------------------------------------------------------------------
     449552 PID:400002 TID:5df031e   ILTiming measures the interrupt service routine (ISR) and
     449552 PID:400002 TID:5df031e   interrupt service thread (IST) latencies.
     449552 PID:400002 TID:5df031e
     449552 PID:400002 TID:5df031e   ISR latency measured is the time from the physical interrupt
     449552 PID:400002 TID:5df031e   asserting (timer wrap) to the start of the OEM ISR code.
     449552 PID:400002 TID:5df031e
     449552 PID:400002 TID:5df031e -------------------------------------------------------------------
     449552 PID:400002 TID:5df031e   SYSTEM BUILD INFO
     449552 PID:400002 TID:5df031e
     449552 PID:400002 TID:5df031e   PLATFORM   = EVM3530
     449554 PID:400002 TID:5df031e   PROCESSOR  = ARMV4I
     449554 PID:400002 TID:5df031e   CONFIG     = WinCEProject
     449556 PID:400002 TID:5df031e   RET/DEBUG  = debug
     449556 PID:400002 TID:5df031e   BUILD DATE = Oct  5 2010 @ (11:07:02)
     449558 PID:400002 TID:5df031e -------------------------------------------------------------------
     449558 PID:400002 TID:5df031e   COUNTER INFO
     449560 PID:400002 TID:5df031e
     449560 PID:400002 TID:5df031e   Counter Frequency     = 13000000 Hz
     449562 PID:400002 TID:5df031e   Counter tick interval = 76 ns
     449562 PID:400002 TID:5df031e -------------------------------------------------------------------
     449564 PID:400002 TID:5df031e   RUNTIME OPTIONS
     449564 PID:400002 TID:5df031e
     449566 PID:400002 TID:5df031e   Timing interval      = 5
     449566 PID:400002 TID:5df031e   Number of interrupts = 10
     449568 PID:400002 TID:5df031e ===================================================================
     449568 PID:400002 TID:5df031e ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     449570 PID:400002 TID:5df031e ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     449570 PID:400002 TID:5df031e
     449572 PID:400002 TID:5df031e
     479573 PID:400002 TID:5df031e Wait for interrupt failed or timed out.
     479573 PID:400002 TID:5df031e All times are in microseconds.

     479573 PID:400002 TID:5df031e Summary:
     479573 PID:400002 TID:5df031e                     ISR starts   IST starts
    PB Debugger Unloaded symbols for 'D:\WINCE600\OSDESIGNS\WINCEPROJECT\WINCEPROJECT\RELDIR\TI_EVM_3530_ARMV4I_DEBUG\ILTIMING.EXE'
     479573 PID:400002 TID:5df031e min                264305679.6          0.0
     479574 PID:400002 TID:5df031e ave                  6607641.8          0.0
     479574 PID:400002 TID:5df031e max                264305679.6          0.0

     479574 PID:400002 TID:5df031e Build,Platform,Processor,Project,Debug,Number of Interrupts,ISR Min,ISR Max,ISR Ave,IST Min,IST Max,IST Ave,Thread Priority,Idle Threads
    PB Debugger Unloaded symbols for 'D:\WINCE600\OSDESIGNS\WINCEPROJECT\WINCEPROJECT\RELDIR\TI_EVM_3530_ARMV4I_DEBUG\ILTIMING.EXE'
     479574 PID:400002 TID:5df031e 3122,EVM3530,ARMV4I,WinCEProject,debug,10,264305679.6,264305679.6,6607641.8,0.0,0.0,0.0,0,0
     479574 PID:111040e TID:5df031e --ILTiming (Loader): Done!
     479578 PID:111040e TID:5df031e OSAXST1: <<< Unloading Module 'coredll.dll' (0x887A679C) at address 0x40010000-0x40124000 in Process 'ILTIMING.exe' (0x86C0BAD4)
     479781 PID:111040e TID:5df031e OSAXST1: <<< Unloading Module 'ILTIMING.exe' (0x86C0BAD4) at address 0x00010000-0x00014000 in Process 'ILTIMING.exe' (0x86C0BAD4)
     479955 PID:400002 TID:7a40002 Exiting secondary ILTIMING process.
     479955 PID:7a30002 TID:7a40002 --ILTiming (Loader): Done!

    ----------------------------------------------------------------------------------------------------------

    Shown as above,  the result of "Wait for interrupt failed or timed out" is the same as before, while values of "Counter Frequency" and "Counter tick interval" has changed by setting ENABLE_OAL_MHZPROFILER to 1.

    I also tried testing Iltiming_Ioctl by CETK, and it passed all test cases.

    When you measured ISR and IST interrupt latencies, how was the result of them? I expect the results of one microsecond order for ISR, and ten ~ hundred microsecond order for IST .

     

  • Looks like you are using a debug build. Can you use the retail build. (In general I don't think it would be a good idea to test performance with debug build).  

     

  • Hi Jatin,

    I did the retail build, but the result didn't change. This means that setting ENABLE_OAL_MHZPROFILER to 1 and doing the retail build don't resolve this problem in my case.

    Here is a log output to the Terminal. ("Retail Msgs" is set to "enabled" before downloading OS image)

     -----------------------------------------------------------------------------------------------------------------------------------------

    ++ILTiming (Loader): (-t 10 -n 100)
    iltiming -t 10 -n 100
    ++ILTiming (Loader): (-z -i0)
    iltiming -z -i0
    Secondary ILTIMING process starting.


    vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    ===================================================================
    INTERPRETING THE ILTIMING RESULTS
    -------------------------------------------------------------------
    ILTiming measures the interrupt service routine (ISR) and
    interrupt service thread (IST) latencies.

    ISR latency measured is the time from the physical interrupt
    asserting (timer wrap) to the start of the OEM ISR code.

    -------------------------------------------------------------------
    SYSTEM BUILD INFO

    PLATFORM = EVM3530
    PROCESSOR = ARMV4I
    CONFIG = speech
    RET/DEBUG = retail
    BUILD DATE = Sep 6 2006 @ (19:32:33)
    -------------------------------------------------------------------
    COUNTER INFO

    Counter Frequency = 13000000 Hz
    Counter tick interval = 76 ns
    -------------------------------------------------------------------
    RUNTIME OPTIONS

    Timing interval = 5
    Number of interrupts = 10
    ===================================================================
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


    Wait for interrupt failed or timed out.
    All times are in microseconds.

    Summary:
    ISR starts IST starts
    min 0.0 0.0
    ave 0.0 0.0
    max 0.0 0.0

    Build,Platform,Processor,Project,Debug,Number of Interrupts,ISR Min,ISR Max,ISR Ave,IST Min,IST Max,IST Ave,Thread Priority,Idle Threads
    3122,EVM3530,ARMV4I,speech,retail,10,0.0,0.0,0.0,0.0,0.0,0.0,0,0
    --ILTiming (Loader): Done!
    Exiting secondary ILTIMING process.
    --ILTiming (Loader): Done!

     -----------------------------------------------------------------------------------------------------------------------------------------

  • Hi,

    I just tried this with BSP 6.15.0 release (retail build) and I don't see an error. I have KITL enabled and ran the test from PB "Windows Command Prompt".  Log posted below. I'm not sure why yours is not working. I assume you are using the BSP as is.

    Does the information below help?

    Jatin

    ===>

    1943786 PID:400002 TID:689005a RELFSD: Opening file iltiming.exe from desktop

    1943799 PID:688005a TID:689005a ++ILTiming (Loader): (-t 10 -n 100)

    1943799 PID:400002 TID:689005a iltiming -t 10 -n 100

    1944518 PID:400002 TID:68e005a RELFSD: Opening file iltiming.exe from desktop

    1944531 PID:68d005a TID:68e005a ++ILTiming (Loader): (-z -i0)

    1944531 PID:400002 TID:68e005a iltiming -z -i0

    1944531 PID:400002 TID:68e005a Secondary ILTIMING process starting.

    1945032 PID:400002 TID:689005a 

    1945032 PID:400002 TID:689005a 

    1945032 PID:400002 TID:689005a vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

    1945032 PID:400002 TID:689005a vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

    1945032 PID:400002 TID:689005a ===================================================================

    1945032 PID:400002 TID:689005a                 INTERPRETING THE ILTIMING RESULTS

    1945032 PID:400002 TID:689005a -------------------------------------------------------------------

    1945032 PID:400002 TID:689005a   ILTiming measures the interrupt service routine (ISR) and

    1945032 PID:400002 TID:689005a   interrupt service thread (IST) latencies.

    1945032 PID:400002 TID:689005a 

    1945032 PID:400002 TID:689005a   ISR latency measured is the time from the physical interrupt

    1945032 PID:400002 TID:689005a   asserting (timer wrap) to the start of the OEM ISR code.

    1945032 PID:400002 TID:689005a 

    1945032 PID:400002 TID:689005a -------------------------------------------------------------------

    1945032 PID:400002 TID:689005a   SYSTEM BUILD INFO

    1945032 PID:400002 TID:689005a 

    1945032 PID:400002 TID:689005a   PLATFORM   = EVM3530

    1945033 PID:400002 TID:689005a   PROCESSOR  = ARMV4I

    1945033 PID:400002 TID:689005a   CONFIG     = speech

    1945033 PID:400002 TID:689005a   RET/DEBUG  = retail

    1945033 PID:400002 TID:689005a   BUILD DATE = Sep  6 2006 @ (19:32:33)

    1945033 PID:400002 TID:689005a -------------------------------------------------------------------

    1945033 PID:400002 TID:689005a   COUNTER INFO

    1945033 PID:400002 TID:689005a 

    1945033 PID:400002 TID:689005a   Counter Frequency     = 13000000 Hz

    1945033 PID:400002 TID:689005a   Counter tick interval = 76 ns

    1945034 PID:400002 TID:689005a -------------------------------------------------------------------

    1945034 PID:400002 TID:689005a   RUNTIME OPTIONS

    1945034 PID:400002 TID:689005a 

    1945034 PID:400002 TID:689005a   Timing interval      = 5

    1945034 PID:400002 TID:689005a   Number of interrupts = 10

    1945034 PID:400002 TID:689005a ===================================================================

    1945034 PID:400002 TID:689005a ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    1945034 PID:400002 TID:689005a ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    1945034 PID:400002 TID:689005a 

    1945034 PID:400002 TID:689005a 

    1945084 PID:400002 TID:689005a All times are in microseconds.

     

    1945084 PID:400002 TID:689005a Summary:

    1945084 PID:400002 TID:689005a                     ISR starts   IST starts

    1945084 PID:400002 TID:689005a min                        2.4          0.0

    1945084 PID:400002 TID:689005a ave                        2.4          0.0

    1945084 PID:400002 TID:689005a max                        2.5          0.1

     

    1945084 PID:400002 TID:689005a Build,Platform,Processor,Project,Debug,Number of Interrupts,ISR Min,ISR Max,ISR Ave,IST Min,IST Max,IST Ave,Thread Priority,Idle Threads

    1945084 PID:400002 TID:689005a 0,EVM3530,ARMV4I,speech,retail,10,2.4,2.5,2.4,0.0,0.1,0.0,0,0

    1945084 PID:688005a TID:689005a --ILTiming (Loader): Done!

    1945089 PID:400002 TID:68e005a Exiting secondary ILTIMING process.

    1945092 PID:68d005a TID:68e005a --ILTiming (Loader): Done!

  • Hi Jatin,

    I downloaded the latest version of BSP (6.15.00) from TI website and replaced the older version (6.14.01) with it, then I succeeded to run ILTiming.exe properly.

    Some files related to ILTiming (ex : Some codes have been added in OALTimerIntrHandler() function in timer.c) have been modified on 6.15.00 BSP.

    Thank you for your big help.

  • Hi, Jatin

    It seems that  "IST starts" time is very small. Do you think this result is proper? (The performance of CPU on the target board I use is ARM Cortex-A8 720Mhz)

    To increase the load of CPU, I ran ILTiming.exe when playing WMV video on Windows Media Player . And I set IST priority to 255, "Timing interval" to 10, "Number of interrupts" to 100 and "thread type" to 4, The result is below:

    ===>

     769738 PID:400002 TID:6800042 ===================================================================
     769739 PID:400002 TID:6800042                 INTERPRETING THE ILTIMING RESULTS
     769739 PID:400002 TID:6800042 -------------------------------------------------------------------
     769739 PID:400002 TID:6800042   ILTiming measures the interrupt service routine (ISR) and
     769739 PID:400002 TID:6800042   interrupt service thread (IST) latencies.
     769739 PID:400002 TID:6800042
     769739 PID:400002 TID:6800042   ISR latency measured is the time from the physical interrupt
     769739 PID:400002 TID:6800042   asserting (timer wrap) to the start of the OEM ISR code.
     769739 PID:400002 TID:6800042
     769739 PID:400002 TID:6800042 -------------------------------------------------------------------
     769739 PID:400002 TID:6800042   SYSTEM BUILD INFO
     769739 PID:400002 TID:6800042
     769739 PID:400002 TID:6800042   PLATFORM   = EVM3530
     769742 PID:400002 TID:6800042   PROCESSOR  = ARMV4I
     769742 PID:400002 TID:6800042   CONFIG     = WinCEProject615
     769743 PID:400002 TID:6800042   RET/DEBUG  = retail
     769743 PID:400002 TID:6800042   BUILD DATE = Oct 15 2010 @ (16:37:24)
     769745 PID:400002 TID:6800042 -------------------------------------------------------------------
     769745 PID:400002 TID:6800042   COUNTER INFO
     769747 PID:400002 TID:6800042
     769747 PID:400002 TID:6800042   Counter Frequency     = 13000000 Hz
     769749 PID:400002 TID:6800042   Counter tick interval = 76 ns
     769749 PID:400002 TID:6800042 -------------------------------------------------------------------
     769751 PID:400002 TID:6800042   RUNTIME OPTIONS
     769751 PID:400002 TID:6800042
     769753 PID:400002 TID:6800042   Timing interval      = 10
     769753 PID:400002 TID:6800042   Number of interrupts = 100
     769755 PID:400002 TID:6800042 ===================================================================
     769755 PID:400002 TID:6800042 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     769757 PID:400002 TID:6800042 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     769757 PID:400002 TID:6800042
     769759 PID:400002 TID:6800042
     771108 PID:400002 TID:6800042 Discarded 3 timings due to interrupts
     771108 PID:400002 TID:6800042 All times are in microseconds.

     771108 PID:400002 TID:6800042 Summary:
     771108 PID:400002 TID:6800042                     ISR starts   IST starts
     771108 PID:400002 TID:6800042 min                    1.8           0.0
     771108 PID:400002 TID:6800042 ave                     2.5           0.4
     771108 PID:400002 TID:6800042 max                    4.2           2.3

     771108 PID:400002 TID:6800042 Build,Platform,Processor,Project,Debug,Number of Interrupts,ISR Min,ISR Max,ISR Ave,IST Min,IST Max,IST Ave,Thread Priority,Idle Threads
     771108 PID:400002 TID:6800042 3122,EVM3530,ARMV4I,WinCEProject615,retail,100,1.8,4.2,2.5,0.0,2.3,0.4,255,4
     771108 PID:400002 TID:6870042 Exiting secondary ILTIMING process.
     771111 PID:67f0042 TID:6800042 --ILTiming (Loader): Done!
     773112 PID:6860042 TID:6870042 --ILTiming (Loader): Done!

    ===>

  • You can see the difference in the result in your latest case compared to the previous case where the IST was highest priority. So I would take it that the results are accurate to the best of how the test is written.  

    Do you have any reason to believe this is not accurate. Do you have a comparison benchmark on any other chip. 

  • Hi Jatin,

    Actually, I don't have any comparison benchmark on other chip, so I cannot be sure this result is not accurate (or is accurate). I just wondered because the IST latency value is much smaller than I thought. According to one of results obtained from internet as shown below, ISR and IST latency results may be microsecond order and ten/hundred-microsecond order, respectively:

                          ISR starts     IST starts
    minimum        1.2 μs          31.7 μs
    average           3.3 μs          67.2 μs
    Maximum       13.3 μs        103.0 μs

    [Environment] Samsung SMDK2410 development board, 200 MHz ARM, 16 ×16 cache, Windows CE 5.0 with full UI, WMV Video Playing

     

    Let me ask one more thing: I would like to measure ISR and IST latency on Compact 7, but due to the version of BSP (TI_EVM_3530) for Compact 7 is 6.13.00, ILTiming tool doesn't work. I saw some codes related to the timer (ex : timer.c, oem_latency, oalex.h...), and found that some codes have been modified on 6.15.00 compared with 6.13.00. So I would like to update the codes related to the timer up to 6.15.00 so that ILTiming tool can work properly. What files should be updated? I tried replacing "timer.c", all files in "C:\WINCE700\platform\ti_evm_3530\SRC\OAL\OALLIB", and "oalex.h" to the latest version, but some errors occurred during building. A part of build log output is shown below:

    ====>

    BUILD: [01:0000005151:INFO  ] timer.c
    BUILD: [02:0000005152:INFO  ] vfphandler.c
    BUILD: [01:0000005153:INFO  ] profiler_mhz.c
    BUILD: [02:0000005154:ERRORE] Error(s) in directory "C:\WINCE700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\OAL\VFP\".
    BUILD: [02:0000005155:ERRORE] c:\wince700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\oal\vfp\vfphandler.c(148) : error C2220: warning treated as error - no 'object' file generated
    BUILD: [02:0000005156:WARNN ] Warning(s) in directory "C:\WINCE700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\OAL\VFP\".
    BUILD: [02:0000005157:WARNN ] c:\wince700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\oal\vfp\vfphandler.c(148) : warning C4028: formal parameter 1 different from declaration
    BUILD: [02:0000005158:WARNN ] c:\wince700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\oal\vfp\vfphandler.c(148) : warning C4028: formal parameter 2 different from declaration
    BUILD: [02:0000005159:WARNN ] c:\wince700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\oal\vfp\vfphandler.c(148) : warning C4029: declared formal parameter list different from definition
    BUILD: [02:0000005160:ERRORE] NMAKE : fatal error U1077: 'C:\WINCE700\sdk\bin\i386\ARM\cl.EXE' : return code '0x2'
    BUILD: [02:0000005161:INFO  ] Stop.
    BUILD: [02:0000005162:ERRORE]  clean TargetCompilePass  -nologo BUILDMSG=Stop.  BUILDROOT=C:\WINCE700\platform\common CLEANBUILD=1 NOLINK=1 NOPASS0=1 failed - rc = 2.
    BUILD: [01:0000005163:INFO  ] Generating Code...
    BUILD: [00:0000005164:PROGC ]                                 Files  Warnings  Errors
    BUILD: [00:0000005165:PROGC ] Midl                                0         0       0
    BUILD: [00:0000005166:PROGC ] Message                       0         0       0
    BUILD: [00:0000005167:PROGC ] Precomp Header         0         0       0
    BUILD: [00:0000005168:PROGC ] Resource                    2         0       0
    BUILD: [00:0000005169:PROGC ] XRPack                         0         0       0
    BUILD: [00:0000005170:PROGC ] MASM                            0         0       0
    BUILD: [00:0000005171:PROGC ] SHASM                         0         0       0
    BUILD: [00:0000005172:PROGC ] ARMASM                     64         0       0
    BUILD: [00:0000005173:PROGC ] MIPSASM                     0         0       0
    BUILD: [00:0000005174:PROGC ] C++                              63         0       0
    BUILD: [00:0000005175:PROGC ] C                                  140         3       2
    BUILD: [00:0000005176:PROGC ] CheckLibs                    0         0       0
    BUILD: [00:0000005177:PROGC ] Static Libraries            0         0       0
    BUILD: [00:0000005178:PROGC ] Exe's                              0         0       0
    BUILD: [00:0000005179:PROGC ] Dll's                                0         0       0
    BUILD: [00:0000005180:PROGC ] Preprocess deffile       0         0       0
    BUILD: [00:0000005181:PROGC ] Resx                               0         0       0
    BUILD: [00:0000005182:PROGC ] CSharp Compile          0         0       0
    BUILD: [00:0000005183:PROGC ] VCProj Compile           0         0       0
    BUILD: [00:0000005184:PROGC ] Other                              0         0       1
    BUILD: [00:0000005185:PROGC ]
    BUILD: [00:0000005186:PROGC ] Total                            269         3       3
    BUILD: [00:0000005187:PROGC ]
    BUILD: [00:0000005188:PROGC ] 3 Warnings,  3 Errors
    BUILD: [00:0000005189:PROGC ] GetSystemTimes (seconds): Idle: 88    Kernel: 141   User: 162 
    BUILD: [00:0000005190:PROGC ] Elapsed  time  (seconds): 151 
    Build for Windows CE (Release 601) (Built on May 28 2009 15:53:25)
    File names: Build.log Build.wrn Build.err BuildARMV7retail.dat
    CEBUILD: BUILDMSG: There were errors building. Check C:\WINCE700\build.err

    BLDDEMO: ERROR: There were errors building CEBASE.

    BLDDEMO: BUILDMSG: BldDemo ended at 18:35:44.71 on 2010/10/18 (exit code 1)
    BuildLogs: BUILDMSG: Exiting: BldDemo1.bat  clean -q (result code 1).
    BuildLogs: BUILDMSG: C:\WINCE700\build.log
    BuildLogs: BUILDMSG: C:\WINCE700\build.out
    BuildLogs: BUILDMSG: C:\WINCE700\build.wrn
    BuildLogs: BUILDMSG: C:\WINCE700\build.err

    ====>

    By trial and error,  I am replacing files related to the timer, but build errors still come out.

  • BSP 6.15.00 has not been moved over to WinCE 7 and hence I really don't have any solid inputs to provide. My one suggestion would be for you not to replace the files but to merge the changes. i.e., compare bSquare BSP 6.13 and bSquare BSP 6.15 and merge the differences into the WinCE 7 BSP 6.13 files (obviously not everything but just the set of files you mentioned in your post). You don't want to lose the changes that are in the WinCE7 BSP files that would have been done to make the BSP work for WinCE7.

    Does not having this information absolutely prevent you from proceeding on your project? I don't expect the numbers to be far off from the ones for WinCE6 (this is just a guesstimate). You could try MSDN forum and ask Microsoft for the ILtiming information for WinCE 7.

    You are right that it is difficult to compare with the other platform you mentioned. (WinCE 6 vs WinCE5 and also significant difference in the ARM performance).

  • Hi Jatin,

    I succeeded to run ILTiming.exe properly on Compact 7 by modifying some codes related to the timer. In 6.15.00, there are few modifications compared with 6.14.01, but lots of modifications compared with 6.13.00.  It seemed quite troublesome to compare and modify all of them, so I just modified the following files as shown below:

    1.  \WINCE700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\OAL\TIMER\GPTIMER1\timer.c  ==>  added some codes in OALTimerIntrHandler() and modified some codes related to OALContextSave()

    2.  \WINCE700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\inc\oalex.h  ==>  added a declaration of OALTickTimerIntr( ) and changed type of OALContextSave() from VOID to BOOL

    3.  \WINCE700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\INC\omap35xx_irq.h  ==> defined IRQ_SW_CPUMONITOR  101 instead of IRQ_SW_RESERVED_1

    4.  \WINCE700\platform\ti_evm_3530\SRC\OAL\OALLIB\oem_intrex.c   ==>  newly added this file (This file seems to exist since 6.14.00 or 6.14.01)

    5.  \WINCE700\platform\ti_evm_3530\SRC\OAL\OALLIB\oem_pm.c   ==> changed a type of OALContextSave() from VOID to BOOL and added "BOOL  rc = TRUE;" in this function

    6.  \WINCE700\platform\common\src\soc\omap35xx_tps659xx_ti_v1\omap35xx\OAL\PRCM\prcm.c   ==> added and modified some codes related to OALContextSave()

     

    The results of ISR and IST latencies are shown below.  As long as I see this result, there seems to be no difference between CE 6.0 and Compact 7.

    ====>

     139410 PID:4eb0102 TID:4e30112 ++ILTiming (Loader): (-t 10 -n 100)
     139410 PID:400002 TID:4e30112 iltiming -t 10 -n 100
     139468 PID:5e8010a TID:4590122 ++ILTiming (Loader): (-z -i0)
     139468 PID:400002 TID:4590122 iltiming -z -i0
     139468 PID:400002 TID:4590122 Secondary ILTIMING process starting.
     139969 PID:400002 TID:4e30112
     139969 PID:400002 TID:4e30112
     139969 PID:400002 TID:4e30112 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
     139969 PID:400002 TID:4e30112 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
     139969 PID:400002 TID:4e30112 ===================================================================
     139969 PID:400002 TID:4e30112                 INTERPRETING THE ILTIMING RESULTS
     139969 PID:400002 TID:4e30112 -------------------------------------------------------------------
     139969 PID:400002 TID:4e30112   ILTiming measures the interrupt service routine (ISR) and
     139969 PID:400002 TID:4e30112   interrupt service thread (IST) latencies.
     139969 PID:400002 TID:4e30112
     139969 PID:400002 TID:4e30112   ISR latency measured is the time from the physical interrupt
     139970 PID:400002 TID:4e30112   asserting (timer wrap) to the start of the OEM ISR code.
     139970 PID:400002 TID:4e30112
     139970 PID:400002 TID:4e30112 -------------------------------------------------------------------
     139970 PID:400002 TID:4e30112   SYSTEM BUILD INFO
     139971 PID:400002 TID:4e30112
     139971 PID:400002 TID:4e30112   PLATFORM   = EVM3530
     139972 PID:400002 TID:4e30112   PROCESSOR  = ARMV7
     139972 PID:400002 TID:4e30112   CONFIG     = CEBASE
     139974 PID:400002 TID:4e30112   RET/DEBUG  = retail
     139975 PID:400002 TID:4e30112   BUILD DATE = Oct 19 2010 @ (16:24:24)
     139976 PID:400002 TID:4e30112 -------------------------------------------------------------------
     139976 PID:400002 TID:4e30112   COUNTER INFO
     139978 PID:400002 TID:4e30112
     139978 PID:400002 TID:4e30112   Counter Frequency     = 13000000 Hz
     139980 PID:400002 TID:4e30112   Counter tick interval = 76 ns
     139980 PID:400002 TID:4e30112 -------------------------------------------------------------------
     139982 PID:400002 TID:4e30112   RUNTIME OPTIONS
     139983 PID:400002 TID:4e30112
     139984 PID:400002 TID:4e30112   Timing interval      = 10
     139984 PID:400002 TID:4e30112   Number of interrupts = 100
     139986 PID:400002 TID:4e30112 ===================================================================
     139986 PID:400002 TID:4e30112 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     139988 PID:400002 TID:4e30112 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     139988 PID:400002 TID:4e30112
     139990 PID:400002 TID:4e30112
     140990 PID:400002 TID:4e30112 All times are in microseconds.

     140990 PID:400002 TID:4e30112 Summary:
     140990 PID:400002 TID:4e30112                     ISR starts   IST starts
     140990 PID:400002 TID:4e30112 min                        2.4          0.0
     140990 PID:400002 TID:4e30112 ave                        2.4          0.0
     140990 PID:400002 TID:4e30112 max                        2.7          0.1

     140990 PID:400002 TID:4e30112 Build,Platform,Processor,Project,Debug,Number of Interrupts,ISR Min,ISR Max,ISR Ave,IST Min,IST Max,IST Ave,Thread Priority,Idle Threads
     140990 PID:400002 TID:4e30112 1347,EVM3530,ARMV7,CEBASE,retail,100,2.4,2.7,2.4,0.0,0.1,0.0,0,0
     140990 PID:4eb0102 TID:4e30112 --ILTiming (Loader): Done!
     140992 PID:400002 TID:4590122 Exiting secondary ILTIMING process.
     140992 PID:5e8010a TID:4590122 --ILTiming (Loader): Done!

    ====>

    In Compact 7, ENABLE_OAL_ILTIMING variable has been removed, so I copied "iltiming.exe" and "iltiming_dll.dll" to \Windows directory. This is described in Microsoft's Compact 7 documentation. (BSP Porting Guide)

    Thank you for your big help.