• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2021 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15load("@rules_cc//cc:cc_library.bzl", "cc_library")
16load("@rules_python//sphinxdocs:sphinx_docs_library.bzl", "sphinx_docs_library")
17load("//pw_build:compatibility.bzl", "incompatible_with_mcu")
18load("//pw_build:merge_flags.bzl", "flags_from_dict")
19load("//pw_build:pigweed.bzl", "pw_linker_script")
20
21package(default_visibility = ["//visibility:public"])
22
23licenses(["notice"])
24
25platform(
26    name = "platform",
27    constraint_values = [
28        "//pw_interrupt_cortex_m:backend",
29        "//pw_build/constraints/board:mimxrt595_evk",
30        "//pw_build/constraints/arm:cortex-m33",
31        "@platforms//cpu:armv8-m",
32        "@platforms//os:none",
33        "@rust_crates//:no_std",
34    ],
35    flags = flags_from_dict({
36        "@mcuxpresso//:user_config": "//targets/mimxrt595_evk:mcuxpresso_sdk_lib_config",
37        "@pigweed//pw_assert:assert_backend": "//pw_assert_basic",
38        "@pigweed//pw_assert:assert_backend_impl": "//pw_assert_basic:impl",
39        "@pigweed//pw_assert:check_backend": "//pw_assert_basic",
40        "@pigweed//pw_assert:check_backend_impl": "//pw_assert_basic:impl",
41        "@pigweed//pw_boot:backend": "//pw_boot_cortex_m:armv8m",
42        "@pigweed//pw_log:backend": "//pw_log_basic",
43        "@pigweed//pw_log:backend_impl": "//pw_log_basic:impl",
44        "@pigweed//pw_malloc:backend": "//pw_malloc:bucket_block_allocator",
45        "@pigweed//pw_sync:interrupt_spin_lock_backend": "//pw_sync_baremetal:interrupt_spin_lock",
46        "@pigweed//pw_sync:mutex_backend": "//pw_sync_baremetal:mutex",
47        "@pigweed//pw_sys_io:backend": "//pw_sys_io_mcuxpresso",
48        "@pigweed//pw_system:extra_platform_libs": "//targets/mimxrt595_evk:extra_platform_libs",
49        "@pigweed//pw_unit_test:main": "//targets/mimxrt595_evk:unit_test_app",
50        "@pigweed//targets:mcuxpresso_sdk": "//targets/mimxrt595_evk:mcuxpresso_sdk",
51    }),
52)
53
54cc_library(
55    name = "mcuxpresso_sdk",
56    target_compatible_with = [
57        "//pw_build/constraints/board:mimxrt595_evk",
58        "//pw_build/constraints/rtos:none",
59        "@platforms//cpu:armv8-m",
60    ],
61    deps = [
62        "@mcuxpresso//:component.serial_manager.MIMXRT595S",
63        "@mcuxpresso//:component.serial_manager_uart.MIMXRT595S",
64        "@mcuxpresso//:platform.drivers.flash_config.evkmimxrt595.MIMXRT595S",
65        "@mcuxpresso//:platform.drivers.flexcomm_i2c.MIMXRT595S",
66        "@mcuxpresso//:platform.drivers.flexcomm_spi.MIMXRT595S",
67        "@mcuxpresso//:platform.drivers.flexcomm_usart_dma.MIMXRT595S",
68        "@mcuxpresso//:platform.drivers.flexio_spi.MIMXRT595S",
69        "@mcuxpresso//:platform.drivers.i3c.MIMXRT595S",
70        "@mcuxpresso//:platform.drivers.inputmux.MIMXRT595S",
71        "@mcuxpresso//:platform.drivers.lpc_dma.MIMXRT595S",
72        "@mcuxpresso//:platform.drivers.lpc_gpio.MIMXRT595S",
73        "@mcuxpresso//:platform.drivers.mu.MIMXRT595S",
74        "@mcuxpresso//:platform.drivers.pint.MIMXRT595S",
75        "@mcuxpresso//:platform.drivers.power.MIMXRT595S",
76        "@mcuxpresso//:platform.utilities.assert.MIMXRT595S",
77        "@mcuxpresso//:utility.debug_console.MIMXRT595S",
78    ],
79)
80
81cc_library(
82    name = "mcuxpresso_sdk_lib_config",
83    defines = [
84        "BOOT_HEADER_ENABLE=1",
85        "CPU_MIMXRT595SFFOC_cm33",
86        "DEBUG_CONSOLE_TRANSFER_NON_BLOCKING=1",
87        "DEBUG_CONSOLE_DISABLE_RTOS_SYNCHRONIZATION",
88        "FSL_SDK_DRIVER_QUICK_ACCESS_ENABLE=1",
89        "SDK_DEBUGCONSOLE=1",
90    ],
91    target_compatible_with = [
92        "//pw_build/constraints/board:mimxrt595_evk",
93        "//pw_build/constraints/rtos:none",
94        "@platforms//cpu:armv8-m",
95    ],
96)
97
98exports_files(["mimxrt595_flash.ld"])
99
100cc_library(
101    name = "flash_linker_script_defines",
102    defines = [
103        "PW_BOOT_FLASH_BEGIN=0x08001180",
104        "PW_BOOT_FLASH_SIZE=0x001FEE80",
105        "PW_BOOT_HEAP_SIZE=200K",
106        "PW_BOOT_MIN_STACK_SIZE=1K",
107        "PW_BOOT_RAM_BEGIN=0x20080000",
108        "PW_BOOT_RAM_SIZE=0x00280000",
109        "PW_BOOT_VECTOR_TABLE_BEGIN=0x08001000",
110        "PW_BOOT_VECTOR_TABLE_SIZE=0x00000180",
111    ],
112)
113
114pw_linker_script(
115    name = "flash_linker_script",
116    linker_script = ":mimxrt595_flash.ld",
117    target_compatible_with = [
118        "//pw_build/constraints/board:mimxrt595_evk",
119        "//pw_build/constraints/rtos:none",
120        "@platforms//cpu:armv8-m",
121    ],
122    deps = [
123        ":flash_linker_script_defines",
124    ],
125)
126
127cc_library(
128    name = "boot",
129    srcs = [
130        "boot.cc",
131        "vector_table.c",
132    ],
133    defines = [
134        "PW_MALLOC_ACTIVE=1",
135    ],
136    target_compatible_with = [
137        "//pw_build/constraints/board:mimxrt595_evk",
138        "//pw_build/constraints/rtos:none",
139        "@platforms//cpu:armv8-m",
140    ],
141    deps = [
142        "//pw_boot",
143        "//pw_boot_cortex_m",
144        "//pw_malloc",
145        "//pw_preprocessor",
146        "//pw_sys_io_mcuxpresso",
147        "//pw_toolchain:infinite_loop",
148        "//targets:mcuxpresso_sdk",
149        "//targets/mimxrt595_evk/config",
150    ],
151    alwayslink = 1,
152)
153
154cc_library(
155    name = "extra_platform_libs",
156    target_compatible_with = [
157        "//pw_build/constraints/board:mimxrt595_evk",
158        "//pw_build/constraints/rtos:none",
159        "@platforms//cpu:armv8-m",
160    ],
161    deps = [
162        ":boot",
163        ":flash_linker_script",
164        "//pw_tokenizer:linker_script",
165        "//pw_toolchain/arm_gcc:arm_none_eabi_gcc_support",
166    ],
167)
168
169cc_library(
170    name = "unit_test_app",
171    testonly = True,
172    target_compatible_with = [
173        "//pw_build/constraints/board:mimxrt595_evk",
174        "//pw_build/constraints/rtos:none",
175        "@platforms//cpu:armv8-m",
176    ],
177    deps = [
178        ":extra_platform_libs",
179        "//pw_unit_test:simple_printing_main",
180    ],
181    alwayslink = 1,
182)
183
184sphinx_docs_library(
185    name = "docs",
186    srcs = [
187        "target_docs.rst",
188    ],
189    target_compatible_with = incompatible_with_mcu(),
190)
191