| # Copyright lowRISC contributors. |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| load("//rules:opentitan.bzl", "opentitan_ram_binary") |
| load("//rules:opentitan_gdb_test.bzl", "opentitan_gdb_fpga_cw310_test") |
| load("//rules:linker.bzl", "ld_library") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| ld_library( |
| name = "sram_program_linker_script", |
| script = "sram_program.ld", |
| deps = [ |
| "//hw/top_earlgrey/sw/autogen:top_earlgrey_memory", |
| "//sw/device:info_sections", |
| "//sw/device/silicon_creator/lib/base:static_critical_sections", |
| ], |
| ) |
| |
| opentitan_ram_binary( |
| name = "sram_program", |
| srcs = [ |
| "sram_program.c", |
| ], |
| hdrs = [ |
| "sram_program.h", |
| ], |
| archive_symbol_prefix = "sram_program", |
| deps = [ |
| ":sram_program_linker_script", |
| "//hw/top_earlgrey/sw/autogen:top_earlgrey", |
| "//sw/device/lib/base:macros", |
| "//sw/device/lib/runtime:log", |
| "//sw/device/lib/testing:pinmux_testutils", |
| "//sw/device/lib/testing/test_framework:check", |
| ], |
| ) |
| |
| opentitan_gdb_fpga_cw310_test( |
| name = "sram_program_fpga_cw310_test", |
| exit_success_pattern = "sram_program\\.c:47\\] PC: 0x1000208c, SRAM: \\[0x10000000, 0x10020000\\)", |
| gdb_script = """ |
| target extended-remote :3333 |
| set pagination off |
| |
| echo :::: Send OpenOCD the 'reset halt' command.\\n |
| monitor reset halt |
| |
| echo :::: Set RAM as RWX by executing code between _start and test_rom_main()\\n |
| file test_rom.elf |
| break rom_test_main |
| continue |
| delete breakpoints |
| |
| echo :::: Load the SRAM program onto the device and check integrity.\\n |
| file sram_program.elf |
| load sram_program.elf |
| compare-sections |
| |
| info registers |
| echo :::: Update registers before calling sram_main().\\n |
| set $sp = _stack_end |
| set $gp = __global_pointer$ |
| info registers |
| |
| echo :::: Call sram_main().\\n |
| print sram_main() |
| |
| echo :::: Done.\\n |
| """, |
| gdb_script_symlinks = { |
| ":sram_program_fpga_cw310.elf": "sram_program.elf", |
| "//sw/device/lib/testing/test_rom:test_rom_fpga_cw310.elf": "test_rom.elf", |
| }, |
| # TODO(#13968) Switch to ROM instead of Test ROM. |
| rom_bitstream = "//hw/bitstream:test_rom", |
| tags = ["manual"], |
| ) |