Ga naar inhoud


[Cam Algemeen] CAM/card programmeren for dummies


Gast

Aanbevolen berichten

Dr.Galaxis,

 

Kijk, dat is wat ik bedoel!! <img src="/ubbthreads/images/graemlins/xyxthumbs.gif" alt="" /> <img src="/ubbthreads/images/graemlins/xyxthumbs.gif" alt="" /> <img src="/ubbthreads/images/graemlins/xyxthumbs.gif" alt="" />

 

Zelf ben ik nu nog maar net bezig met de bestudering van de werking van de smartcards, maar voor zover ik kan zien zal dit lopen als een trein!

 

Bedankt voor je bijdrage!!

Link naar reactie
Delen op andere sites


Ben eens gaan snuffelen in je document. Ik heb ook alvast een tipje van de sluier van de Xilinx chip weten op te lichten: Het lijkt een soort VLSI chip (dat helpt, maar geen nood, lees even verder...)

 

De chip heeft van zichzelf geen enkele functie. Net als een processor moet je 'm uitleggen wat de bedoeling is, en dan kun je hem voor allerlei taken inzetten. In tegenstelling tot een processor heeft de xilinx geen (vaste) instructies, registers enzo. De xilinx moet je namelijk 'programmeren' door er "poorten" (gates) in te definieren. De chip is eigenlijk een soort experimenteerbordje, je kunt 'm van alles laten worden. Op het bordje zitten wat standaard componenten. De draadjes tussen deze componenten mag je zelf aanleggen (via de JTAG interface om 'm te 'programmeren'), en zo kun je in de chip zelf een specifieke bewerking stoppen.

 

Een functie als 'f(x) = x ^ (x << 4) ^ (x >> 2)' is in C best complex, maar stelt in poortlogica niks voor (2 XOR poorten en wat draadjes). Zo'n setje gates kan alle bewerkingen namelijk parallel uitvoeren, zodat de uitkomst bijna meteen beschikbaar is (dat is die 5ns, het kan maximaal 5 nanoseconden duren voordat de uitkomst er is).

 

Ik denk dat ze de chip gebruiken voor het snel kunnen uitvoeren van bepaalde bewerking. Gokje: descramblen van telkens een byte (of word) van de stream met een gegeven codeword. Je stuurt het codeword naar de chip (60 bits -> 8 bytes), vervolgens telkens een byte van de datastream. Als output krijg je dan de gedescrambelde data. Ik denk eerder dat een deel van de bewerking in de xilinx gebeurt, en een deel in de ARM processor.

Link naar reactie
Delen op andere sites

"VLSI" moet "VHDL" zijn (mijn afkortingen door elkaar gehaald <img src="/ubbthreads/images/graemlins/dogeyes.gif" alt="" />)

 

Na wat spitten in de literatuur denk ik dat de Xilinx alleen maar gebruikt wordt als (goedkope) I2C bus controller, waarschijnlijk om de philips cardreader chip aan te sturen via een I2C interface.

Link naar reactie
Delen op andere sites

Wat heb ik trouwens nodig als ik actiever mee wil helpen?

 

Een UCAS module (MM, MR, MV: zijn die allemaal een pot nat of zijn er nog hardware verschillen?) natuurlijk.

 

Heb ik perse een CAS2 nodig om 'm te programmeren, of kan ik dat ook met funkaartjes? (heb wel een infinity writer, vandaar) Met de 'gewone' MR kan dat wel, maar geldt dat ook voor onze 'eigen' firmware?

 

Volgens mij kan ik wel een funkaartje programmeren om als logger te dienen (inkomende data naar flash laten schrijven).

 

M'n tuner staat nogal ver van de PC af, vandaar. En m'n laptop is vorig jaar overleden <img src="/ubbthreads/images/graemlins/frown.gif" alt="" />

Link naar reactie
Delen op andere sites

You need access to the JTAG on the Modul, CAS CAS2 or Clanzers Board 4.1, if someone have progged a bootloader you can also use a CArd, Magic Programmer N-Progger PCMCIA, depends on the Software which is written.

Link naar reactie
Delen op andere sites

@Milo,

 

Over de Xilinx. Ik heb van Cammy begrepen dat het is zoals Dr.Galaxis ook zegt, dat de Xilinx de besturing van de transportstream verzorgt tussen de pcmcia interface en de processor. Zelf weet ik er verder te weinig (zeg maar niks <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />) vanaf.. Jij bent duidelijk meer thuis in hardware, dus misschien dat jij er wat verder in kan komen.

 

Over wat je nodig hebt, ik denk dat dat ook zo is als Dr.Galaxis zegt. Het resultaat van je programmeerwerk is namelijk gewoon een bin file, net als de MRV219, MR11zoveel, etc. Alles waarmee je een bin file op de cam kunt rossen zal dus volstaan. De procedure is exact hetzelfde, alleen de inhoud van de bin is natuurlijk anders.

 

Alleen als je je firmware erop erop hebt gezet, zou je natuurlijk zelf voor zo'n card update moeten zorgen. RichardF vertelde toen hier op sat4all dat in zijn multiemu die optie niet zat omdat hij (nog) niet wist hoe je vanuit je emu de flash kon beschrijven. Hoewel ik daar wel wat documentatie over heb gezien zal dat dus best wel een uitzoekklusje zijn. Iets als een Cas is dus gewoon een makkelijke oplossing...

 

Als je met die spullen van mij aan de slag gaat, heb je in ieder geval een sidsa gebaseerde cam nodig zoals de magic, matrix, etc. Dit omdat het a) is gecompileerd voor een ARM7 processor en B) omdat er sidsa routines in worden aangeroepen. Natuurlijk zou het ook voor andere UCAS cams kunnen worden aangepast, maar dan moet je daar wel een SDK (compiler, linker, etc.) en een library voor hebben (voor de descramble routines, smartcard routines, etc.). Of je moet die allemaal ook zelf willen schrijven <img src="/ubbthreads/images/graemlins/grin.gif" alt="" />.

 

Zo'n proggie voor logging op een smartcard zou wel handig zijn. Wat ik nu doe is een season in de CAM stoppen, zonder smartcard. Vervolgens schrijf ik in de firmware de logdata naar de smartcard interface, en onderschep dat via de season op een notebook met het programma realterm. Als je zo'n smartcard logprogramma zou maken, dan heb je in ieder geval geen season nodig. Een voorbeeld van wat je dan zou kunnen loggen vind je in appendix 6 van het document. Die data schrijf ik, zoals je in de code ziet, gewoon naar de smartcard interface. Je bepaalt dus zelf in je firmware wat er op de smartcard komt. Handig voor de waarden van variabelen, e.d.

 

Nou succes ermee!! <img src="/ubbthreads/images/graemlins/xyxthumbs.gif" alt="" />

Hermanator

Link naar reactie
Delen op andere sites

My "educated guess" about the xilinx function (asked a colleague here and he also confirmed it to be a VHDL chip) is that it regulates the in/out data. Usually this type of chip is used as a bus controller.

 

Since this is a programmable multipurpose chip, there's no way to be sure about what it's really doing there until you have its VHDL source code that was programmed into it.

 

In this case, I think the xilinx takes care of data routing - when the card isn't processing the stream, the xilinx just directly forwards the data from transportstream input to output. When the card is activated throught the command interface, the xilinx forwards data to/from the chips, translating the transportstream interface into something that the other chips can understand (possibly I2C, a sort of PCI bus for embedded devices, but anything goes).

 

Probably its contribution to the CAM is that it makes it cheaper than a dedicated chip would (these VHDL chips usually cost around $1, even in small quantities).

 

Bottom line: I don't think anything is to gain by reprogramming it.

Link naar reactie
Delen op andere sites

  • 2 weken later...
Citaat:
@Milo,
Als je met die spullen van mij aan de slag gaat, heb je in ieder geval een sidsa gebaseerde cam nodig zoals de magic, matrix, etc.
[...]
Zo'n proggie voor logging op een smartcard zou wel handig zijn. Wat ik nu doe is een season in de CAM stoppen, zonder smartcard. Vervolgens schrijf ik in de firmware de logdata naar de smartcard interface, en onderschep dat via de season op een notebook met het programma realterm.

Nou succes ermee!! <img src="/ubbthreads/images/graemlins/xyxthumbs.gif" alt="" />
Hermanator


Nou...

Ik heb dus de spullen binnen (cas2/season) en ook de ontwikkel omgeving.
Ik heb de sourcecode zelf gecompileerd en na enkele waarschuwingen heb ik een .bin file. Deze stap is dus gelukt.
Toen de cas2 interface gebruiken. Het is de eerste keer dus altijd spannend... Eerst de cam leegmaken, daarna de bin-file schrijven. Zou de cam het nu overleefd hebben?
De cam in de ontvanger gestopt, en nu maar wachten. De cam initialiseert en... hij meldt zich als eva_02 !!!
Ik kan in de menus van de cam komen en het werkt dus !!!

De season interface heb ik echter niet aan de gang gekregen. Ik moet nog even kijken of de cam-software altijd logmeldingen naar buiten stuurt, maar de eerste experimenten hebben niets opgeleverd.

Nu moet ik wel zeggen dat ik ook voor het eerst met zo'n season interface werk, ik dus ook niet weet wat die jumper doet, ik een laptop gebruik om aan de season interface te koppelen, er geen seriele poort op de laptop zit, ik een kabel gekocht heb om van usb->serieel te gaan, en.. het lijkt mij duidelijk dat er nogal wat mis kan gaan. Ik moet dus eigenlijk een normale pc met seriele poort gebruiken om te controleren of die season interface uberhaupt werkt.

In elk geval is het experiment om een cam te programmeren gelukt. Ik heb nu een zelf gecompileerd programma in de cam zitten die ook nog wat doet. De volgende stap (na het werkend krijgen van de season interface) is natuurlijk eens wat extra code toe te voegen.

Ik wil Hermanator in elk geval bedanken voor de inspanning om het geheel uit te zoeken en ook iets werkends te maken. <img src="/ubbthreads/images/graemlins/xyxthumbs.gif" alt="" />
Link naar reactie
Delen op andere sites

@Dessie,

 

<img src="/ubbthreads/images/graemlins/xyxthumbs.gif" alt="" /> Leuk dat het je in zo verre gelukt is, nog even een tip wat betreft de omstandigheden serieel/usb. Wat je nog kan proberen is een andere compoort selecteren, dus geen 1 of 2 maar 3 of 4, als je geluk hebt werkt het dan wel. Echter moet ik er bij vermelden dat sommige zaken/programma's echt niet gaan werken met serieel/usb, maar zoals gezegd, je kan geluk hebben. Zelf werk ik altijd nog met serieel, gr.

 

Zilverster.

You are "The last in line" - Ronnie James Dio R.I.P.

Link naar reactie
Delen op andere sites

@Dessie,

 

Leuk dat je al zover bent! Het betekent dat je nu zelf de code kunt aanpassen, compileren en op de cam kunt zetten. Dan kun je aan de hobby!

 

Bovenin de source zit een debug parameter, als die niet is afgeremd (// ervoor) dan zal firmware alle communicatie over de command interface loggen naar de smartcard. Ik weet niet of ie aan of uit staat in de code die ik je heb gemaild. Let op want mijn titanium was op slag dood toen ik die per ongeluk er een keertje in had zitten met de debug optie aan! Geen abo kaart erin dus!!!

 

Ik weet ook niet welk programma je gebruikt om de data uit de season te loggen. Je moet in ieder geval een "rauw" programma gebruiken, die alles laat zien. Dus geen wallbanger ofzo, maar een programma als realterm. De instellingen moeten dan 9600 baud, 8 databits en 2 stopbits zijn.

 

Serieel/usb converters zijn altijd link. Soms werkt zo'n constructie en soms niet. Je merkt dat ook al aan de terechte opmerkingen van Zilverster. Het veiligst is altijd nog gewoon de klassieke rs232 seriële poort op je pc of notebook.

 

Let overigens even op als je met het menu of de tekst items gaat werken. Er zitten nog twee bugs in de source, waarvan ik er nu 1 heb gevonden. Als ik die andere ook heb dan post ik ze hier als ik weet dat alles dan is opgelost. Anders moet ik hier dadelijk correctie op correctie zetten. Als je de objects voorlopig even onder de 200 bytes weet te houden is er niks aan de hand. Oplossing volgt!

 

Succes en hou ons maar op de hoogte!!

 

Hermanator

Link naar reactie
Delen op andere sites

Beide bugs gevonden. De eerste bug zorgde ervoor dat objecten groter dan 200 bytes niet goed werden verzonden. De tweede gaf problemen met objecten groter dan 255 bytes.

 

Bug 1: In lpduToHostGet moeten objecten groter dan 200 bytes (pcmciabuffer grootte) in meerdere lpdu's worden verzonden. Er werd echter geen rekening gehouden bij het verzenden met de ervoor berekende offset. De beide memcpy statements in deze routine moeten worden veranderd in:

 

memcpy((&buffer[2]),&(t_buffer[t_next_out][offset]),databytes);

 

In de oorspronkelijke code ontbrak de [offset]. Dit zorgt ervoor dat de lpdu in de juiste brokken wordt gehakt.

 

Bug 2: De lpduToHostget routine heb ik geschreven toen ik net met de c-studie was begonnen. De variabele

databytes had ik gedeclareerd als "unsigned char". Slaat nergens op, maar omdat alle velden voor de pcmcia interface als zodanig waren gedeclareerd, had ik dat met deze variabele ook gedaan. Het minder gunstige gevolg is dat er geen waarden groter dan 255 aan kunnen worden toegekend. Hierdoor liep de berekening van databytes fout zodra de tpdu groter was dan 255. De variabele moet aan het begin van lpduToHostGet als integer worden gedeclareerd:

 

int databytes;

 

Bij mij loopt het nu als een trein, ook al pomp ik het hele scherm vol met tekst.

 

Hermanator

Link naar reactie
Delen op andere sites

@Zilverster

 

Het probleem is dat mijn laptop (zoals gebruikelijk tegenwoordig) geen seriele poort meer heeft. Ik dacht dat ondertussen wel een usb-serieel kabeltje goed zou werken. Ik moet dus mijn pc gaan verslepen naar de ontvanger om te kijken of de season interface werkt. Als dat werkt moet ik nog gaan proberen dat kabeltje te laten werken <img src="/ubbthreads/images/graemlins/tongue.gif" alt="" />

 

@Hermanator

 

Ik zal de code aanpassen met je bugfixes.

Ik heb het programma realterm gebruikt, maar niet met de instelling zoals jij verteld (vooral die stopbits)

Ook bedankt voor de waarschuwing om geen smartcard te gebruiken! Is je titanium echt overleden of alleen maar leeg?

 

En nu gaan spelen <img src="/ubbthreads/images/graemlins/laugh.gif" alt="" />

Link naar reactie
Delen op andere sites

@Dessie,

 

Ik weet er alles van, dat USB/Serieel, zo'n anderhalf jaar geleden kocht ik ook een nieuwe laptop en wist ook niet dat het alleen maar USB aan boord had. Ik heb er toen een USB naar Serieel converter bij gekocht en moet zeggen dat bepaalde programma's het best wel deden. Binnekort moet ik daar wat mee uitproberen en kan daarna wel wat resultaten bekend maken. Zoals je weet gebruikt Hermanator het programma RealTerm.......en ik ook, alleen doe ik er iets anders mee op dit moment. De bedoeling is dat ik binnekort even gelijktijdig op een tweede ontvanger ga mee loggen met het programma Wallbanger om wat dingen te gaan vergelijken. Nu heb jij het over de instellingen van de stopbits dat die zo belangrijk zijn, maar het allerbelangrijkste bij het programma RealTerm is de baud snelheid van 9600 baud anders wordt de zaak geblokkeerd of krijg je hele verkeerde antwoorden. Om de season uit te gaan proberen kan je het beste beginnen met het programma Wallbanger en wannneer dit goed werkt overschakelen op RealTerm, dan weet je dat de rest goed is.

Het zou mij niet verbazan dat je laptop dan wel werkt.

 

 

@Hermanator,

 

Weer een knap stukje dat je de fout zo snel hebt kunnen achterhalen. Dat van die Tita kaart wist ik nog niet, wel een vreemd verhaal, of heb je misschien verkeerde commando's verstuurd naar de kaart. Gelukkig heb ik nog geen problemen gehad met mijn originele, die doet het nog steeds. Goed jaar dat 2005, ik verheug me al op de rest, dat we nog veel mogen snoepen <img src="/ubbthreads/images/graemlins/grin.gif" alt="" /> , gr.

You are "The last in line" - Ronnie James Dio R.I.P.

Link naar reactie
Delen op andere sites

@Dessie en Zilverster,

 

Bij het loggen pomp ik de totale communicatie die over de command interface loopt naar de smartcard interface, zonder bij het openen ook maar iets te controleren van atr of wat ook. Als je hem even een paar minuten laat draaien gaan er dus duizenden bytes naar de smartcard, die weliswaar voor de communicatie met de ontvanger bijzonder betekenisvol zijn maar voor de kaart volkomen random. Ik denk dat dat net zo iets is als zonder waarschuwing een mitrailleur op een huisdier leegschieten. De kaart geeft geen atr, geen respons, nakkes meer.

 

RIP Titaniumcard en bedankt voor alle erotische taferelen die ik dankzij jou heb mogen aanschouwen <img src="/ubbthreads/images/graemlins/smirk.gif" alt="" />

 

Ik zal voor de volledigheid nog even de instellingen in realterm geven. Ik start hem op en pas het volgende aan:

Tabblad display: display as ascii (omdat ik zo naar de kaart schrijf) en LF=new line (om een mooie log te krijgen). De rest wijzig ik niet.

Tabblad Port: 9600 baud, no parity, 8 databits, 2 stopbits en no hardware handshaking. En de juiste compoort natuurlijk.

Dan werkt de display van de log al. Als je in een file wilt loggen doe je dat op tabblad Capture. Filename ingeven en op start overwrite drukken.

 

Je kunt met eventuele foute instellingen geen schade aanrichten, zolang je tenminste geen kaart in de season stopt. Het ergste dat je kan gebeuren is dat je niks ziet of buitenaardse tekens <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...