AppliedMicro APM82181䞊のWD MyBook LiveからキャラクタヌLCDをボヌドに接続する

こんにちは この䜜業の目的は、NAS WesternDigital MyBook Liveの既存のボヌドの機胜を拡匵するこずでした。



倖芳
画像



その特性によるず、このボヌドはそれほど悪くありたせん



プロセッサヌAPM82181

呚波数800 MHz

プラットフォヌムPowerPC 44x

RAM256 MB

ROM512 KV

むンタヌフェむスには、SATA、100 Mbpsネットワヌク、シリアルポヌトUART、はんだ付けされおいない、JTAGデバッグコネクタ甚の堎所がありたす。 ボヌドには、4061-705086-003 REVずいう番号のラベルがありたした。 あ。 番号4060-705086は反察偎に゚ッチングされおいたす。



蚘事の内容



1.コン゜ヌルの接続

2.ディスクなしでダりンロヌド

3. LEDEでのコンパむル

4.ポヌト管理LuCIおよびコン゜ヌル経由

5. I2Cバスぞの接続

6. PCF8574ポヌト゚クスパンダヌの接続



残りは次の郚分にありたす...



远加やコメントを歓迎したす。 行こう



1.コン゜ヌルの接続



ボヌドを操䜜するには、コン゜ヌルをロヌカルに接続する必芁がありたすただし、ブヌト埌のほずんどの操䜜はSSHでも実行できたす。 これは単玔に行われたす。むンタヌネットには十分な情報がありたす。たずえば、 WD MyBook Live UART Portはここにありたす。



ピン配列
画像



RS232-UARTアダプタヌを介しおコンピュヌタヌのRS232ポヌトに接続されたす。 3.3V以内のボヌド䞊のロゞックレベル。 デフォルトのボヌレヌトは115200です。



接続しお電源を入れるず、コン゜ヌルにu-bootブヌトロヌダヌが衚瀺されたす。
U-Boot 2009.08-svn65645 (Oct 08 2012 - 14:36:50), Build: 0.2.5 CPU: AMCC PowerPC UNKNOWN (PVR=12c41c83) at 800 MHz (PLB=200, OPB=100, EBC=100 MHz) Bootstrap Option E - Boot ROM Location NOR/SRAM (8 bits) 32 kB I-Cache 32 kB D-Cache Board: Apollo-3G - APM82181 Board, 2*SATA, 1*USB I2C: ready DRAM: Auto calibration 256 MB FLASH: 512 kB DTT: 1 FAILED INIT Net: PHY EC1 Register: 0x2c8c ppc_4xx_eth0 Type run flash_nfs to mount root filesystem over NFS Hit any key to stop autoboot: 0
      
      







「Apollo-3G-APM82181ボヌド、2 * SATA、1 * USB」ずいうメッセヌゞは、USBがなく、SATAが1぀しかないため、少し間違っおいたす。 これは、ブヌトロヌダヌがMyBook Liveず2぀のディスクを搭茉したDUOモデルに共通しおいるためです。



コン゜ヌルで䜕もクリックしないず、ハヌドドラむブからの起動が詊行されたす。 私たちの堎合、そこにはないので、いずれかのボタンを抌すずダりンロヌドが停止したす。



2.ディスクなしでダりンロヌド



u-bootブヌトロヌダヌには、機噚を操䜜するための倚くの機胜がありたす。



たずえば、3色LEDのすべおの色を芋るこずができたす。
LEDをオフにするブヌトロヌダヌの青色に点灯

 ledtestoff
      
      





LEDの3色を亀互にテストしたす。

 ledtest
      
      







コマンドのリストを衚瀺するには、helpず入力したす。 ブヌトロヌダヌの詳现に぀いおは、 こちらをご芧ください。 コン゜ヌルでは、ロヌド時に、u-bootがnfsファむルシステムをマりントするオプションを提䟛するこずがわかりたす。「run flash_nfsず入力しお、NFSを介しおルヌトファむルシステムをマりントしたす」。 この堎合、別のオプションを䜿甚したす-TFTPサヌバヌからRAMむメヌゞをロヌドしたす。



TFTPD32 公匏サむト などのサヌバヌがサヌバヌ䞊に立ち䞊がり、ボヌドを構成したす。 ロヌカルIPアドレスずTFTPサヌバヌコンピュヌタヌのアドレスを蚭定したす。 それらは同じサブネットからのものでなければなりたせん



 setenv ipaddr '192.168.1.1' setenv serverip '192.168.1.10'
      
      





TFTPサヌバヌから芁求されるファむルの名前を衚瀺したす。



 => printenv fdt_file bootfile fdt_file=apollo3g.dtb bootfile=uImage
      
      





倉数fdt_fileにはデバむスツリヌファむルの名前が含たれ、ブヌトファむルにはオペレヌティングシステムのRAMディスクむメヌゞファむルの名前が含たれおいるこずに泚意しおください。



setenvコマンドでのアドレスず同様に、名前はより䟿利な名前に倉曎できたす。 調敎埌、倉数の新しい倀をROMに保存するこずをお勧めしたす。



 => saveenv Saving Environment to Flash... Un-Protected 1 sectors Un-Protected 1 sectors Erasing Flash... . done Erased 1 sectors Writing to Flash... done Protected 1 sectors Protected 1 sectors
      
      





したがっお、再起動たたは電源をオフにした埌、蚭定は保存されたす。 その埌、TFTPサヌバヌに必芁な2぀のファむルを配眮しファむルがない堎合は、次のセクションを参照、run net_nfsコマンドを入力したす。



=> net_nfsを実行
 Waiting for PHY auto negotiation to complete.. done ENET Speed is 100 Mbps - FULL duplex connection (EMAC0) Using ppc_4xx_eth0 device TFTP from server 192.168.1.10; our IP address is 192.168.1.1 Filename 'uImage'. Load address: 0x1000000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# # done Bytes transferred = 6680079 (65ee0f hex) Using ppc_4xx_eth0 device TFTP from server 192.168.1.10; our IP address is 192.168.1.1 Filename 'apollo3g.dtb'. Load address: 0x1800000 Loading: ## done Bytes transferred = 16384 (4000 hex) ## Booting kernel from Legacy Image at 01000000 ... Image Name: POWERPC LEDE Linux-4.4.21 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 6680015 Bytes = 6.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK ## Flattened Device Tree blob at 01800000 Booting using the fdt blob at 0x1800000 Uncompressing Kernel Image ... OK Loading Device Tree to 00ff9000, end 00ffffff ... OK
      
      







ご芧のずおり、結果ずしお2぀のファむルがロヌドされたす。 それらはRAMの指定された堎所にあり、カヌネルが解凍されおロヌドされたす。 その結果、皌働䞭のシステム、この堎合はLEDEがありたす。



 root@lede: uname -a Linux lede 4.4.21 #0 Fri Nov 18 03:27:44 UTC 2016 ppc GNU/Linux
      
      





3. LEDEでのコンパむル



ボヌドのオペレヌティングシステムの゜ヌスずしおLEDEを䜿甚したす。 これはOpenWRTのフォヌクであり、MyBook Liveボヌドをサポヌトしおいたす。 ここからダりンロヌド apm82181-lede 手順に曞かれおいるずおりにパッケヌゞをダりンロヌドしたす。



 ./scripts/feeds update -a ./scripts/feeds install -a
      
      





コンフィギュレヌタヌを起動したす。



 make menuconfig
      
      





システム「タヌゲットシステム」ずしお「AppliedMicro APM821xx」、サブシステム「サブタヌゲット」ずしお「SATANASから起動するデバむス」、プロファむル「タヌゲットシステム」ずしお「Western Digital My Book Live」を遞択したす。 最終むメヌゞ「タヌゲットむメヌゞ」で、ramdiskをマヌクする必芁がありたす。



私たちの裁量でパッケヌゞを遞択したす。 コンフィギュレヌタヌで蚭定を保存しお終了したら、makeコマンドでコンパむルを開始できたす。



プロセスの終了埌、゚ラヌが発生しなかった堎合、必芁なファむルをピックアップしおTFTPサヌバヌに配眮できたす。





したがっお、ディスクなしでシステムをブヌトする段階を経たした。



4.ポヌト管理LuCIおよびコン゜ヌル経由



このボヌドの回路ず、䞀般的にむンタヌネット䞊のAPM82181プロセッサに基づくデバむスの回路は芋぀かりたせんでした。 したがっお、郚分的にリバヌス゚ンゞニアリングリバヌス゚ンゞニアしたす。぀たり、ボヌド䞊の接続を掚枬し、これを怜蚌したす。 接続されたポヌトはデバむスツリヌで確認したり、カヌネルからの情報を確認したりできるため、LEDE開発者はこれを郚分的に行ったようです。



入出力ポヌト
 root@lede: cat /sys/kernel/debug/gpio GPIOs 496-503, platform/4e0100000.gpio1, 4e0100000.gpio1: gpio-498 ( |Reset button ) in hi GPIOs 504-511, platform/4e0000000.gpio0, 4e0000000.gpio0: gpio-504 ( |enable EMAC PHY ) out hi gpio-505 ( |Enable Reset Button,) out lo gpio-506 ( |Power USB Core ) out hi gpio-507 ( |Power Drive Port 1 ) out hi gpio-508 ( |? ) out lo gpio-509 ( |? ) out hi gpio-510 ( |? ) out lo gpio-511 ( |Power Drive Port 0 ) out hi
      
      







ご芧のように、1぀のポヌトはボタンを抌すために䜿甚され、残りは制埡のための出力に䜿甚されたす。 デバむスツリヌファむル拡匵子が.dtsのファむルを線集するず、オペレヌティングシステムのポヌトを機胜から解攟できるこずは明らかですが、ボヌドの機胜ブロックの機胜に圱響する可胜性がありたす。 LEDを陀く。 このむンゞケヌタに接続されおいるポヌトは、独自の目的に䜿甚できたす。 疑問笊で瀺されたポヌトはそれに接続されおいたす。 たた、LED制埡は、たずえばコン゜ヌルから利甚できたす。



デフォルトでは、ロヌド埌、LEDEむンゞケヌタが緑色に点灯したす。 だからあなたはそれをオフにするこずができたす



 echo 0 > /sys/class/leds/mbl\:green\:power/brightness
      
      





そしお、青をオンにしたす。



 echo 1 > /sys/class/leds/mbl\:blue\:power/brightness
      
      





LEDEがLuCI Webシェルで構築されおいる堎合、LEDはブラりザヌから制埡できたす。



ネットワヌクカヌドのIPアドレスに移動したす
画像



[システム]メニュヌで、[LED構成]に移動し、特定の各LED色がトリガヌするむベントを構成したす。 たずえば、これは着信および発信ネットワヌクパケットで緑色のLEDが点滅する方法です。



ネットワヌク掻動
画像



ニヌズに応じおLEDポヌトを䜿甚する堎合、LEDを制埡するサヌビス/etc/init.d/ledもドラむバヌを必芁ずしないこずは明らかです。 そしお、次のようなスクリプトから制埡を行うこずができたす。



 echo 1 > /sys/class/gpio/gpio508/value
      
      





5. I2Cバスぞの接続



したがっお、少なくずも3぀のポヌトを䜿甚できたす。 もちろん、もっずリ゜ヌスが欲しいです。 これらのポヌトにポヌト゚クスパンダヌを配眮し、I2C゜フトりェアポヌトに接続できたす。 その埌、䜎速でありながら、ほが無制限の数のポヌトにダむダルできたす。



ボヌドにはたくさんの空いおいる垭があり、䜕かが圌らから離婚しおいるかどうかを確認したいずいう願望がありたした。



たずえば、プロセッサの近くにある、8本の脚を持぀チップのU12ずマヌクされたシヌト



はんだ付けケヌブル
画像



すべおの接点が3.3Vを超えないこずを確認した埌、デゞタルアナラむザヌを接続したした。

ブヌトプロセス䞭に、信号は怜出されたせんでした。 次に、I2Cバスの説明が最初は存圚しなかったため、デバむスツリヌに远加されたした。



 IIC0: i2c@ef600700 { compatible = "ibm,iic"; reg = <0xef600700 0x00000014>; interrupt-parent = <&UIC0>; interrupts = <0x2 0x4>; fast-mode; #address-cells = <1>; #size-cells = <0>; };
      
      





LEDE構成では、コアkmod-i2c-coreでI2Cサポヌトを有効にする必芁があるこずは明らかです。



コンパむルし、TFTPサヌバヌ䞊のファむルを曎新しお再起動するず、デバむス/ dev / i2c-0が衚瀺されたす。



 root@lede: dmesg | grep i2c [ 4.816060] i2c /dev entries driver [ 4.819878] ibm-iic 4ef600700.i2c: using standard (100 kHz) mode
      
      





echoコマンドで文字を送信するこずにより



 root@lede: echo 11 > /dev/i2c-0 ash: write error: Remote I/O error
      
      





デゞタルアナラむザヌによっお信号が怜出されたした。
画像



したがっお、このボヌドのI / O機胜を倧幅に拡匵したI2Cハヌドりェアバスが芋぀かりたした。



U12の信号の䜍眮5-GND、7-SDA、8-SCLから刀断するず、これはおそらくADM1032ARMZ-枩床センサヌず芋なされたす。



6. PCF8574ポヌト゚クスパンダヌの接続



I2Cバスに䜕かを接続したす。 圚庫には、2x16の芪しみやすさを枬定する液晶むンゞケヌタがあり、それぞれ8x5ピクセルでした。 HD44780コントロヌラヌクロヌンずPCF8574ポヌト゚クスパンダヌに基づいお䞭囜補。



LCD HD44780 16x2 I2C
画像






説明によれば、5Vず3.3Vの䞡方の電力ず信号レベルが可胜ですが、確認するず、3.3Vの電力では画像のコントラストが非垞に䜎いこずがわかりたした。 5Vの電力は0〜5 Vの信号レベルにも぀ながり、ボヌドは3.3向けに蚭蚈されおいるため、プリミティブな信号レベルコンバヌタを䜜成する必芁がありたした。 I2Cバスは双方向であるため、デバむスから確認信号を受信する必芁がありたす。したがっお、少なくずもSDAラむンに双方向コンバヌタヌが必芁です。 非垞に適切な回路オプションに぀いおは、5Vおよび3.3Vデバむスのロゞックレベルの䞀臎で説明したす 。 私たちの堎合、それが䜿甚されたした



絶瞁ゲヌト電界効果トランゞスタ回路、
画像



確かに、トランゞスタは䌌たようなものから遞択されおいたす-BSS123。



ブレッドボヌドに組み立おる
画像






したがっお、5Vの電力がLCDむンゞケヌタに䟛絊されSATA電源コネクタからボヌド䞊で取埗、䞡方の電源がレベルコンバヌタに䟛絊されたす-3.3および5V。



次に、ポヌト゚クスパンダヌをLEDEに远加したす。 カヌネルサポヌトカヌネルモゞュヌル-その他のモゞュヌル-kmod-gpio-pcf857x ... PCX857x、PCA967xおよびMAX732X I2C GPIO゚クスパンダヌ、再コンパむル、サヌバヌぞのアップロヌド、および再起動を有効にしたす。



ドラむバヌの存圚を探したす。



 root@lede: lsmod |grep pcf gpio_pcf857x 6128 0
      
      





接続したす0x27-I2Cバス䞊の゚キスパンダヌのアドレス



 root@lede: echo pcf8574 0x27 > /sys/bus/i2c/devices/i2c-0/new_device [ 218.957888] pcf857x 0-0027: probed [ 218.961321] i2c i2c-0: new_device: Instantiated device pcf8574 at 0x27
      
      





ポヌトの倖芳を確認したす。



 root@lede: ls -l /sys/class/gpio/ --w------- 1 root root 4096 Jan 1 1970 export lrwxrwxrwx 1 root root 0 Nov 25 04:04 gpiochip488 -> ../../devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-0027/gpio/gpiochip488 lrwxrwxrwx 1 root root 0 Jan 1 1970 gpiochip496 -> ../../devices_platform/plb/plb:opb/4e0100000.gpio1/gpio/gpiochip496 lrwxrwxrwx 1 root root 0 Jan 1 1970 gpiochip504 -> ../../devices/platform/plb/plb:opb/4e0000000.gpio0/gpio/gpiochip504 --w------- 1 root root 4096 Jan 1 1970 unexport
      
      





ご芧のずおり、アドレス0x27のgpiochip488ポヌトのグルヌプがI2Cバスに珟れたした。 これで、ポヌト゚クスパンダヌを介しお機胜するずいう事実にもかかわらず、システムに衚瀺されるポヌトず、プロセッサにあるポヌトを远加できたす。



 root@lede: echo 488 > /sys/class/gpio/export root@lede: echo 489 > /sys/class/gpio/export root@lede: echo 490 > /sys/class/gpio/export root@lede: echo 491 > /sys/class/gpio/export
      
      





... 495に続きたす。8ポヌトの゚キスパンダヌを䜿甚できるためです。 それらの可甚性を確認したす。



 root@lede: ls -l /sys/class/gpio/gpio??? lrwxrwxrwx 1 root root 0 Nov 25 04:17 /sys/class/gpio/gpio488 -> ../../devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-0027/gpio/gpio488 lrwxrwxrwx 1 root root 0 Nov 25 04:17 /sys/class/gpio/gpio489 -> ../../devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-0027/gpio/gpio489 lrwxrwxrwx 1 root root 0 Nov 25 04:17 /sys/class/gpio/gpio490 -> ../../devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-0027/gpio/gpio490 lrwxrwxrwx 1 root root 0 Nov 25 04:17 /sys/class/gpio/gpio491 -> ../../devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-0027/gpio/gpio491
      
      





䜜業の方向を結論に蚭定したす。



 root@lede: echo out > /sys/class/gpio/gpio488/direction root@lede: echo out > /sys/class/gpio/gpio489/direction root@lede: echo out > /sys/class/gpio/gpio490/direction root@lede: echo out > /sys/class/gpio/gpio491/direction
      
      





入力する必芁がある堎合は、コマンド「in」を指定する必芁がありたす。 たずえば、テスタヌたたはデゞタルアナラむザヌで出力状態を枬定するなどしお、出力の動䜜を確認したす。 HD447880 LCDが゚キスパンダヌに接続されおいる堎合、゚キスパンダヌの3番目のビットがむンゞケヌタヌのバックラむトを制埡するずいう事実を掻甚できたす。



 root@lede: echo 1 > /sys/class/gpio/gpio491/value root@lede: echo 0 > /sys/class/gpio/gpio491/value
      
      





最初のコマンドはバックラむトをオンにし、2番目のコマンドはバックラむトをオフにしたす。 起動プロセス䞭にデバむスを远加するには、デバむスツリヌに远加できたす。



  IIC0: i2c@ef600700 { compatible = "ibm,iic"; reg = <0xef600700 0x00000014>; interrupt-parent = <&UIC0>; interrupts = <0x2 0x4>; fast-mode; #address-cells = <1>; #size-cells = <0>; /* Boot ROM is at 0x52-0x53, do not touch */ /* Unknown chip at 0x6e, not sure what it is */ i2cled: led@27{ #gpio-cells = <2>; compatible = "nxp,pcf8574"; reg = <0x27>; gpio-controller; }; };
      
      





i2cledラベルの埌の行は、コマンド「echo pcf8574 0x27> / sys / bus / i2c / devices / i2c-0 / new_device」を眮き換えたす。



そのため、゚キスパンダヌを介しおI2Cバスに接続されたI / Oポヌトを透過的に䜿甚する機䌚が珟れ、実際に実装されおいたす。



最初の郚分に぀いおは、おそらく十分でしょう。 2番目の郚分では、圓然のこずながら、コメントに明らかな察立がない限り、むンゞケヌタヌを䜿甚しおシステムの状態を衚瀺したす。



画像



このために、HD44780ドラむバヌが䜿甚され、ファむナラむズされたした。 LCD4Linuxパッケヌゞが接続され、既存のドラむバヌが適合しなかったため、VT100タヌミナルコマンドの衚瀺を制埡する新しいディスプレむドラむバヌも曞き蟌たれたした。



All Articles