| # Licensed under the Apache-2.0 license |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| load("@pigweed//pw_kernel/tooling:rust_app.bzl", "rust_app") |
| load("@pigweed//pw_kernel/tooling:system_image.bzl", "system_image") |
| load("@pigweed//pw_kernel/tooling:target_codegen.bzl", "target_codegen") |
| load("@pigweed//pw_kernel/tooling:target_linker_script.bzl", "target_linker_script") |
| load("@pigweed//pw_kernel/tooling/panic_detector:rust_binary_no_panics_test.bzl", "rust_binary_no_panics_test") |
| load("@rules_rust//rust:defs.bzl", "rust_binary") |
| load("//target/earlgrey:defs.bzl", "TARGET_COMPATIBLE_WITH") |
| load("//target/earlgrey/signing/keys:defs.bzl", "FPGA_ECDSA_KEY", "SILICON_ECDSA_KEY") |
| load("//target/earlgrey/tooling:opentitan_runner.bzl", "opentitan_test") |
| |
| rust_app( |
| name = "test_usb", |
| srcs = [ |
| "test_usb.rs", |
| ], |
| codegen_crate_name = "test_usb_codegen", |
| edition = "2024", |
| system_config = "@pigweed//pw_kernel/target:system_config_file", |
| tags = ["kernel"], |
| visibility = ["//visibility:public"], |
| deps = [ |
| "//hal/blocking/usb:hal_usb", |
| "//protocol/usb/stack", |
| "//target/earlgrey/drivers:usb_driver", |
| "//target/earlgrey/registers:lc_ctrl", |
| "//target/earlgrey/registers:pinmux", |
| "//target/earlgrey/registers:top_earlgrey", |
| "//target/earlgrey/registers:usbdev", |
| "//target/earlgrey/util", |
| "//util/panic", |
| "@pigweed//pw_kernel/userspace", |
| "@pigweed//pw_log/rust:pw_log", |
| "@pigweed//pw_status/rust:pw_status", |
| "@rust_crates//:aligned", |
| "@rust_crates//:zerocopy", |
| ], |
| ) |
| |
| system_image( |
| name = "usb", |
| apps = [ |
| ":test_usb", |
| ], |
| kernel = ":target", |
| platform = "//target/earlgrey", |
| system_config = ":system_config", |
| tags = ["kernel"], |
| ) |
| |
| rust_binary_no_panics_test( |
| name = "no_panics", |
| apps = ["test_usb"], |
| binary = ":usb", |
| tags = ["no_panics"], |
| ) |
| |
| target_linker_script( |
| name = "linker_script", |
| system_config = ":system_config", |
| tags = ["kernel"], |
| template = "//target/earlgrey:linker_script_template", |
| ) |
| |
| filegroup( |
| name = "system_config", |
| srcs = ["system.json5"], |
| ) |
| |
| target_codegen( |
| name = "codegen", |
| arch = "@pigweed//pw_kernel/arch/riscv:arch_riscv", |
| system_config = ":system_config", |
| ) |
| |
| rust_binary( |
| name = "target", |
| srcs = [ |
| "target.rs", |
| ], |
| edition = "2024", |
| tags = ["kernel"], |
| target_compatible_with = TARGET_COMPATIBLE_WITH, |
| deps = [ |
| ":codegen", |
| ":linker_script", |
| "//target/earlgrey:entry", |
| "@pigweed//pw_kernel/arch/riscv:arch_riscv", |
| "@pigweed//pw_kernel/kernel", |
| "@pigweed//pw_kernel/subsys/console:console_backend", |
| "@pigweed//pw_kernel/target:target_common", |
| "@pigweed//pw_kernel/userspace", |
| "@pigweed//pw_log/rust:pw_log", |
| ], |
| ) |
| |
| opentitan_test( |
| name = "usb_verilator_test", |
| timeout = "eternal", |
| environment = "//target/earlgrey/env:verilator", |
| interface = "verilator", |
| tags = [ |
| "nightly_test", |
| "verilator", |
| ], |
| target = ":usb", |
| ) |
| |
| # TODO(cfrantz): these tests need to verify that the USB function got enumerated. |
| opentitan_test( |
| name = "usb_hyper310_test", |
| ecdsa_key = FPGA_ECDSA_KEY, |
| environment = "//target/earlgrey/env:hyper310", |
| interface = "hyper310", |
| tags = [ |
| "hardware", |
| "hyper310", |
| ], |
| target = ":usb", |
| test_cmd = "--logging=info --wait-for-firmware=false", |
| test_harness = ":host_usb_check", |
| ) |
| |
| opentitan_test( |
| name = "usb_hyper340_test", |
| ecdsa_key = FPGA_ECDSA_KEY, |
| environment = "//target/earlgrey/env:hyper340", |
| interface = "hyper340", |
| tags = [ |
| "hardware", |
| "hyper340", |
| ], |
| target = ":usb", |
| test_cmd = "--logging=info --wait-for-firmware=false", |
| test_harness = ":host_usb_check", |
| ) |
| |
| opentitan_test( |
| name = "usb_silicon_test", |
| ecdsa_key = SILICON_ECDSA_KEY, |
| environment = "//target/earlgrey/env:teacup", |
| interface = "teacup", |
| tags = [ |
| "earlgrey_silicon", |
| "hardware", |
| ], |
| target = ":usb", |
| test_cmd = "--logging=info --wait-for-firmware=false", |
| test_harness = ":host_usb_check", |
| ) |
| |
| rust_binary( |
| name = "host_usb_check", |
| srcs = [ |
| "host_usb_check.rs", |
| ], |
| edition = "2024", |
| rustc_flags = [ |
| "-C", |
| "link-arg=-Wl,--allow-shlib-undefined", |
| ], |
| deps = [ |
| "//third_party/lowrisc_opentitan:opentitanlib", |
| "//third_party/lowrisc_opentitan:usb_test_helper", |
| "@ot_crate_index//:anyhow", |
| "@ot_crate_index//:clap", |
| "@ot_crate_index//:humantime", |
| "@ot_crate_index//:log", |
| ], |
| ) |