Preloader のログは通常UART の0 番チャネルに出力されます。ログの出力を UART1 に変更する方法について解説します。
事前準備
- Quartus II / Qsys の HPS 設定にて UART 1 を使用する設定に変更し、ハンドオフファイルを再生成しておく必要があります。
- Cyclone V SoC 開発キット / Helio ボードでは、UART 1 はボード上にて未使用のためログの出力ポートを変更することは出来ません。
手順
- Preloader を生成する
以下のリンクを参考に一旦 Preloader を生成します。これは修正するファイルが Preloader の生成時に構成されるためです。
- UART のチャネルを変更する
以下のファイルを編集し、ログの出力に使用する UART のチャネルを指定します。
/uboot-socfpga/include/configs/socfpga_common.h
修正前
-----------------------------------------------------------------
/*
* NS16550 Configuration
*/
#define CONFIG_SYS_NS16550
#ifdef CONFIG_SYS_NS16550
#define UART0_BASE SOCFPGA_UART0_ADDRESS
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE -4
#define CONFIG_CONS_INDEX 1
#define CONFIG_SYS_NS16550_COM1 UART0_BASE
#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, 115200}
#if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET)
#define CONFIG_SYS_NS16550_CLK 1000000
#else
#define CONFIG_SYS_NS16550_CLK (cm_l4_sp_clock)
#endif
#define CONFIG_BAUDRATE 115200
#endif /* CONFIG_SYS_NS16550 /
-----------------------------------------------------------------
修正後
-----------------------------------------------------------------
/*
NS16550 Configuration
*/
#define CONFIG_SYS_NS16550
#ifdef CONFIG_SYS_NS16550
#define UART0_BASE SOCFPGA_UART0_ADDRESS
#define UART1_BASE SOCFPGA_UART1_ADDRESS /* この行を追加 */
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE -4
#define CONFIG_CONS_INDEX 1
/*#define CONFIG_SYS_NS16550_COM1 UART0_BASE*/
#define CONFIG_SYS_NS16550_COM1 UART1_BASE /* この行を編集 */
#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, 115200}
#if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET)
#define CONFIG_SYS_NS16550_CLK 1000000
#else
#define CONFIG_SYS_NS16550_CLK (cm_l4_sp_clock)
#endif
#define CONFIG_BAUDRATE 115200
#endif /* CONFIG_SYS_NS16550 */
-----------------------------------------------------------------
- Preloader を再生成する
編集を反映させるため Preloader を再ビルドします。
$ make all