#include #include "printf.h" #include "main.h" xilinx_uartlite_handle_t soc_uart; xilinx_gpio_handle_t soc_gpio; void _print_arch_string(uint64_t misa); int main(int argc, char *argv[]) { printf("Running on a Bluespec flute core.\r\n"); uint64_t csr = 0; __csrr("misa", csr); printf("MISA: 0x%016llx, this is a ", csr); _print_arch_string(csr); printf(" processor.\r\n"); printf("System clock frequency: %luHz\r\n", SYS_CLK_FREQ); xilinx_gpio_port_mode(&soc_gpio, 0, 0x000000FF); // All output uint8_t led_data = 0x01; for(;;) { System_Delay(500); __csrr("mcycle", csr); printf("mcycle: 0x%016llx\r\n", csr); xilinx_gpio_port_write(&soc_gpio, 0, ~led_data); led_data <<= 1U; if(led_data == 0) led_data = 0x01; } return 0; } void _print_arch_string(uint64_t misa) { switch(misa >> 62) { case 1: printf("RV32"); break; case 2: printf("RV64"); break; case 3: printf("RV128"); break; } for(uint8_t i = 0; i < 26; i++) { if(misa >> i & 0x01ULL) { printf("%c", 'A' + i); } } }