set script_dir [file dirname [file normalize [info script]]] set fpga_dir [file normalize [file join $script_dir ../..]] proc getenv_default {name default} { if {[info exists ::env($name)] && $::env($name) ne ""} { return $::env($name) } return $default } set bit_file [file normalize [getenv_default BIT_FILE [file join $fpga_dir out bitstream vcu118_rocket.bit]]] set app_image [file normalize [getenv_default APP_FLASH_IMAGE [file join $fpga_dir out flash hello_uart.flash.bin]]] set mcs_file [file normalize [getenv_default FLASH_MCS [file join $fpga_dir out flash vcu118_rocket.mcs]]] set bin_file [file normalize [getenv_default FLASH_BIN [file join $fpga_dir out flash vcu118_rocket.bin]]] set flash_size_mb [getenv_default FLASH_SIZE_MB 128] set flash_interface [getenv_default FLASH_INTERFACE SPIx4] set bitstream_offset [getenv_default BITSTREAM_OFFSET 0x00000000] set app_flash_offset [getenv_default APP_FLASH_OFFSET 0x06000000] file mkdir [file dirname $mcs_file] file mkdir [file dirname $bin_file] if {![file exists $bit_file]} { error "Bitstream not found: $bit_file" } if {![file exists $app_image]} { error "Application flash image not found: $app_image" } puts "Generating flash MCS:" puts " bitstream: $bit_file @ $bitstream_offset" puts " app image: $app_image @ $app_flash_offset" puts " size/interface: ${flash_size_mb}MiB $flash_interface" write_cfgmem -force -format MCS -size $flash_size_mb -interface $flash_interface \ -loadbit "up $bitstream_offset $bit_file" \ -loaddata "up $app_flash_offset $app_image" \ $mcs_file write_cfgmem -force -format BIN -size $flash_size_mb -interface $flash_interface \ -loadbit "up $bitstream_offset $bit_file" \ -loaddata "up $app_flash_offset $app_image" \ $bin_file puts "Wrote $mcs_file" puts "Wrote $bin_file"