Correction : 07:55 -std=gnu11 part is not "gnu version", but tells the compiler to interpret the c source according to c 2011 standard with GNU extensions.
Seriously awesome! As someone who is coming out of a bachelors degree, this is exactly the kind of in depth knowledge that I felt like I was missing, and I want to gain! Thanks!!!
You're welcome! A lot of times you have to create your own in-depth knowledge. A bachelor's degree is a great start; it helps you incorporate fundamentals as you build your experience. Good luck!
Thank you so much for your video David I've found it a great help. Can confirm (with very minor modifications) that this works on the rpi4 as the dev machine with pi pico w as target. :)
Hi David, that must have been a lot of sluething to figure it all out. Thanks for scrutinizing the inscrutable and showing us how it works (I'm still wrestling with @#$% cmake)
Loving this series, sleeves are rolled-up and it's getting mucky! It's probably occurred to you already, but you can use other make targets as prerequisites in another target, so 'uf2: link' will complete the build in one hit, and 'all:' would be redundant. Also *-gcc doesn't do anything to the asm files, that gets delegated to arm-none-eabi-as to assemble. Include '-v' with *-gcc to see the full incantation. Including it would add a couple of lines to your Makefile, but not change the outcome. Kudos for getting stuck into linker scripts!! Always look like some sort of black magic to me.
Thanks for the insight. I was thinking about that. During my early ventures into linker scripts, I had so many errors that I didn't want to do too much at any one time. Now I'm experimenting with relocating (again) parts of the program and I'm getting into more errors. When I have the program structure the way I want it, I'll work on streamlining the make file. Also thanks for the info on the gcc assembler. I've got a lot to learn!
Much appreciated. I'm keen to see how the clocks are set. I had a quick look at the datasheet and it seems complicated. There was also something about setting the clock for the GPIO, which I find puzzling. Is that something we need to worry about?
I'm putting together a video on clocks now; should be ready within the week. Hopefully that will help. You don't need to set a clock for the GPIO, you can either export a clock to the GPIO or import a clock through the GPIO. I will demonstrate both. Thanks for watching!
I might have been able to use the linker script as is; but I decided to get rid of a lot (but not all) of the stuff I didn't need for this exercise. My linker script is about 89 lines long; memmap_default.ld is nearly 259 lines long. Here is the original: github.com/raspberrypi/pico-sdk/blob/6a7db34ff63345a7badec79ebea3aaef1712f374/src/rp2_common/pico_standard_link/memmap_default.ld Hope this helps.
I appreciate the thought, but I do these videos just because I enjoy sharing the fun of low level programming with others. Please spread the word to others and thanks for watching!
Correction : 07:55 -std=gnu11 part is not "gnu version", but tells the compiler to interpret the c source according to c 2011 standard with GNU extensions.
You're right. Thanks for the clarification.
Seriously awesome! As someone who is coming out of a bachelors degree, this is exactly the kind of in depth knowledge that I felt like I was missing, and I want to gain! Thanks!!!
You're welcome! A lot of times you have to create your own in-depth knowledge. A bachelor's degree is a great start; it helps you incorporate fundamentals as you build your experience. Good luck!
Wow, it is a complex procedure to boot an SoC! Thanks!
That's why the SDK adds so much overhead. But that's also what makes it so much easier for C/C++users. Thanks for watching!
I love the depth and pace you sey David 8-) great stuff
Thank you, and thanks for watching!
Thank you so much for your video David I've found it a great help. Can confirm (with very minor modifications) that this works on the rpi4 as the dev machine with pi pico w as target. :)
That's great to know! Thanks so much for the info and for watching!
This reminds of the original stuff we had in Dr Dobbs Journal. Great level. Thanks
Dr. Dobbs was great. I also liked Kilobaud; both magazines have vanished over 40 years ago!
Hi David, that must have been a lot of sluething to figure it all out.
Thanks for scrutinizing the inscrutable and showing us how it works
(I'm still wrestling with @#$% cmake)
You're welcome. It took a lot more effort than I originally thought. I hope it will help.
Thanks to UA-cam recommendation, found your marvelous channel.
Great; I hope you enjoy the content. Thanks for watching!
Yeah!! This is great!!
It took a while. I hope it's helpful. Thanks for watching!
Thank you David. Good job!
You're welcome. Thanks for watching!
Awesome
Thanks you!
Exellent work. 😃
I could not have done it. 🤫
Thank you. Hopefully this helps you continue on your journey.
Loving this series, sleeves are rolled-up and it's getting mucky!
It's probably occurred to you already, but you can use other make targets as prerequisites in another target, so 'uf2: link' will complete the build in one hit, and 'all:' would be redundant.
Also *-gcc doesn't do anything to the asm files, that gets delegated to arm-none-eabi-as to assemble. Include '-v' with *-gcc to see the full incantation. Including it would add a couple of lines to your Makefile, but not change the outcome.
Kudos for getting stuck into linker scripts!! Always look like some sort of black magic to me.
Thanks for the insight. I was thinking about that. During my early ventures into linker scripts, I had so many errors that I didn't want to do too much at any one time. Now I'm experimenting with relocating (again) parts of the program and I'm getting into more errors. When I have the program structure the way I want it, I'll work on streamlining the make file. Also thanks for the info on the gcc assembler. I've got a lot to learn!
great video! :)
Glad you liked it! Thanks for watching!
Much appreciated. I'm keen to see how the clocks are set. I had a quick look at the datasheet and it seems complicated. There was also something about setting the clock for the GPIO, which I find puzzling. Is that something we need to worry about?
I'm putting together a video on clocks now; should be ready within the week. Hopefully that will help. You don't need to set a clock for the GPIO, you can either export a clock to the GPIO or import a clock through the GPIO. I will demonstrate both. Thanks for watching!
Please how to write C code bare metal programming using register and how to read the datasheet
Check out my Bare Metal Adventures, Chapters 1 and 2. There I use the SDK with a "C" helper program. Hopefully that will help.
Why did you need to modify the linker file and what exactly did your change do?
I might have been able to use the linker script as is; but I decided to get rid of a lot (but not all) of the stuff I didn't need for this exercise. My linker script is about 89 lines long; memmap_default.ld is nearly 259 lines long. Here is the original: github.com/raspberrypi/pico-sdk/blob/6a7db34ff63345a7badec79ebea3aaef1712f374/src/rp2_common/pico_standard_link/memmap_default.ld
Hope this helps.
This was valuable to me. If you put up a patreon page (or even just paypal), I'll give you some monetary support
I appreciate the thought, but I do these videos just because I enjoy sharing the fun of low level programming with others. Please spread the word to others and thanks for watching!