hc
2023-05-26 a23f51ed7a39e452c1037343a84d7db1ca2c5bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
################################################################################
#
# rknpu
#
################################################################################
RKNPU_VERSION = 1.5.0
RKNPU_SITE_METHOD = local
RKNPU_SITE = $(TOPDIR)/../external/rknpu
NPU_TEST_FILE = $(@D)/test
RKNPU_INSTALL_STAGING = YES
 
ifeq ($(BR2_PACKAGE_RKNPU_PCIE),y)
NPU_KO_FILE = galcore_rk3399pro-npu-pcie.ko
else ifeq ($(BR2_PACKAGE_RK3399PRO_NPU),y)
NPU_KO_FILE = galcore_rk3399pro-npu.ko
else ifeq ($(BR2_PACKAGE_RK1806),y)
NPU_KO_FILE = galcore_rk1806.ko
else ifeq ($(BR2_PACKAGE_RV1126_RV1109),y)
ifeq ($(BR2_PACKAGE_RKNPU_USE_MINI_DRIVER),y)
NPU_KO_FILE = galcore_puma_tb.ko
else
NPU_KO_FILE = galcore_puma.ko
endif
else
NPU_KO_FILE = galcore.ko
endif
 
ifeq ($(BR2_arm),y)
NPU_PLATFORM_ARCH := linux-armhf
else
NPU_PLATFORM_ARCH := linux-aarch64
endif
 
ifeq ($(BR2_PACKAGE_RV1126_RV1109),y)
NPU_PLATFORM_ARCH := linux-armhf-puma
endif
 
ifeq ($(BR2_PACKAGE_RKNPU_USE_MINI_DRIVER), y)
NPU_PLATFORM := $(NPU_PLATFORM_ARCH)-mini
BUILD_NOT_START_RKNN_SCRIPT=y
else
NPU_PLATFORM := $(NPU_PLATFORM_ARCH)
endif
 
ifeq ($(BR2_PACKAGE_PYTHON_RKNN), y)
BUILD_PYTHON_RKNN=y
endif
 
ifeq ($(BR2_PACKAGE_RKNPU_USE_RKNN_API), y)
BUILD_RKNN_API=y
endif
 
define RKNPU_INSTALL_STAGING_CMDS
    mkdir -p $(STAGING_DIR)/usr/include/rknn
    $(INSTALL) -D -m 0644 $(@D)/rknn/include/rknn_runtime.h $(STAGING_DIR)/usr/include/rknn/rknn_runtime.h
    if [ ${BUILD_RKNN_API} = "y" ]; then \
        $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/include/rknn_api.h $(STAGING_DIR)/usr/include/rknn/rknn_api.h; \
    fi
endef
 
define RKNPU_INSTALL_TARGET_CMDS
    mkdir -p $(TARGET_DIR)/lib/modules/
    mkdir -p $(TARGET_DIR)/usr/share/npu/
    $(INSTALL) -D -m 0644 $(@D)/drivers/npu_ko/$(NPU_KO_FILE) $(TARGET_DIR)/lib/modules/galcore.ko
    cp -r $(@D)/drivers/common/* $(TARGET_DIR)/
    cp -r $(@D)/drivers/common/* $(STAGING_DIR)/
 
    if [ x${BUILD_NOT_START_RKNN_SCRIPT} != x ]; then \
        rm $(TARGET_DIR)/etc/init.d/S60NPU_init; \
    else \
        rm $(TARGET_DIR)/etc/init.d/S05NPU_init; \
    fi
 
    cp -r $(@D)/drivers/$(NPU_PLATFORM)/* $(TARGET_DIR)/
    cp -r $(@D)/drivers/$(NPU_PLATFORM)/* $(STAGING_DIR)/
 
    if [ -e "$(@D)/test" ]; then \
        cp -r $(@D)/test $(TARGET_DIR)/usr/share/npu; \
    fi
 
    if [ x${BUILD_PYTHON_RKNN} != x ]; then \
        cp -r $(@D)/rknn/python/rknn $(TARGET_DIR)/usr/lib/python3.6/site-packages/; \
    fi
 
    if [ ${BUILD_RKNN_API} = "y" ]; then \
        if [ ${NPU_PLATFORM_ARCH} = "linux-aarch64" ]; then \
            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib64/librknn_api.so $(TARGET_DIR)/usr/lib/; \
            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib64/librknn_api.so $(STAGING_DIR)/usr/lib; \
        else \
            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib/librknn_api.so $(TARGET_DIR)/usr/lib/; \
            $(INSTALL) -D -m 0644 $(@D)/rknn/rknn_api/librknn_api/lib/librknn_api.so $(STAGING_DIR)/usr/lib; \
        fi \
    fi
endef
 
$(eval $(generic-package))