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 <2021> 2022 2023 2024 2025 | 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 <2021> 2022 2023 2024 2025 |
<== 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