<div dir="ltr"><div>Dear Sir,</div><div><br></div><div>I get ZynQ real board(name: ZYBO ZynQ-7000 Development Board).</div><div>I was succeful to test SMP feature on my ZynQ real board after minor part(UART config) is modified.</div><div>But, after I enable rtems-libbsd in below, RTEMS is not worked.</div><div><br></div><div>My example code is below;</div><div><br></div><div>void *POSIX_Init(void *argument)<br>{<br> rtems_status_code         sc;</div><div>#if 0 // Thomas. when below bsd initialization code is executed, RTEMS is not worked.<br> /* FreeBSD Initialization */<br> sc = rtems_media_initialize();<br> ASSERT_SC(sc);<br> sc = rtems_media_listener_add(media_listener, NULL);<br> ASSERT_SC(sc);<br> sc = rtems_media_server_initialize(200, 32 * 1024, RTEMS_DEFAULT_MODES, RTEMS_DEFAULT_ATTRIBUTES);<br> ASSERT_SC(sc);</div><div> sc = rtems_bsd_initialize(); </div><div> ASSERT_SC(sc);<br> network_ifconfig_lo0();<br>#endif</div><div> sc = rtems_task_create( rtems_build_name ('S', 'H', 'E', 'L'), <br>  10, 4096, RTEMS_DEFAULT_MODES, RTEMS_DEFAULT_ATTRIBUTES, &Task_Shell_id);<br> sc = rtems_task_start( Task_Shell_id, shell_start, 1 );<br></div><div>}</div><div><br></div><div>At this time, I just used "#define CONFIGURE_MAXIMUM_PROCESSORS    2" option only for this.</div><div><br></div><div>I have questions.</div><div><br></div><div>Can RTEMS SMP feature is using both rtems kernel and rtems-libbsd ?</div><div>If I need additional configuration for using rtems-libbsd with SMP feaure, plesae let me know that.</div><div><br></div><div>Best Regards,</div><div>Thomas Kim.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-03-17 18:06 GMT+09:00 Sebastian Huber <span dir="ltr"><<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
On 17/03/17 10:01, Thomas Kim wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dear Sebastian,<br>
<br>
I already checked BSP code for Xlinx ZynQ and Altera Cyclone V. It was useful for me.<br>
I implemented bspsmp.c according to register description of SRC(System Reset Controller) on i.MX6Q manual.<br>
<br>
You said to me that IO device driver is called on boot processor only.<br>
But, As I check io.c in cpukit/sapi/src, there is any code regarding this.<br>
<br>
void _IO_Initialize_all_drivers( void )<br>
{<br>
   rtems_device_major_number major;<br>
   _IO_All_drivers_initialized = true;<br>
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )<br>
     (void) rtems_io_initialize( major, 0, NULL );<br>
 }<br>
<br>
I think that this function should be changed in below;<br>
</blockquote>
<br>
No, if multiple processors call _IO_Initialize_all_drivers(), then your low-level SMP initialization is broken. See comments of Per_CPU_State and _CPU_SMP_*() in cpukit/score/cpu/no_cpu/rtems/<wbr>score/cpu.h for some documentation. You can also follow the SMP startup on Qemu to figure out how it is supposed to work.<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Sebastian Huber, embedded brains GmbH<br>
<br>
Address : Dornierstr. 4, D-82178 Puchheim, Germany<br>
Phone   : +49 89 189 47 41-16<br>
Fax     : +49 89 189 47 41-09<br>
E-Mail  : <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brain<wbr>s.de</a><br>
PGP     : Public key available on request.<br>
<br>
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.<br>
<br>
</font></span></blockquote></div><br></div>