undefined reference to `rtc_initialize' when build EPICS with RTEMS4.9

Yuke Tian ytian at bnl.gov
Mon Oct 13 16:15:45 UTC 2008


Hi Joel,

Your guess are correct. After I remove the following #define in
$EPICS_BASE/src/RTEMS/base/rtems_config.c,  the RTC error went away.

#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER

Also, it seems the _Thread_Idle_body() are re-defined in gen83xx bsp
(lib/libbsp/gen83xx/startup/bspstart.c). It is first defined in score
(cpukit/score/src/threadidlebody.c). This caused the multi-definition
error when I tried to make EPICS base. I just remove the code in the bsp
package and the make was successful. Not sure if I did the correct
thing. Just to satisfy the compile :-)

Thank you,

Yuke



Joel Sherrill wrote:
> What was the resolution of this?
>
> My first thought was that the BSP did not have a RTC/TOD driver.
> And checking the source, this is the case.  I am pretty positive that
> the mpc8313erdb does not have an RTC on it.
>
> Feel free to keep EPICS/RTEMS issues on the RTEMS list until they
> cross definitely into an EPICS problem.  We will be happy to
> tell you to move it if it looks specific to EPICS.  And I am sure
> they will be happy to tell you to move it to this list.  There are
> EPICS/RTEMS experts on this list who should be able to
> help bridge the gap.
>
> --joel
>
> Daron Chabot wrote:
>> Yuke Tian wrote:
>>  
>>> Hi,
>>>
>>> I build EPICS 3.14.10 with RTEMS 4.9 for mvme2100 without errors. But
>>> when I build on mpc8313erdb board, towards the end of the EPICS make, I
>>> got the following errors:
>>>
>>> /opt/rtems-4.9/bin/powerpc-rtems4.9-g++
>>> -B/opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/ -specs bsp_specs
>>> -qrtems   -o rtemsTestHarness -static
>>> -L/home/ytian/EPICS/base-3.14.10-RC1/lib/RTEMS-mpc8313erdb
>>> -mcpu=603e -mstrict-align -fno-strict-aliasing -meabi -msdata
>>> -fno-common -DMPC8313ERDB -DMPC8349 -u Init
>>> /opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/no-dpmem.rel
>>> /opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/no-mp.rel
>>> /opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/no-part.rel
>>> /opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/no-signal.rel
>>> /opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/no-rtmon.rel
>>> rtemsTestHarness.o epicsCalcTest.o epicsAlgorithmTest.o epicsMathTest.o
>>> epicsStdioTest.o epicsStringTest.o epicsTimeTest.o epicsThreadTest.o
>>> epicsThreadPriorityTest.o epicsThreadPrivateTest.o epicsExitTest.o
>>> epicsTimerTest.o ringPointerTest.o epicsEventTest.o epicsMutexTest.o
>>> epicsExceptionTest.o epicsMessageQueueTest.o macEnvExpandTest.o
>>> macLibTest.o taskwdTest.o blockingSockTest.o epicsRunLibComTests.o
>>> epicsThreadPerform.o epicsMaxThreads.o buckTest.o    -lCom      -lm
>>> -lrtemsCom -lc -lrtemscpu -lCom -lnfs -lm
>>> /opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/librtemsbsp.a(bspstart.o):
>>>
>>> In function `_Thread_Idle_body':
>>> /home/ytian/RTEMS/build/powerpc-rtems4.9/c/mpc8313erdb/lib/libbsp/powerpc/gen83xx/../../../../../../../../rtems-4.9.0/c/src/lib/libbsp/powerpc/gen83xx/startup/bspstart.c:192:
>>>
>>> multiple definition of `_Thread_Idle_body'
>>> /opt/rtems-4.9/powerpc-rtems4.9/mpc8313erdb/lib/librtemscpu.a(libscore_a-threadidlebody.o):/home/ytian/RTEMS/build/powerpc-rtems4.9/c/mpc8313erdb/cpukit/score/../../../../../../rtems-4.9.0/c/src/../../cpukit/score/src/threadidlebody.c:51:
>>>
>>> first defined here
>>> /home/ytian/EPICS/base-3.14.10-RC1/lib/RTEMS-mpc8313erdb/librtemsCom.a(rtems_config.o):(.data+0x4c):
>>>
>>> undefined reference to `rtc_initialize'
>>> collect2: ld returned 1 exit status
>>> make[3]: *** [rtemsTestHarness] Error 1
>>> make[3]: Leaving directory
>>> `/home/ytian/EPICS/base-3.14.10-RC1/src/libCom/test/O.RTEMS-mpc8313erdb'
>>>
>>> make[2]: *** [install.RTEMS-mpc8313erdb] Error 2
>>> make[2]: Leaving directory
>>> `/home/ytian/EPICS/base-3.14.10-RC1/src/libCom/test'
>>> make[1]: *** [libCom/test.install] Error 2
>>> make[1]: Leaving directory `/home/ytian/EPICS/base-3.14.10-RC1/src'
>>> make: *** [src.install] Error 2
>>>
>>> It seems that the rtc_initiliaze is not build into librtemCom.a. Is
>>> this
>>> code in the /c/src/lib/libbsp/shard/tod.c ?  Did I forget to turn some
>>> switch on to enable the rtc when I build RTEMS ?
>>>
>>> Thanks,
>>>
>>> Yuke
>>> _______________________________________________
>>> rtems-users mailing list
>>> rtems-users at rtems.com
>>> http://rtems.rtems.org/mailman/listinfo/rtems-users
>>>
>>>     
>> You're building a "release candidate": expect some curves...
>>
>> BTW -- you may get more input on your problems by posting this to the
>> EPICS tech-talk mailing list. There are several EPICS/RTEMS experts that
>> may weigh in on things...
>>
>> -- dc
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at rtems.com
>> http://rtems.rtems.org/mailman/listinfo/rtems-users
>>   
>
>





More information about the users mailing list