20150725

1. grmon을 사용해 LEON3 접속하는 것에 성공
grmon을 사용해 LEON3에 접속하는 것이 힘든 이유를 알 것 같다. mailing list를 뒤져본 결과, grmon이 Xilinx의 USB-JTAG을 잘 지원하지 않는 것 같다[1]. USB-JTAG을 사용하여 접속 시도하면 다음과 같은 에러가 발생한다.

$./grmon -xilusb -nb -u

  GRMON2 LEON debug monitor v2.0.65 32-bit eval version
  
  Copyright (C) 2015 Cobham Gaisler - All rights reserved.
  For latest updates, go to http://www.gaisler.com/
  Comments or bug-reports to support@gaisler.com
  
  This eval version will expire on 10/12/2015

No cables found!
Exiting GRMON

Parallel JTAG cable을 사용했더니 다음과 같은 에러 메시지가 발생한다.

$ ./grmon -xilusb -nb -u

  GRMON2 LEON debug monitor v2.0.65 32-bit eval version
  
  Copyright (C) 2015 Cobham Gaisler - All rights reserved.
  For latest updates, go to http://www.gaisler.com/
  Comments or bug-reports to support@gaisler.com
  
  This eval version will expire on 10/12/2015

Xilusb: Cable type/rev : 0x3 
 JTAG chain (2): xc7x020 zynq7000_arm_dap 
  Warning: Failed to call Tcl_Init. Some TCL functions won't be working properly
           To avoid this warning, see Installation section in the manual about
           the environment variable GRMON_SHARE
AMBA plug&play not found!
Failed to initialize target!
Exiting GRMON

[1]에 따르면, 이 메시지는 grmon이 FPGA 보드에서 LEON을 찾지 못해서 발생하는 에러 메시지라고 한다. 따라서 design이 잘못된 것이므로, design을 수정하면 된다. 한편, “Failed to call Tcl_Init.” 메시지는 grmon의 share 디렉토리를 환경 변수로 설정해주면 해결할 수 있다. (export GRMON_SHARE=/path/to/grmon/share)
확인해보니 ZC702 보드에 맞는 constraints가 주어져 있었다. ZedBoard에 맞는 constraints를 주었더니 grmon 접속이 잘 되었다. leon3mp.xdc를 다음과 같이 수정함.

set_property IOSTANDARD LVCMOS33 [get_ports led]
set_property PACKAGE_PIN T22 [get_ports {led[0]}]
set_property PACKAGE_PIN T21 [get_ports {led[1]}]
set_property PACKAGE_PIN U22 [get_ports {led[2]}]
set_property PACKAGE_PIN U21 [get_ports {led[3]}]
set_property PACKAGE_PIN V22 [get_ports {led[4]}]
set_property PACKAGE_PIN W22 [get_ports {led[5]}]
set_property PACKAGE_PIN U19 [get_ports {led[6]}]
set_property PACKAGE_PIN U14 [get_ports {led[7]}]

set_property IOSTANDARD LVCMOS18 [get_ports switch]
set_property PACKAGE_PIN F22 [get_ports {switch[0]}]
set_property PACKAGE_PIN G22 [get_ports {switch[1]}]
set_property PACKAGE_PIN H22 [get_ports {switch[2]}]
set_property PACKAGE_PIN F21 [get_ports {switch[3]}]
set_property PACKAGE_PIN H19 [get_ports {switch[4]}]
set_property PACKAGE_PIN H18 [get_ports {switch[5]}]
set_property PACKAGE_PIN H17 [get_ports {switch[6]}]
set_property PACKAGE_PIN M15 [get_ports {switch[7]}]

set_property IOSTANDARD LVCMOS18 [get_ports button]
set_property PACKAGE_PIN R16 [get_ports {button[0]}] 
set_property PACKAGE_PIN N15 [get_ports {button[1]}]
set_property PACKAGE_PIN R18 [get_ports {button[2]}] 
set_property PACKAGE_PIN T18 [get_ports {button[3]}] 

set_false_path -from  [get_clocks clk_fpga_0] -to [get_clocks clk_fpga_1]
set_false_path -from  [get_clocks clk_fpga_1] -to [get_clocks clk_fpga_0]

grmon을 사용해 접속해보니 잘 되었다.

$./grmon -xilusb -nb -u
  GRMON2 LEON debug monitor v2.0.65 32-bit eval version
  
  Copyright (C) 2015 Cobham Gaisler - All rights reserved.
  For latest updates, go to http://www.gaisler.com/
  Comments or bug-reports to support@gaisler.com
  
  This eval version will expire on 10/12/2015

Xilusb: Cable type/rev : 0x3 
 JTAG chain (2): xc7x020 zynq7000_arm_dap 
  GRLIB build version: 4156
  Detected frequency:  83 MHz
  
  Component                            Vendor
  LEON3 SPARC V8 Processor             Cobham Gaisler
  JTAG Debug Link                      Cobham Gaisler
  Generic AHB ROM                      Cobham Gaisler
  AHB/APB Bridge                       Cobham Gaisler
  LEON3 Debug Support Unit             Cobham Gaisler
  Xilinx MIG DDR2 Controller           Cobham Gaisler
  Generic UART                         Cobham Gaisler
  Multi-processor Interrupt Ctrl.      Cobham Gaisler
  Modular Timer Unit                   Cobham Gaisler
  General Purpose I/O port             Cobham Gaisler
  AHB Status Register                  Cobham Gaisler
  
  Use command 'info sys' to print a detailed report of attached cores

참고로 grmon은 반드시 -nb 옵션을 주어 실행해야 하며, 그렇지 않으면 오류가 발생한다[3]. grmon을 사용해 리눅스 이미지를 올릴 수 있었다[4].

grmon2> load /tmp/image.dsu
  40000000 .stage2                   10.0kB /  10.0kB   [===============>] 100%
  40004000 .vmlinux                   3.1MB /   3.1MB   [===============>] 100%
  Total size: 3.10MB (1.53Mbit/s)
  Entry point 0x40000000
  Image /tmp/image.dsu loaded
  
grmon2> run
Booting Linux
Booting Linux...
PROMLIB: Sun Boot Prom Version 0 Revision 0

이제 리눅스 이미지를 만드는 방법만 알아보면 된다.
리눅스 이미지 만드는 것에도 성공했다!

References:
[1] GRMON Cannot Start, https://groups.yahoo.com/neo/groups/leon_sparc/conversations/topics/23241
[2] Sven-Ake Andersson, 1.11 Booting SnapGear embedded Linux, http://www.rte.se/blog/blogg-modesty-corex/booting-snapgear-embedded-linux/1.11
[3] Re: Help in booting snapgear linux onto leon3- Xilinx XUPV5, https://groups.yahoo.com/neo/groups/leon_sparc/conversations/topics/23129
[4] image.dsu, Cobham Gaisler, http://gaisler.com/anonftp/linux/linux-2.6/old/2.6.21/images/gr_xc3s_1500/image.dsu


2. perf를 사용해 실행 중인 프로세스의 성능 측정하기
실행 중인 프로세스에도 perf를 사용해 성능을 측정할 수 있다 (창현이 형께서 알려주심). -p 옵션 뒤에 성능 측정을 원하는 프로세스의 pid를 주면 된다. 그리고 몇 초간의 확인할 것인지에 따라 sleep 명령어를 주면 된다[1].

#perf stat -e cycles -e cache-misses -e cache-references -e instructions -p `pidof xalancbmk` sleep 10

 Performance counter stats for process id '3217':

    33,803,170,363      cycles                   
       121,718,526      cache-misses              #   58.854 % of all cache refs    
       206,813,300      cache-references                                            
    53,267,127,454      instructions              #    1.58  insns per cycle        

      10.000430234 seconds time elapsed

References:
[1] Linux kernel profiling with perf, https://perf.wiki.kernel.org/index.php/Tutorial


3. ZedBoard와 ZC702 Board는 다르다.
지금까지 ZedBoard와 ZC702가 같은 것인 줄 알고 있었다. ZC702 보드를 타겟으로 하는 LEON3 코드 빌드가 깔끔하게 잘 되지 않아 확인해보았더니, ZedBoard와 ZC702 Evaluation Kit은 다른 것이었다.
ZedBoard_ZC702
References:
[1] Differences between ZedBoard and Xilinx Zynq-7000 SoC ZC702 Evaluation Kit, ZedBaord, http://zedboard.org/content/differences-between-zedboard-and-xilinx-zynq-7000-soc-zc702-evaluation-kit

Advertisements
Tagged with: , , , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 88,681 hits
%d bloggers like this: