Dear Sebastian,

I think that my BSP code is correct. I attached this.

This code was made for referencing FreeBSD's i.MX6Q BSP code.

I guess that my issue is related with additional i.MX6Q system configuration.

Best Regards,
JunBeom

-----Original Message-----
From: Sebastian Huber [mailto:sebastian.hu...@embedded-brains.de] 
Sent: Wednesday, September 27, 2017 3:51 PM
To: JunBeom Kim (Coressent Kr.) <jb...@coressentkorea.co.kr>; users@rtems.org
Subject: Re: Coressent Korea - Freescale i.MX6 RTEMS/Qt SDK Release Information.

On 27/09/17 08:38, JunBeom Kim (Coressent Kr.) wrote:

> I am still working for porting i.MX6Q FEC driver after I added FreeBSD's 
> i.MX6 FEC driver code on rtems-libbsd.
>
> But, Because my custom board have different PHY chip(RTL8201E), I did't port 
> FEC drier on i.MX6Q board. I used fdt loading method, too.
>
> If possible, please could you let me know i.MX6Q hardware board information 
> which you are successful for porting FEC driver ?

I don't have an i.MX6Q. I have two i.MX7D boards:

https://www.tq-group.com/en/products/product-details/prod/embedded-modul-tqma7x/extb/Main/productdetail/
https://www.nxp.com/support/developer-resources/hardware-development-tools/sabre-development-system/sabre-board-for-smart-devices-based-on-the-i.mx-7dual-applications-processors:MCIMX7SABRE

>
> On referencing, I am working to port SMP for i.MX6Q.
> At this time, current version is not stable. I am looking technical reason.

The i.MX6Q uses a Cortex A9. We already have SMP support for this core on other 
BSPs (Xilinx Zync, Altera Cyclone V, Realview). You only have to implement the 
_CPU_SMP_Start_processor() function. The code for this is available in FreeBSD 
for example.

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
/*
 * Copyright (c) 2014 embedded brains GmbH.  All rights reserved.
 *
 *  embedded brains GmbH
 *  Dornierstr. 4
 *  82178 Puchheim
 *  Germany
 *  <i...@embedded-brains.de>
 *
 * The license and distribution terms for this file may be
 * found in the file LICENSE in this distribution or at
 * http://www.rtems.org/license/LICENSE.
 */

#include <rtems/score/smpimpl.h>

#include <bsp.h>
#include <bsp/start.h>

#define SRC_PHYSBASE                    0x020d8000
#define SRC_CONTROL_REG                 0x00
#define SRC_CONTROL_C1ENA_SHIFT 22      /* Bit for Core 1 enable */
#define SRC_CONTROL_C1RST_SHIFT 14      /* Bit for Core 1 reset */
#define SRC_GPR0_C1FUNC                 0x20    /* Register for Core 1 entry 
func */
#define SRC_GPR1_C1ARG                  0x24    /* Register for Core 1 entry 
arg */

bool _CPU_SMP_Start_processor(uint32_t cpu_index)
{
        uint32_t value;
        bool started;
        
        if (cpu_index != 0) {
                mmio32_write(SRC_PHYSBASE + (SRC_GPR0_C1FUNC+8*cpu_index), 
_start);
                mmio32_write(SRC_PHYSBASE + (SRC_GPR1_C1ARG+8*cpu_index), 0);

                value = mmio32_read(SRC_PHYSBASE + SRC_CONTROL_REG);
                value |= ((1 << (SRC_CONTROL_C1ENA_SHIFT - 1 + cpu_index )) |
                        ( 1 << (SRC_CONTROL_C1RST_SHIFT - 1 + cpu_index)));
                mmio32_write(SRC_PHYSBASE + SRC_CONTROL_REG, value);

                _ARM_Data_synchronization_barrier();
                _ARM_Instruction_synchronization_barrier();
                _ARM_Send_event();
        }

        return _Per_CPU_State_wait_for_non_initial_state(cpu_index, 0);
}

_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to