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
🗩