[video member=miotatsu stream_platform=twitch project=riscy title="Exploring the Config String Memory with the HiFive1" vod_platform=youtube id=gXDQbKreTG0 annotator=Miblo]
[0:07][Recap and set the stage for the day]
[0:27][Show some off-stream work, compiling the Freedom E SDK]
[1:20][@serge_rgb][Sorry, I can't stay to watch the stream... gotta go to bed]
[1:37][Determine to add the HiFive1 Getting Started Guide[ref
    site=SiFive
    page="HiFive1 Getting Started Guide"
    url=https://static.dev.sifive.com/pdfjs/web/viewer.html?file=https://static.dev.sifive.com/dev-kits/hifive1/hifive1-getting-started-v1.0.2.pdf] to the forum post]
[2:37][Upload our program to the HiFive1]
[4:25][Note that we'll be printing garbage to the terminal]
[5:16][Reset the board to :run our program, with unexpected output]
[6:11][Consult the annotations[ref
    site=YouTube
    page="RISCY BUSINESS - Day 021: Exploring the Config String Memory with the HiFive1"
    url=https://www.youtube.com/watch?v=XOis4wG2gYU] for how to kill screen]
[9:34][Kill screen and :run make again]
[10:21][Cast config_string to an int and make and upload it again]
[11:23][Investigate errors]
[12:18][@hossein1387][It usually goes away after a reset]
[12:24][Reset and try uploading again]
[13:05][:Run our program and view the output]
[14:43][Change print_instructions() to compute the len differently]
[15:27][@hossein1387][Yeah, I change it to: size_t len = 0x00001010 - sizeof(config_string);]
[16:30][Consult the documentation for the configuration string length[ref
    site="SiFive Developers"
    page="E3 Coreplex Manual"
    url=https://static.dev.sifive.com/pdfjs/web/viewer.html?file=https://static.dev.sifive.com/SiFive-E3-Coreplex-v1.2.pdf]]
[17:42][Remake, upload and :run our program]
[19:35][Try what @hossein1387 suggested]
[20:23][:Run and admire our output]
[22:17][Consult the documentation on cs-v1[ref
    site="RISC-V"
    page="Draft Privileged ISA Specification v1.9.1"
    url=https://riscv.org/specifications/privileged-isa/]]
[25:01][@hossein1387][Take a look at Privileged doc: Chapter 8]
[25:57][Read about the Machine Configuration Strings[ref
    site="RISC-V"
    page="Draft Privileged ISA Specification v1.9"
    url=https://people.eecs.berkeley.edu/~krste/papers/riscv-privileged-v1.9.pdf]][:research]
[32:49][Determine to update print_instructions()]
[34:20][@hossein1387][Yeah, I also tried it with strlen. It gave me the same result]
[35:14][:Research strlen() vs sizeof() for a char *]
[38:09][Update print_instructions() to search for the config_string and then output its length]
[39:59][Make and upload our program]
[41:30][:Run our program and determine to ask on the forums why we get so much error and info output]
[44:52][Unplug, replug and upload again]
[45:23][:Run our program, see no output and investigate why]
[47:51][Consult the [ref
    site="RISC-V"
    page="Draft Privileged ISA Specification v1.9"
    url=https://people.eecs.berkeley.edu/~krste/papers/riscv-privileged-v1.9.pdf]]
[49:09][Remove the loop from print_instructions(), and :run again]
[50:42][Investigate the values known by print_instructions()]
[52:56][:Run our program and see now output from that either]
[53:26][Test printf()]
[54:46][Determine that printf() is not implemented]
[55:16][@hossein1387][I have worked with the risc-v64 GCC and I used printf. Works there, but here it's not working]
[56:00][@hossein1387][Oh by the way, I programmed my FPGA with a RISC-V core and wrote a simple program to get the config string at the same memory location as HiFive1 (0x0000100c), but it gave me processor halt. So I think the address is platform dependent]
[57:19][Take a look at other demos, and wonder why we can't use printf() in demo_gpio.c]
[58:42][Try the hello demo]
[1:00:13][:Run the hello demo and also see no output]
[1:00:39][We are out of time for today, with very many questions]
[1:01:13][@hossein1387][One more thing I tried: char* config_string = 0x0000100c + 0x20004; which crashed the program. I also tried: char* config_string = 0x20004; which printed out garbage]
[1:01:35][Consult the documentation for #include[ref
    site="RISC-V"
    page="Draft Privileged ISA Specification v1.9"
    url=https://people.eecs.berkeley.edu/~krste/papers/riscv-privileged-v1.9.pdf] and configuration string[ref
    site="SiFive Developers"
    page="E3 Coreplex Manual"
    url=https://static.dev.sifive.com/pdfjs/web/viewer.html?file=https://static.dev.sifive.com/SiFive-E3-Coreplex-v1.2.pdf][ref
    site="SiFive Developers"
    page="Freedom E310-G000 Manual"
    url=https://www.sifive.com/documentation/chips/freedom-e310-g000-manual/]]
[1:06:07][Stay RISCY, everyone]
[/video]
