arm: add vivado helper scripts
This commit is contained in:
101
arm/vivado/make_prog_files.tcl
Normal file
101
arm/vivado/make_prog_files.tcl
Normal file
@@ -0,0 +1,101 @@
|
||||
# -----------------------------------------------------------------------------
|
||||
# The confidential and proprietary information contained in this file may
|
||||
# only be used by a person authorised under and to the extent permitted
|
||||
# by a subsisting licensing agreement from ARM limited.
|
||||
#
|
||||
# (C) COPYRIGHT 2018 ARM limited.
|
||||
# ALL RIGHTS RESERVED
|
||||
#
|
||||
# This entire notice must be reproduced on all copies of this file
|
||||
# and copies of this file may only be made by a person if such person is
|
||||
# permitted to do so under the terms of a subsisting license agreement
|
||||
# from ARM limited.
|
||||
#
|
||||
# SVN Information
|
||||
#
|
||||
# Checked In : $Date$
|
||||
#
|
||||
# Revision : $Revision$
|
||||
#
|
||||
# Release Information : Cortex-M1 DesignStart-r0p1-00rel0
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
# Project : Cortex-M1 Arty A7 Example design with V2C-DAPLink adaptor board
|
||||
#
|
||||
# Purpose : Script to create bit and mcs files for Arty A7 board
|
||||
#
|
||||
# Combines the original bit file, mmi file, and software elf to create
|
||||
# the full bitstream
|
||||
# Then converts full bitstream to mcs for download to the onboard flash
|
||||
#
|
||||
# Can be run either in Vivado GUI TCL console, or else in batch mode
|
||||
# from command line
|
||||
# If run in Vivado TCL console, pwd needs to be set to root of project,
|
||||
# in the same location as the bit file
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# Input files
|
||||
set mmi_file "./m1.mmi"
|
||||
set elf_file "../bsp/bootloader.elf"
|
||||
set source_bit_file "./aum1.runs/impl_1/au_top.bit"
|
||||
set reference_bit_file "./aum1_reference.bit"
|
||||
|
||||
# Output files
|
||||
set output_bit_file "aum1.bit"
|
||||
set output_bin_file "aum1.bin"
|
||||
|
||||
# Enable to turn on debug
|
||||
set updatemem_debug 0
|
||||
|
||||
# Assemble bit file that can be downloaded to device directly
|
||||
# Combine the original bit file, mmi file, and software elf to create the full bitstream
|
||||
|
||||
# Delete target file
|
||||
file delete -force $output_bit_file
|
||||
file delete -force $output_bin_file
|
||||
|
||||
# Determine if the user has built the project and has the target source file
|
||||
# If not, then use the reference bit file shipped with the project
|
||||
if { ![file exists $source_bit_file] } {
|
||||
puts "\n********************************************"
|
||||
puts "INFO - File $source_bit_file doesn't exist as project has not been built"
|
||||
puts " Using $reference_bit_file instead\n"
|
||||
puts "********************************************/n"
|
||||
set source_bit_file $reference_bit_file
|
||||
}
|
||||
|
||||
# Banner message to console as there is no output for a few seconds
|
||||
puts " Running updatemem ..."
|
||||
|
||||
if { $updatemem_debug } {
|
||||
set error [catch {exec updatemem --debug --force --meminfo $mmi_file --data $elf_file --bit $source_bit_file --proc dummy --out $output_bit_file} result]
|
||||
} else {
|
||||
set error [catch {exec updatemem --force --meminfo $mmi_file --data $elf_file --bit $source_bit_file --proc dummy --out $output_bit_file} result]
|
||||
}
|
||||
|
||||
# Print the stdout from updatemem
|
||||
puts $result
|
||||
|
||||
# Updatemem returns 0 even when there is an error, so cannot trap on error. Having deleted output file to start, then
|
||||
# detect if it now exists, else exit.
|
||||
if { ![file exists $output_bit_file] } {
|
||||
puts "ERROR - $output_bit_file not made"
|
||||
return -1
|
||||
} else {
|
||||
puts "\n********************************************"
|
||||
puts " $output_bit_file correctly generated"
|
||||
puts "********************************************\n"
|
||||
}
|
||||
|
||||
# Create BIN file for base board QSPI flash memory
|
||||
write_cfgmem -force -format BIN -size 2 -interface SPIx1 -loadbit " up 0 $output_bit_file" $output_bin_file
|
||||
|
||||
# Check BIN was correctly made
|
||||
if { ![file exists $output_bin_file] } {
|
||||
puts "ERROR - $output_bit_file not made"
|
||||
return -1
|
||||
} else {
|
||||
puts "\n********************************************"
|
||||
puts " $output_bin_file correctly generated"
|
||||
puts "********************************************\n"
|
||||
}
|
||||
Reference in New Issue
Block a user