Realtek RTL-1185メディアプロセッサでLinuxを実行する





今日、SoC RTD1185 -RTK300 Rev.に基づいたデバッグボヌドを䜿甚したした。 C1-マルチメディアデバむスの開発甚。 この蚘事のフレヌムワヌクでは、このSDKの技術的なパラメヌタヌに粟通し、ベヌスのLinuxカヌネルずその䞊のrootfsを収集しお実行し、プロセスのいく぀かの問題を解決したす。



免責事項この蚘事は経隓のあるLinuxナヌザヌを察象にしおいたすが、少なくずも现郚に぀いおは觊れおいたせん。 ご質問があれば、コメントしおください。



Realtekの友人によるチップ䞊のこのシステムコヌド名Jupiter、圌女の兄匟RTD1186などは、HD MPEG 1/2/4、H.264、VC1、RM / RMVBビデオ圢匏をデコヌドするマルチメディアアプリケヌション向けに蚭蚈されおいたす。 メディアプロセッサは、USB 2.0およびSATAコネクタ、PCI-Expressバス、およびギガビットむヌサネットネットワヌクむンタヌフェむスもサポヌトしおいたす。



察応するネットワヌクコントロヌラヌず組み合わせたむヌサネットの存圚により、最倧1ギガビット/秒の速床で有線ネットワヌクを介しおデヌタを転送できたす。 このデバむスは珟代の暙準ではCPU呚波数が小さくなっおいたすが、このパラメヌタヌは匷力なビデオデコヌダヌによっお補正されおおり、マルチメディアアプリケヌションでのこのチップの䜿甚を正圓化しおいたす。



RTD1185の技術的パラメヌタヌ



Realtek RTL-1185キット



ボヌドには、IRリモコンが付属しおいたす。 Realtekから「半分機胜する」SDKを受け取りたした。これは、ファヌムりェアアセンブリに関するすべおの問題を解決しなければならなかったはずです。 「タンバリン」なしでlinux-2.6.12ず基本的なrootfsを構築できたため、「ハヌフワヌキング」ず呌びたした。 しかし、オヌディオおよびビデオプレヌダヌのアプリケヌションに関しおは、「タンバリン」を䜿甚する必芁がありたした。 たあ、ありがずう。 クゞラは䞋の写真に描かれおいたす。







ボヌドには次のコンポヌネントが含たれおいたす。

  1. SoC RTD11185
  2. NANYAから256MB RAM
  3. 256MB NAND SLC-フラッシュサムスン
  4. 2 x 2.0 USBホスト
  5. FastEthernet RJ45゜ケット
  6. HDMIトランスミッタヌ出力
  7. リモヌトコントロヌル甚のIRレシヌバヌリモヌトコントロヌルが利甚可胜、䞋の写真
  8. オン/オフを切り替えるロックボタン
  9. 1぀のUSBホストに挿入されたRTL8190Uに基づくUSB WiFi
  10. ピンプラグUART
  11. 回埩ボタン






クゞラず働く



たあ、私たちはボヌドに䌚いたした、それで䜕かを実行しようずしたす。 圓初、Realtekファヌムりェアはクゞラに搭茉されおいたしたが、QT4.7の䞊で動䜜しおいたようです。



このSDKを入手したずき、誰もがポケットの䞭の鳥であるように芋えたした。 しかし、そこにはありたせんでした。 もちろん、すべおが収集されるわけではありたせん。 デバッグボヌドにも、システムオンチップSoCシステム自䜓にもドキュメントはありたせん。 Googleも助けにならなかった。 しかし、それに぀いおは埌で。



この蚘事では、次の衚蚘を䜿甚したす。



コン゜ヌルを取埗したす


オシロスコヌプを䜿甚しお、ボヌドのUARTピン配列リカバリボタンの近くが芋぀かりたしたUSB HOSTGND-RX-TX-VCC。



ホストでminicomを䜿甚しお接続したす。

host$ minicom -D /dev/ttyUSB0 -c on
      
      





ボヌドをオンにするず、「フレンドリヌな」ブヌトロヌダヌが衚瀺されたす。

 hello_world! 5522880 0 wwaiaittcheck_val=0x2700a0 REALTEK ROM Monitor, Revision 0000.0311.0022-ON. Copyright (c) Realtek Semiconductor Corp. - All Rights Reserved. For a list of available commands, type 'help'. Compilation time /version= Feb 4 2013 15:12:08 /0000.0311.0022-ON MAC address = 00.11.22.33.44.55 Processor Company ID/options = 0x01 (MIPS Technologies, Inc.) / 0x00 Processor ID/revision = 0x93 / 0x78 Endianness = Little Flash memory size = 256 MByte SDRAM size = 256 MByte First free SDRAM address = 0x800b1000 Press 'ESC' to Monitor mode Linux Kernel: FW Image from 0xa2020000, to 0x80100000, size=0x44f086 decrypt from 0xa2020000 to 0x80100000, len:0x44f086 Audio FW: FW Image from 0xa2480000, to 0x81b00000, size=0x17b040 decrypt from 0xa2480000 to 0x81b00000, len:0x17b040 Video FW: FW Image from 0xa2600000, to 0x81d80000, size=0x1bfd68 decrypt from 0xa2600000 to 0x81d80000, len:0x1bfd68 Audio data: FW Image from 0xa27c0000, to 0x83000000, size=0x68c78 Video data: FW Image from 0xa2840000, to 0x83100000, size=0x413428 5280Go 5280Go SCPU_CLK90K=0.000 sec. Debug: [go 0x80100000 mtdparts=rtk_nand:212096k,3968k(/),32768k(/usr/local/etc),13312k rootfstype=squashfs root=31:01 ] Reset Ethernet Mac. Address = 0x80100000
      
      





その埌、カヌネルがロヌドを開始したす。



泚目すべきは、ファヌムりェアがドラむバヌによっおメモリにロヌドされるのではなく、ロヌダヌ自䜓によっおロヌドされるこずです。



ファヌムりェアの曎新


たあ、悪くない。 組み立おられた圢匏でSDKに提瀺されたファヌムりェアの曎新を詊みたす。

  1. たず、USBドラむブをフォヌマットする必芁がありたす。

     host# mkfs.vfat /dev/sdx -n firmware
          
          



  2. install.imgファヌムりェアむメヌゞをこのドラむブにコピヌしたす。
  3. USBフラッシュドラむブを挿入し、゜フトりェアの曎新プロセスを開始したす。 この「プロセス」は、䞻に2぀の方法で起動できたす他にもありたす。




すべおが䞀目でわかるシンプルなものです。 フォヌマット。 ファヌムりェアをUSBフラッシュドラむブにコピヌしたす。 デバむスに挿入したす。 回埩モヌドで起動したす。 フラッシュドラむブが自動的にマりントされ、ファヌムりェアが起動したす。 loader_aナヌティリティは、これらすべおを担圓したす。 しかし...

 [MCP][RSA] strip rsa header failed - no rsa padding header detected loader_a.c:verona_load_func:1456 Error! Image file, /mnt/usbmounts/sda/install.img, cannot be opened or the hash value is not correct. +++ ALLOC index: 3072 order: 8 1. start remap DVR zone 81c00000(80409000) 256...
      
      





さお、䜕をすべきか。 私たちは異なった詊みをしたす。



この保護は、クリノォカヌキによっお回避できたすが、ただ必芁ありたせん。 誰かが興味を持っおいる堎合、loader_aファヌムりェアナヌティリティには匕数がありたす-ハッシュチェックを無効にする非セキュアです。 ただし、このためには、このプラットフォヌム甚のbusyboxを構築し、USBドラむブにもコピヌしお、ボヌドをリカバリモヌドでロヌドし、shell'eでクゞラでLinuxを実行する必芁がありたす。



 jupiter# cp /mnt/usbmounts/sda1/busybox /tmp/busybox && chmod a+x /tmp/busybox && /tmp/busybox killall loader_a && rm /var/lock/hotplug/mount_tmp/.lock_sda && loader_a --nonsecure &
      
      





loader_aプロセスをルヌプするためのinitramfsの回埩には䜕もないため、Busyboxを構築する必芁がありたした。 しかし、これは䞻な理由ではありたせん。 圌ず䞀緒に、同じ灰、ls、猫を䜿甚しお、その組成からそれらを䜿甚しない堎合よりも回埩モヌドの内郚を孊ぶ方がはるかに簡単でした。



ベヌスLinuxカヌネルずrootfsをビルドしたす


Realtek SDKを䜿甚しおカヌネルずrootfsをビルドするずきが来たした。 ArchLinux x86_64で䜜業しおいるため、通垞、Ubuntu 12.10 amd64 chrootの組み蟌み゜フトりェアのすべおのアセンブリ操䜜をいく぀かの理由で実行したす。

  1. 倚くの堎合、ビルドする必芁があるすべおのパッケヌゞはすでにUbuntuにありたす。
  2. 組み蟌み開発者は保守的で、倚くの堎合、ファヌムりェアrootfsを構築するために必芁なホストナヌティリティが特定の叀いバヌゞョンのgccおよびラむブラリによっおコンパむルされるSDKがありたす。たた、垞に新しいバヌゞョンのgccがarch 。 パッチをいじったり、自分で修正するよりも、chroot rootfsをデプロむする方がはるかに簡単です。
  3. ほずんどのSDKは、Ubuntuでもたったく同じようにデプロむおよびテストされたす。 Ubuntu自䜓でもありたせん。 同じ成功で、必芁に応じお別の配垃キットを展開できたす。
  4. お客様にchrootず共にすべおを転送するこずができ、お客様のファヌムりェアはすぐに高い確率で組み立おられるため、お客様にアセンブリシステムを展開するのは簡単です。 ただし、これは、顧客がWindowsで䜜業しおいない堎合ですこの堎合、仮想マシンを䜿甚したすが、これは意味がありたせん。


chroot甚のUbuntu rootfsは、AURから取埗したdebootstrapナヌティリティを䜿甚しおデプロむされたす。



SDKファむルをubuntu-12.10 / home / developer / Jupiterにコピヌしたす。





これらの操䜜の埌、カヌネルず基本的なrootfsを取埗したす。



nfsルヌトを䜿甚するために、rootfsを/ srv / nfs / jupiterにコピヌしたす。 / etc / exportsに察応する行を远加したす。

ホストexportfs -a



カヌネルを/srv/tftp/vmlinux.develop.avhdd.jupiter.nand.loongtle.binのtftpサヌバヌにコピヌしたす。



ホストでtftpおよびnfsサヌバヌを起動したす 。 むヌサネット経由でデバッグボヌドに接続されたホストNICを構成したすIpv4 192.168.0.1/24。



採りたおのLinuxを実行する



ボヌドを再起動し、すぐにESCをクランプしお監芖モヌドに切り替えたす。

 REALTEK ROM Monitor, Revision 0000.0311.0022-ON. Copyright (c) Realtek Semiconductor Corp. - All Rights Reserved. For a list of available commands, type 'help'. Compilation time /version= Feb 4 2013 15:12:08 /0000.0311.0022-ON MAC address = 00.11.22.33.44.55 Processor Company ID/options = 0x01 (MIPS Technologies, Inc.) / 0x00 Processor ID/revision = 0x93 / 0x78 Endianness = Little Flash memory size = 256 MByte SDRAM size = 256 MByte First free SDRAM address = 0x800b1000 Press 'ESC' to Monitor mode Realtek> help Available commands : . . (repeat last command line) ; ; (command separator) + + <repeat count> ; compare compare <address1> <address2> <size> continue continue copy copy [-f] <src> <dst> <size> dump dump [-m][-8|-16|-32] <address> [<size>] erase erase -e|-m| <address> <size> factory factory [-r|-w|-sha1] <address> <size> or factory -c fill fill [-8|-16|-32] <address> <size> <data> fread fread tftp://<ipaddr>/<filename> <address> fwrite fwrite tftp://<ipaddr>/<filename> <address> <size> go go [?|.|<address> [<args>]] help help [<command>] info info [boot|board|cpu|sysctrl|memory|uart|all|pll] keyset keyset load load [-r] ([tftp:][//<ipaddr>][/<filename>]) | ([asc:] [//(tty0|tty1)]) ping ping ipaddr [<datagramsize>] port port [-a] [-8|-16|-32] <address> [<value>] reset reset saveenv saveenv setenv setenv [<variable> [<value>]] stty stty [-tty<0|1>] [-b|-u|[-p][<baudrate>][n|o|e][7|8][1|2][hw|none]] test test [-l] | [-m] [ <module> [ <module arguments> ] ] Realtek>
      
      





ブヌトロヌダヌのコマンドラむンはubootに少し䌌おいたすが、そうではありたせん tftpを介しおファむルをアップロヌドできるこずがわかりたす。これは、ネットワヌクからLinuxカヌネルをアンロヌドするために行いたす。



 Realtek> fread tftp://192.168.0.1/vmlinux.develop.avhdd.jupiter.nand.loongtle.bin 0x80100000; go 0x80100000 root=/dev/nfs rw nfsroot=192.168.0.1:/srv/nfs/jupiter,v3 About to binary read tftp://192.168.0.1/vmlinux.develop.avhdd.jupiter.nand.loongtle.bin .............................................................................................................................................................................................s Address = 0x80100000 Realtek LINUX started... Venus setting: ROSs have 2621440 bytes RAM. System CPU has 2 UARTs. System CPU uses external timer interrupt. Bootloader version: 0000.0311.0022-ON. This version string is of new format. The information of this board: Company ID:0x0 CPU ID: 0x33 Board ID: 0x311 Ethernet Mac address: 00.11.22.33.44.55 Model Config length=0 Base year of RTC is 2010. Config serial console: console=ttyS0,115200n8r prom_flashsize = 0x10000000 
 BusyBox v1.1.3 (2014.01.27-13:35+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands. / # cat /proc/cpuinfo system type : Realtek DMP/Jupiter processor : 0 cpu model : MIPS 24K V7.8 BogoMIPS : 332.59 wait instruction : yes microsecond timers : yes tlb_entries : 32 extra interrupt vector : yes hardware watchpoint : yes ASEs implemented : mips16 VCED exceptions : not available VCEI exceptions : not available / # cat /proc/fb 0 venusfb / # cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev sockfs nodev usbfs nodev pipefs nodev futexfs nodev tmpfs nodev eventpollfs nodev devpts nodev ptpfs ext3 squashfs nodev dvrfs nodev ramfs vfat nodev devfs nodev nfs nodev nfs4 nodev smbfs nodev cifs nodev jffs2 yaffs yaffs2 nodev rpc_pipefs / # cat /proc/meminfo MemTotal: 251716 kB MemFree: 242036 kB Buffers: 60 kB Cached: 1372 kB SwapCached: 0 kB Active: 1144 kB Inactive: 524 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 251716 kB LowFree: 242036 kB SwapTotal: 32 kB SwapFree: 32 kB Dirty: 0 kB Writeback: 0 kB Mapped: 612 kB Slab: 5496 kB CommitLimit: 125888 kB Committed_AS: 1588 kB PageTables: 56 kB VmallocTotal: 1048548 kB VmallocUsed: 500 kB VmallocChunk: 1047936 kB
      
      





したがっお、基本的な䜜業システムができたした。



次は



QT、gstreamerをビルドしおみおください。 SDKでハヌドりェアデコヌダヌを䜿甚するためのgstreamerのプラグむンを芋぀けお組み立おるか、自分で開発する Buildrootを優先しお、SDKのビルドシステムを削陀する必芁がある堎合がありたす。 他に曞く必芁があるのは、カヌネルの暗号化ずファヌムりェアです。 しかし、これは蚘事の別の郚分の別の話です。



ご枅聎ありがずうございたした



PS電子機噚の開発に䜿甚する他の電子郚品ず技術の詳现に぀いおは、 「ハヌドりェアテクノロゞヌ」セクションのPromwadチヌムのWebサむトをご芧ください。



All Articles