Bare metal GPIO driver for ESP32 | Toggling an LED
Ғылым және технология
In this video, I write my own GPIO driver for the ESP32 microcontroller, instead of using the provided ESP-IDF headers. All memory addresses are pulled directly from the Technical Reference Manual.
[Technical Reference Manual]
www.espressif.com/sites/defau...
[Source Code]
github.com/JoshMarangoni/bare...
Пікірлер: 15
Man this was dope, explanation was great. Most people just blow right over stuff like this like its nothing.
Holy crap that was simple. I just switched over the Espressif framework from Arduino and I've been messing around with their GPIO driver for a couple of hours now. Considering all I needed to do was toggle the internal LED, this saves so much hassle.
Your videos are great!!! Thanx a lot for your time and effort!!!
Very useful: thanks. Great for ULP programming where there's no other option.
Can anyone give insight on how to read GPIO pin such as button and control LED foe ESP32.
Thanks bro
Nice video. Please note that GPIO_OUT_W1TS_REG and GPIO_OUT_W1TC_REG are exposed in soc/gpio_reg.h so a simple #include is sufficient, no need to define these registers inside your code. Please also note that GPIO pin numbers are exposed in hal/gpio_types.h. Same comment, no need to define GPIO5 macro again.
When this code is executed on ESP32, Is there some FreeRTOS tasks at under kernel ? I am trying to check a gpio from external source and send to serial, and the FreeRTOS under IDF sometimes run task like IPC and move the context of execution. I watched the video and I dont understand why you move to linux. Does it possible under windows create a Real Bare Bone code ? Thanks in Advance.
man writing code like its native language
@easyelectronics4364
3 ай бұрын
😂😂😂
Great stuff, arw you willing to continue the series? I am looking for a bate metal approach to the ESP32 instead of the typical arduino core use. What topics are you looking to cover?
@Mankindux
5 ай бұрын
this is not bare metal as the dev uses esp-idf which incorporates bootloader, start linker script and so on. a bare metal approach would be to write a main, assembly file and use clang directly.
I tried reading the same document to see how you came about your awesome simplicity. What made you decide to avoid setting the GPIO_FUNCx_OUT_SEL register?
@EV_engineer
10 ай бұрын
For simply toggling an LED, GPIO_OUT_W1TS_REG and GPIO_OUT_W1TC_REG are generally easier to set up and offer greater flexibility. But if you have a specific hardware event that you want to use to trigger the LED, and you want to minimize CPU overhead, then GPIO_FUNCx_OUT_SEL might be more appropriate.
The next step is write your own linker script