[elektro] PIC32 Helix MP3 project.
flaist
flaist at gmail.com
Sat Oct 27 23:25:32 CEST 2012
Szia!
Igen a baj az, hogy a shadow nem menti az osztás HI / LO regisztereit.
Ez tán logikus is, mert az osztás több CPU ciklusos ... ??? !!!
De a compiler hibát az is jelzi, ha berakok az ISR rutinba egy kamu függvény hívást. amit a compiler már nem követ, hogy milyen regiszterek változnak,
akkor már menti az ISR a fenti regisztereket.
Itt az a baj, hogy túl okos a compiler!!!!
Hasonló probléma volt kb. 1/2 éve amikor a sima nem SRS-es (nem shadow) ISR rutin az osztó HI/LO regisztereket hibásan mentette.
Szerencsére akkor, a 2.02 verzióban javították ezt a bajt.
Fixed in v2.02
C32-507:
The compiler now generates Interrupt Service Routine code that uses registers $v0/$v1 to save the HI/LO accumulator pair.
Akkor azért ez a probléma kb. 3-4 hétbe került.
Most már csak 2-3 nap.
Mára már kezdem fogni a MISP asm-t.
Anno kb. 3 éve kérdeztem a listán kell-e valami tudás a PIC32 használathoz.
Azt írták többen, hogy elég a "C".
Na ja:
LED villogtatás, és Hello World kiíratáshoz.
Itt látszik az ISR rtutin vége , ha kikommentezem a Kamu_fuggveny(); -t, akkor nem kezeli a HI / LO regisztereket.
0x9D010414: MTLO V0
0x9D010418: MTHI V1
A teljes ISR rutin vége:
!/************ nincs lejátszás ******************/
! default:
! // Kamu_fuggveny();
! w_tmp=x3;
! break;
! }// END switch (IT_PWM_Out_Tipus)
! //.......................
! mT2ClearIntFlag();
0x9D010774: ADDIU V0, ZERO, 256
0x9D010778: SW V0, 4148(A1)
!}
0x9D01077C: DI ZERO
0x9D010780: EHB
0x9D010784: LW K1, 4(SP)
0x9D010788: LW K0, 12(SP)
0x9D01078C: MTC0 K1, SRSCtl
0x9D010790: LW K1, 8(SP)
0x9D010794: MTC0 K0, EPC
0x9D010798: ADDIU SP, SP, 16
0x9D01079C: WRPGPR SP, SP
0x9D0107A0: MTC0 K1, Status
0x9D0107A4: ERET
!/************ nincs lejátszás ******************/
! default:
! Kamu_fuggveny();
0x9D0103FC: JAL Kamu_fuggveny
0x9D010400: NOP
! w_tmp=x3;
! break;
! }// END switch (IT_PWM_Out_Tipus)
! //.......................
! mT2ClearIntFlag();
0x9D010404: ADDIU V0, ZERO, 256
0x9D010408: SW V0, 4148(S0)
!}
0x9D01040C: LW V0, 20(SP)
0x9D010410: LW V1, 16(SP)
0x9D010414: MTLO V0
0x9D010418: MTHI V1
0x9D01041C: DI ZERO
0x9D010420: EHB
0x9D010424: LW K1, 28(SP)
0x9D010428: LW K0, 36(SP)
0x9D01042C: MTC0 K1, SRSCtl
0x9D010430: LW K1, 32(SP)
0x9D010434: MTC0 K0, EPC
0x9D010438: ADDIU SP, SP, 40
0x9D01043C: WRPGPR SP, SP
0x9D010440: MTC0 K1, Status
0x9D010444: ERET
-----Original Message-----
From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On Behalf Of Arnold Fuzesi
Sent: Saturday, October 27, 2012 10:08 AM
To: elektro at tesla.hu
Subject: Re: [elektro] PIC32 Helix MP3 project.
Tuti compiler hiba?
Nem ismerem a pic32-t nagyon (osszedobtam egy termosztatot belole, es ennyi), de ugy kepzelem a shadow tamogatas hw-es, maskepp nem latom hol lenne praktikus. Hw pedig lehet nem tamogatja az oszto regiszterek shadow-zasat, vagy konfigolas kerdese. Avagy ha shadowzol akkor nem menti amit a hw nem tamogat shadow temaban, es az oszto ezert maradt mentes nelkul.
Logikus lenne sztem.
(Compiler hibat eleg ritkan latok. Nagyon ritkan. )
Gyors Google alapjan hw-es a mentes:
The PIC32 processor implements a copy of the General Purpose Registers (GPR) for use by high-priority interrupts. This extra bank of registers is known as a shadow register set. When a high-priority interrupt occurs the processor automatically switches to the shadow register set without software intervention. This reduces overhead in the interrupt handler and reduces effective latency.
The shadow register set is controlled by registers located in the System Coprocessor (CP0) as well as the interrupt controller hardware located outside of the CPU core.
For more information on shadow register sets, see Section 8. “Interrupts” (DS61108).
Arnold
Sent from my iPhone
On 2012.10.27., at 9:30, "flaist" <flaist at gmail.com> wrote:
> Na igen, megint egy compiler hiba!
> Az IPL7SRS shadow módban nem menti az osztó HI / LO regisztereket az ISR.
> És ezek nem mentődnek a shadow regiszter blokkba sem.
> Én meg pechemre osztok az IT rutinban.
> Ahogy elnézem javítás sincs még a dologra.
> Be kell tenni egy kamu függvény hívást az ISR-be, akkor menti ezt a két regisztert is.
>
>
>
> -----Original Message-----
> From: I F [mailto:flaist at gmail.com]
> Sent: Friday, October 26, 2012 6:18 PM
> To: elektro at tesla.hu
> Cc: elektronika, uC, dsp, wlan, programozas
> Subject: PIC32 Helix MP3 project.
>
> Sziasztok!
>
> Próbálom a Microchip PIC32 Helix MP3 projectet.
> Ez egy PIC32-re portolt MP3 dekóder szoftver.
> A dolog működik is !!!!!
> De lett egy bajom.
> Az IPL7-es IT rutint shadow módban (IPL7SRS) kell használnom (itt csak átkapcsol az IT rutin a shadow regiszterekre, a gyorsabb futás miatt), de ilyenkor elhasal az MP3 sw.
> Ha vissza kapcsolom az IT rutint IPL7SOFT módba akkor nincs hiba (ilyenkor minden regisztert egyesével ment az IT rutin).
>
> Lehetséges, hogy az MP3 rutinok használják a shadow regisztereket.
> Vagy valami más baj van?
>
> Köszi, üdv István
>
> -----------------------------------------
> elektro[-flame|-etc]
-----------------------------------------
elektro[-flame|-etc]
More information about the Elektro
mailing list