On 12/19/2017 10:47 PM, Chris Johns wrote:
> On 19/12/2017 23:44, Goetz Pfeiffer wrote:
>> at the Helmholtz-Zentrum Berlin we control an electron storage ring facility
>> with the EPICS controlsystem framework.
>>
>> We have about 20 mvme2100 VME CPU boards which run RTEMS 4.9 with
>> cexp and GeSys.
> This sounds like a nice system.
>
>> We would like to use RTEMS 5 but cexp is not compatible with this version.
>>
>> We are looking for the following features in RTEMS 5:
>>
>>   * dynamic loading of object files
>>   * dynamic linking of objects
>>   * calling functions on the command line (optional)
>>
>> With cexp and RTEMS 4.9, dynamic loading works like this in the startup 
>> script:
>>
>>   cexpModuleLoad("Com.obj")
>>   cexpModuleLoad("ca.obj")
>>   cexpModuleLoad("dbStaticIoc.obj")
>>   cexpModuleLoad("registryIoc.obj")
>>   cexpModuleLoad("dbIoc.obj")
>>    ...
> The cexp C parser and caller is not present. I also suspect other alternatives
> such as another language like lua would not help because your existing scripts
> would need to change as well as the related documentation.
Since our startup scripts are generated with perl anyway, using a different 
syntax would not be a
big problem. EPICS has it's own shell, iocshell, which could also be used for 
calling functions,
this is the reason why "calling functions" in my list above is optional.
>
>> Is it possible to implement a dynamic linker in RTEMS 5 ? It seems that
>> dynamic loading with dl_open(), dl_sym() and dl_close() is already
>> implemented.
> Dynamic loading is present. I am not across all the features cexp provides so 
> I
> cannot be 100% certain there is a complete match. For example the dlopen API
> currently does not search archives to automatically pull in dependences. I
> avoided this when I first implemented libdl and I now think this feature 
> should
> be added.
What we would like to have is dynamic *linking*. I think this could be 
implemented on top of
of the dynamic loader which is already present in RTEMS 5. The current API of 
the loader requires
to know the name of a function and returns a pointer to the function which can 
then be called.
What we would like to have is that all object files are loaded step by step and 
references to external
symbols in other object files are resolved automatically. This is what 
cexpModuleLoad does with the
help of generated symbol table files (as far as I understand it).
>> In another mail it was suggested to adapt cexp for RTEMS 5 but it seems
>> that this product is too hard to maintain and too hardware dependent.
> This is understandable.
>
>> We think that it would make RTEMS even more attractive, if it would
>> incorporate a dynamic loader.
> Do you mean bringing cexp into RTEMS and making it use the libdl loader?
>
> Any work to help ease EPICS integration and maintenance is a good thing.
We actually thought of replacing cexp with a dynamic linker and the iocshell 
from EPICS
or the RTEMS shell.
>
>> It would be a great alternative to vxWorks.
> I suspect there are other users with this issue. It would be good to have an
> easy upgrade path to RTEMS 5.
>
> Chris
> _______________________________________________
> users mailing list
> users@rtems.org
> http://lists.rtems.org/mailman/listinfo/users

It may be possible that we pay someone to implement the dynamic linker in 
RTEMS. A
condition would be that the dynamic linker would become part of the RTEMS core
so it is ensured that this feature is maintained in future RTEMS versions.

Greetings.

  Goetz


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to