EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: linking in IOC makefile for RTEMS
From: "Siddons, David via Tech-talk" <tech-talk at aps.anl.gov>
To: Michael Davidsaver <mdavidsaver at gmail.com>
Cc: EPICS tech-talk <tech-talk at aps.anl.gov>
Date: Sun, 18 Jul 2021 18:41:35 +0000
Hi Michael,
   OK, you are right. That fixed the symbol problem and it now tries to mount the filesystem. Booting the resultant image I get:


***** Setting up file system *****                                              
----- try to mount local filesystem ------                                      
***** Using compiled in file data *****                                        
                                                                               
*** FATAL ***                                                                  
fatal source: 9 (RTEMS_FATAL_SOURCE_EXCEPTION)                                  
                                                                               
R0   = 0x62726174 R8  = 0x00000000                                              
R1   = 0x00000000 R9  = 0x00000000                                              
R2   = 0x80812ce8 R10 = 0x00000000                                              
R3   = 0x80856040 R11 = 0x00000000                                              
R4   = 0x80456f50 R12 = 0x00000000                                              
R5   = 0x80869198 SP  = 0x808690f0                                              
R6   = 0x00000000 LR  = 0x801a997c                                              
R7   = 0x00000000 PC  = 0x801aa73c                                              
CPSR = 0x40000113 VEC = 0x00000004                                              
RTEMS version: 5.0.0.1b3f09251ae53a93ea647e4d8ebeffeead91a880                  
RTEMS tools: 7.5.0 20191114 (RTEMS 5, RSB 5 (1b3f09251ae5), Newlib 7947581)    
executing thread ID: 0x08b010001                                                
executing thread name:                                                          
                                                     
The image was generated using the attached script, make-tarball.sh, and the current Makefile is also attached.

Pete.


From: Michael Davidsaver <mdavidsaver at gmail.com>
Sent: Saturday, July 17, 2021 2:44 PM
To: Siddons, David <siddons at bnl.gov>
Cc: EPICS tech-talk <tech-talk at aps.anl.gov>; Johnson, Andrew N. <anj at anl.gov>
Subject: Re: linking in IOC makefile for RTEMS
 
On 7/16/21 12:47 PM, Siddons, David via Tech-talk wrote:
> Hi Andrew,
>   It doesn't seem to. The file is clearly compiled and included in the support library:
>
> /home/peter/quick-start/rtems/5/bin/arm-rtems5-ar rc   libmyexampleSupport.a    xxxRecord.o devXxxSoft.o dbSubExample.o devmyexampleVersion.o myexampleHello.o initTrace.o tarball.o

I'm not sure my 'epicsRtemsFSImage' trick will work from a library.

Try moving tarball.c to myexample_SRCS.

> myexample_SRCS += tarball.c

And I think you can just remove '..._SRCS += tarball.h'.
It's probably not doing anything helpful.


> arm-rtems5-nm libmyexampleSupport.a |grep epicsRtems
> 00000000 R epicsRtemsFSImage
> 00000000 R epicsRtemsFSImage_size
>
> but not in the myexample executable:
>
> peter@peter-OptiPlex-7070:~/test_ioc/bin/RTEMS-beagleboneblack$ arm-rtems5-nm myexample |grep epicsRtems
> 8060306c V epicsRtemsFSImage
>
> which is the weak symbol.
> Pete.
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> *From:* Johnson, Andrew N. <anj at anl.gov>
> *Sent:* Friday, July 16, 2021 3:21 PM
> *To:* Siddons, David <siddons at bnl.gov>
> *Cc:* EPICS tech-talk <tech-talk at aps.anl.gov>
> *Subject:* Re: linking in IOC makefile for RTEMS
>  
> Hi Pete,
>
> Just an idea, does it make any difference if you remove the tarball.h file from your _SRCS variable (you shouldn’t include .h files in _SRCS anyway, if you want to install them they go into INC instead)?
>
> - Andrew
>
>
>> On Jul 16, 2021, at 2:08 PM, Siddons, David via Tech-talk <tech-talk at aps.anl.gov <mailto:tech-talk at aps.anl.gov>> wrote:
>>
>> I have an RTEMS test IOC (generated using makeBaseApp) to which I've added a source file which declares a large array (actually, a compiled-in file system). The Makefile has:
>>
>> ......
>> # rather than directly into the IOC application, that
>> # causes problems on Windows DLL builds
>> myexampleSupport_SRCS += dbSubExample.c
>> myexampleSupport_SRCS += devmyexampleVersion.c
>> myexampleSupport_SRCS += myexampleHello.c
>> myexampleSupport_SRCS += initTrace.c
>> myexampleSupport_SRCS += tarball.h
>> myexampleSupport_SRCS += tarball.c
>>
>> where the tarball files are my additions. The C file contains:
>>
>> /*
>>  *  Declarations for C structure representing binary file epicsRtemsFSImage
>>  *
>>  *  WARNING: Automatically generated -- do not edit!
>>  */
>>
>> #include <sys/types.h>
>>
>> const unsigned char epicsRtemsFSImage[] = {
>>   0x74, 0x61, 0x72, 0x62, 0x61, 0x6c, 0x6c, 0x2f, 0x00, 0x00, 0x00, 0x00, 
>>   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
>>   .....etc, then:
>>
>> const size_t epicsRtemsFSImage_size = sizeof(epicsRtemsFSImage);
>>
>>
>> The EPICS base libraries contain a weak reference to this same symbol (from libcom/RTEMS/init.c) , and I expected this definition to overwrite the weak one, but inspection of the executable only shows the weak one, and the size variable is not referenced at all. What am I missing? It seems that the tarball file is compiled, but not linked.
>>
>> Pete.
>
> -- 
> Complexity comes for free, simplicity you have to work for.
>

Attachment: make-tarball.sh
Description: make-tarball.sh

Attachment: Makefile
Description: Makefile


Replies:
Re: linking in IOC makefile for RTEMS Michael Davidsaver via Tech-talk
References:
linking in IOC makefile for RTEMS Siddons, David via Tech-talk
Re: linking in IOC makefile for RTEMS Johnson, Andrew N. via Tech-talk
Re: linking in IOC makefile for RTEMS Siddons, David via Tech-talk
Re: linking in IOC makefile for RTEMS Michael Davidsaver via Tech-talk

Navigate by Date:
Prev: Re: linking in IOC makefile for RTEMS Michael Davidsaver via Tech-talk
Next: Re: linking in IOC makefile for RTEMS Michael Davidsaver via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
Navigate by Thread:
Prev: Re: linking in IOC makefile for RTEMS Michael Davidsaver via Tech-talk
Next: Re: linking in IOC makefile for RTEMS Michael Davidsaver via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
ANJ, 18 Jul 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·