Determining resource usage for BSP drivers

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Feb 10 13:23:12 UTC 2023


On 10.02.23 14:19, martinerikwerner.aac at gmail.com wrote:
> Some BSP drivers use rtems objects in their implementation, for example
> GRCAN creating semaphores in bsps/shared/grlib/can/grcan.c.
> 
> (GRCAN is only used as an example, there seems to be many BSP drivers
> which do this, the fact that GRCAN use the driver manager might make it
> not the best example..?)
> 
> How is the application supposed to calculate the correct resource
> amount to set for the drivers it is using? Is there any support for
> this in either code or documentation?
> 
> Or is the idea that a user needs to:
> * Know exactly what drivers are used/available.
> * Read the source code of each of these drivers and count up the rtems
> resources used.
> 
> For example, in GRCAN, it looks like 4 semaphores are used for each
> device, so a user would then do something like:
> 
> #define CONFIGURE_MAXIMUM_SEMAPHORES \
>    (MY_SEMAPHORES + MY_GRCAN_MAXIMUM_DEVICES * 4)
> 
> As the number of drivers used increases, this seems like it could
> become quite hard to manage and prone to errors, if this manual method
> needs to be used.
> 
> Or is it assumed that the system will be configured with unlimited
> resources instead in most cases where this could become an issue?

Yes, it is quite difficult to do the resource accounting for the Classic 
API objects. We rewrote a lot of drivers to use the self-contained 
synchronization objects:

https://docs.rtems.org/branches/master/c-user/self_contained_objects.html

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/


More information about the users mailing list