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がブートされることになる。