undefined reference to `rtc_initialize' when build EPICS with RTEMS4.9
Joel Sherrill
joel.sherrill at OARcorp.com
Mon Oct 13 17:10:53 UTC 2008
Yuke Tian wrote:
> 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 :-)
>
>
Probably better for the BSP to rename its idle thread body
and define BSP_IDLE_TASK_BODY to that name in bsp.h.
confdefs.h uses that to pick the idle task body used in the
application.
> Thank you,
>
>
No problem. Glad I was right on the answer.
--joel
> 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
>>>
>>>
>>
>
>
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users
mailing list