1. Cookies optimieren die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklärst Du dich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen
    Information ausblenden
  2. Willkommen im Forum von DIGITAL FERNSEHEN - dem führenden Portal für digitales Fernsehen, Medien und Entertainment. Wenn du hier neu bist, schau dich ruhig etwas um und melde dich an, um am Forengeschehen teilnehmen zu können.
    Information ausblenden

uClinux für Comag / SilverCrest SL80

Dieses Thema im Forum "PVR2/PVR2 HD" wurde erstellt von GDRGuy69, 28. Dezember 2008.

  1. GDRGuy69

    GDRGuy69 Senior Member

    Registriert seit:
    8. November 2004
    Beiträge:
    194
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    Anzeige
    Hiermit fange ich ein neues Thema an, um über meine Arbeit an einem uClinux-Kernel für den Comag / SilverCrest SL80 zu berichten. In diesem Receiver arbeitet ein Fujitsu MB86H30 mit ArcTangent-A4 Prozessor-Core, der sich gegenüber den Vorgängern MB87L2250 und MB86H2x durch einen integrierten USB OTG Controller auszeichnet. Damit ergeben sich beim Einsatz von uClinux durch die verfügbaren USB-Treiber (Mass Storage, Netzwerk, DVB...) vielfältige Einsatzmöglichkeiten.

    Am Anfang stand zunächst einmal das Problem, welche USB-Hardware der MB86H30 enthält, um einen passenden Linux-Treiber zu finden. Durch Erforschen der SindiTV-Firmware habe ich rausbekommen, dass der Prozessor den Mentor Graphics MUSBMHDRC USB 2.0 IP enthält. Diese USB Komponente wird u.a. auch im TI OMAP35x eingesetzt und von Mentor Graphics gibt es zum Glück einen Open-Source-Treiber für Linux.

    Den Mentor-Graphics-Treiber habe ich nun in meine uClinux-Variante eingebaut und siehe da, er funktioniert.

    Allerdings ist das Binary des uClinux-Kernels bis jetzt nur im ELF-Format vorhanden, so dass man es nur über den Debug-Adapter in den Receiver laden kann. Ich werde demnächst die Quellen und auch das Binary auf meiner Projekt-Seite unter SourceForge veröffentlichen.
     
  2. thomas998

    thomas998 Junior Member

    Registriert seit:
    31. März 2008
    Beiträge:
    88
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Technisches Equipment:
    Comag PVR 2/100CI,Sandberg-Konverter,640 GB Seagate ST3640323AS
    AW: uClinux für Comag / SilverCrest SL80

    Hallo !
    Das sind ja gute Nachrichten zum Ende des Jahres!
    D.h. Der Linux-Kernel bootet auf dem Arc-Core und initialisiert die "Geräte" ?
    Aber wie sieht die Programmierung der Application (vdr) aus? Die Beschreibung des MB86H30 geht sicher in die hunderte von Seiten.
    Gibt es denn dort Software, auf der man aufsetzen könnte, um in überschaubarer Zeit zu Resultaten zu kommen ?

    gruß
    Thomas
     
  3. GDRGuy69

    GDRGuy69 Senior Member

    Registriert seit:
    8. November 2004
    Beiträge:
    194
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: uClinux für Comag / SilverCrest SL80

    Na ja, "Geräte" gibt es leider noch keine (abgesehen von denen, die durch USB-Treiber unter /dev/usb angehängt werden). Ich habe aber schon angefangen, die LinuxTV DVB Treiber einzubauen. Das ist dann die gleiche Programmierschnittstelle, die auch vom VDR benutzt wird. Deshalb muss man aus Applikationssicht auch garnichts über den MB86H30 zu wissen, da dessen Interna ja durch die Treiber und die Devices, die diese anbieten, verborgen werden.

    Als nächstes muss ich noch den Frontend-Treiber für die beiden QPSK-Tuner des Comag/Silvercrest finden. Leider habe ich noch keine Anhaltspunkte, welche Hardware hier verwendet wird.
     
    Zuletzt bearbeitet: 16. Oktober 2009
  4. Mr.Fantastic

    Mr.Fantastic Board Ikone

    Registriert seit:
    21. Februar 2008
    Beiträge:
    3.863
    Zustimmungen:
    0
    Punkte für Erfolge:
    46
    AW: uClinux für Comag / SilverCrest SL80

    wofür wäre dids alles alles nötig, möchtest du irgendwann eine eigene firmware entwickeln oder missverstehe ich da was?
     
  5. jojo05

    jojo05 Neuling

    Registriert seit:
    2. März 2008
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    AW: uClinux für Comag / SilverCrest SL80

    Hi GDRGuy69,

    Dich gibts ja noch... :)
    ich suche schon seit längerem die Grundlage für den CRC32 der Firmware... werde aber nicht so ganz schlüssig. Entweder die Seed stimmt nicht, oder ich versuche die CRC übers falsche Array zu ermitteln.

    könntest Du ggf. mal in der FW 'nachschauen', wie die CRC gebildet wird? bzw. mir auch gerne mal die Trial von dem SeeCode Dbg zukommen lassen?
    Dann könnte ggf. auch Dein ucLinux in ein FW-File gepackt werden...

    Grüße Jojo
     
  6. GDRGuy69

    GDRGuy69 Senior Member

    Registriert seit:
    8. November 2004
    Beiträge:
    194
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: uClinux für Comag / SilverCrest SL80

    Ich habe nun ein erstes uClinux Kernel Image erzeugt und in das SSU Format gepackt. Damit kann man es über den normalen Software-Update per USB-Stick in die Box flashen.

    Das Kernel Image enthält allerdings noch nicht viel, gerade mal ein paar Treiber für USB und Flash. Aber über die Busybox kann man sich schon mal im System umschauen.

    Die Rückkehr zur originalen Software ist auch möglich - wiederrum über Flashen mittels USB-Stick. Allerdings ist es nur für Experten zu empfehlen, da bei Fehlbenutzung der Bootloader und/oder entweder das uClinux-Image oder das SindiTV-Image beschädigt werden können. Dann kann man die Box nur noch über einen Debug-Adapter wiederbeleben.

    Aus diesem Grund gebe ich hier auch keinen Link zum Download des uClinux Image an. Wer Interesse hat und mutig :D ist, möge sich bei mir melden.

    Hier eine kurze Session:
    Code:
    (c) Fujitsu Microelectronics Europe 2006
    
    Slot 0x0 (0x0E030000):  Image found:
     signature : 0x42484452
     status    : 0xFFFFFFFE
     crc32     : 0xB4C8D818
     name      : linux
     manID     : SindiTV
     version   : 0x00000001
     imgFormat : 0x00000001
     imgLength : 0x000FA9D5
     targetAddr: 0x002BA000
     jumpAddr:   0x002BA000
    Booting from Slot 0...
    Start decompression: 0x000FA975 bytes
    End: 0x002FF000 bytes
    
    Image successfully loaded!
    øLinux version 2.4.29-uc0 (thomas@debian) (gcc-Version 3.4.6 codito 20060612 [ derived from FSF release on 6th March 2006]) #1 Mi
    Okt 14 23:22:48 CEST 2009
    Detected Processor Number :0, Version :0 (ARCtangent A4 processor family)
    Linux configured to run at CPU speed :  130.50 Mhz
    FH_ARC_init
    FH_GPIO_init
    FH_SDRAM_init
    FH_UPI_init
    FH_VE_init
    FD_INT_Init
    FD_GPIO_Init
    FD_UART_Init
    initrd_start = 48d000 , inird_end = 5b9000
    On node 0 totalpages: 8192
    zone(0): 0 pages.
    zone(1): 8192 pages.
    zone(2): 0 pages.
    Kernel command line:
    Calibrating delay loop... 64.92 BogoMIPS
    Memory: 26548KB available (1604K code,203K data, 48K init)
    Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
    Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
    Mount cache hash table entries: 512 (order: 0, 4096 bytes)
    Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
    Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
    POSIX conformance testing by UNIFIX
    Linux NET4.0 for Linux 2.4
    Based upon Swansea University Computer Society NET3.039
    Initializing RT netlink socket
    ttyS0 at 0x8340400 (irq = 5) is a MB86H2X UART
    Starting kswapd
    devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)
    devfs: devfs_debug: 0x0
    devfs: boot_options: 0x1
    i2c-core.o: i2c core module version 2.6.1 (20010830)
    i2c-algo-bit.o: i2c bit algorithm module
    pty: 256 Unix98 ptys configured
    RAMDISK driver initialized: 16 RAM disks of 1300K size 1024 blocksize
    SCSI subsystem driver Revision: 1.00
    MB86H2X flash device: 0x00200000 at 0x0e000000
    Number of erase regions: 2
    Primary Vendor Command Set: 0002 (AMD/Fujitsu Standard)
    Primary Algorithm Table at 0040
    Alternative Vendor Command Set: 0000 (None)
    No Alternate Algorithm Table
    Vcc Minimum: 2.7 V
    Vcc Maximum: 3.6 V
    No Vpp line
    Typical byte/word write timeout: 128 µs
    Maximum byte/word write timeout: 1024 µs
    Typical full buffer write timeout: 128 µs
    Maximum full buffer write timeout: 4096 µs
    Typical block erase timeout: 1024 ms
    Maximum block erase timeout: 16384 ms
    Chip erase not supported
    Device size: 0x800000 bytes (8 MiB)
    Flash Device Interface description: 0x0002
      - supports x8 and x16 via BYTE# with asynchronous interface
    Max. bytes in buffer write: 0x20
    Number of Erase Block Regions: 2
      Erase Region #0: BlockSize 0x2000 bytes, 8 blocks
      Erase Region #1: BlockSize 0x10000 bytes, 127 blocks
     Amd/Fujitsu Extended Query Table v1.3 at 0x0040
    number of CFI chips: 1
    cfi_cmdset_0002: Disabling fast programming due to code brokenness.
    Creating 2 MTD partitions on "MB86H2X flash":
    0x00000000-0x00004000 : "boot"
    mtd: Giving out device 0 to boot
    0x00030000-0x00250000 : "image"
    mtd: Giving out device 1 to image
    init_mtdchar: allocated major number 90.
    init_mtdblock: allocated major number 31.
    i2c-adap-mb86h2x_gpio.c: Fujitsu MB86H2X GPIO I2C adapter
    i2c-adap-mb86h2x_gpio.c: SCL on 12, SDA on 13
     i2c-algo-bit.o: scanning bus Fujitsu MB86H2X GPIO.
    .<7> i2c_outb:02
    .<7> i2c_outb:04
    .<7> i2c_outb:06
    .<7> i2c_outb:08
    .<7> i2c_outb:0A
    .<7> i2c_outb:0C
    .<7> i2c_outb:0E
    .<7> i2c_outb:10
    (08)<7> i2c_outb:12
    .<7> i2c_outb:14
    .<7> i2c_outb:16
    (0b)<7> i2c_outb:18
    .<7> i2c_outb:1A
    .<7> i2c_outb:1C
    .<7> i2c_outb:1E
    .<7> i2c_outb:20
    .<7> i2c_outb:22
    .<7> i2c_outb:24
    .<7> i2c_outb:26
    .<7> i2c_outb:28
    .<7> i2c_outb:2A
    .<7> i2c_outb:2C
    .<7> i2c_outb:2E
    .<7> i2c_outb:30
    .<7> i2c_outb:32
    .<7> i2c_outb:34
    .<7> i2c_outb:36
    .<7> i2c_outb:38
    .<7> i2c_outb:3A
    .<7> i2c_outb:3C
    .<7> i2c_outb:3E
    .<7> i2c_outb:40
    .<7> i2c_outb:42
    .<7> i2c_outb:44
    .<7> i2c_outb:46
    .<7> i2c_outb:48
    .<7> i2c_outb:4A
    .<7> i2c_outb:4C
    .<7> i2c_outb:4E
    .<7> i2c_outb:50
    .<7> i2c_outb:52
    .<7> i2c_outb:54
    .<7> i2c_outb:56
    .<7> i2c_outb:58
    .<7> i2c_outb:5A
    .<7> i2c_outb:5C
    .<7> i2c_outb:5E
    .<7> i2c_outb:60
    .<7> i2c_outb:62
    .<7> i2c_outb:64
    .<7> i2c_outb:66
    .<7> i2c_outb:68
    .<7> i2c_outb:6A
    .<7> i2c_outb:6C
    .<7> i2c_outb:6E
    .<7> i2c_outb:70
    .<7> i2c_outb:72
    .<7> i2c_outb:74
    .<7> i2c_outb:76
    .<7> i2c_outb:78
    .<7> i2c_outb:7A
    .<7> i2c_outb:7C
    .<7> i2c_outb:7E
    .<7> i2c_outb:80
    .<7> i2c_outb:82
    .<7> i2c_outb:84
    .<7> i2c_outb:86
    .<7> i2c_outb:88
    .<7> i2c_outb:8A
    .<7> i2c_outb:8C
    .<7> i2c_outb:8E
    .<7> i2c_outb:90
    .<7> i2c_outb:92
    .<7> i2c_outb:94
    .<7> i2c_outb:96
    .<7> i2c_outb:98
    .<7> i2c_outb:9A
    .<7> i2c_outb:9C
    .<7> i2c_outb:9E
    .<7> i2c_outb:A0
    (50)<7> i2c_outb:A2
    .<7> i2c_outb:A4
    .<7> i2c_outb:A6
    .<7> i2c_outb:A8
    .<7> i2c_outb:AA
    .<7> i2c_outb:AC
    .<7> i2c_outb:AE
    .<7> i2c_outb:B0
    .<7> i2c_outb:B2
    .<7> i2c_outb:B4
    .<7> i2c_outb:B6
    .<7> i2c_outb:B8
    .<7> i2c_outb:BA
    .<7> i2c_outb:BC
    .<7> i2c_outb:BE
    .<7> i2c_outb:C0
    .<7> i2c_outb:C2
    .<7> i2c_outb:C4
    .<7> i2c_outb:C6
    .<7> i2c_outb:C8
    .<7> i2c_outb:CA
    .<7> i2c_outb:CC
    .<7> i2c_outb:CE
    .<7> i2c_outb:D0
    .<7> i2c_outb:D2
    .<7> i2c_outb:D4
    .<7> i2c_outb:D6
    .<7> i2c_outb:D8
    .<7> i2c_outb:DA
    .<7> i2c_outb:DC
    .<7> i2c_outb:DE
    .<7> i2c_outb:E0
    .<7> i2c_outb:E2
    .<7> i2c_outb:E4
    .<7> i2c_outb:E6
    .<7> i2c_outb:E8
    .<7> i2c_outb:EA
    .<7> i2c_outb:EC
    .<7> i2c_outb:EE
    .<7> i2c_outb:F0
    .<7> i2c_outb:F2
    .<7> i2c_outb:F4
    .<7> i2c_outb:F6
    .<7> i2c_outb:F8
    .<7> i2c_outb:FA
    .<7> i2c_outb:FC
    .<7> i2c_outb:FE
    .
    usb.c: registered new driver hub
    usb.c: registered new driver usbnet
    Initializing MUSB Driver (2.2.2) [debug=0][gadget=no][otg=no]
    direct_bus_init 258: Probing direct bus [direct=1]
    MGC_LinuxInitController 2101: MUSB Driver [Base Address(PA)=0x0a080800] [IRQ = 17] [pDevice=00000000]
    MGC_HdrcInit 1055: ConfigData=0x02 (UTMI-8, SoftConn)
    MGC_HdrcInit 1081: xDRC version 1.500
    MGC_LinuxInitController 2193: End 00: FIFO TxSize=0040/RxSize=0040
    MGC_LinuxInitController 2193: End 01: FIFO TxSize=0080/RxSize=0080
    MGC_LinuxInitController 2193: End 02: FIFO TxSize=0200/RxSize=0200
    MGC_LinuxInitController 2193: End 03: FIFO TxSize=0400/RxSize=0400
    Calling FD_INT_Open for nIrq=17
    usb.c: new USB bus registered, assigned bus number 1
    mgc_init_bus 1980: Registered new bus @00651240
    hub.c: USB hub found
    hub.c: 1 port detected
    MGC_DriverInit 2476: Error initializing controller on the PCI bus
    usb.c: registered new driver serial
    usbserial.c: USB Serial Driver core v1.4
    Initializing USB Mass Storage driver...
    usb.c: registered new driver usb-storage
    USB Mass Storage support registered.
    init_mb86667()
    DVB: registering new adapter (MB86H2X).
    mb86667_attach: version=0xfd
    DVB: registering frontend 0:0 (Fujitsu MB86667)...
    NET4: Linux TCP/IP 1.0 for NET4.0
    IP Protocols: ICMP, UDP, TCP
    IP: routing cache hash table of 512 buckets, 4Kbytes
    TCP: Hash tables configured (established 2048 bind 4096)
    NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
    RAMDISK: ext2 filesystem found at block 0
    RAMDISK: Loading 1200 blocks [1 disk] into ram disk... done.
    VFS: Mounted root (ext2 filesystem).
    Mounted devfs on /dev
    Freeing unused kernel memory: 48k freed
    arcserial_open(): line = 0
    uart.c: startup()
    init started: BusyBox v1.9.2 (2008-04-05 22:34:51 CEST)
    starting pid 10, tty '': '/etc/init.d/rcS'
    
    Please press Enter to activate this console. hub.c: new USB device musbhdrc0-1, assigned address 2
    Manufacturer: *******
    Product: Mass Storage Device
    SerialNumber: 00000000000006
    scsi0 : SCSI emulation for USB Mass Storage devices
    blk: queue 00641574, I/O limit 4095Mb (mask 0xfffff000)
      Vendor: *******   Model: USB  SD Reader    Rev: 0.00
      Type:   Direct-Access                      ANSI SCSI revision: 02
    blk: queue 00641674, I/O limit 4095Mb (mask 0xfffff000)
    Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
    SCSI device sda: 15523840 512-byte hdwr sectors (7948 MB)
    sda: Write Protect is off
    Partition check:
     /dev/scsi/host0/bus0/target0/lun0:<7>usb-storage: queuecommand() called
     p1
    
    starting pid 12, tty '': '/bin/sh'
    / # mount -t vfat /dev/scsi/host0/bus0/target0/lun0/part1 /mnt
    / # cat /proc/mtd
    dev:    size   erasesize  name
    mtd0: 00004000 00002000 "boot"
    mtd1: 00220000 00010000 "image"
    / # flash_erase /dev/mtd/1 0 16
    MTD_open
    Erase Total 16 Units
    MTD_ioctl
    MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x0MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x10000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x20000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x30000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x40000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x50000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x60000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x70000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x80000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0x90000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0xa0000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0xb0000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0xc0000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0xd0000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0xe0000MTD_ioctl
    Performing Flash Erase of length 65536 at offset 0xf0000MTD_ioctl
     done
    MTD_close
    / # ls -l /mnt
    -rwxr-xr-x    1 root     root      1026520 Oct 14  2009 linux-20091014.ssu
    drwxr-xr-x    2 root     root        32768 Oct 14  2009 mtd-utils
    -rwxr-xr-x    1 root     root       998852 Sep  2  2008 smartgo.ssu
    / # cp /mnt/smartgo.ssu /dev/mtd/1
    MTD_open
    MTD_write
    MTD_write
    MTD_write
    MTD_write
    MTD_write
    MTD_write
    MTD_write
    ...
    MTD_write
    MTD_write
    MTD_write
    MTD_close
    / #
    
    
     
  7. starbright

    starbright Senior Member

    Registriert seit:
    19. Februar 2009
    Beiträge:
    268
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: uClinux für Comag / SilverCrest SL80

    Hut ab - der Wahnsinn.
    Geht sowas auch auf dem SL100 HD?
     
    Zuletzt bearbeitet: 15. Oktober 2009
  8. GDRGuy69

    GDRGuy69 Senior Member

    Registriert seit:
    8. November 2004
    Beiträge:
    194
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: uClinux für Comag / SilverCrest SL80

    Vielleicht. Aber nicht mit diesem Image. Der SL100 hat einen völlig anderen Prozessor.