U-BOOTとFTDI UART

Petalinux 2020.2, PicoZed, FTDI FT232RL, UART, U-BOOT

Reference : Xilinx forum https://forums.xilinx.com/t5/Embedded-Linux/ZC702-booting-stops-without-UART/td-p/904614 , FTDI FT232R Datasheet

Abstract : When U-BOOT is booted, if any key is pressed, Autoboot is stopped and enters the command mode. In case of FTDI FT232R is used as an USB-UART converter; if FT232R is in reset state, always some key is pressed. Then Linux does not start and the command mode of U-BOOT is launched. To avoid this, either turn on FT232R all the time, or set Autoboot to stop only when a specific key is pressed by the U-BOOT configuration.

U-BOOTは起動時に何かキーを押すとAutobootがストップし、コマンドモードに入る。FTDI FT232RをUSB-UART変換として使っている場合、FT232Rがリセット状態であると何かキーが押された状態となり、Linuxが起動せずU-BOOTのコマンドモードで止まってしまう。これを回避するためには、FT232Rを常時ONにするか、U-BOOTで特定のKeyを押した場合にのみAutobootをストップするように設定する。

以下のような回路の場合、

ft232rl.PNG

USBケーブル未接続時にFT232Rの電源をオフする事ができる。しかし、電源オフの場合、U-BOOT側では常に何かキー入力があると判断され、コマンドモードが起動され、Linuxがブートされない。回路的にこの問題を回避するためには、RESET入力をLogic Highに固定するか、未接続のままにしておく。

一方、回路を変更せずにU-BOOT側で対処する事も可能である。

petalinux-config -c u-boot

Command line interface - Autoboot options

で、

ubootconfig.PNG

のようにStop autobooting via specific input key / string にチェックを入れ、Stop autobooting via specific input key / stringに適当な文字列を入れておく。この例では、参考文献にならって、stop という文字列を入れた場合にのみU-Bootがコマンドモードに移行するようになっている。これで、たとえFT232Rが電源OFF状態で何らかのキー入力があると判断されても、stopという文字列には合致せず、きちんとLinuxがブートされることになる。

PetaLinux EthernetポートのLED

PetaLinux 2020.2, PicoZed, Marvell, LED

Reference : Datasheet of 881512 in https://jp.marvell.com/products/transceivers/alaska-gbe.html 

Abstract : When I changed from PetaLinux 2018.3 to 2020.2, the device driver was also updated, and the value of the Ethernet LED control in marvell.c seems to have been replaced.
I'm using PicoZed, and one of the two LEDs on the RJ45 port now shows the link, and the other is always off. Problem is in components/yocto/workspace/sources/linux-xlnx/drivers/net/phy/marvell.c, we can modify the LED control by MII_88E1510_PHY_LED_DEF . After rebuilding the image, hardware power cycle might be needed.

PetaLinux 2018.3から2020.2に変更すると、デバイスドライバもアップデートされ、marvell.cでのEthernet LEDのコントロールの値が代わったようだ。
PicoZedを使っているが、RJ45ポートの2つのLEDのうち、片方がリンクを表示し、もう片方が常時消灯になってしまった。

問題はプロジェクト内に展開される、components/yocto/workspace/sources/linux-xlnx/drivers/net/phy/marvell.c

#define MII_PHY_LED_CTRL 16
#define MII_88E1121_PHY_LED_DEF 0x0030
// #define MII_88E1510_PHY_LED_DEF 0x1177
#define MII_88E1510_PHY_LED_DEF 0x0030

MII_88E1510_PHY_LED_DEFでLEDのコントロールの値を変えている。値は、4bitづつ下のビットからLED[0], LED[1], LED[2]の設定になっている。2020.2のmarvell.cだと、

LED[0] = 7 : 1000Mbps Link
LED[1] = 7 : 100Mbps Link
LED[2] = 1 : On - Link, Blink - Activity

になっている。0x0030に変えてあげると、

LED[0] = 0 : On - Link (any speed)
LED[1] = 3 : On - Activity
LED[2] = 0 : On - Link

になる。ちなみにLED[1]=4ならBlink - Activity。点滅が早い方が好みの場合は4にすると良い。

kernelをビルドしなおしてイメージを更新すれば良い。ただし、Linuxをリブートだけではダメで、電源を入れなおさないとうまく行かないようだ。

ZCU111開発続き。

Vivadoプロジェクトの立ち上げと、ファームウェア改造後にRFSoC用のアプリケーションを作る手順についてまとめる。

Vivadoインストールはこちらのページを参考にした。Xilinx社のインストール資料はこちら
※もしXilinx社のアカウントを持っていない場合はアカウント登録してください。
※WebPackではZCU111に使えないので、Vivado HL WebPACKではなくVivado HL Design EditionまたはSystem Editionを選択すること。
この記事でも書いた通り、SDKを使う関係でver.2019.1(Design Edition以上)を使っていく。

主な参考資料
Xilinx Wiki:Petalinux Build Tutorial for ZU+ RFSoC ZCU111 2019.1

ZCU111 PetalinuxとSDKのビルド及びプロジェクト作成

  • 投稿日:
  • by
  • カテゴリ:

ZCU111開発続き。

PetalinuxのインストールとSDK。
ハード・ソフトのデザイン追加変更においてPetalinuxが必要なので、それをやる。
Petalinuxで準備してSDKのpathを設定してVivadoを使う、といった順番。
※そこそこ時間がかかる。
(パソコンのスペックによるが、数時間はかかる)

主な参考資料
Xilinx Wiki:Creating Linux application targeting the RFDC driver in SDK 2018.3Petalinux Build Tutorial for ZU+ RFSoC ZCU111 2019.1
PetaLinux ツール資料リファレンス ガイド:UG1144

ZCU111 開発前の準備とボードのセットアップ

  • 投稿日:
  • by
  • カテゴリ:

Xilinx社のRFSoCデバイスであるZynq UltraScale+ RFSoc ZCU111評価キットを使ってデータ収集システムの開発を進めている。(製品ページ

今回はインストールが必要なものリストなど、開発前の準備について書く。

※Xilinx社のアカウントを必要とするものが多いため、最初にアカウント作成しておく。