You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nuttx.apache.org by "steelen@163.com" <st...@163.com> on 2020/05/08 07:24:36 UTC

Hi,anybody build nuttx that use openamp on board STM32H747I-disco

Hi
Anybody build nuttx that use openamp on board stm32h747i-disco?
I turn on the openamp opion ,but give errors like 

make[1]: Entering directory '/home/steelen/nuttx/nuttx/openamp'
make[1]: *** No rule to make target 'libmetal/lib/system/nuttx/condition.c', needed by '.depend'.  Stop.
make[1]: Leaving directory '/home/steelen/nuttx/nuttx/openamp'
tools/Makefile.unix:504: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2

I also download the incubator-nuttx version , when make it download a lot files 
and also erros

make[1]: Entering directory '/home/steelen/nuttx/incubator-nuttx/openamp'
In file included from /home/steelen/nuttx/incubator-nuttx/include/metal/io.h:23:0,
                 from /home/steelen/nuttx/incubator-nuttx/include/metal/device.h:16,
                 from ./libmetal/lib/system/nuttx/device.c:12:
/home/steelen/nuttx/incubator-nuttx/include/metal/cpu.h:15:35: fatal error: metal/processor//cpu.h: No such file or directory
 # include <metal/processor//cpu.h>
                                   ^
compilation terminated.
ERROR: arm-none-eabi-gcc failed: 1
       command: arm-none-eabi-gcc -M -fno-builtin -Wall -Wstrict-prototypes -Wshadow -Wundef -g -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -I. -isystem /home/steelen/nuttx/incubator-nuttx/include -D__KERNEL__ -pipe -DMETAL_INTERNAL ./libmetal/lib/system/nuttx/device.c
Makefile:72: recipe for target '.depend' failed
make[1]: *** [.depend] Error 1
make[1]: Leaving directory '/home/steelen/nuttx/incubator-nuttx/openamp'
tools/Makefile.unix:498: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2

I modify   # include <metal/processor//cpu.h>  to  # include <metal/processor/cpu.h>
also  erros 





steelen@163.com
 

Re: RE: Hi,anybody build nuttx that use openamp on board STM32H747I-disco

Posted by Xiang Xiao <xi...@gmail.com>.
On Sat, May 9, 2020 at 10:47 AM steelen@163.com <st...@163.com> wrote:
>
> Thanks a lot
> I make it work
>
> But there is some other bugs
> First
> in file
> /incubator-nuttx/include/metal/cpu.h
> line 15    # include <metal/processor//cpu.h>  should be  # include <metal/processor/cpu.h>
>
> Second
> There is no  "processor " directory under  /incubator-nuttx/include/metal
> I don't understand the rules  of makefile ,I just copy the directory  from /incubator-nuttx/openamp/libmetal/lib/processor    under  /incubator-nuttx/include/metal
> and copy cpu.h and atomic.h  from   /incubator-nuttx/openamp/libmetal/lib/processor/arm  to    /incubator-nuttx/openamp/libmetal/lib/processor and it works.
> Perhaps this is a stupid way to do so ,forgive me .
>
> I examiming the code ,perhaps make a link is the right way.

We can't use the link here directly, because the header files need do
some process to remove the special marker, like @PROJECT_SYSTEM@:
/*
 * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

/*
 * @file mutex.h
 * @brief Mutex primitives for libmetal.
 */

#ifndef __METAL_MUTEX__H__
#define __METAL_MUTEX__H__

#ifdef __cplusplus
extern "C" {
#endif

/** \defgroup mutex Mutex Interfaces
 *  @{
 */

The snippet in openamp/libmetal.defs use sed to replace these mark
with the real value:
#include <metal/system/@PROJECT_SYSTEM@/mutex.h>


LIBMETAL_HDRS_SEDEXP := \
"s/@PROJECT_VER_MAJOR@/0/g; \
s/@PROJECT_VER_MINOR@/1/g; \
s/@PROJECT_VER_PATCH@/0/g; \
s/@PROJECT_VER@/0.1.0/g; \
s/@PROJECT_SYSTEM@/nuttx/g; \
s/@PROJECT_PROCESSOR@/$(LIBMETAL_ARCH)/g; \
s/@PROJECT_MACHINE@/$(CONFIG_ARCH_CHIP)/g; \
s/@PROJECT_SYSTEM_UPPER@/nuttx/g; \
s/@PROJECT_PROCESSOR_UPPER@/$(LIBMETAL_ARCH)/g; \
s/@PROJECT_MACHINE_UPPER@/$(CONFIG_ARCH_CHIP)/g; \
s/cmakedefine/undef/g"

libmetal.zip:
$(Q) wget https://github.com/OpenAMP/libmetal/archive/v$(VERSION).zip
-O libmetal.zip
$(Q) unzip -o libmetal.zip
$(Q) mv libmetal-$(VERSION) libmetal
$(Q) patch -p0 < 0001-nuttx-change-sched_kfree-to-metal_free_memory.patch

.libmetal_headers: libmetal.zip
$(eval headers := $(wildcard libmetal/lib/compiler/gcc/*.h))
$(eval headers += $(wildcard libmetal/lib/processor/$(LIBMETAL_ARCH)/*.h))
$(eval headers += $(wildcard libmetal/lib/system/nuttx/*.h))
$(eval headers += $(wildcard libmetal/lib/*.h))
$(foreach header,$(headers), \
$(eval hobj := $(patsubst
libmetal$(DELIM)lib$(DELIM)%,$(TOPDIR)$(DELIM)include$(DELIM)metal$(DELIM)%,$(header)))
\
$(shell if [ ! -d $(dir $(hobj)) ];then mkdir -p $(dir $(hobj)); fi) \
$(shell sed $(LIBMETAL_HDRS_SEDEXP) $(header) > $(hobj)) \

So you don't need do anything special action after apply my patch.
it's enough to run:
make distclean
./tools/configure.sh xxx:yyy
make

>
>
>
>
>
>
>
> steelen@163.com
>
> 发件人: Xiang Xiao
> 发送时间: 2020-05-08 17:21
> 收件人: dev@nuttx.apache.org
> 主题: RE: Hi,anybody build nuttx that use openamp on board STM32H747I-disco
> Please try this patch:
> https://github.com/apache/incubator-nuttx/pull/1003
> The openamp/libmetal.defs fail to handle arch other than x86-64 and risc-v correctly.
>
> Thanks
> Xiang
>
> -----Original Message-----
> From: steelen@163.com <st...@163.com>
> Sent: Friday, May 8, 2020 3:25 PM
> To: dev <de...@nuttx.apache.org>
> Subject: Hi,anybody build nuttx that use openamp on board STM32H747I-disco
>
> Hi
> Anybody build nuttx that use openamp on board stm32h747i-disco?
> I turn on the openamp opion ,but give errors like
>
> make[1]: Entering directory '/home/steelen/nuttx/nuttx/openamp'
> make[1]: *** No rule to make target 'libmetal/lib/system/nuttx/condition.c', needed by '.depend'.  Stop.
> make[1]: Leaving directory '/home/steelen/nuttx/nuttx/openamp'
> tools/Makefile.unix:504: recipe for target 'pass2dep' failed
> make: *** [pass2dep] Error 2
>
> I also download the incubator-nuttx version , when make it download a lot files and also erros
>
> make[1]: Entering directory '/home/steelen/nuttx/incubator-nuttx/openamp'
> In file included from /home/steelen/nuttx/incubator-nuttx/include/metal/io.h:23:0,
>                  from /home/steelen/nuttx/incubator-nuttx/include/metal/device.h:16,
>                  from ./libmetal/lib/system/nuttx/device.c:12:
> /home/steelen/nuttx/incubator-nuttx/include/metal/cpu.h:15:35: fatal error: metal/processor//cpu.h: No such file or directory  # include <metal/processor//cpu.h>
>                                    ^
> compilation terminated.
> ERROR: arm-none-eabi-gcc failed: 1
>        command: arm-none-eabi-gcc -M -fno-builtin -Wall -Wstrict-prototypes -Wshadow -Wundef -g -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -I. -isystem /home/steelen/nuttx/incubator-nuttx/include -D__KERNEL__ -pipe -DMETAL_INTERNAL ./libmetal/lib/system/nuttx/device.c
> Makefile:72: recipe for target '.depend' failed
> make[1]: *** [.depend] Error 1
> make[1]: Leaving directory '/home/steelen/nuttx/incubator-nuttx/openamp'
> tools/Makefile.unix:498: recipe for target 'pass2dep' failed
> make: *** [pass2dep] Error 2
>
> I modify   # include <metal/processor//cpu.h>  to  # include <metal/processor/cpu.h>
> also  erros
>
>
>
>
>
> steelen@163.com

Re: Re: Hi,anybody build nuttx that use openamp on board STM32H747I-disco

Posted by "steelen@163.com" <st...@163.com>.
ok, I find a good way to solve the problem

modify 
/incubator-nuttx/include/metal/cpu.h
line 15    # include <metal/processor//cpu.h>  
to 
# include <openamp/libmetal/lib/cpu.h>




steelen@163.com
 
发件人: steelen@163.com
发送时间: 2020-05-09 10:47
收件人: dev
主题: Re: RE: Hi,anybody build nuttx that use openamp on board STM32H747I-disco
Thanks a lot
I make it work 
 
But there is some other bugs
First
in file 
/incubator-nuttx/include/metal/cpu.h 
line 15    # include <metal/processor//cpu.h>  should be  # include <metal/processor/cpu.h>
 
Second
There is no  "processor " directory under  /incubator-nuttx/include/metal 
I don't understand the rules  of makefile ,I just copy the directory  from /incubator-nuttx/openamp/libmetal/lib/processor    under  /incubator-nuttx/include/metal 
and copy cpu.h and atomic.h  from   /incubator-nuttx/openamp/libmetal/lib/processor/arm  to    /incubator-nuttx/openamp/libmetal/lib/processor and it works. 
Perhaps this is a stupid way to do so ,forgive me .
 
I examiming the code ,perhaps make a link is the right way.
 
 
 
 
 
 
 
steelen@163.com
发件人: Xiang Xiao
发送时间: 2020-05-08 17:21
收件人: dev@nuttx.apache.org
主题: RE: Hi,anybody build nuttx that use openamp on board STM32H747I-disco
Please try this patch:
https://github.com/apache/incubator-nuttx/pull/1003
The openamp/libmetal.defs fail to handle arch other than x86-64 and risc-v correctly.
Thanks
Xiang
-----Original Message-----
From: steelen@163.com <st...@163.com> 
Sent: Friday, May 8, 2020 3:25 PM
To: dev <de...@nuttx.apache.org>
Subject: Hi,anybody build nuttx that use openamp on board STM32H747I-disco
Hi
Anybody build nuttx that use openamp on board stm32h747i-disco?
I turn on the openamp opion ,but give errors like 
make[1]: Entering directory '/home/steelen/nuttx/nuttx/openamp'
make[1]: *** No rule to make target 'libmetal/lib/system/nuttx/condition.c', needed by '.depend'.  Stop.
make[1]: Leaving directory '/home/steelen/nuttx/nuttx/openamp'
tools/Makefile.unix:504: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2
I also download the incubator-nuttx version , when make it download a lot files and also erros
make[1]: Entering directory '/home/steelen/nuttx/incubator-nuttx/openamp'
In file included from /home/steelen/nuttx/incubator-nuttx/include/metal/io.h:23:0,
                 from /home/steelen/nuttx/incubator-nuttx/include/metal/device.h:16,
                 from ./libmetal/lib/system/nuttx/device.c:12:
/home/steelen/nuttx/incubator-nuttx/include/metal/cpu.h:15:35: fatal error: metal/processor//cpu.h: No such file or directory  # include <metal/processor//cpu.h>
                                   ^
compilation terminated.
ERROR: arm-none-eabi-gcc failed: 1
       command: arm-none-eabi-gcc -M -fno-builtin -Wall -Wstrict-prototypes -Wshadow -Wundef -g -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -I. -isystem /home/steelen/nuttx/incubator-nuttx/include -D__KERNEL__ -pipe -DMETAL_INTERNAL ./libmetal/lib/system/nuttx/device.c
Makefile:72: recipe for target '.depend' failed
make[1]: *** [.depend] Error 1
make[1]: Leaving directory '/home/steelen/nuttx/incubator-nuttx/openamp'
tools/Makefile.unix:498: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2
I modify   # include <metal/processor//cpu.h>  to  # include <metal/processor/cpu.h>
also  erros 
steelen@163.com

Re: RE: Hi,anybody build nuttx that use openamp on board STM32H747I-disco

Posted by "steelen@163.com" <st...@163.com>.
Thanks a lot
I make it work 

But there is some other bugs
First
in file 
/incubator-nuttx/include/metal/cpu.h 
line 15    # include <metal/processor//cpu.h>  should be  # include <metal/processor/cpu.h>

Second
There is no  "processor " directory under  /incubator-nuttx/include/metal 
I don't understand the rules  of makefile ,I just copy the directory  from /incubator-nuttx/openamp/libmetal/lib/processor    under  /incubator-nuttx/include/metal 
and copy cpu.h and atomic.h  from   /incubator-nuttx/openamp/libmetal/lib/processor/arm  to    /incubator-nuttx/openamp/libmetal/lib/processor and it works. 
Perhaps this is a stupid way to do so ,forgive me .

I examiming the code ,perhaps make a link is the right way.







steelen@163.com
 
发件人: Xiang Xiao
发送时间: 2020-05-08 17:21
收件人: dev@nuttx.apache.org
主题: RE: Hi,anybody build nuttx that use openamp on board STM32H747I-disco
Please try this patch:
https://github.com/apache/incubator-nuttx/pull/1003
The openamp/libmetal.defs fail to handle arch other than x86-64 and risc-v correctly.
 
Thanks
Xiang
 
-----Original Message-----
From: steelen@163.com <st...@163.com> 
Sent: Friday, May 8, 2020 3:25 PM
To: dev <de...@nuttx.apache.org>
Subject: Hi,anybody build nuttx that use openamp on board STM32H747I-disco
 
Hi
Anybody build nuttx that use openamp on board stm32h747i-disco?
I turn on the openamp opion ,but give errors like 
 
make[1]: Entering directory '/home/steelen/nuttx/nuttx/openamp'
make[1]: *** No rule to make target 'libmetal/lib/system/nuttx/condition.c', needed by '.depend'.  Stop.
make[1]: Leaving directory '/home/steelen/nuttx/nuttx/openamp'
tools/Makefile.unix:504: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2
 
I also download the incubator-nuttx version , when make it download a lot files and also erros
 
make[1]: Entering directory '/home/steelen/nuttx/incubator-nuttx/openamp'
In file included from /home/steelen/nuttx/incubator-nuttx/include/metal/io.h:23:0,
                 from /home/steelen/nuttx/incubator-nuttx/include/metal/device.h:16,
                 from ./libmetal/lib/system/nuttx/device.c:12:
/home/steelen/nuttx/incubator-nuttx/include/metal/cpu.h:15:35: fatal error: metal/processor//cpu.h: No such file or directory  # include <metal/processor//cpu.h>
                                   ^
compilation terminated.
ERROR: arm-none-eabi-gcc failed: 1
       command: arm-none-eabi-gcc -M -fno-builtin -Wall -Wstrict-prototypes -Wshadow -Wundef -g -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -I. -isystem /home/steelen/nuttx/incubator-nuttx/include -D__KERNEL__ -pipe -DMETAL_INTERNAL ./libmetal/lib/system/nuttx/device.c
Makefile:72: recipe for target '.depend' failed
make[1]: *** [.depend] Error 1
make[1]: Leaving directory '/home/steelen/nuttx/incubator-nuttx/openamp'
tools/Makefile.unix:498: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2
 
I modify   # include <metal/processor//cpu.h>  to  # include <metal/processor/cpu.h>
also  erros 
 
 
 
 
 
steelen@163.com

RE: Hi,anybody build nuttx that use openamp on board STM32H747I-disco

Posted by Xiang Xiao <xi...@gmail.com>.
Please try this patch:
https://github.com/apache/incubator-nuttx/pull/1003
The openamp/libmetal.defs fail to handle arch other than x86-64 and risc-v correctly.

Thanks
Xiang

-----Original Message-----
From: steelen@163.com <st...@163.com> 
Sent: Friday, May 8, 2020 3:25 PM
To: dev <de...@nuttx.apache.org>
Subject: Hi,anybody build nuttx that use openamp on board STM32H747I-disco

Hi
Anybody build nuttx that use openamp on board stm32h747i-disco?
I turn on the openamp opion ,but give errors like 

make[1]: Entering directory '/home/steelen/nuttx/nuttx/openamp'
make[1]: *** No rule to make target 'libmetal/lib/system/nuttx/condition.c', needed by '.depend'.  Stop.
make[1]: Leaving directory '/home/steelen/nuttx/nuttx/openamp'
tools/Makefile.unix:504: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2

I also download the incubator-nuttx version , when make it download a lot files and also erros

make[1]: Entering directory '/home/steelen/nuttx/incubator-nuttx/openamp'
In file included from /home/steelen/nuttx/incubator-nuttx/include/metal/io.h:23:0,
                 from /home/steelen/nuttx/incubator-nuttx/include/metal/device.h:16,
                 from ./libmetal/lib/system/nuttx/device.c:12:
/home/steelen/nuttx/incubator-nuttx/include/metal/cpu.h:15:35: fatal error: metal/processor//cpu.h: No such file or directory  # include <metal/processor//cpu.h>
                                   ^
compilation terminated.
ERROR: arm-none-eabi-gcc failed: 1
       command: arm-none-eabi-gcc -M -fno-builtin -Wall -Wstrict-prototypes -Wshadow -Wundef -g -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -I. -isystem /home/steelen/nuttx/incubator-nuttx/include -D__KERNEL__ -pipe -DMETAL_INTERNAL ./libmetal/lib/system/nuttx/device.c
Makefile:72: recipe for target '.depend' failed
make[1]: *** [.depend] Error 1
make[1]: Leaving directory '/home/steelen/nuttx/incubator-nuttx/openamp'
tools/Makefile.unix:498: recipe for target 'pass2dep' failed
make: *** [pass2dep] Error 2

I modify   # include <metal/processor//cpu.h>  to  # include <metal/processor/cpu.h>
also  erros 





steelen@163.com