Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork35
-
@facchinm@pillo79@mjs513 and all Sorry, it may be just me, but I still don't understand Arduino’s goals, on what a released version of the Arduino boards on Zephyr It might really help if there was a writeup somewhere maybe part of the wiki that might explain the goals and a My guess is a lot of this is still in flux and may take several iterations of alpha/beta releases before things fully solidify. But I still think it would be helpful to at least get a general idea of what your current thought are. On general goals, things like: b) How much will the typical users need to know about Zephyr? Device Trees? On the same line, will a high percentage of users need to install from sources: ArduinoCore-zephyr, Zephyr, and all the parts it pulls in? Will this be necessary in order to configure and use the different devices and the like that are part of Zephyr? Like How would I use an OV7675 camera on the GIGA? c) Do you believe that a reasonable percentage of developers will develop for the Arduino boards directly using the Zephyr setup? That is doing west build and west flash? If so, what things should we be migrating out of the ArduinoCore-zephyr cores/variants should be migrated down lower into the zephyr sources. Things like overlays? d) How do you plan to setup for Boards alone versus boards that have a shield or carrier board. Like Giga with or without Giga Display Shield. Portenta alone or on a Carrier: Breakout, Hat, Mid, … In both cases with or without Cameras? For example, do you e) Will there be options for a user to define their own overlay and config files as part of an Arduino build? I would assume not, but... f) How to use Multiple cores? ... |
BetaWas this translation helpful?Give feedback.
All reactions
👍 1
Replies: 2 comments 5 replies
-
Jumping from#153 On Linux, Kconfig is there to change the code, and the devicetree is only a binary configuration file that does not require rebuilding the kernel, but only run Implementing boot-time modification without recompiling Zephyr... is not easy, as Zephyr drivers are currently compiled with the configuration hardcoded in the driver C code via C macros. Sometimes it does not affect performance, sometimes it does. Long term challenge in Zephyr. Another approach to make this smoother is improve the build environment on all platforms, which is probably a WIP. |
BetaWas this translation helpful?Give feedback.
All reactions
👍 2
-
Thanks@josuah, It will be interesting to see what approaches Arduino might take to do some of this. For example, I can imagine creating multiple board variants for each board: For example the GIGA. There could be one Or maybe Arduino, can somehow set it up, where they run the whole equivalent of: west build, and maybe the sketch allows you For the Camera stuff that@mjs513 and I have been playing with, I have been tempted to attempt a different tactic, and that is to That allows a class object to register at it at init time, with either a jump table or potential a c++ class... And then have all of the In the mean time I have been doing a lot of my own playing and testing directly building directly with Zephyr. I am still Where I query for this object and then can get the SPI object. But then how to get the other three IO pins associated with it And knowing that the first item is CS, second DC and third reset, and at times maybe a 4th for touch support... Thanks again |
BetaWas this translation helpful?Give feedback.
All reactions
👍 1
-
One possible workaround for this that can be implemented today is to include all possible drivers, which would all get initialized at startup, and all fail except the one actually present. This would be a lot of devices listed, but only one actively represented to the user APIs.
Driver on top of the RTOS will work like it does for i.e. FreeRTOS. This will also face the same challenges: bugfixes and features from upstream would not reach Arducam_dvp, as well as lack of integration into other components (video over WiFi, Ethernet, USB, hardware compression support...). Zephyr USB Host support (including UVC) will face a similar challenge: how to instanciate video devices at runtime. If I understand, the ideal situation would be the ability to write a Zephyr driver in the same format as upstream for the most part, but load it with LLEXT from an Arduino sketch environment? That way, easy upstreaming, and ease of use in Arduino context? This sounds a bit whatNetBSD rump kernels are, orLinux DKMS modules. An alternative is to allow extra block of devicetree to be added to the existing "minimal" devicetree set: devicetree blobs. |
BetaWas this translation helpful?Give feedback.
All reactions
-
This is where we face the limitation of bypassing devicetree in Zephyr: usually drivers define all their GPIO and other resources inside the devicetree block of the driver itself: Then the driver would be able to access the GPIO pins declared for this driver. |
BetaWas this translation helpful?Give feedback.
All reactions
👍 1
-
Thanks, that is what would make it cleaner. However not sure of the format... For example I have tried stuff like: or like: But they error out with errors like: |
BetaWas this translation helpful?Give feedback.
All reactions
-
You had the right syntax for GPIO (what to put in the |
BetaWas this translation helpful?Give feedback.
All reactions
-
For writing a completely new driver, the first step is to define every property you want to use (like Once this driver definition is done, then you can use it on devicetree. For instance: |
BetaWas this translation helpful?Give feedback.