# How to integrate to firmware with my own board

**URL:** <https://forum.opencyphal.org/t/how-to-integrate-to-firmware-with-my-own-board/712>\
**Category:** LibCyphal\
**Created:** [December 14, 2019, 2:43am UTC](https://forum.opencyphal.org/t/how-to-integrate-to-firmware-with-my-own-board/712 "2019-12-14T02:43:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rsenjoyer](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/r/76d3ee/32.png) [@Rsenjoyer](https://forum.opencyphal.org/u/Rsenjoyer)\
**Post date:** [December 14, 2019, 2:43am UTC](https://forum.opencyphal.org/t/how-to-integrate-to-firmware-with-my-own-board/712/1 "2019-12-14T02:43:22Z")

</div>

hey:  
i want to know how to add uavcan to firmware and use with my own board Instead of stm32？ i have added uavcan as an submodule to firmware, and run `git submodule update --init --recursive`, it download into `src/modules/uavcan/libuavcan` .

i use my own board install of stm32, i have tested driver in nuttx layer, now, i want to know how to let uavcan use driver which is in nuttx layer?

i have read [https://uavcan.org/](https://uavcan.org/) doc , but i can not find any tutorial to how to custom my own board , did i miss sth?

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [December 14, 2019, 3:26am UTC](https://forum.opencyphal.org/t/how-to-integrate-to-firmware-with-my-own-board/712/2 "2019-12-14T03:26:43Z")

</div>

It’s covered here: [https://uavcan.org/Implementations/Libuavcan/Platforms/#adding-support-for-a-new-platform](https://uavcan.org/Implementations/Libuavcan/Platforms/#adding-support-for-a-new-platform). You just need to write your own implementations of `uavcan::ICanDriver`, `uavcan::ICanIface`, and `uavcan::ISystemClock`.

---

<div class="post-metadata">

**Author:** ![Rsenjoyer](https://forum.opencyphal.org/letter_avatar_proxy/v4/letter/r/76d3ee/32.png) [@Rsenjoyer](https://forum.opencyphal.org/u/Rsenjoyer)\
**Post date:** [December 16, 2019, 1:48am UTC](https://forum.opencyphal.org/t/how-to-integrate-to-firmware-with-my-own-board/712/3 "2019-12-16T01:48:54Z")

</div>

thank for your reply, i follow your advice, and i write my own board driver, [https://github.com/Rsenjoyer/libuavcan\_coolfly](https://github.com/Rsenjoyer/libuavcan_coolfly), i want to know how to test it with uavcan in firmware, it is just copying into /libuavcan\_drivers folder and change CMakeLists.txt in root file in uavcan ?

---

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [December 18, 2019, 8:56am UTC](https://forum.opencyphal.org/t/how-to-integrate-to-firmware-with-my-own-board/712/4 "2019-12-18T08:56:48Z")

</div>

> [@Rsenjoyer](#):
>
> it is just copying into /libuavcan\_drivers folder and change CMakeLists.txt in root file in uavcan ?

No. Whatever you do, you are not supposed to change the library. If you find yourself needing to perform code surgery of any kind, you are doing something wrong. What you need to do is to pass an instance of your driver into the `Node` constructor when initializing your node.
