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
Studying Calling Conventions
?
?

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:07Recap and set the stage for the day
🗩
0:07Recap and set the stage for the day
🗩
0:07Recap and set the stage for the day
🗩
1:04Make pwm_speed_test to see multiple definitions of handle_trap() due to init.c being included
1:04Make pwm_speed_test to see multiple definitions of handle_trap() due to init.c being included
1:04Make pwm_speed_test to see multiple definitions of handle_trap() due to init.c being included
4:11Ponder modifying common.mk to avoid including init.c twice
📖
4:11Ponder modifying common.mk to avoid including init.c twice
📖
4:11Ponder modifying common.mk to avoid including init.c twice
📖
7:15Note that the trap handler is responsible for handling unimplemented instructions
🗩
7:15Note that the trap handler is responsible for handling unimplemented instructions
🗩
7:15Note that the trap handler is responsible for handling unimplemented instructions
🗩
8:58Read use_pll() in init.c
📖
8:58Read use_pll() in init.c
📖
8:58Read use_pll() in init.c
📖
11:13Stop passing -DNO_INIT in the Makefile and remove _putc() and _puts() from pwm_speed_test.c
11:13Stop passing -DNO_INIT in the Makefile and remove _putc() and _puts() from pwm_speed_test.c
11:13Stop passing -DNO_INIT in the Makefile and remove _putc() and _puts() from pwm_speed_test.c
12:20Rename handle_trap() to handle_m_ext_interrupt() and let init.c setup the trap handler for us
12:20Rename handle_trap() to handle_m_ext_interrupt() and let init.c setup the trap handler for us
12:20Rename handle_trap() to handle_m_ext_interrupt() and let init.c setup the trap handler for us
15:04Consult the other demos in the Freedom E SDK for printf and write
📖
15:04Consult the other demos in the Freedom E SDK for printf and write
📖
15:04Consult the other demos in the Freedom E SDK for printf and write
📖
18:07#include stdio.h and make pwm_0_handler() call printf()
18:07#include stdio.h and make pwm_0_handler() call printf()
18:07#include stdio.h and make pwm_0_handler() call printf()
19:18Comment out all the headers, build and readd them until we have no compile errors
19:18Comment out all the headers, build and readd them until we have no compile errors
19:18Comment out all the headers, build and readd them until we have no compile errors
21:36Make and successfully upload to the HiFive1
21:36Make and successfully upload to the HiFive1
21:36Make and successfully upload to the HiFive1
22:09croepha Hello
🗪
22:09croepha Hello
🗪
22:09croepha Hello
🗪
22:14Reset the HiFive1 and see a "Hello, World!" before it terminates
🏃
22:14Reset the HiFive1 and see a "Hello, World!" before it terminates
🏃
22:14Reset the HiFive1 and see a "Hello, World!" before it terminates
🏃
23:01croepha Oooh, are we uploading to the HiFive1?
🗪
23:01croepha Oooh, are we uploading to the HiFive1?
🗪
23:01croepha Oooh, are we uploading to the HiFive1?
🗪
23:06Temporarily comment out everything before the printf(), build and upload it
23:06Temporarily comment out everything before the printf(), build and upload it
23:06Temporarily comment out everything before the printf(), build and upload it
24:26Run the program to see that it terminates before printing
🏃
24:26Run the program to see that it terminates before printing
🏃
24:26Run the program to see that it terminates before printing
🏃
24:49Comment out the asm volatile ("wfi") and consult the other demos for alternate ways to infinite loop
📖
24:49Comment out the asm volatile ("wfi") and consult the other demos for alternate ways to infinite loop
📖
24:49Comment out the asm volatile ("wfi") and consult the other demos for alternate ways to infinite loop
📖
29:31Build and upload pwm_speed_test
29:31Build and upload pwm_speed_test
29:31Build and upload pwm_speed_test
29:56Run and see the same behaviour
🏃
29:56Run and see the same behaviour
🏃
29:56Run and see the same behaviour
🏃
30:03Try putting the printf() within the infinite loop, build and upload
30:03Try putting the printf() within the infinite loop, build and upload
30:03Try putting the printf() within the infinite loop, build and upload
30:32Run and see the same behaviour
🏃
30:32Run and see the same behaviour
🏃
30:32Run and see the same behaviour
🏃
30:55Try to upload led_fade to the HiFive1
30:55Try to upload led_fade to the HiFive1
30:55Try to upload led_fade to the HiFive1
32:01Consult the Getting Started Guide1 and the Forums2 for the correct make clean invocation
📖
32:01Consult the Getting Started Guide1 and the Forums2 for the correct make clean invocation
📖
32:01Consult the Getting Started Guide1 and the Forums2 for the correct make clean invocation
📖
34:45croepha Backups man, backups
🗪
34:45croepha Backups man, backups
🗪
34:45croepha Backups man, backups
🗪
35:09Consider reading documentation
🗩
35:09Consider reading documentation
🗩
35:09Consider reading documentation
🗩
35:41croepha I highly recommend doing an automated full system backupα
🗪
35:41croepha I highly recommend doing an automated full system backupα
🗪
35:41croepha I highly recommend doing an automated full system backupα
🗪
36:05Scan through the documentation for topics to learn
📖
36:05Scan through the documentation for topics to learn
📖
36:05Scan through the documentation for topics to learn
📖
38:29Jump to Chapter 8 - Debug3
📖
38:29Jump to Chapter 8 - Debug3
📖
38:29Jump to Chapter 8 - Debug3
📖
39:10croepha By the way, I think I read somewhere that there is already GDB support for RISC-V
🗪
39:10croepha By the way, I think I read somewhere that there is already GDB support for RISC-V
🗪
39:10croepha By the way, I think I read somewhere that there is already GDB support for RISC-V
🗪
39:38Read Chapter 1.4 - Debug Mode4
📖
39:38Read Chapter 1.4 - Debug Mode4
📖
39:38Read Chapter 1.4 - Debug Mode4
📖
42:43croepha Do you have a JTAG cable?
🗪
42:43croepha Do you have a JTAG cable?
🗪
42:43croepha Do you have a JTAG cable?
🗪
43:05Scan the Getting Started Guide for debug information5 and discover "make run_debug"
📖
43:05Scan the Getting Started Guide for debug information5 and discover "make run_debug"
📖
43:05Scan the Getting Started Guide for debug information5 and discover "make run_debug"
📖
45:35Read Chapter 3.2.2 - Wait for Interrupt6
📖
45:35Read Chapter 3.2.2 - Wait for Interrupt6
📖
45:35Read Chapter 3.2.2 - Wait for Interrupt6
📖
51:24Read Chapter 20 - Calling Convention7
📖
51:24Read Chapter 20 - Calling Convention7
📖
51:24Read Chapter 20 - Calling Convention7
📖
52:05Read Chapter 20.1 - C Datatypes and Alignment8
📖
52:05Read Chapter 20.1 - C Datatypes and Alignment8
📖
52:05Read Chapter 20.1 - C Datatypes and Alignment8
📖
54:01Show how nwr_mem.h determines the integer model
📖
54:01Show how nwr_mem.h determines the integer model
📖
54:01Show how nwr_mem.h determines the integer model
📖
55:07Chapter 20.1 continued9
📖
55:07Chapter 20.1 continued9
📖
55:07Chapter 20.1 continued9
📖
57:01Read Chapter 20.2 - RVG Calling Convention10
📖
57:01Read Chapter 20.2 - RVG Calling Convention10
📖
57:01Read Chapter 20.2 - RVG Calling Convention10
📖
59:55Reflect on RISC-V's handling of a 64-bit value on a 32-bit machine
🗩
59:55Reflect on RISC-V's handling of a 64-bit value on a 32-bit machine
🗩
59:55Reflect on RISC-V's handling of a 64-bit value on a 32-bit machine
🗩
1:01:16Chapter 20.2 continued11
📖
1:01:16Chapter 20.2 continued11
📖
1:01:16Chapter 20.2 continued11
📖
1:02:45Note a good rule of thumb: in RISC-V, arguments more than twice the size of a pointer get passed by reference
🗩
1:02:45Note a good rule of thumb: in RISC-V, arguments more than twice the size of a pointer get passed by reference
🗩
1:02:45Note a good rule of thumb: in RISC-V, arguments more than twice the size of a pointer get passed by reference
🗩
1:03:38Chapter 20.2 continued12
📖
1:03:38Chapter 20.2 continued12
📖
1:03:38Chapter 20.2 continued12
📖
1:08:04Consult Table 20.2: RISC-V calling convention register usage13
📖
1:08:04Consult Table 20.2: RISC-V calling convention register usage13
📖
1:08:04Consult Table 20.2: RISC-V calling convention register usage13
📖
1:10:22Read Chapter 20.3 - Soft-Float Calling Convention14
📖
1:10:22Read Chapter 20.3 - Soft-Float Calling Convention14
📖
1:10:22Read Chapter 20.3 - Soft-Float Calling Convention14
📖
1:14:29Read Chapter 20.4 - RV32E Calling Convention15
📖
1:14:29Read Chapter 20.4 - RV32E Calling Convention15
📖
1:14:29Read Chapter 20.4 - RV32E Calling Convention15
📖
1:15:01That ends that
🗩
1:15:01That ends that
🗩
1:15:01That ends that
🗩