mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-20 18:05:54 +08:00
438 lines
21 KiB
Lua
438 lines
21 KiB
Lua
set_project("EC618")
|
|
set_xmakever("2.7.2")
|
|
set_version("0.0.2", {build = "%Y%m%d%H%M"})
|
|
add_rules("mode.debug", "mode.release")
|
|
set_defaultmode("debug")
|
|
|
|
local VM_64BIT = nil
|
|
SDK_TOP = "."
|
|
local SDK_PATH
|
|
local USER_PROJECT_NAME = "example"
|
|
local USER_PROJECT_NAME_VERSION
|
|
local USER_PROJECT_DIR = ""
|
|
|
|
package("gnu_rm")
|
|
set_kind("toolchain")
|
|
set_homepage("https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm")
|
|
set_description("GNU Arm Embedded Toolchain")
|
|
local version_map = {
|
|
["2021.10"] = "10.3-2021.10"
|
|
}
|
|
if is_host("windows") then
|
|
set_urls("http://cdndownload.openluat.com/xmake/toolchains/gcc-arm/gcc-arm-none-eabi-$(version)-win32.zip", {version = function (version)
|
|
return version_map[tostring(version)]
|
|
end})
|
|
add_versions("2021.10", "d287439b3090843f3f4e29c7c41f81d958a5323aecefcf705c203bfd8ae3f2e7")
|
|
elseif is_host("linux") then
|
|
set_urls("http://cdndownload.openluat.com/xmake/toolchains/gcc-arm/gcc-arm-none-eabi-$(version)-x86_64-linux.tar.bz2", {version = function (version)
|
|
return version_map[tostring(version)]
|
|
end})
|
|
add_versions("2021.10", "97dbb4f019ad1650b732faffcc881689cedc14e2b7ee863d390e0a41ef16c9a3")
|
|
end
|
|
on_install("@windows", "@linux", function (package)
|
|
os.vcp("*", package:installdir())
|
|
end)
|
|
package_end()
|
|
|
|
if os.getenv("GCC_PATH") then
|
|
toolchain("arm_toolchain")
|
|
set_kind("standalone")
|
|
set_sdkdir(os.getenv("GCC_PATH"))
|
|
toolchain_end()
|
|
set_toolchains("arm_toolchain")
|
|
else
|
|
add_requires("gnu_rm 2021.10")
|
|
set_toolchains("gnu-rm@gnu_rm")
|
|
end
|
|
|
|
if os.getenv("PROJECT_NAME") then
|
|
USER_PROJECT_NAME = os.getenv("PROJECT_NAME")
|
|
end
|
|
|
|
if os.getenv("LSPD_MODE") == "enable" then
|
|
add_defines("LOW_SPEED_SERVICE_ONLY")
|
|
end
|
|
|
|
if os.getenv("ROOT_PATH") then
|
|
SDK_TOP = os.getenv("ROOT_PATH")
|
|
else
|
|
SDK_TOP = os.curdir().."/"
|
|
end
|
|
SDK_PATH = SDK_TOP
|
|
|
|
if os.getenv("PROJECT_DIR") then
|
|
USER_PROJECT_DIR = os.getenv("PROJECT_DIR")
|
|
else
|
|
USER_PROJECT_DIR = SDK_TOP .. "/project/" .. USER_PROJECT_NAME
|
|
end
|
|
|
|
set_plat("cross")
|
|
set_arch("arm")
|
|
set_languages("gnu99", "cxx11")
|
|
set_warnings("everything")
|
|
|
|
-- ==============================
|
|
-- === defines =====
|
|
add_defines("__EC618",
|
|
"CHIP_EC618",
|
|
"CORE_IS_AP",
|
|
"SDK_REL_BUILD",
|
|
"EC_ASSERT_FLAG",
|
|
"PM_FEATURE_ENABLE",
|
|
"UINILOG_FEATURE_ENABLE",
|
|
"FEATURE_OS_ENABLE",
|
|
"configUSE_NEWLIB_REENTRANT=1",
|
|
"ARM_MATH_CM3",
|
|
"FEATURE_YRCOMPRESS_ENABLE",
|
|
"FEATURE_CCIO_ENABLE",
|
|
"DHCPD_ENABLE_DEFINE=1",
|
|
"LWIP_CONFIG_FILE=\"lwip_config_ec6180h00.h\"",
|
|
"FEATURE_MBEDTLS_ENABLE",
|
|
"LFS_NAME_MAX=63",
|
|
"LFS_DEBUG_TRACE",
|
|
"WDT_FEATURE_ENABLE=1",
|
|
"FEATURE_UART_HELP_DUMP_ENABLE",
|
|
"DEBUG_LOG_HEADER_FILE=\"debug_log_ap.h\"",
|
|
"TRACE_LEVEL=5",
|
|
"SOFTPACK_VERSION=\"\"",
|
|
"HAVE_STRUCT_TIMESPEC",
|
|
"HTTPS_WITH_CA",
|
|
"FEATURE_HTTPC_ENABLE",
|
|
"LITE_FEATURE_MODE",
|
|
"RTE_USB_EN=1",
|
|
"RTE_RNDIS_EN=0",
|
|
"RTE_ETHER_EN=0",
|
|
"RTE_PPP_EN=0",
|
|
"RTE_OPAQ_EN=0",
|
|
"RTE_ONE_UART_AT=0",
|
|
"RTE_TWO_UART_AT=0",
|
|
"__USER_CODE__",
|
|
"__PRINT_ALIGNED_32BIT__",
|
|
"_REENT_SMALL",
|
|
"_REENT_GLOBAL_ATEXIT"
|
|
)
|
|
|
|
|
|
add_cxflags("-g3",
|
|
"-mcpu=cortex-m3",
|
|
"-mthumb",
|
|
"-std=gnu99",
|
|
"-nostartfiles",
|
|
"-mapcs-frame",
|
|
"-Os",
|
|
"-ffunction-sections",
|
|
"-fdata-sections",
|
|
"-fno-isolate-erroneous-paths-dereference",
|
|
"-freorder-blocks-algorithm=stc",
|
|
"-Wall",
|
|
"-Wno-format",
|
|
"-gdwarf-2",
|
|
"-fno-inline",
|
|
"-mslow-flash-data",
|
|
"-fstack-usage",
|
|
"-Wstack-usage=4096",
|
|
"-fcallgraph-info",
|
|
{force=true})
|
|
|
|
add_ldflags(" -Wl,--wrap=clock ",{force = true})
|
|
add_ldflags(" -Wl,--wrap=localtime ",{force = true})
|
|
add_ldflags(" -Wl,--wrap=gmtime ",{force = true})
|
|
add_ldflags(" -Wl,--wrap=time ",{force = true})
|
|
add_ldflags(" -Wl,--wrap=SetUnilogUart", {force=true})
|
|
|
|
add_ldflags("--specs=nano.specs", {force=true})
|
|
add_asflags("-Wl,--cref -Wl,--check-sections -Wl,--gc-sections -lm -Wl,--print-memory-usage -Wl,--wrap=_malloc_r -Wl,--wrap=_free_r -Wl,--wrap=_realloc_r -mcpu=cortex-m3 -mthumb -DTRACE_LEVEL=5 -DSOFTPACK_VERSION=\"\" -DHAVE_STRUCT_TIMESPEC")
|
|
|
|
add_defines("sprintf=sprintf_")
|
|
add_defines("snprintf=snprintf_")
|
|
add_defines("vsnprintf=vsnprintf_")
|
|
|
|
-- ==============================
|
|
-- === includes =====
|
|
|
|
add_includedirs(
|
|
SDK_TOP .. "/PLAT/device/target/board/common/ARMCM3/inc",
|
|
SDK_TOP .. "/PLAT/device/target/board/ec618_0h00/common/inc",
|
|
SDK_TOP .. "/PLAT/device/target/board/ec618_0h00/ap/gcc",
|
|
SDK_TOP .. "/PLAT/device/target/board/ec618_0h00/ap/inc",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/audio",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/camera",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/camera/bf30a2",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/camera/gc6153",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/camera/gc032A",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/camera/gc6123",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/camera/sp0A39",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/camera/sp0821",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/eeprom",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/lcd",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/lcd/ST7571",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/lcd/ST7789V2",
|
|
SDK_TOP .. "/PLAT/driver/board/ec618_0h00/inc/ntc",
|
|
SDK_TOP .. "/PLAT/driver/chip/ec618/ap/inc",
|
|
SDK_TOP .. "/PLAT/driver/chip/ec618/ap/inc_cmsis",
|
|
SDK_TOP .. "/PLAT/driver/hal/common/inc",
|
|
SDK_TOP .. "/PLAT/driver/hal/ec618/ap/inc",
|
|
SDK_TOP .. "/PLAT/os/freertos/inc",
|
|
SDK_TOP .. "/PLAT/os/freertos/CMSIS/common/inc",
|
|
SDK_TOP .. "/PLAT/os/freertos/CMSIS/ap/inc",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/mem/tlsf",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/gcc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/debug/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/nvram/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/cms/psdial/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/cms/cms/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/cms/psil/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/cms/psstk/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/cms/sockmgr/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/cms/cmsnetlight/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/ecapi/appmwapi/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/ecapi/psapi/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/common/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/psnv/inc",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/gcc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/tcpipmgr/app/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/tcpipmgr/common/inc",
|
|
SDK_TOP .. "/PLAT/os/freertos/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/yrcompress",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/gcc",
|
|
SDK_TOP .. "/PLAT/prebuild/PS/inc",
|
|
SDK_TOP .. "/PLAT/middleware/thirdparty/lwip/src/include",
|
|
SDK_TOP .. "/PLAT/middleware/thirdparty/lwip/src/include/lwip",
|
|
SDK_TOP .. "/PLAT/middleware/developed/ccio/pub",
|
|
SDK_TOP .. "/PLAT/middleware/developed/ccio/device/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/ccio/service/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/ccio/custom/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/fota/pub",
|
|
SDK_TOP .. "/PLAT/middleware/developed/fota/custom/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atdecoder/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atps/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atps/inc/cnfind",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atcust/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atcust/inc/cnfind",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atentity/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atreply/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atref/inc",
|
|
SDK_TOP .. "/PLAT/middleware/developed/at/atref/inc/cnfind",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/gcc",
|
|
SDK_TOP .. "/thirdparty/httpclient",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/gcc",
|
|
SDK_TOP .. "/PLAT/middleware/thirdparty/lwip/src/include",
|
|
SDK_TOP .. "/PLAT/middleware/thirdparty/lwip/src/include/posix",
|
|
SDK_TOP .. "/PLAT/os/freertos/inc",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/gcc",
|
|
SDK_TOP .. "/thirdparty/littlefs",
|
|
SDK_TOP .. "/thirdparty/littlefs/port",
|
|
SDK_TOP .. "/PLAT/os/freertos/portable/gcc",
|
|
SDK_TOP .. "/PLAT/prebuild/PS/inc",
|
|
SDK_TOP .. "/PLAT/prebuild/PLAT/inc",
|
|
SDK_TOP .. "/PLAT/core/common/include",
|
|
SDK_TOP .. "/PLAT/core/tts/include",
|
|
SDK_TOP .. "/PLAT/core/multimedia/include",
|
|
SDK_TOP .. "/PLAT/core/driver/include",
|
|
SDK_TOP .. "/thirdparty/linksdk",
|
|
SDK_TOP .. "/thirdparty/printf",
|
|
{public = true})
|
|
|
|
if USER_PROJECT_NAME ~= 'luatos' then
|
|
add_defines("MBEDTLS_CONFIG_FILE=\"config_user_ssl.h\"")
|
|
add_includedirs(SDK_TOP .. "/interface/include",
|
|
SDK_TOP .. "/interface/base_include",
|
|
SDK_TOP .. "/interface/private_include",
|
|
SDK_TOP .. "/thirdparty/mbedtls/include",
|
|
SDK_TOP .. "/thirdparty/mbedtls/include/mbedtls",
|
|
SDK_TOP .. "/thirdparty/mbedtls/configs",
|
|
SDK_TOP .. "/thirdparty/fal/inc",
|
|
SDK_TOP .. "/thirdparty/flashdb/inc",
|
|
{public = true})
|
|
else
|
|
add_defines("__LUATOS__","LWIP_NUM_SOCKETS=8")
|
|
add_defines("MBEDTLS_CONFIG_FILE=\"mbedtls_ec618_config.h\"")
|
|
end
|
|
--linkflags
|
|
local LD_BASE_FLAGS = "-Wl,--cref -Wl,--check-sections -Wl,--gc-sections -lm -Wl,--print-memory-usage"
|
|
LD_BASE_FLAGS = LD_BASE_FLAGS .. " -L" .. SDK_TOP .. "/PLAT/device/target/board/ec618_0h00/ap/gcc/"
|
|
--LD_BASE_FLAGS = LD_BASE_FLAGS .. " -T" .. SDK_TOP .. "/PLAT/device/target/board/ec618_0h00/ap/gcc/ec618_0h00_flash.ld -Wl,-Map,$(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME.."_$(mode).map "
|
|
LD_BASE_FLAGS = LD_BASE_FLAGS .. " -T" .. SDK_TOP .. "/PLAT/core/ld/ec618_0h00_flash.ld -Wl,-Map,$(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME.."_$(mode).map "
|
|
LD_BASE_FLAGS = LD_BASE_FLAGS .. " -Wl,--wrap=_malloc_r -Wl,--wrap=_free_r -Wl,--wrap=_realloc_r -mcpu=cortex-m3 -mthumb -DTRACE_LEVEL=5 -DSOFTPACK_VERSION=\"\" -DHAVE_STRUCT_TIMESPEC"
|
|
local LIB_BASE = SDK_TOP .. "/PLAT/libs/libstartup.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/libcore_airm2m.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/libfreertos.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/libpsnv.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/libtcpipmgr.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/libyrcompress.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/libmiddleware_ec.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/liblwip.a "
|
|
-- LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/libmbedtls.a "
|
|
-- LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/libs/liblfs.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PS/lib/gcc/lite/libps.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PS/lib/gcc/lite/libpsl1.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PS/lib/gcc/lite/libpsif.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PLAT/lib/gcc/lite/libosa.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PLAT/lib/gcc/lite/libmiddleware_ec_private.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PLAT/lib/gcc/lite/libccio.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PLAT/lib/gcc/lite/libdeltapatch.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PLAT/lib/gcc/lite/libfota.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PLAT/lib/gcc/lite/libdriver_private.a "
|
|
LIB_BASE = LIB_BASE .. SDK_TOP .. "/PLAT/prebuild/PLAT/lib/gcc/lite/libusb_private.a "
|
|
LIB_USER = ""
|
|
|
|
after_load(function (target)
|
|
for _, sourcebatch in pairs(target:sourcebatches()) do
|
|
if sourcebatch.sourcekind == "as" then -- only asm files
|
|
for idx, objectfile in ipairs(sourcebatch.objectfiles) do
|
|
sourcebatch.objectfiles[idx] = objectfile:gsub("%.S%.o", ".o")
|
|
end
|
|
end
|
|
if sourcebatch.sourcekind == "cc" then -- only c files
|
|
for idx, objectfile in ipairs(sourcebatch.objectfiles) do
|
|
sourcebatch.objectfiles[idx] = objectfile:gsub("%.c%.o", ".o")
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
target("driver")
|
|
set_kind("static")
|
|
add_deps(USER_PROJECT_NAME)
|
|
--driver
|
|
add_files(SDK_TOP .. "/PLAT/driver/board/ec618_0h00/src/**.c",
|
|
SDK_TOP .. "/PLAT/driver/chip/ec618/ap/**.c",
|
|
SDK_TOP .. "/PLAT/driver/chip/ec618/common/gcc/memcpy-armv7m.S",
|
|
SDK_TOP .. "/PLAT/driver/hal/**.c",
|
|
SDK_TOP .. "/PLAT/core/speed/*.c"
|
|
)
|
|
|
|
remove_files(SDK_TOP .. "/PLAT/driver/board/ec618_0h00/src/camera/camAT.c",
|
|
SDK_TOP.."/PLAT/driver/chip/ec618/ap/src/usb/usb_device/usb_bl_test.c",
|
|
SDK_TOP.."/PLAT/driver/chip/ec618/ap/src_cmsis/bsp_lpusart_stub.c",
|
|
SDK_TOP.."/PLAT/driver/chip/ec618/ap/src/tls.c",
|
|
SDK_TOP.."/PLAT/driver/chip/ec618/ap/src_cmsis/bsp_spi.c"
|
|
)
|
|
|
|
set_targetdir("$(buildir)/libdriver_" .. USER_PROJECT_NAME)
|
|
target_end()
|
|
|
|
includes(USER_PROJECT_DIR)
|
|
|
|
target(USER_PROJECT_NAME..".elf")
|
|
set_kind("binary")
|
|
-- add_deps(USER_PROJECT_NAME)
|
|
set_targetdir("$(buildir)/"..USER_PROJECT_NAME)
|
|
add_deps("driver")
|
|
-- if os.getenv("GCC_PATH") then
|
|
-- LD_BASE_FLAGS = " --specs=nano.specs " .. LD_BASE_FLAGS
|
|
-- end
|
|
if USER_PROJECT_NAME ~= 'luatos' then
|
|
add_files(SDK_TOP .. "interface/src/*.c",{public = true})
|
|
add_files(SDK_TOP .. "interface/private_src/*.c",{public = true})
|
|
add_files(SDK_TOP .. "thirdparty/mbedtls/library/*.c",{public = true})
|
|
add_files(SDK_TOP .. "thirdparty/printf/*.c",{public = true})
|
|
end
|
|
|
|
if USER_PROJECT_NAME ~= 'luatos' then
|
|
add_files(SDK_TOP.."/thirdparty/fal/src/*.c",{public = true})
|
|
add_files(SDK_TOP.."/thirdparty/flashdb/src/*.c",{public = true})
|
|
else
|
|
remove_files(SDK_TOP .. "/interface/src/luat_kv_ec618.c"
|
|
)
|
|
end
|
|
add_files(SDK_TOP .. "/thirdparty/littlefs/**.c",{public = true})
|
|
|
|
add_ldflags(LD_BASE_FLAGS .. " -Wl,--whole-archive -Wl,--start-group " .. LIB_BASE .. LIB_USER .. " -Wl,--end-group -Wl,--no-whole-archive -Wl,--no-undefined -Wl,--no-print-map-discarded -ldriver", {force=true})
|
|
|
|
on_load(function (target)
|
|
if USER_PROJECT_NAME == 'luatos' then
|
|
local conf_data = io.readfile("$(projectdir)/project/luatos/inc/luat_conf_bsp.h")
|
|
USER_PROJECT_NAME_VERSION = conf_data:match("#define LUAT_BSP_VERSION \"(%w+)\"")
|
|
VM_64BIT = conf_data:find("\r#define LUAT_CONF_VM_64bit") or conf_data:find("\n#define LUAT_CONF_VM_64bit")
|
|
end
|
|
end)
|
|
before_build(function(target)
|
|
if os.getenv("GCC_PATH") then
|
|
GCC_DIR = os.getenv("GCC_PATH").."/"
|
|
else
|
|
GCC_DIR = target:toolchains()[1]:sdkdir().."/"
|
|
end
|
|
if os.getenv("LSPD_MODE") == "enable" then
|
|
FLAGS = "-DLOW_SPEED_SERVICE_ONLY"
|
|
else
|
|
FLAGS = ""
|
|
end
|
|
if USER_PROJECT_NAME == "luatos" then
|
|
FLAGS = FLAGS .. " -D__LUATOS__"
|
|
end
|
|
os.exec(GCC_DIR .. "bin/arm-none-eabi-gcc -E " .. FLAGS .. " -I " .. SDK_PATH .. "/PLAT/device/target/board/ec618_0h00/common/inc" .. " -P " .. SDK_PATH .. "/PLAT/core/ld/ec618_0h00_flash.c" .. " -o " .. SDK_PATH .. "/PLAT/core/ld/ec618_0h00_flash.ld")
|
|
end)
|
|
after_build(function(target)
|
|
if os.getenv("GCC_PATH") then
|
|
GCC_DIR = os.getenv("GCC_PATH").."/"
|
|
else
|
|
GCC_DIR = target:toolchains()[1]:sdkdir().."/"
|
|
end
|
|
OUT_PATH = SDK_PATH .. "/out/" ..USER_PROJECT_NAME
|
|
if not os.exists(OUT_PATH) then
|
|
os.mkdir(OUT_PATH)
|
|
end
|
|
os.exec(GCC_DIR .. "bin/arm-none-eabi-objcopy -O binary $(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".elf $(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".bin")
|
|
-- io.writefile("$(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".list", os.iorun(GCC_DIR .. "bin/arm-none-eabi-objdump -h -S $(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".elf"))
|
|
io.writefile("$(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".size", os.iorun(GCC_DIR .. "bin/arm-none-eabi-size $(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".elf"))
|
|
-- io.cat("$(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".size")
|
|
os.exec(GCC_DIR .. "bin/arm-none-eabi-objcopy -O binary $(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".elf $(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".bin")
|
|
os.cp("$(buildir)/"..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".bin", "$(buildir)/"..USER_PROJECT_NAME.."/ap.bin")
|
|
|
|
os.cp("$(buildir)/"..USER_PROJECT_NAME.."/*.bin", OUT_PATH)
|
|
os.cp("$(buildir)/"..USER_PROJECT_NAME.."/*.map", OUT_PATH)
|
|
os.cp("$(buildir)/"..USER_PROJECT_NAME.."/*.elf", OUT_PATH)
|
|
os.cp("./PLAT/comdb.txt", OUT_PATH)
|
|
|
|
---------------------------------------------------------
|
|
-------------- 这部分尚不能跨平台
|
|
local cmd = "-M -input ./PLAT/tools/ap_bootloader.bin -addrname BL_IMG_MERGE_ADDR -flashsize BOOTLOADER_FLASH_LOAD_SIZE -input $(buildir)/"..USER_PROJECT_NAME.."/ap.bin -addrname AP_IMG_MERGE_ADDR -flashsize AP_FLASH_LOAD_SIZE -input ./PLAT/prebuild/FW/lib/cp-demo-flash.bin -addrname CP_IMG_MERGE_ADDR -flashsize CP_FLASH_LOAD_SIZE -def ./PLAT/device/target/board/ec618_0h00/common/inc/mem_map.h "
|
|
if os.getenv("BINPKG_CROSS") then
|
|
-- 准备自定义打包程序
|
|
cmd = os.getenv("BINPKG_CROSS") .. cmd
|
|
else
|
|
cmd = "./PLAT/tools/fcelf.exe " .. cmd
|
|
end
|
|
cmd = cmd .. " -outfile " .. "./out/" ..USER_PROJECT_NAME.."/"..USER_PROJECT_NAME..".binpkg"
|
|
-- 如果所在平台没有fcelf, 可注释掉下面的行, 没有binpkg生成.
|
|
-- 仍可使用其他工具继续刷机
|
|
print("fcelf CMD --> ", cmd)
|
|
os.exec(cmd)
|
|
---------------------------------------------------------
|
|
|
|
if USER_PROJECT_NAME == 'luatos' then
|
|
import("lib.detect.find_file")
|
|
local path7z = nil
|
|
if is_plat("windows") then
|
|
path7z = "\"$(programdir)/winenv/bin/7z.exe\""
|
|
elseif is_plat("linux") then
|
|
path7z = find_file("7z", { "/usr/bin/"})
|
|
if not path7z then
|
|
path7z = find_file("7zr", { "/usr/bin/"})
|
|
end
|
|
end
|
|
if path7z then
|
|
os.cp("$(projectdir)/project/luatos/pack", OUT_PATH)
|
|
if VM_64BIT then
|
|
import("core.base.json")
|
|
local info_table = json.loadfile(OUT_PATH.."/pack/info.json")
|
|
info_table["script"]["bitw"] = 64
|
|
json.savefile(OUT_PATH.."/pack/info.json", info_table)
|
|
end
|
|
os.cp(OUT_PATH.."/luatos.binpkg", OUT_PATH.."/pack")
|
|
os.cp(OUT_PATH.."/luatos.elf", OUT_PATH.."/pack")
|
|
os.cp("./PLAT/comdb.txt", OUT_PATH.."/pack")
|
|
os.cp("$(projectdir)/project/luatos/inc/luat_conf_bsp.h", OUT_PATH.."/pack")
|
|
os.exec(path7z.." a -mx9 LuatOS-SoC_"..USER_PROJECT_NAME_VERSION.."_EC618.7z "..OUT_PATH.."/pack/* -r")
|
|
os.mv("LuatOS-SoC_"..USER_PROJECT_NAME_VERSION.."_EC618.7z", OUT_PATH.."/LuatOS-SoC_"..USER_PROJECT_NAME_VERSION.."_EC618.soc")
|
|
os.rm(OUT_PATH.."/pack")
|
|
else
|
|
print("7z not find")
|
|
return
|
|
end
|
|
end
|
|
end)
|
|
target_end()
|