1 Star 0 Fork 91

梅宝/luatos-soc-2022

forked from 合宙Luat/LuatOS-SoC-2022 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
xmake.lua 23.07 KB
一键复制 编辑 原始数据 按行查看 历史
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 = ""
local script_addr = nil
local full_addr = nil
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
-- 是否为rndis csdk
if os.getenv("EC618_RNDIS") == "enable" then
is_rndis = true
else
is_rndis = false
end
-- 是否启用低速模式, 内存更大, 但与rndis不兼容
if is_rndis == false and os.getenv("LSPD_MODE") == "enable" then
is_lspd = true
else
is_lspd = false
end
-- 若启用is_lspd, 加上额外的宏
if is_lspd == true 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_RNDIS_EN=0", "RTE_ETHER_EN=0",
"RTE_USB_EN=1",
"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"
)
if is_rndis then
add_defines("RTE_RNDIS_EN=1", "RTE_ETHER_EN=1")
else
add_defines("RTE_RNDIS_EN=0", "RTE_ETHER_EN=0")
end
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")
local mem_map_data = io.readfile("$(projectdir)/PLAT/device/target/board/ec618_0h00/common/inc/mem_map.h")
FLASH_FOTA_REGION_START = tonumber(mem_map_data:match("#define FLASH_FOTA_REGION_START%s+%((%g+)%)"))
LUAT_SCRIPT_SIZE = tonumber(conf_data:match("\r#define LUAT_SCRIPT_SIZE (%d+)") or conf_data:match("\n#define LUAT_SCRIPT_SIZE (%d+)"))
LUAT_SCRIPT_OTA_SIZE = tonumber(conf_data:match("\r#define LUAT_SCRIPT_OTA_SIZE (%d+)") or conf_data:match("\n#define LUAT_SCRIPT_OTA_SIZE (%d+)"))
LUA_SCRIPT_ADDR = FLASH_FOTA_REGION_START - (LUAT_SCRIPT_SIZE + LUAT_SCRIPT_OTA_SIZE) * 1024
LUA_SCRIPT_OTA_ADDR = FLASH_FOTA_REGION_START - LUAT_SCRIPT_OTA_SIZE * 1024
script_addr = string.format("%X", LUA_SCRIPT_ADDR)
full_addr = string.format("%X", LUA_SCRIPT_OTA_ADDR)
-- print(FLASH_FOTA_REGION_START,LUAT_SCRIPT_SIZE,LUAT_SCRIPT_OTA_SIZE)
-- print(script_addr,full_addr)
end
end)
before_build(function(target)
local conf_data = io.readfile("$(projectdir)/project/luatos/inc/luat_conf_bsp.h")
LUAT_SCRIPT_SIZE = tonumber(conf_data:match("\r#define LUAT_SCRIPT_SIZE (%d+)") or conf_data:match("\n#define LUAT_SCRIPT_SIZE (%d+)"))
LUAT_SCRIPT_OTA_SIZE = tonumber(conf_data:match("\r#define LUAT_SCRIPT_OTA_SIZE (%d+)") or conf_data:match("\n#define LUAT_SCRIPT_OTA_SIZE (%d+)"))
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__ -DFLASH_AREA_SIZE=" .. string.format("%dK", 2944 - LUAT_SCRIPT_SIZE - LUAT_SCRIPT_OTA_SIZE)
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)
import("core.base.json")
local info_table = json.loadfile(OUT_PATH.."/pack/info.json")
if VM_64BIT then
info_table["script"]["bitw"] = 64
end
if script_addr then
info_table["download"]["script_addr"] = script_addr
io.gsub(OUT_PATH.."/pack/config_ec618_usb.ini", "filepath = .\\script.bin\nburnaddr = 0x(%g+)", "filepath = .\\script.bin\nburnaddr = 0x"..script_addr)
end
if full_addr then
info_table["fota"]["full_addr"] = full_addr
end
json.savefile(OUT_PATH.."/pack/info.json", info_table)
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("./PLAT/device/target/board/ec618_0h00/common/inc/mem_map.h", 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()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Amibk/luatos-soc-2022.git
[email protected]:Amibk/luatos-soc-2022.git
Amibk
luatos-soc-2022
luatos-soc-2022
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385