X

[PROJEKT] SH4-Linux-Portierung auf Opticum 9600HDTS

Einklappen
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • corev
    Neuer Benutzer
    • 14.03.2008
    • 38

    [PROJEKT] SH4-Linux-Portierung auf Opticum 9600HDTS

    Hallo,

    ich wollte mal ein neues Projekt ankuendigen: Portierung des duckbox-kernels auf den Opticum 9600HDTS. Grundsaetzlich ist der 9600HDTS das Standard-Design mit uC-Frontend. Habe gerade
    alle wichtigen Register ausgelesen nachdem die Original-Soft gebootet war.

    Werde mich jetzt auf die Suche nach den paar wichtigen GPIO-Pins machen und mal sehen, was
    der uC und der stb7109 so austauschen.

    Wer so eine Box hat, kann gerne mitmachen (JTAG/STMC-Lite erforderlich!).
    Wer von den bekannten Boxen seine mit den folgenden Eigenschaften wiederfindet,
    kann mir gerne Platinenphotos schicken. Ich seh mal zu dass ich nen gutes von der 9600HDTS mache und poste. Die Boxen sind alle so aehnlich, dass der Port ggf. sehr schnell fertig sein wird.

    - Stb7109 cut 3.0, 27MHz XTAL
    - 8M Spansion Flash
    - STE100P Ethernet PHY
    - StarCI v2.2 Dual Cam an TSIN0
    - 2x SCI ST8024C
    - ABOV MC80F0104 8bit uC
    - PT6312 LCD Controller an 8x1 LCD

    corev

    EDIT: Hier noch das versprochene Photo der Box, nur als Übersicht. Es fehlt die SCI-Platine
    mit den beiden ST8024C und Kontaktiereinheiten. Die beiden Steckkarten sind ETH (mitte) und S2/T-Tuner (rechts). Ach und das Kabel oben links geht zu SPDIF und RS232-Stecker. Dadrunter ist übrigens der STM-JTAG-Header. Hab natürlich noch Detailaufnahmen, aber eigentlich nur weil man da die Chip-Markings besser lesen kann
    Angehängte Dateien
    Zuletzt geändert von corev; 14.10.2011, 01:31.
  • corev
    Neuer Benutzer
    • 14.03.2008
    • 38

    #2
    So, hier mal als Update die fast vollstaendige Liste der PIOs fuer den 9600HDTS.
    Von den beiden fehlenden Outputs sollte eigentlich noch was am SCART-Stecker
    sein (SWITCH).. der input und der andere output weiss ich nicht.. mal sehen, obs
    wichtig wird

    Die Tuner sind uebrigens STV0903B/STV6110A fuer DVB-S2 und irgendwas
    komisches (MT5133AN) fuer DVB-T. Fuer den T gibts IMHO keine Treiber. Ist
    aber auch nicht so schlimm, weil 1. niemand T gucken will, wenns S2 gibt und
    2. kann das Tuner-PCB jeweils nur einen der beiden (S2/T) durchrouten...

    Pinout der Connectoren mach ich spaeter.. *zzz*

    corev

    I = input (PU)
    b = bidir
    o = output
    i = input
    O = alt.output
    B = alt.bidir

    PIO0.0 (B) = SCI0.TXD (=SCI0.IOUC)
    PIO0.1 (I) = SCI0.RXD (=SCI0.IOUC)
    PIO0.2 (I) = SCI0.EXTCLKIN
    PIO0.3 (o) = SCI0.CLKOUT (=SCI0.XTA1)
    PIO0.4 (o) = SCI0.RESET (=SCI0.RSTIN)
    PIO0.5 (o) = SCI0.CONDVCC (=SCI0.CMDVCC#)
    PIO0.6 (o) = SCI0.VSEL (=SCI0.5V/3V3#)
    PIO0.7 (i) = SCI0.DETECT (=SCI0.OFF#)

    PIO1.0 (B) = SCI1.TXD (=SCI1.IOUC)
    PIO1.1 (I) = SCI1.RXD (=SCI1.IOUC)
    PIO1.2 (I) = SCI1.EXTCLKIN
    PIO1.3 (o) = SCI1.CLKOUT (=SCI1.XTA1)
    PIO1.4 (o) = SCI1.RESET (=SCI1.RSTIN)
    PIO1.5 (o) = SCI1.CONDVCC (=SCI1.CMDVCC#)
    PIO1.6 (o) = SCI1.VSEL (=SCI1.5V/3V3#)
    PIO1.7 (i) = SCI1.DETECT (=SCI1.OFF#)

    PIO2.0 (B) = I2C0_SCL
    PIO2.1 (B) = I2C0_SDA
    PIO2.2 (o) = TUNER_LNBP_VSEL
    PIO2.3 (o) = TUNER_LNBP_ENT (n.c., RB20 = NP)
    PIO2.4 (i) = STARCI_INT
    PIO2.5 (o) = TUNER_DVBTPWREN#
    PIO2.6 (o) = TUNER_LNBP_LLC
    PIO2.7 (I) =

    PIO3.0 (B) = I2C1_SCL
    PIO3.1 (B) = I2C1_SDA
    PIO3.2 (o) =
    PIO3.3 (o) = TUNER_DVBS2OE#
    PIO3.4 (o) =
    PIO3.5 (o) = AMUX_SEL
    PIO3.6 (o) = ETH_RESET
    PIO3.7 (I) = ETH_X1

    PIO4.0 (B) = I2C2_SCL
    PIO4.1 (B) = I2C2_SDA
    PIO4.2 (I) = UART2_RXD
    PIO4.3 (O) = UART2_TXD
    PIO4.4 (i) = HDMI_HPD
    PIO4.5 (u) = HDMI_CEC
    PIO4.6 (o) = TUNER_DVBS2PWREN#
    PIO4.7 (o) = CAM_U_PWREN

    PIO5.0 (O) = UART3_TXD
    PIO5.1 (I) = UART3_RXD
    PIO5.2 (o) = TUNER_LNBP_EN
    PIO5.3 (o) = TUNER_RESET
    PIO5.4 (o) = CAM_L_PWREN
    PIO5.5 (o) = STARCI_RESET
    PIO5.6 (i) = USBOVRCUR#
    PIO5.7 (o) = USBPWREN

    Kommentar

    • MacGyver
      Neuer Benutzer
      • 13.01.2008
      • 5

      #3
      Hallo,

      ich finde es mutig von dir dieses Projekt zu starten und freue mich schon auf die ersten Test's. Viel Erfolg!!!!!

      Kommentar

      • corev
        Neuer Benutzer
        • 14.03.2008
        • 38

        #4
        So, nochmal ein kleines Update zur UC-Kommunikation, hab noch nicht so viel
        ausprobiert.. muss dafür erst die Original-Soft durchbooten und nen bisschen
        rumspielen (Alarm setzen und so).

        Grundlegendes Kommunikationsprotokoll über UART3, 9600b 8n1: 0xCCnnD0D1D2...
        CC = Command Code (1Byte)
        nn = Data Byte Length (1Byte)
        Dx = Data Byte x

        Vollkommen klar sind mir bisher zwei Kommandos:
        STB-to-UC: 0xED = Set Display Text (Character Encoding unten), z.B. 0xed0800000d1a1a1f0000 Display " BOOT "
        UC-to-STB: 0xF1 = Key Event (Key Encoding unten), z.B. 0xf1015f Power Button Pressed

        Bisschen unklar sind mir bisher:
        STB-to-UC:
        0xeb01_01 : evtl. Enable Backlight
        0xc501_fa
        0xc501_52

        UC-to-STB:
        0xc501_f7
        0xfc06_00_01_01_00_02_00
        0xdb02_02_99_11
        0xc501_eb
        0xc501_ed

        Hier wird sicher auch mal das gleichzeitige sniffen der beiden UART-Leitungen hilfreich sein, um
        z.B. ACKs und so zu finden. Ausserdem kann ich die Werte durchspielen, sobald ich nen Kernel
        laufen hab.

        EDIT: Die Nachrichten mit 0x52 sind ACK-Nachrichten mit XOR über die ganzen Paketdaten.
        Hier das Rechenbeispiel
        UC-to-STB: DB03 02_99_11
        STB-to-UC: C501 52

        1101_1011 = db
        0000_0011 = 03
        0000_0010 = 02
        1001_1001 = 99
        0001_0001 = 11
        ============
        0101_0010 = 52

        EDIT2:
        STB-to-UC:
        0xe503_00_01_00 : Vor Poweroff
        0xea04_MM_DD_HH_mm : Set Alarm (Month_Day_Hour_Minutes)
        0xeb01_01 : Nach Poweron
        0xec05_YY_MM_DD_HH_mm : Set Date/Time (Year-2000_Month_Day_Hour_Minutes)

        UC-to-STB:
        0xfc06_YY_MM_DD_HH_MM_uu : Restore Date/Time (Year-2000_Month_Day_Hour_Minutes_Unknown)

        Code:
        Character Encoding:
        00 = ' '  | 10 = 'E'  | 20 = 'U'  | 30 =      | 
        01 =      | 11 = 'F'  | 21 = 'V'  | 31 =      | 
        02 = '0'  | 12 = 'G'  | 22 = 'W'  | 32 =      | 
        03 = '1'  | 13 = 'H'  | 23 = 'X'  | 33 =      | 
        04 = '2'  | 14 = 'I'  | 24 = 'Y'  | 34 =      | 
        05 = '3'  | 15 = 'J'  | 25 = 'Z'  | 35 =      | 
        06 = '4'  | 16 = 'K'  | 26 =      | 36 =      | 
        07 = '5'  | 17 = 'L'  | 27 =      | 37 =      | 
        08 = '6'  | 18 = 'M'  | 28 =      | 38 =      | 
        09 = '7'  | 19 = 'N'  | 29 =      | 39 =      | 
        0a = '8'  | 1a = 'O'  | 2a =      | 3a =      | 
        0b = '9'  | 1b = 'P'  | 2b =      | 3b =      | 
        0c = 'A'  | 1c = 'Q'  | 2c =      | 3c =      | 
        0d = 'B'  | 1d = 'R'  | 2d =      | 3d =      | 
        0e = 'C'  | 1e = 'S'  | 2e =      | 3e =      | 
        0f = 'D'  | 1f = 'T'  | 2f =      | 3f =      | 
        
        Key Encoding:
        00 fav          | 10 stop      | 40 -	  | 50 -	     
        01 ffwd		| 11 help      | 41 left  | 51 -	     	    
        02 prev		| 12 play      | 42 next  | 52 -	     	    
        03 blue/text	| 13 -	       | 43 -	  | 53 -	     
        04 -		| 14 tv/radio  | 44 -	  | 54 7	     
        05 -		| 15 recall    | 45 ok    | 55 4	     
        06 info		| 16 find      | 46 down  | 56 1	     	    
        07 format	| 17 filelist  | 47 -	  | 57 mute	     
        08 yellow/sleep | 18 up        | 48 -	  | 58 8	     
        09 epg		| 19 option    | 49 right | 59 5	     
        0a -		| 1A mode      | 4A menu  | 5a 2	     	    
        0b -		| 1B 0         | 4b -	  | 5b red/audio 
        0c status	| 1C rec       | 4c -	  | 5c 9	     
        0d slow		| 1D exit      | 4d -	  | 5d 6	     	    
        0e -		| 1E rew       | 4e -	  | 5e 3	     
        0f -		| 1F green/sub | 4f -     | 5f power
        Zuletzt geändert von corev; 15.10.2011, 21:28.

        Kommentar

        • corev
          Neuer Benutzer
          • 14.03.2008
          • 38

          #5
          So, u-boot mit ethernet laeuft! Die Kommunikation mit dem UC (Display) irgendwie noch nicht, aber das bekomm ich heute noch hin

          EDIT: Das ging fix, nun geht auch das Display ausm u-boot raus.

          Eine Frage an die Maintainer/User der anderen Boxen:
          Beim Flash-Layout hab ich ja nun freie Hand. Was waere denn der sinnvollste Weg, fuer das
          Layout (Kernel und Rootfs). Am besten ists wohl, so eine Art BA-Boot vorzusehen und eine
          USB-HDD vorauszusetzen. Dann kann das rootfs oder die apps auf jeden auf die Platte und
          im Flash ist nur das wichtigste... das duckbox rootfs setzt doch irgendwie auf nen mount in
          /var auf? Zur Erinnerung, das Flash der Box ist 8M. Davon hab ich jetzt 0x50000 byte u-boot
          und sein environment.

          corev
          Zuletzt geändert von corev; 16.10.2011, 01:58.

          Kommentar

          • Thomas4711
            Erfahrene Benutzer
            • 14.08.2009
            • 37672

            #6
            Schau dir mal an wie das beim tf7700 gemacht wird, der hat auch nur 8MB Flash.
            ---------------------------

            et10000; D-Cube R2; Prismcube Ruby; Venton HD1; Mara M9 u.a.m mit OpenATV 4.1
            Astra 19,2 und 28,2 an Atemio Multischalter Premium-Line 9/20
            Ligawo HDMI Matrix 4x2 - Multifunction per spdif an LG NB3530A 2.1 Soundbar

            Kommentar

            • tiopedro1958
              Neuer Benutzer
              • 12.08.2011
              • 10

              #7
              Alternative Info zum Dualboot, funktioniert auf Opti9500, Vip1v1, Vip2, Argus Classic u.a.

              http://www.aaf-digital.info/forum/showthread.php?69483-Duckbox-Edision-Argus-Classic-Kernel-Usb-Boot-Probleme

              Kommentar

              • corev
                Neuer Benutzer
                • 14.03.2008
                • 38

                #8
                Soweit ich das verstehe bootet der originale Bootloader den u-boot und der default das OS21. Wenn
                USB dran ist, dann nimmt er den dort evtl. vorhandenen Linux-Kernel.
                Halte ich nicht sooo sinnvoll aus 2 Gruenden:
                - Wenn ich ins Original booten wollen wuerde und schon mal Linux drauf hab, muss ich die HDD immer
                abziehen.
                - Wer will schon die originale Soft ?

                Ausserdem muss man beim 9600er eh nen JTAG haben, es sei denn jemand befummelt mal den
                Original-Bootloader zum Flashen.

                Bin noch unschluessig, tendiere aber zu: u-boot laed kernel im Flash, es sei denn es ist z.B. MENU
                gedrueckt. Dann laed er was von der Platte, von mir aus auch zum Auswaehlen.

                Wie siehts mit dem RootFS aus? Alles auf HDD oder der Kern im Kernel mit extra Partition von Platte?
                Hier finde ich, es waere sinnvoll nen minimales Rootfs aufm Flash zu haben, das nach ner Platte guckt
                und dann ggf. nen Script dort startet.

                Solange die Entwicklung noch nicht abgeschlossen ist, brauche ich sowieso erstmal nen Rootfs, das mir
                ne busybox gibt.

                Zitat von tiopedro1958 Beitrag anzeigen
                Alternative Info zum Dualboot, funktioniert auf Opti9500, Vip1v1, Vip2, Argus Classic u.a.

                http://www.aaf-digital.info/forum/showthread.php?69483-Duckbox-Edision-Argus-Classic-Kernel-Usb-Boot-Probleme

                Kommentar

                • corev
                  Neuer Benutzer
                  • 14.03.2008
                  • 38

                  #9
                  So, wieder Zeit fuer ein Update: u-boot laeuft jetzt perfekt!

                  Habe ein Bootmenu eingebaut, dass von usb eine Datei bootmenu.lst laed und die dann nach Eintraegen durchsucht (so wie grub, nur viel einfacher ).

                  Man kann neben dem "default"-Parameter sowohl globale als auch lokale Variablen deklarieren, die dann bei der Auswahl des Booteintrages mittels "setenv" gesetzt werden.

                  Der u-boot cmd koennte auch fuer andere Boxen interessant sein! Ich hab ihn jedenfalls Box-unabhaengig geschrieben

                  Eingebaut in den Opticum 9600HDTS u-boot hab ich folgendes Verhalten:

                  - Ohne gedrueckte Taste (MENU oder OK) laed er die Datei und startet den Eintrag, der in der default-Variable steht.

                  - Mit gedrueckter MENU-Taste startet er ein Bootmenu, bei dem die Eintraege auf dem LCD angezeigt werden. Man kann dann mit UP/DOWN durchscrollen und mit OK booten.

                  - Mit gedrueckter OK-Taste startet er in den FAILSAFE-Modus. Da laeuft dann das was das u-boot Environment sagt.

                  EDIT:
                  Hab mal zwei Patches angehaengt. Der eine ist der komplette Patch mit bootmenu gegen u-boot-sh4-1.3.1_stm24_0056 fuer den Opticum 9600HDTS. Der andere ist nur der bootmenu command.

                  Wer sich einen u-boot fuer den Opticum 9600HDTS bauen will braucht also nur den ersten Patch.
                  Und wer den u-boot flasht: Nicht vergessen die MAC-Adresse aufzuschreiben!!

                  EDIT2:
                  Das ganze POWER/MENU/OK/UP/DOWN-Gedruecke geht uebrigens auch ueber die Fernbedienung.

                  corev
                  Angehängte Dateien
                  Zuletzt geändert von corev; 18.10.2011, 05:07.

                  Kommentar


                  • #10
                    Zitat von corev Beitrag anzeigen
                    So, wieder Zeit fuer ein Update: u-boot laeuft jetzt perfekt!

                    Habe ein Bootmenu eingebaut, dass von usb eine Datei bootmenu.lst laed und die dann nach Eintraegen durchsucht (so wie grub, nur viel einfacher ).

                    Man kann neben dem "default"-Parameter sowohl globale als auch lokale Variablen deklarieren, die dann bei der Auswahl des Booteintrages mittels "setenv" gesetzt werden.

                    Der u-boot cmd koennte auch fuer andere Boxen interessant sein! Ich hab ihn jedenfalls Box-unabhaengig geschrieben

                    Eingebaut in den Opticum 9600HDTS u-boot hab ich folgendes Verhalten:

                    - Ohne gedrueckte Taste (MENU oder OK) laed er die Datei und startet den Eintrag, der in der default-Variable steht.

                    - Mit gedrueckter MENU-Taste startet er ein Bootmenu, bei dem die Eintraege auf dem LCD angezeigt werden. Man kann dann mit UP/DOWN durchscrollen und mit OK booten.

                    - Mit gedrueckter OK-Taste startet er in den FAILSAFE-Modus. Da laeuft dann das was das u-boot Environment sagt.

                    EDIT:
                    Hab mal zwei Patches angehaengt. Der eine ist der komplette Patch mit bootmenu gegen u-boot-sh4-1.3.1_stm24_0056 fuer den Opticum 9600HDTS. Der andere ist nur der bootmenu command.

                    Wer sich einen u-boot fuer den Opticum 9600HDTS bauen will braucht also nur den ersten Patch.
                    Und wer den u-boot flasht: Nicht vergessen die MAC-Adresse aufzuschreiben!!

                    EDIT2:
                    Das ganze POWER/MENU/OK/UP/DOWN-Gedruecke geht uebrigens auch ueber die Fernbedienung.

                    corev


                    echt prima was du da machst....ich hab den 9600 HD ohne DVBT.
                    Kann ich das da auch mit nutzen??

                    Ich würde dich auch, soweit ich kann mit meinen programmierkenntnissen unterstützen wollen, c#, vb .net ....


                    ciao...

                    Kommentar

                    • corev
                      Neuer Benutzer
                      • 14.03.2008
                      • 38

                      #11
                      Also, ich kenn den 9600HD nicht von innen, aber wenn ich so über das
                      Design nachdenke, bin ich mir ziemlich sicher, dass der bis auf die
                      Tuner-Platine baugleich ist. Sollte also passen.

                      Hast du mal die Box-Rückseiten verglichen (also die Position der
                      Steckverbinder und so)?

                      Noch ist ja nur der Bootloader fertig, der Kernel kommt ab heute dran.
                      Aufgrund der fehlenden Treiber für das T-Frontend und der Beschränkung
                      der Tuner-Platine werde ich wohl den HDTS zum HDS (also ohne T-Tuner)
                      machen.. Damit wäre er funktional eh nur noch ein 9600HD.

                      Die Auswahl der Programmiersprachen passt für den lowlevel-Kram natürlich
                      nicht, aber du kannst dir ja mal das Serial-Update-Protokoll vornehmen

                      corev

                      Zitat von y2kadir Beitrag anzeigen
                      echt prima was du da machst....ich hab den 9600 HD ohne DVBT.
                      Kann ich das da auch mit nutzen??

                      Ich würde dich auch, soweit ich kann mit meinen programmierkenntnissen unterstützen wollen, c#, vb .net ....

                      ciao...

                      Kommentar


                      • #12
                        Zitat von corev Beitrag anzeigen
                        Also, ich kenn den 9600HD nicht von innen, aber wenn ich so über das
                        Design nachdenke, bin ich mir ziemlich sicher, dass der bis auf die
                        Tuner-Platine baugleich ist. Sollte also passen.

                        Hast du mal die Box-Rückseiten verglichen (also die Position der
                        Steckverbinder und so)?

                        corev
                        ist alles gleich, bis auf den tuner, wie du schon erwähnt hattest..
                        da bin ich mal gespannt, obs dann mit dem kernel läuft...meld dich mal...

                        Kommentar

                        • corev
                          Neuer Benutzer
                          • 14.03.2008
                          • 38

                          #13
                          Ja, hab dann auch mal kurz bei Google geschaut und wuerde auch sagen,
                          dass die Boxen identisch sind. Die Platine kommt uebrigens aus China,
                          wenn man mal nach "M41174" sucht, kommt gleich als erster Hit nen
                          Platinenfertiger, der das Teil verkauft. Die Bezeichnung (M41174) steht
                          auf der Platine und ich hab einfach mal stumpf suchen lassen

                          Zur Kernel-Entwicklung: Ich werde hier regelmaessig posten. Allein
                          schon zur Dokumentation des Projektes..

                          Zitat von y2kadir Beitrag anzeigen
                          ist alles gleich, bis auf den tuner, wie du schon erwähnt hattest..
                          da bin ich mal gespannt, obs dann mit dem kernel läuft...meld dich mal...

                          Kommentar


                          • #14
                            Zitat von corev Beitrag anzeigen
                            Ja, hab dann auch mal kurz bei Google geschaut und wuerde auch sagen,
                            dass die Boxen identisch sind. Die Platine kommt uebrigens aus China,
                            wenn man mal nach "M41174" sucht, kommt gleich als erster Hit nen
                            Platinenfertiger, der das Teil verkauft. Die Bezeichnung (M41174) steht
                            auf der Platine und ich hab einfach mal stumpf suchen lassen

                            Zur Kernel-Entwicklung: Ich werde hier regelmaessig posten. Allein
                            schon zur Dokumentation des Projektes..

                            jepp, platine hab ich auch grad gefunden made in china... hehe..

                            danke für dein mega geiles projekt, damit kann ich dann auch mit dem receiver ein bisschen mehr anfangen, hoffentlich

                            Kommentar

                            • corev
                              Neuer Benutzer
                              • 14.03.2008
                              • 38

                              #15
                              Ein Update zum u-boot Patch: Der Opticum 9600HDTS hat am LMI_SYS 128MB RAM.
                              Angehängte Dateien

                              Kommentar

                              Nicht konfiguriertes PHP-Modul

                              Einklappen

                              [PROJEKT] SH4-Linux-Portierung auf Opticum 9600HDTS

                              Einklappen
                              Lädt...
                              X