Playing with a Fedora chroot & Ion on the HiFive Unleashed
?
?

## Global Keys

W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

q Quotes r References f Filter y Link c Credits

a
w
s
d
h j k l

## Quotes, References and Credits Menus

o Open URL (in new tab)

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

z Toggle filter / linking mode

Enter Open URL (in new tab)
0:13Begin to recap and set the stage for the day
🗩
0:13Begin to recap and set the stage for the day
🗩
0:13Begin to recap and set the stage for the day
🗩
0:17 \o/
🗪
0:17 \o/
🗪
0:17 \o/
🗪
0:39 Hmm, I can't see my own text
🗪
0:39 Hmm, I can't see my own text
🗪
0:39 Hmm, I can't see my own text
🗪
1:19 Ah, any feedback on the podcast? Boring? Confusing?
🗪
1:19 Ah, any feedback on the podcast? Boring? Confusing?
🗪
1:19 Ah, any feedback on the podcast? Boring? Confusing?
🗪
4:28Plug riscyfive's podcast 'Why So Anemic'1
4:28Plug riscyfive's podcast 'Why So Anemic'1
4:28Plug riscyfive's podcast 'Why So Anemic'1
4:42 Well, I want(ed) to keep my mind open. If I had found out (or I later find out) that the OOP-style modeling was the best option then so be it. I just want to get at the truth, I don't have a camp
🗪
4:42 Well, I want(ed) to keep my mind open. If I had found out (or I later find out) that the OOP-style modeling was the best option then so be it. I just want to get at the truth, I don't have a camp
🗪
4:42 Well, I want(ed) to keep my mind open. If I had found out (or I later find out) that the OOP-style modeling was the best option then so be it. I just want to get at the truth, I don't have a camp
🗪
5:30 People at DConf 2016 thought I was Italian, due to the way I talk
🗪
5:30 People at DConf 2016 thought I was Italian, due to the way I talk
🗪
5:30 People at DConf 2016 thought I was Italian, due to the way I talk
🗪
6:11Determine to continue doing stuff with the HiFive Unleashed, noting the possibility from the SiFive Forums to install Fedora2
6:11Determine to continue doing stuff with the HiFive Unleashed, noting the possibility from the SiFive Forums to install Fedora2
6:11Determine to continue doing stuff with the HiFive Unleashed, noting the possibility from the SiFive Forums to install Fedora2
10:49Explain the process of installing Fedora onto the HiFive Unleashed,3 noting the block size in Arch Linux's example dd invocation4
10:49Explain the process of installing Fedora onto the HiFive Unleashed,3 noting the block size in Arch Linux's example dd invocation4
10:49Explain the process of installing Fedora onto the HiFive Unleashed,3 noting the block size in Arch Linux's example dd invocation4
15:42 By the way, you probably don't have video on your RISC-V system. SiFive used an adapter FPGA board for their demo. I wanted to share with you and your viewers that you can buy the Nexys Video (the bigger one recommended for Bitwise) using an academic discount. I ordered one. We can then later collaborate to get HDMI output using one, or something like that. I can help you with that
🗪
15:42 By the way, you probably don't have video on your RISC-V system. SiFive used an adapter FPGA board for their demo. I wanted to share with you and your viewers that you can buy the Nexys Video (the bigger one recommended for Bitwise) using an academic discount. I ordered one. We can then later collaborate to get HDMI output using one, or something like that. I can help you with that
🗪
15:42 By the way, you probably don't have video on your RISC-V system. SiFive used an adapter FPGA board for their demo. I wanted to share with you and your viewers that you can buy the Nexys Video (the bigger one recommended for Bitwise) using an academic discount. I ordered one. We can then later collaborate to get HDMI output using one, or something like that. I can help you with that
🗪
17:02Continue to explain the dd part of the installation process
17:02Continue to explain the dd part of the installation process
17:02Continue to explain the dd part of the installation process
17:44 You can even add MP4 encoding in the FPGA itself. No need for OBS
🗪
17:44 You can even add MP4 encoding in the FPGA itself. No need for OBS
🗪
17:44 You can even add MP4 encoding in the FPGA itself. No need for OBS
🗪
18:38Continue to explain the installation process
18:38Continue to explain the installation process
18:38Continue to explain the installation process
19:08 You need more Patreons. I'll try to promote you5,6
🗪
19:08 You need more Patreons. I'll try to promote you5,6
🗪
19:08 You need more Patreons. I'll try to promote you5,6
🗪
20:49Finish up explaining the setup process, including building the Ion compiler from bitwise and having it run out of the box!
20:49Finish up explaining the setup process, including building the Ion compiler from bitwise and having it run out of the box!
20:49Finish up explaining the setup process, including building the Ion compiler from bitwise and having it run out of the box!
23:00Don the antistatic wristband and plug in the HiFive Unleashed
🗹
23:00Don the antistatic wristband and plug in the HiFive Unleashed
🗹
23:00Don the antistatic wristband and plug in the HiFive Unleashed
🗹
24:03 Where are you plugging the band?
🗪
24:03 Where are you plugging the band?
🗪
24:03 Where are you plugging the band?
🗪
25:03 The "duct tape" method. Good engineering
🗪
25:03 The "duct tape" method. Good engineering
🗪
25:03 The "duct tape" method. Good engineering
🗪
25:23Read 5.3. Knobs on the HiFive Unleashed7
25:23Read 5.3. Knobs on the HiFive Unleashed7
25:23Read 5.3. Knobs on the HiFive Unleashed7
27:02 I've worked with $5K boards at Siemens without grounding and they never exhibited problems. After that I never cared too much 🗪 27:02 I've worked with$5K boards at Siemens without grounding and they never exhibited problems. After that I never cared too much
🗪
27:02 I've worked with $5K boards at Siemens without grounding and they never exhibited problems. After that I never cared too much 🗪 28:47 That actually was very surprising because I kept getting shocked due to the static discharges at that laboratory (when touching the server racks). But the hardware itself never complained 🗪 28:47 That actually was very surprising because I kept getting shocked due to the static discharges at that laboratory (when touching the server racks). But the hardware itself never complained 🗪 28:47 That actually was very surprising because I kept getting shocked due to the static discharges at that laboratory (when touching the server racks). But the hardware itself never complained 🗪 30:25 No, there was a ground. But we were busy and lazy! Maybe that was the trick: I kept discharging myself unintentionally! 🗪 30:25 No, there was a ground. But we were busy and lazy! Maybe that was the trick: I kept discharging myself unintentionally! 🗪 30:25 No, there was a ground. But we were busy and lazy! Maybe that was the trick: I kept discharging myself unintentionally! 🗪 30:42Plug in and power up the board 🗹 30:42Plug in and power up the board 🗹 30:42Plug in and power up the board 🗹 31:53 Yeah, I pretty much only have grounded plugs in the kitchen 🗪 31:53 Yeah, I pretty much only have grounded plugs in the kitchen 🗪 31:53 Yeah, I pretty much only have grounded plugs in the kitchen 🗪 32:18Connect to the HiFive Unleashed and setup the environment 🗹 32:18Connect to the HiFive Unleashed and setup the environment 🗹 32:18Connect to the HiFive Unleashed and setup the environment 🗹 36:45 It seems the cool kids use tmux these days 🗪 36:45 It seems the cool kids use tmux these days 🗪 36:45 It seems the cool kids use tmux these days 🗪 37:09Delete our test files related to ion 🗹 37:09Delete our test files related to ion 🗹 37:09Delete our test files related to ion 🗹 40:01 Try:$ shopt | grep checkwinsize
🗪
40:01 Try: $shopt | grep checkwinsize 🗪 40:01 Try:$ shopt | grep checkwinsize
🗪
41:05Compile ion, run generate_test.py, show the resulting Ion code in test3.ion, run ion on that file to produce test3.c, and compile that test3.c with gcc
🏃
41:05Compile ion, run generate_test.py, show the resulting Ion code in test3.ion, run ion on that file to produce test3.c, and compile that test3.c with gcc
🏃
41:05Compile ion, run generate_test.py, show the resulting Ion code in test3.ion, run ion on that file to produce test3.c, and compile that test3.c with gcc
🏃
43:54Point out that qemu8 may provide the closest means to follow along, without having to invest in a HiFive Unleashed
🗩
43:54Point out that qemu8 may provide the closest means to follow along, without having to invest in a HiFive Unleashed
🗩
43:54Point out that qemu8 may provide the closest means to follow along, without having to invest in a HiFive Unleashed
🗩
45:30Try to run ion on test2.ion and then gcc on the resulting test2.c file
🏃
45:30Try to run ion on test2.ion and then gcc on the resulting test2.c file
🏃
45:30Try to run ion on test2.ion and then gcc on the resulting test2.c file
🏃
46:54Try to run ion on test1.ion and then gcc on the resulting test1.c file, to see printouts and input totally working
🏃
46:54Try to run ion on test1.ion and then gcc on the resulting test1.c file, to see printouts and input totally working
🏃
46:54Try to run ion on test1.ion and then gcc on the resulting test1.c file, to see printouts and input totally working
🏃
51:45Run test1 to provide the first demo of Ion code compiled to and running on RISC-V
🏃
51:45Run test1 to provide the first demo of Ion code compiled to and running on RISC-V
🏃
51:45Run test1 to provide the first demo of Ion code compiled to and running on RISC-V
🏃
52:50Note Miblo's thought to use readelf while he wrote annotations for Bitwise
🗩
52:50Note Miblo's thought to use readelf while he wrote annotations for Bitwise
🗩
52:50Note Miblo's thought to use readelf while he wrote annotations for Bitwise
🗩
55:12Run objdump on test2
🏃
55:12Run objdump on test2
🏃
55:12Run objdump on test2
🏃
55:44Determine to run objdump on hello
🗩
55:44Determine to run objdump on hello
🗩
55:44Determine to run objdump on hello
🗩
56:51 I use readelf all the time for my empire RISC-V port
🗪
56:51 I use readelf all the time for my empire RISC-V port
🗪
56:51 I use readelf all the time for my empire RISC-V port
🗪
57:03Continue to figure out how to unfreeze the screen
🗹
57:03Continue to figure out how to unfreeze the screen
🗹
57:03Continue to figure out how to unfreeze the screen
🗹
57:57 Ctrl-q?
🗪
57:57 Ctrl-q?
🗪
57:57 Ctrl-q?
🗪
58:21Note the annoyance of the XOFF ASCII character and screen's default keybinding for it
💢
58:21Note the annoyance of the XOFF ASCII character and screen's default keybinding for it
💢
58:21Note the annoyance of the XOFF ASCII character and screen's default keybinding for it
💢
59:39 Yeah, very annoying. Arguably it's just it not ignoring the ASCII characters (XON / XOFF) that you actually typed
🗪
59:39 Yeah, very annoying. Arguably it's just it not ignoring the ASCII characters (XON / XOFF) that you actually typed
🗪
59:39 Yeah, very annoying. Arguably it's just it not ignoring the ASCII characters (XON / XOFF) that you actually typed
🗪
1:00:30Copy hello into the (Fedora) chroot environment
🗹
1:00:30Copy hello into the (Fedora) chroot environment
🗹
1:00:30Copy hello into the (Fedora) chroot environment
🗹
1:01:06 Yeah, but when you type Ctrl-something it emits certain ASCII characters that are control characters, like stop transmitting (freeze)
🗪
1:01:06 Yeah, but when you type Ctrl-something it emits certain ASCII characters that are control characters, like stop transmitting (freeze)
🗪
1:01:06 Yeah, but when you type Ctrl-something it emits certain ASCII characters that are control characters, like stop transmitting (freeze)
🗪
1:03:35Run objdump on our elf64-littleriscv hello
🏃
1:03:35Run objdump on our elf64-littleriscv hello
🏃
1:03:35Run objdump on our elf64-littleriscv hello
🏃
1:04:50Consider trying the hula RISC-V "Hello, world!" on our HiFive Unleashed9
1:04:50Consider trying the hula RISC-V "Hello, world!" on our HiFive Unleashed9
1:04:50Consider trying the hula RISC-V "Hello, world!" on our HiFive Unleashed9
1:05:37 That's just what the ASCII character 19 means: stop transmitting. And when you type Ctrl-s you type that character. The real question is, who thought it was a good idea to transmit control information in-band with the content. That is, if you cat a .txt file that contains that character you're screwed
🗪
1:05:37 That's just what the ASCII character 19 means: stop transmitting. And when you type Ctrl-s you type that character. The real question is, who thought it was a good idea to transmit control information in-band with the content. That is, if you cat a .txt file that contains that character you're screwed
🗪
1:05:37 That's just what the ASCII character 19 means: stop transmitting. And when you type Ctrl-s you type that character. The real question is, who thought it was a good idea to transmit control information in-band with the content. That is, if you cat a .txt file that contains that character you're screwed
🗪
1:07:14 You see, it used to be that terminals had dedicated wires for control. But then $happened 🗪 1:07:14 You see, it used to be that terminals had dedicated wires for control. But then$ happened
🗪
1:07:14 You see, it used to be that terminals had dedicated wires for control. But then \$ happened
🗪
1:07:31Rant on screen having kept legacy baggage around
💢
1:07:31Rant on screen having kept legacy baggage around
💢
1:07:31Rant on screen having kept legacy baggage around
💢
1:09:31Continue to compare the objdump of hello with hula10
1:09:31Continue to compare the objdump of hello with hula10
1:09:31Continue to compare the objdump of hello with hula10
1:10:02 With dedicated wires you don't need in-band control characters
🗪
1:10:02 With dedicated wires you don't need in-band control characters
🗪
1:10:02 With dedicated wires you don't need in-band control characters
🗪
1:10:43 No, there was a message missing in between
🗪
1:10:43 No, there was a message missing in between
🗪
1:10:43 No, there was a message missing in between
🗪
1:10:52Compare hula's "write" code with the hello objdump
1:10:52Compare hula's "write" code with the hello objdump
1:10:52Compare hula's "write" code with the hello objdump
1:11:55 The Ctrl-z was an example of how the shell has the same problem
🗪
1:11:55 The Ctrl-z was an example of how the shell has the same problem
🗪
1:11:55 The Ctrl-z was an example of how the shell has the same problem
🗪
1:13:11Note that the hello objdump may not show scall
1:13:11Note that the hello objdump may not show scall
1:13:11Note that the hello objdump may not show scall
1:14:08 I agree it's braindead. But just think this: the initial Ctrl-a just means that you want the sequence Ctrl-a q to pass as a Ctrl-q to the target process. It's not a list of Ctrl-a commands, it just a generic escape
🗪
1:14:08 I agree it's braindead. But just think this: the initial Ctrl-a just means that you want the sequence Ctrl-a q to pass as a Ctrl-q to the target process. It's not a list of Ctrl-a commands, it just a generic escape
🗪
1:14:08 I agree it's braindead. But just think this: the initial Ctrl-a just means that you want the sequence Ctrl-a q to pass as a Ctrl-q to the target process. It's not a list of Ctrl-a commands, it just a generic escape
🗪
1:14:34 scall -> ecall
🗪
1:14:34 scall -> ecall
🗪
1:14:34 scall -> ecall
🗪
1:15:14 It's the old name
🗪
1:15:14 It's the old name
🗪
1:15:14 It's the old name
🗪
1:15:16Wonder if the objdump is not using system calls, and that it's a lot bigger than hula
1:15:16Wonder if the objdump is not using system calls, and that it's a lot bigger than hula
1:15:16Wonder if the objdump is not using system calls, and that it's a lot bigger than hula
1:16:19 Notice: disassembly of XXX (not .text) section
🗪
1:16:19 Notice: disassembly of XXX (not .text) section
🗪
1:16:19 Notice: disassembly of XXX (not .text) section
🗪
1:16:42Hunt for a7 in the objdump because that is where you put the syscall number in RISC-V
1:16:42Hunt for a7 in the objdump because that is where you put the syscall number in RISC-V
1:16:42Hunt for a7 in the objdump because that is where you put the syscall number in RISC-V
1:18:11 You can do a readelf of the binary in your main system
🗪
1:18:11 You can do a readelf of the binary in your main system
🗪
1:18:11 You can do a readelf of the binary in your main system
🗪
🏃
🏃
🏃
1:21:40 Maybe just try GDB with the binary?
🗪
1:21:40 Maybe just try GDB with the binary?
🗪
1:21:40 Maybe just try GDB with the binary?
🗪
1:22:31 That's why you need the JTAG port
🗪
1:22:31 That's why you need the JTAG port
🗪
1:22:31 That's why you need the JTAG port
🗪
1:23:42 The system calls are probably wrapped in libc functions
🗪
1:23:42 The system calls are probably wrapped in libc functions
🗪
1:23:42 The system calls are probably wrapped in libc functions
🗪
1:23:55Notice the mentions of "libc" in the hello objdump
1:23:55Notice the mentions of "libc" in the hello objdump
1:23:55Notice the mentions of "libc" in the hello objdump
1:24:49 I think the ligc_start_main is just a red herring. Notice the offset is different between different __libc_start_main lines
🗪
1:24:49 I think the ligc_start_main is just a red herring. Notice the offset is different between different __libc_start_main lines
🗪
1:24:49 I think the ligc_start_main is just a red herring. Notice the offset is different between different __libc_start_main lines
🗪
1:25:58Notice "libc_start_main" in the hello objdump
1:25:58Notice "libc_start_main" in the hello objdump
1:25:58Notice "libc_start_main" in the hello objdump
1:27:59Consult the objdump of test1, to see that its symbols are correctly resolved
1:27:59Consult the objdump of test1, to see that its symbols are correctly resolved
1:27:59Consult the objdump of test1, to see that its symbols are correctly resolved
1:30:39Call it a day
🗩
1:30:39Call it a day
🗩
1:30:39Call it a day
🗩