We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
RISCY BUSINESS»Episode Guide
Playing with a Fedora chroot & Ion on the HiFive Unleashed
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
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)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

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

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

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:17riskyfive \o/
🗪
0:17riskyfive \o/
🗪
0:17riskyfive \o/
🗪
0:39riskyfive Hmm, I can't see my own text
🗪
0:39riskyfive Hmm, I can't see my own text
🗪
0:39riskyfive Hmm, I can't see my own text
🗪
1:19riscyfive Ah, any feedback on the podcast? Boring? Confusing?
🗪
1:19riscyfive Ah, any feedback on the podcast? Boring? Confusing?
🗪
1:19riscyfive 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:42riskyfive 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:42riskyfive 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:42riskyfive 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:30riskyfive People at DConf 2016 thought I was Italian, due to the way I talk
🗪
5:30riskyfive People at DConf 2016 thought I was Italian, due to the way I talk
🗪
5:30riskyfive 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:42riskyfive 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:42riskyfive 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:42riskyfive 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:44riskyfive You can even add MP4 encoding in the FPGA itself. No need for OBS
🗪
17:44riskyfive You can even add MP4 encoding in the FPGA itself. No need for OBS
🗪
17:44riskyfive 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:08riskyfive You need more Patreons. I'll try to promote you5,6
🗪
19:08riskyfive You need more Patreons. I'll try to promote you5,6
🗪
19:08riskyfive 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:03riskyfive Where are you plugging the band?
🗪
24:03riskyfive Where are you plugging the band?
🗪
24:03riskyfive Where are you plugging the band?
🗪
25:03riskyfive The "duct tape" method. Good engineering
🗪
25:03riskyfive The "duct tape" method. Good engineering
🗪
25:03riskyfive 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:02riskyfive I've worked with $5K boards at Siemens without grounding and they never exhibited problems. After that I never cared too much
🗪
27:02riskyfive I've worked with $5K boards at Siemens without grounding and they never exhibited problems. After that I never cared too much
🗪
27:02riskyfive I've worked with $5K boards at Siemens without grounding and they never exhibited problems. After that I never cared too much
🗪
28:47riskyfive 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:47riskyfive 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:47riskyfive 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:25riskyfive No, there was a ground. But we were busy and lazy! Maybe that was the trick: I kept discharging myself unintentionally!
🗪
30:25riskyfive No, there was a ground. But we were busy and lazy! Maybe that was the trick: I kept discharging myself unintentionally!
🗪
30:25riskyfive 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:53riskyfive Yeah, I pretty much only have grounded plugs in the kitchen
🗪
31:53riskyfive Yeah, I pretty much only have grounded plugs in the kitchen
🗪
31:53riskyfive 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:45riskyfive It seems the cool kids use tmux these days
🗪
36:45riskyfive It seems the cool kids use tmux these days
🗪
36:45riskyfive 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:01riskyfive Try: $ shopt | grep checkwinsize
🗪
40:01riskyfive Try: $ shopt | grep checkwinsize
🗪
40:01riskyfive 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
🏃
48:39Read through test1.ion
48:39Read through test1.ion
48:39Read through test1.ion
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:51riskyfive I use readelf all the time for my empire RISC-V port
🗪
56:51riskyfive I use readelf all the time for my empire RISC-V port
🗪
56:51riskyfive 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:57riskyfive Ctrl-q?
🗪
57:57riskyfive Ctrl-q?
🗪
57:57riskyfive 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:39riskyfive Yeah, very annoying. Arguably it's just it not ignoring the ASCII characters (XON / XOFF) that you actually typed
🗪
59:39riskyfive Yeah, very annoying. Arguably it's just it not ignoring the ASCII characters (XON / XOFF) that you actually typed
🗪
59:39riskyfive 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:06riskyfive Yeah, but when you type Ctrl-something it emits certain ASCII characters that are control characters, like stop transmitting (freeze)
🗪
1:01:06riskyfive Yeah, but when you type Ctrl-something it emits certain ASCII characters that are control characters, like stop transmitting (freeze)
🗪
1:01:06riskyfive 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:37riskyfive 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:37riskyfive 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:37riskyfive 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:14riskyfive You see, it used to be that terminals had dedicated wires for control. But then $ happened
🗪
1:07:14riskyfive You see, it used to be that terminals had dedicated wires for control. But then $ happened
🗪
1:07:14riskyfive 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:02riskyfive With dedicated wires you don't need in-band control characters
🗪
1:10:02riskyfive With dedicated wires you don't need in-band control characters
🗪
1:10:02riskyfive With dedicated wires you don't need in-band control characters
🗪
1:10:43riskyfive No, there was a message missing in between
🗪
1:10:43riskyfive No, there was a message missing in between
🗪
1:10:43riskyfive 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:55riskyfive The Ctrl-z was an example of how the shell has the same problem
🗪
1:11:55riskyfive The Ctrl-z was an example of how the shell has the same problem
🗪
1:11:55riskyfive 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:08riskyfive 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:08riskyfive 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:08riskyfive 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:34riskyfive scall -> ecall
🗪
1:14:34riskyfive scall -> ecall
🗪
1:14:34riskyfive scall -> ecall
🗪
1:15:14riskyfive It's the old name
🗪
1:15:14riskyfive It's the old name
🗪
1:15:14riskyfive 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:19riskyfive Notice: disassembly of XXX (not .text) section
🗪
1:16:19riskyfive Notice: disassembly of XXX (not .text) section
🗪
1:16:19riskyfive 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:11riskyfive You can do a readelf of the binary in your main system
🗪
1:18:11riskyfive You can do a readelf of the binary in your main system
🗪
1:18:11riskyfive You can do a readelf of the binary in your main system
🗪
1:18:27Consult man readelf
1:18:27Consult man readelf
1:18:27Consult man readelf
1:19:25Run readelf -a hello
🏃
1:19:25Run readelf -a hello
🏃
1:19:25Run readelf -a hello
🏃
1:20:21Read through the readelf of hello
1:20:21Read through the readelf of hello
1:20:21Read through the readelf of hello
1:21:40riskyfive Maybe just try GDB with the binary?
🗪
1:21:40riskyfive Maybe just try GDB with the binary?
🗪
1:21:40riskyfive Maybe just try GDB with the binary?
🗪
1:22:13Continue to read through the readelf of hello
1:22:13Continue to read through the readelf of hello
1:22:13Continue to read through the readelf of hello
1:22:31riskyfive That's why you need the JTAG port
🗪
1:22:31riskyfive That's why you need the JTAG port
🗪
1:22:31riskyfive That's why you need the JTAG port
🗪
1:22:46Return to the objdump of hello
1:22:46Return to the objdump of hello
1:22:46Return to the objdump of hello
1:23:42riskyfive The system calls are probably wrapped in libc functions
🗪
1:23:42riskyfive The system calls are probably wrapped in libc functions
🗪
1:23:42riskyfive 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:49riskyfive I think the ligc_start_main is just a red herring. Notice the offset is different between different __libc_start_main lines
🗪
1:24:49riskyfive I think the ligc_start_main is just a red herring. Notice the offset is different between different __libc_start_main lines
🗪
1:24:49riskyfive 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
🗩