Satori Geplaatst: 16 september 2003 Delen Geplaatst: 16 september 2003 Adressen van verschillende type Pioneers Het patchen van een Pioneer staat zeer goed beschreven door Sa1vad0r in de manuals/docs die bij Pionero bijgeleverd worden. Door voortschrijdend inzicht hebben we echter geleerd dat er meer mogelijkheden zijn om te patchen dan door Sa1vad0r beschreven zijn. Meestal zijn er dan ook wat randvoorwaarden. Programma om te flashen: Pionero 4.0 Final Op een rij: DBRS100/200/BCT14xx -[color:"white"]A[/color]Firmware: [color:"white"]AAAA[/color]Adres: 7FE0 0000 [color:"white"]AAAA[/color]Lengte: +/- 1.5 Mb [color:"white"]AAAA[/color]Methode: Parallel/serieel en Jtag -[color:"white"]A[/color]Kanalenlijst [color:"white"]AAAA[/color]Adres: 6000 0000 [color:"white"]AAAA[/color]Lengte: 320 - 512 kb [color:"white"]AAAA[/color]Methode: Parallel/serieel en Jtag -[color:"white"]A[/color]Eeprom [color:"white"]AAAA[/color]Methode: Serieel en Jtag DBRS110/210/BCT15xx -[color:"white"]A[/color]Firmware: [color:"white"]AAAA[/color]Lengte: +/- 1.5 Mb [color:"white"]AAAA[/color]Methode1: Jtag [color:"white"]AAAA[/color]Methode2: Parallel/serieel Beperking: Lengte van firmware moet precies 0x140002 = 1310722 bytes zijn -[color:"white"]A[/color]Kanalenlijst [color:"white"]AAAA[/color]Adres: 7FE0 0000 [color:"white"]AAAA[/color]Lengte: 320 - 512 kb [color:"white"]AAAA[/color]Methode: Jtag -[color:"white"]A[/color]Eeprom [color:"white"]AAAA[/color]Methode: Serieel en Jtag DBRS120/BCT16xx -[color:"white"]A[/color]Firmware: [color:"white"]AAAA[/color]Adres: 7FE0 0000 [color:"white"]AAAA[/color]Lengte: +/- 1.12 Mb Let op: Mag niet te groter zijn, anders wordt system loader overschreven [color:"white"]AAAA[/color]Methode: Parallel/serieel en Jtag -[color:"white"]A[/color]Kanalenlijst [color:"white"]AAAA[/color]Adres: 7FF8 0000 [color:"white"]AAAA[/color]Lengte: 320 - 480 kb Let op: Mag niet te groter zijn dan 480 kb, anders wordt boot-loader overschreven [color:"white"]AAAA[/color]Methode: Parallel/serieel en Jtag -[color:"white"]A[/color]Eeprom [color:"white"]AAAA[/color]Methode: Serieel en Jtag PS: Er is een speciale versie van Pionero die het kanalen adres kan selecteren in de parallel/serial sectie. DBRS300/400/BCT17xx Deze kan mbv jtag geflashd worden, maar er is geen jtag interface in de Pioneer. Je zult de draden van de interface los in de Pioneer moeten solderen. -[color:"white"]A[/color]Firmware: [color:"white"]AAAA[/color]dres: 7FE0 0000 [color:"white"]AAAA[/color]Lengte: +/- 1.12 Mb Let op: Mag niet te groter zijn, anders wordt system-loader overschreven [color:"white"]AAAA[/color]Methode: Jtag -[color:"white"]A[/color]Kanalenlijst [color:"white"]AAAA[/color]Adres: 7FF8 0000 [color:"white"]AAAA[/color]Lengte: 320 - 512 kb [color:"white"]AAAA[/color]Methode: Jtag -[color:"white"]A[/color]Eeprom [color:"white"]AAAA[/color]Methode: Jtag PS: Ik heb een speciale versie van Pionero gemaakt die de 300/400/17xx adressen kan selecteren in de jtag sectie. -------------------------------------------------------------------------------------------------------- Wetenswaardigheden -[color:"white"]A[/color]Het is bekend dat Pionero foutmeldingen geeft bij het parallel/serieel flashen van de kanalenlijst. Pionero is oorspronkelijk gemaakt om de firmware te flashen en toen bleek dat het mogelijk was om met een minimale aanpassing de kanalenlijst ook te laden, maar met de bekende foutmeldingen. Er verschijnt 2 a 3 keer de melding dat er iets opnieuw gestuurd moet worden en op het eind komt er de melding dat het laden van de 'firmware' mislukt is. -[color:"white"]A[/color]Als je de Pioneer patcht en het mislukt om de een of andere reden, dan krijg je soms de volgende melding in je display ‘Out of Order’ of ‘retrying’. Je hoeft je dan geen zorgen te maken. Dit is geen enkel probleem. De Pioneer staat nu automatisch in service mode en je kunt gewoon je nieuwe firmware laden. -[color:"white"]A[/color]Zender springt naar kanaal 1 als je op EPG drukt en het EPG kanaal is niet aanwezig -[color:"white"]A[/color]Soms lees je over een NoEPG eeprom en dan blijkt de EPG toch te werken. Dit komt omdat C+ een tijdje attacks gestuurd heeft via het EPG kanaal en maakte daarbij gebruik van de EPG methode in de Pioneer. De oplossing om dat te omzeilen bleek relatief simpel. In de eeprom zijn een aantal bytes die de bepalen of de EPG al dan niet aan staat. Deze byte is uitgezet. Om toch de EPG te kunnen uitlezen is vervolgens een stukje in de firmware aangepast, die deze functie overgenomen heeft. Daarom zie je soms de tekst: No EPG, toch EPG. -[color:"white"]A[/color]In de Dynamit versies zijn de EPG toetsen lang geleden gedefinieerd. Er is toen gekozen om de EPG en E toets functies te wisselen, omdat je dan met een hand de meeste handelingen kunt verrichten. En natuulijk waren er toen (en later) discussies over de keuze. De EPG waar we nu over praten is de EPG van de Seca providers. De EPG van oa premiere (Betacrypt) zat heel anders in elkaar en het is pas later gelukt om die toe te voegen. Omdat die Premiere EPG anders opgeroepen moest worden was een andere toets nodig en dat is de C toets geworden. Deze keuze is gemaakt toen we nog in de 400 serie zaten. -[color:"white"]A[/color]Uitlezen van de flashes kan alleen mbv een jtag interface -[color:"white"]A[/color]De kanalenlijst kan in een aantal verschillenden secties staan en dan moet de Pioneer weten waar de actuele staat. De verwijzing naar de sectie met de actieve kanalenlijst staat in eeprom. Om die reden moet je de kanalenlijst en eeprom altijd tegelijk geprogrammeerd worden. Soms heb je toch beeld als je alleen de kanalenlijst programmeert. De reden is simpel. De verwijzing stond toevallig naar de goede sectie. -[color:"white"]A[/color]Het programmeren van de flashes gaat niet zo simpel als gewoon geheugen. We kunnen van buiten af alleen maar de ‘1’ in een ‘0’ veranderen. Om die reden begint het programmeren via de jtag altijd met een erase block (of chip, maar dat is riskant). Zo’n erase block maakt van alle bitjes een ‘1’. Vervolgens kan Pionero dan de ‘1’ in een ‘0’ veranderen waar dat nodig is. -[color:"white"]A[/color]Als je bij het zoeken naar kanalen kiest voor Canal Digitaal dan zullen de C+ kanalen op 1 t/m .... staan en alle anderen zullen beginnen op 500. Deze laatste kun je dan in je eigen volgorde zetten, maar de C+ kanalen niet. Je kunt echter ook kiezen voor willekeurige volgorde. In dat geval kun je alle kanalen op elke willekeurige nummer/volgorde zetten. -[color:"white"]A[/color]Na het zoeken en sorteren moet je de Pioneer eerst even met de rode knop op je AB in standby mode zetten, want dan worden de wijzigingen ook echt in de Pioneer vastgelegd. Doe je dat niet en je gebruikt de schakelaar op je Pioneer eerst, dan ben je al je wijzigingen kwijt. -------------------------------------------------------------------------------------------------------- Flashen 100/200/BCT14xx via parallel/serieel PC -[color:"white"]A[/color]De seriële staat op een baud rate van 9600 baud of meer (control panel) -[color:"white"]A[/color]De parallelle port is in ECP mode in de BIOS -[color:"white"]A[/color]Programma Pionero 4 Final -[color:"white"]A[/color]Parallelle male-male(1 op 1)en seriële kabel male-female (1 op 1) (geen 0-modem kabel) -[color:"white"]A[/color]Besturingssysteem windows ME of 98 of XP Stappen: -[color:"white"]A[/color]Haal de 220 V van de deco (met schakelaar) -[color:"white"]A[/color]Sluit deco aan op pc -[color:"white"]A[/color]Stroom blijft van de deco -[color:"white"]A[/color]Zet k2002 (dit is een pennetje of een groot soldeerpunt ongeveer op de helft van het board) op aarde. Zet hierna de Pioneer aan. Er verschijnt DL1o in de display. -[color:"white"]A[/color]Je kunt nu de aarde van k2002 halen -[color:"white"]A[/color]Start pionero 4.0 final -[color:"white"]A[/color]Binnen pionero kies je "Firmware (parallel + Serial)" en kies "DL K2002" met het volgende adres: [color:"white"]AAAA[/color]- 100/200 en 120: adres 7FE00000 [color:"white"]AAAA[/color]- 110/210: adres 60000000 -[color:"white"]A[/color]Zet een vinkje voor fase 1 en 2 -[color:"white"]A[/color]Klik op ‘verzenden’ en kies firmware bijv: pioneer. bin (1.152 kb voor 120) De display verandert in een knipperende DL2. Er verschjnt na het laden een boodschap dat je een minuut moet wachten. Hierna komt de melding dat alles gelukt is en staat er een vaste DL2 in de display. -[color:"white"]A[/color]Zet nu de Pioneer uit en aan met de schakelaar. KANALENLIJST (NIET voor 110/210) -[color:"white"]A[/color]De Pioneer staat in standby mode. [color:"white"]AAAA[/color]- 100/200: Zet pinnetje k6003 (rechts op het board) [color:"white"]AAAA[/color]- 120: zet soldeerpunt k7003 (rechts op het board, klein gaatje met bruine bescherming er omheen) op aarde en zet de deco in actieve mode (met ab) -[color:"white"]A[/color]Hierna kun je de aarde van k6003 of k7003 halen -[color:"white"]A[/color]Start pionero 4.0 final -[color:"white"]A[/color]Binnen pionero kies je "Firmware (parallel + Serial)" en kies "FL K7003" met het volgende adres: [color:"white"]AAAA[/color]- 100/200: adres 60000000 [color:"white"]AAAA[/color]- 120: adres 7FF80000 -[color:"white"]A[/color]Zet vinkje voor fase 1 en 2 UIT -[color:"white"]A[/color]Klik op ‘verzenden’ en kies de kanalenlijst (LET OP: Voor de 120 mag deze maximaal 480 kB zijn en niet groter want dan wordt de bootloader overschreven!!) -[color:"white"]A[/color]Pionero geeft een foutmelding over de verandering van de kanalenlijst maar dit maakt niet uit. -[color:"white"]A[/color]Zet de Pioneer uit en aan EEPROM -[color:"white"]A[/color]De Pioneer staat in standby mode. -[color:"white"]A[/color]Zet nu k6003 of k7003 (dit is het stukje soldeer ongeveer op de helft van het board) op aarde -[color:"white"]A[/color]Start de Pioneer op vanuit standby naar actieve mode -[color:"white"]A[/color]Haal daarna k6002 of k7003 van aarde -[color:"white"]A[/color]Ga in pionero naar het tabblad EEPROM -[color:"white"]A[/color]Kies openen bestand en kies van de ‘eeprom.txt’ of ‘eeprom.bin’ -[color:"white"]A[/color]Lengte ‘de gehele eeprom’ -[color:"white"]A[/color]Klik hierna op ‘verzenden’ -[color:"white"]A[/color]Nadat pionero aangeeft klaar te zijn de deco uitzetten en afkoppelen. PS: Je kunt voor de eeprom de Pioneer ook in service mode 1 zetten. (k2002 aan aarde). -------------------------------------------------------------------------------------------------------- Gebruiksaanwijzing om BCT16=DBRS120 weer tot leven te wekken als bootloader overschreven is Start programma 'jtag_chk' 0. (Optioneel) Selecteer 'DCU registers' Klik 'Start' om DCU monitor te starten Klik 'kleine groene toets' vlakbij het Control veld om DCU Control register dialoog te openen Aanvinken: bits 25 en 31 Klik 'Send' Klik 'Stop' toets om monitor te stoppen 1. Selecteer 'Miscellaneous' Klik 'Init from file' -[color:"white"]A[/color]selecteer je Pioneer model (BCT16) Klik 'Init from file' -[color:"white"]A[/color]selecteer 'Clear Traps' 2. Selecteer 'DCU monitor' Klik 'Start' -[color:"white"]A[/color]Als vinkjes voor 25 en 31 weg zijn, opnieuw aanvinken Klik 'Stop' 3. Selecteer 'Hardware Config' Klik 'Trap routine address' -[color:"white"]A[/color]selecteer (of vul in) het address 40000000 4. Selecteer 'Hardware Config' Bij trap routine parameters -[color:"white"]A[/color]Vink aan: 'Priority - High' -[color:"white"]A[/color]Vink aan: 'Group of traps - BreakPoint' Klik 'load trap routine' -[color:"white"]A[/color]Selecteer de gewenste trap handler (fl4_dblchk.bin) Klik 'Install Traps' Klik 'Take trap' 5. Selecteer 'DCU monitor' Klik 'Start' -[color:"white"]A[/color]Bekijk de DCU monitor: Als Control=60000, dan is alles ok Klik 'Stop' 6. Selecteer 'Harware Config' Klik 'Verify trap handler' 7. Selecteer 'Flash programming' Klik 'Clear Chip' Selecteer 'Write from file' 7FE0 0000 (lengte van de file moet zijn: 200.000 = 2Mb). 8. Wachten tot programma gereed is. That's all -------------------------------------------------------------------------------------------------------- EPG checksum berekening De EPG checksum berekening wordt steeds minder belangrijk nu de nieuwe firmware releases dit zelf regelen, maar ik kreeg een vraag via mail en toen ik het antwoord aan het uitschrijven was, dacht ik dat het wel aardig was om het nogmaals te posten. Berekening: Oude checksum = PP QQ Nieuwe checksum = XX YY XX = [8 bytes van oude EPG] ^ [8 bytes van nieuwe EPG] ^ [Eerste byte oude checksum] YY = 0xFF - XX Het ^ staat voor 'exclusieve of' functie. Zo'n functie werkt op bit niveau: In een waarheidstabel: b a | Q -----|-- 0 0 | 0 0 1 | 1 1 0 | 1 1 1 | 0 (Voor degene die thuis een wissel - of hotel schakeling hebben moet dit bekend voorkomen) Wij werken op hex niveau. Dat lijkt anders, maar is een verkorte schrijfwijze voor de bitjes. De hiernavolgende 2 rijen zijn hetzelfde, maar anders weergegeven 00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111 0x01 0x23 0x45 0x67 0x89 0xAB 0xCD 0xEF Ik heb expres 8 bytes gebruikt (de lengte van een key) om aan te geven dat daar dus 8*8 = 64 bitjes in zitten. Terug naar de xor Als ik nu de eerste 2 getallen hierboven xor dan gaat dat als volgt getal_1: 11001101 0xCD getal_2: 11101111 0xEF ----------: ------------ ------- Xor [color:"white"]AAA[/color]: 00100010 0x22 De 2 kolommen in bitjes of hex doen dus hetzelfde. -[color:"white"]A[/color]Als we een getal met zichzelf xor_ren komt er 0x00 uit (probeer maar) -[color:"white"]A[/color]Als we een getal met 0x00 xor_ren komt er hetzelfde getal weer uit. Deze 2 rekenregels samen betekenen dat we vij een berekening altijd alle 0x00 er uit kunnen strepen We hoeven de berekening niet met de hand te doen. We kunnen de standaard calculator die bij Windows zit gebruiken. We kiezen voor scientific mode. Vervolgens vinken we HEX aan. Als we de V5 eeprom die ooit gedistribueerd is als uitgangspunt nemen vinden we als oude EPG vanaf 0xDE: 0x3B 0x00 0x00 0x00 0x60 0x00 0x00 0x00 met als checksum 0x88 0x77 In de nieuwe EPG willen we alle EPG bitjes op 0x00 hebben 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Dus XX = 0x3B ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x60 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x00 ^ 0x88 Ten behoeve van onze berekening vallen alle 0x00 weg (Volgens de rekenregels die ik eerder beschreven heb) We houden over: XX = 0x3B ^ 0x60 ^ 0x88 Berekening: 0x3B = 00111011 0x60 = 01100000 ----------------------[color:"white"]AA[/color]Xor Xor[color:"white"]AAA[/color]01011011 = 0x5B 0x88 = 10001000 ----------------------[color:"white"]AA[/color]Xor Xor[color:"white"]AAA[/color]11010011 = 0xD3 Dus XX = 0xD3 ZZ = 0xFF - 0xD3 = 0x2C En dus wordt de nieuwe checksum 0xD3 0x2C Succes met narekenen -------------------------------------------------------------------------------------------------------- Testen jtag interface Even het basisprincipe: Er gaan 4 signalen van de PC richting Pioneer Er gaat 1 signaal van de Pioneer richting PC In principe werkt de PC-kant met 5 Volt en de Pioneer kant met 3.3 Volt. Soms meet je op de interface aan de Pioneer kant toch 5 Volt, als er niets aangesloten is, maar dan zal deze bij belasting toch naar 3.3 V gaan. De electronica die er tussen zit doet niets anders dan 1) Bij 4 signalen de 5 V aan de PC-kant terugbrengen naar 3.3 Volt (belast) aan de Pioneer kant. 2) Bij 1 signaal de 3.3 Volt aan de Pioneer kant omzetten naar 5V (en soms alleen maar doorgeven.) De genoemde connectorpennen zijn allemaal aansluitingen op de interface!!! PC_x is de PC-kant van de interface Pio_x is de Pioneer kant van de interface De 4 signalen van PC naar Pioneer PC_2 --> Pio_9 PC_3 --> Pio_11 PC_4 --> Pio_13 PC_5 --> Pio_19 Het ene signaal van Pioneer naar PC Pio_15 --> PC_13 De pijl geeft de richting aan met een spanningsomzetter. Interface testen: PC --> Pioneer Zet op PC_2 0 Volt, dan moet op Pio_9 ook 0 Volt staan Zet op PC_2 5 Volt, dan moet op Pio_9 3.3 tot 5 Volt staan Zet op PC_3 0 Volt, dan moet op Pio_11 ook 0 Volt staan Zet op PC_3 5 Volt, dan moet op Pio_11 3.3 tot 5 Volt staan Zet op PC_4 0 Volt, dan moet op Pio_13 ook 0 Volt staan Zet op PC_4 5 Volt, dan moet op Pio_13 3.3 tot 5 Volt staan Zet op PC_5 0 Volt, dan moet op Pio_19 ook 0 Volt staan Zet op PC_5 5 Volt, dan moet op Pio_19 3.3 tot 5 Volt staan Pioneer --> PC Zet op Pio_15 0 Volt, dan moet op PC_13 ook 0 Volt staan Zet op Pio_15 3.3 Volt, dan moet op PC_13 3.3 tot 5 Volt staan -------------------------------------------------------------------------------------------------------- Veel Pioneer plezier, Satori Link naar reactie Delen op andere sites Meer opties om te delen...
Aanbevolen berichten