0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cora Z7 > ビルトイン USBシリアルでFSBLの処理メッセージを表示したい > 10秒のdelayを追加 > microSDからアプリ起動もした

Last updated at Posted at 2020-10-17
動作環境
CORA Z7
Windows 10 Pro v1909
Vivado v2019.1
TeraTerm Version 4.105

概要

Cora Z7を用いた実装をしたのだが、デバッガ動作で動いてmicroSD動作で動かない。
microSD動作を確認するため、FSBLのメッセージをシリアル出力したい。

接続

  • USB
    • 電源として
    • シリアル出力用
  • Pmod JA 0と1ピン
    • UARTLiteで使おうとしたが、だめだった

シリアル出力の問題

  • ビルトインUSBシリアル
    • USB電源で接続した時にTeraTermの接続が切れる
    • 接続が戻るまでに出力がなくなる?
  • Pmod JA 0と1ピン
    • UARTLiteで実装
    • FSBLのメッセージをこちらに表示しようとしたが、いろいろ試して成功せず

対処

  • fsblのmain.cを以下のようにした。
    • #include <sleep.h>を追加
    • main()でsleepを追加
main.c
int main(void)
{
	u32 BootModeRegister = 0;
	u32 HandoffAddress = 0;
	u32 Status = XST_SUCCESS;
	u32 RegVal;
	/*
	 * PCW initialization for MIO,PLL,CLK and DDR
	 */

	sleep(10); // <------ 追加した処理 -------

	Status = ps7_init();

FSBL出力

Xilinx First Stage Boot Loader
Release 2019.1  Oct 17 2020-12:02:15
Devcfg driver initialized
Silicon Version 3.1
Boot mode is SD
SD: rc= 0
SD Init Done
Flash Base Address: 0xE0100000
Reboot status register: 0x60400000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 3
Partition Number: 1
Header Dump
Image Word Len: 0x0007F2E8
Data Word Len: 0x0007F2E8
Partition Word Len:0x0007F2E8
Load Addr: 0x00000000
Exec Addr: 0x00000000
Partition Start: 0x000075D0
Partition Attr: 0x00000020
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFE7AF06
Bitstream
In FsblHookBeforeBitstreamDload function
PCAP:StatusReg = 0x40000A30
PCAP:device ready
PCAP:Clear done
Level Shifter Value = 0xA
Devcfg Status register = 0x40000A30
PCAP:Fabric is Initialized done
PCAP register dump:
PCAP CTRL 0xF8007000: 0x4C00E07F
PCAP LOCK 0xF8007004: 0x0000001A
PCAP CONFIG 0xF8007008: 0x00000508
PCAP ISR 0xF800700C: 0x0802000B
PCAP IMR 0xF8007010: 0xFFFFFFFF
PCAP STATUS 0xF8007014: 0x00000A30
PCAP DMA SRC ADDR 0xF8007018: 0x00100001
PCAP DMA DEST ADDR 0xF800701C: 0xFFFFFFFF
PCAP DMA SRC LEN 0xF8007020: 0x0007F2E8
PCAP DMA DEST LEN 0xF8007024: 0x0007F2E8
PCAP ROM SHADOW CTRL 0xF8007028: 0xFFFFFFFF
PCAP MBOOT 0xF800702C: 0x0000C000
PCAP SW ID 0xF8007030: 0x00000000
PCAP UNLOCK 0xF8007034: 0x757BDF0D
PCAP MCTRL 0xF8007080: 0x30800100

DMA Done !

FPGA Done !
In FsblHookAfterBitstreamDload function
Partition Number: 2
Header Dump
Image Word Len: 0x00002002
Data Word Len: 0x00002002
Partition Word Len:0x00002002
Load Addr: 0x00100000
Exec Addr: 0x00100000
Partition Start: 0x000868C0
Partition Attr: 0x00000010
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFD734C8
Application
Handoff Address: 0x00100000
In FsblHookBeforeHandoff function
SUCCESSFUL_HANDOFF
FSBL Status = 0x1
Hello World

最後の「Hello World」はアプリケーションの出力であり、microSDのBOOT.binを読み込み成功しているな。
FSBLのsleep(10)が有効なのか?

関連情報

補足情報

Block design

aaa.png

UARTLiteを5つ足しているが、今回は使ってない。

xdcファイル

UARTLiteを5つ足しているが、今回は使ってない。

set_property PACKAGE_PIN Y18 [get_ports rx_0]
set_property PACKAGE_PIN Y19 [get_ports tx_0]
set_property IOSTANDARD LVCMOS33 [get_ports rx_0]
set_property IOSTANDARD LVCMOS33 [get_ports tx_0]
set_property PACKAGE_PIN Y16 [get_ports rx_1]
set_property PACKAGE_PIN Y17 [get_ports tx_1]
set_property IOSTANDARD LVCMOS33 [get_ports rx_1]
set_property IOSTANDARD LVCMOS33 [get_ports tx_1]
set_property PACKAGE_PIN U18 [get_ports rx_2]
set_property PACKAGE_PIN U19 [get_ports tx_2]
set_property IOSTANDARD LVCMOS33 [get_ports rx_2]
set_property IOSTANDARD LVCMOS33 [get_ports tx_2]
set_property PACKAGE_PIN W18 [get_ports rx_3]
set_property PACKAGE_PIN W19 [get_ports tx_3]
set_property IOSTANDARD LVCMOS33 [get_ports rx_3]
set_property IOSTANDARD LVCMOS33 [get_ports tx_3]
set_property PACKAGE_PIN W14 [get_ports rx_4]
set_property PACKAGE_PIN Y14 [get_ports tx_4]
set_property IOSTANDARD LVCMOS33 [get_ports rx_4]
set_property IOSTANDARD LVCMOS33 [get_ports tx_4]

FSBLの設定

FSBLのプロジェクト設定にて、
C/C++ Build > Settings > Tool Settings > ARM v7 gcc compiler > Symbols

FSBL_DEBUG_INFO
を足す。

Vivado v2019.2

v2019.2を使うとmicroSDブートできるような記載があった、v2019.2ではxil_printf.h not foundになり、あきらめた。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?