Why Function Pointers are Awesome

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ก.ค. 2024
  • In this 2022 Embedded Online Conference Microtalk, Jacob Beningo discusses the use cases for function pointers in embedded software.
    This video looks at the C programming language function pointers, and how they can be leveraged for use cases such as:
    - task scheduling
    - command processing
    - state machines
    - interrupt vector tables
    Developers often get confused that function pointers shouldn't be used in embedded systems because of MISRA C: 1998 Rule 104. As you'll see in this video, there are safe methods for using function pointers.
    (The Embedded Online Conference will take place April 25 - 29th, 2022. If you are interested in participating, you can register with the code BENINGO to get at least a $100 discount).
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 22

  • @ralflici986
    @ralflici986 12 วันที่ผ่านมา

    Very interesting talk, thank you!

  • @LomasSubedi
    @LomasSubedi 2 ปีที่แล้ว +2

    Thank you Jacob, your presence in here and on different blog article is helping so much to learn and understand.

  • @CuriousCyclist
    @CuriousCyclist ปีที่แล้ว

    Really good video! Thanks for taking the time to make it.

  • @grimvian
    @grimvian 7 หลายเดือนก่อน

    The use cases gives me inspiration to enhance my C code, so a big thank you from me.

  • @btoven66
    @btoven66 2 ปีที่แล้ว

    Great to see you again!!!

    • @beningoembedded
      @beningoembedded  2 ปีที่แล้ว +1

      Thanks Peter! I'm planning to post a lot more this year so stay tuned!

  • @boudewijndijkstra82
    @boudewijndijkstra82 ปีที่แล้ว +1

    Another problem is that calculating the maximum stack usage becomes non-trivial. For each function pointer invocation it has to be clear which functions can potentially be called.

    • @beningoembedded
      @beningoembedded  ปีที่แล้ว +1

      Absolutely! Thanks for the comment and observation!

  • @bahtiyar.bayram
    @bahtiyar.bayram 2 ปีที่แล้ว +1

    Great content!

  • @shahfenil08
    @shahfenil08 2 ปีที่แล้ว +1

    Interestingly, I violated the rule that said it should be constant and my code was crashing because it was pointing to the 0x0. As I was debugging the issue, I found out another bug index out range. So one bug exposed another nasty bug. Note that, before implementing function pointer other bug was still there but I couldn't find out because my program haven't crashed or going into hard fault. :D

  • @ThePing98
    @ThePing98 2 ปีที่แล้ว

    Great video thank u

  • @Bob-zg2zf
    @Bob-zg2zf ปีที่แล้ว +1

    I just bought your book today.❤

    • @beningoembedded
      @beningoembedded  ปีที่แล้ว +1

      Excellent! I hope you enjoy it!

    • @Bob-zg2zf
      @Bob-zg2zf ปีที่แล้ว

      @@beningoembedded I ordered it but I have not received it. I hope I will indeed enjoy it as much as I enjoyed your videos. The thing is, my expertise level is not that advanced. I am afraid I won't understand all or most of your book's contents. But I like your video contents and style and background.

    • @Bob-zg2zf
      @Bob-zg2zf ปีที่แล้ว

      @@beningoembedded Do you mind if I ask you a simple question? I have read your article, where you mentioned that we are supposed to "write rock-solid embedded software". But I can only design and solder an STM32 board with HCD1080, using someone's Keil project code that I downloaded from the Internet. So, how do I write my own entire project/code? How do I improve myself from using others' code to "write my own rock-solid embedded software"? The architecture seems so difficult to master to write from scratch or modify here and there....

  • @deltakid0
    @deltakid0 2 ปีที่แล้ว +1

    Could you please explain how the ATTiny85 bootloader works? It's a very basic MCU.
    Thank you.

  • @waynerifish
    @waynerifish 2 ปีที่แล้ว +1

    Regarding "Make sure function pointers are NOT stored in RAM"... when I register a callback function, isn't that callback function pointer stored in RAM somewhere (e.g., UART0_ISR->function), even if it's done in pre-compiled or auto-generated code?

  • @hsaidinsan6345
    @hsaidinsan6345 2 ปีที่แล้ว +2

    Do they affect the real time performance?

    • @beningoembedded
      @beningoembedded  2 ปีที่แล้ว +1

      Function pointers will not have a negative impact on the real-time performance. They can improve readability, scalability, and reusability though. They can also decrease maintenance too.
      If you were to look at what a function call really is, it's just a pointer to the functions code anyway!

  • @fifaham
    @fifaham วันที่ผ่านมา

    Function pointers are evil? I have always used them and I never had any problem with them, unless you have a bad memory or stack overflow or damaged memory section then this will never happen, assuming there is an active WDT monitoring those special cases. I have always recommended to use an auxiliary MCU in case the first had damaged memory then the second takes over - in case of medical or security applications.