[U-Boot-Users] Decrementer timer do not works

Hi, My hardware environment: MPC7447A + MV64460, and I ported u-boot from board Db64460, now everything seems OK but the timer can't work as expected. Exception hanlder was installed in start.S: STD_EXCEPTION(0x900, Decrementer, timer_interrupt) I do not modify this code. But get_timer always return 0. I check the global parameter: timestamp. It always been 0 after set_timer(0); It seems that the timer_interrupt handler does not been called. But if I added a print in this hanlder, system will crash after interrupt_init. What's the possible problem? Thanks. wyu

I don't have the data sheet in front of me at the moment, but I seem to recall that the 7447 has a hardware pin which must be strapped properly to enable the decrementer. U-Boot assumes the hardware is configured this way. Without the proper pull up or down resistor, the decrementer just does not run.
--Brad

I think Decrementer runs because every time I read the DEC register (SPR 22), different value returned. In the timer_interrupt, set_dec(decrementer_count) was called to reload the value of DEC register. I also tried to change decrementer_count value to 100, and then the value of DEC register I read out will always smaller than 100 (I tried many times). if I mask the call of set_dec in timer_interrupt, then I can read out big values (such as 0xFxxxxxxx, 0xExxxxxxx) for the DEC register. From this test, I guess the timer_interrupt was called after the exception generated. But the value of timestamp always be 0. It's hard to believe since in timer_interrupt, after calling set_dec, timestamp++ should be excuted.
On 11/14/05, bbosch@iphase.com bbosch@iphase.com wrote:
I don't have the data sheet in front of me at the moment, but I seem to recall that the 7447 has a hardware pin which must be strapped properly to enable the decrementer. U-Boot assumes the hardware is configured this way. Without the proper pull up or down resistor, the decrementer just does not run.
--Brad
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users

Hi, At what condition MPC7447A will generate Decrementer exception? From the user manual, I just found two conditions: value in DEC register reach to 0 (at next cycle, it will be 0xFFFFFFFF, e.g. the MSB will change from 0 to 1), and MSR[EE] (bit 16) should be 1. All these two conditions are there, but I can't see the decrementer exception run. I cleaned memory section 0x900 ~ 0xa00 to all zeros and erase flash section 0xFFF00000 ~ 0xFFFFFFFF to all 0xFFs. MSR = 0xa030 (MSR[EE] = 1). Nothing happened, shell still there and commands can work as usrual. Even I set DEC register to 0 in the shell, still can't crash CPU. Following are data in 0x900: 00000900: 7e9043a6 7eb143a6 7e800026 3aa1ff00 ~.C.~.C.~..&:... 00000910: 929500a8 92d50068 92f5006c 7e9042a6 .......h...l~.B. 00000920: 92950060 7ed142a6 92d50064 7e8802a6 ...`~.B....d~... 00000930: 929500a0 7ec902a6 92d5009c 7e8102a6 ....~.......~... 00000940: 929500a4 7eda02a6 7efb02a6 90150010 ....~...~....... 00000950: 90350014 90550018 90350000 7ea1ab78 .5...U...5..~..x 00000960: 9075001c 90950020 90b50024 90d50028 .u..... ...$...( 00000970: 806e8014 7c6803a6 38610010 3a801002 .n..|h..8a..:... 00000980: 52f40672 4e800021 00fcf4dc 00fbb2a8 R..rN..!........ and the data in 0x988 is the ISR function pointer. I can use go command to run this ISR (go 0xFCF4DC), and ISR runs as what I want. following are data in 0xFFF00900: fff00900: 7e9043a6 7eb143a6 7e800026 3aa1ff00 ~.C.~.C.~..&:... fff00910: 929500a8 92d50068 92f5006c 7e9042a6 .......h...l~.B. fff00920: 92950060 7ed142a6 92d50064 7e8802a6 ...`~.B....d~... fff00930: 929500a0 7ec902a6 92d5009c 7e8102a6 ....~.......~... fff00940: 929500a4 7eda02a6 7efb02a6 90150010 ....~...~....... fff00950: 90350014 90550018 90350000 7ea1ab78 .5...U...5..~..x fff00960: 9075001c 90950020 90b50024 90d50028 .u..... ...$...( fff00970: 806e8014 7c6803a6 38610010 3a801002 .n..|h..8a..:... fff00980: 52f40672 4e800021 000164dc 000022a8 R..rN..!..d...". same as data in 0x900, except 0x988 and 0x98c. seems right. What else can I do? wyu
On 11/14/05, Yu Weiping wyu120@gmail.com wrote:
I think Decrementer runs because every time I read the DEC register (SPR 22), different value returned. In the timer_interrupt, set_dec(decrementer_count) was called to reload the value of DEC register. I also tried to change decrementer_count value to 100, and then the value of DEC register I read out will always smaller than 100 (I tried many times). if I mask the call of set_dec in timer_interrupt, then I can read out big values (such as 0xFxxxxxxx, 0xExxxxxxx) for the DEC register. From this test, I guess the timer_interrupt was called after the exception generated. But the value of timestamp always be 0. It's hard to believe since in timer_interrupt, after calling set_dec, timestamp++ should be excuted.
On 11/14/05, bbosch@iphase.com bbosch@iphase.com wrote:
I don't have the data sheet in front of me at the moment, but I seem to recall that the 7447 has a hardware pin which must be strapped properly to enable the decrementer. U-Boot assumes the hardware is configured this way. Without the proper pull up or down resistor, the decrementer just does not run.
--Brad
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users
participants (2)
-
bbosch@iphase.com
-
Yu Weiping