On Sat, May 9, 2020 at 10:47 AM [email protected] <[email protected]> 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
>
>
>
>
>
>
>
> [email protected]
>
> 发件人: Xiang Xiao
> 发送时间: 2020-05-08 17:21
> 收件人: [email protected]
> 主题: 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: [email protected] <[email protected]>
> Sent: Friday, May 8, 2020 3:25 PM
> To: dev <[email protected]>
> 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
>
>
>
>
>
> [email protected]