The problem with skyeye and csb337

xi yang hiyangxi at gmail.com
Fri Jun 15 19:28:35 UTC 2007


hi all:
  Today i try to resolve the problem of csb337 with skyeye,although i have not
got it ,but i got some progresses and i think i have known why the
ticker program can
not run with skyeye.
  Problems with skyeye.
  1)At91rm92 of skyeye has not implemented AIC completely.
      1st.It has not implemented the 32 source vector registers.
      2ed.When read the AIC_IVR,return the current interrupt number but not
            the address of interrupt handler in Source vector registers .
            I don't know why you guys implement it like this ,but in
at91rm9200 manual
            wirte "The interrupt vector registers contains the vector
porgrammed by
                     the user in the Source Vector Register corresponding to the
                     current interrupt."
           I guess linux does not use AIC's vector table to manage the
interrupt,so linux can
           works well with this way,but in real hardware,read AIC_IVR
return the
           address of handler,and csb337 use AIC's source vector registers.
           So i rewrite this part and i am going to wirte a completed AIC .
     3rd.When wirte the AIC_EOICR,skyeye uses the data which be writen to this
           register to unset the interrupt pending register.But manual
write like this
           "The end of interrupt command register is used by the
interrupt routine
             to indicate that the interrupt treatment is complete.Any
value can be
             Written because it is only necessary to make a write to
this register
             location to signal the end of interrupt treatment."
    4rd. Sky eye has not implemented interrupt prioriy of AIC and the interrupt
          nesting stacks,but without these tow features RTEMS also can run well
          with skyey.
    5rd.In at91rm92.h there are a lot of macro like
          #define SOMETHING BASE+offset without
         the brackets(BASE+offset),I think this is dangerous.
     So i want to rewrite the at91rm9200 of skyeye .Kang shuo do you agree with
        me?
 2)Problems with Rtems.
     In the initialization process.
       1st.It seems that after executed
Clock_driver_support_initialize_hardware(void)
          Rtems has not enable the interrupt of clock
         (ST_REG(ST_IER) =ST_SP_PITS)

       2ed.It seems that after disabled all the interrupt sources and
install the
             default_int_handler() at all 32 interrupt source vector
registers,rtems
             has not enabled the SYS interrupt source(number 1) of AIC
and also  has
             not installed the CLOCK interrupt handler(I guss rtems
use  interrupt
             managers to manage the interrupt of 32 lines.Because
there are more
             than one devices use the same line,for example,system
clock and DBGU
             use the same SYS interrupt source),but i can not find
where is the SYS
             interrupt source manger,who can tell me?
             Since the interrupt of SYS is disable ,there is not any
clock interupt can be
             delivered to CPU ,without the clock interrupt,the system
is hang in idl
             task.
             So i enable the interrupt of clock and SYS interrupt
source of AIC.Since
             default_int_handler() is still in all 32 interrupt source
vector registers ,at
             every clock interrupt ,the system traps into default_int_handler();
              So,there are
            " raw_idt_notify has been called
             1
              raw_idt_notify has been called
              2
              ..." on my screen.
      Q1,Where is the code installs SYS interrupt handler?
      Q2,Where is the code enables the interrupt of clock device and AIC?
      I think code of Q1 contains code of Q2,and some unkonw reasons result in
         system has not executed the code of Q1.



More information about the users mailing list