Kaynağa Gözat

add:代码加密,时间戳方式设置rtc

alienwalker 3 yıl önce
ebeveyn
işleme
1d6a47bcca

+ 4 - 0
application/src/luat_rtc_air105.c

@@ -40,6 +40,10 @@ int luat_rtc_set(struct tm *tblock) {
     return 0;
 }
 
+void luat_rtc_set_tamp32(uint32_t tamp) {
+	RTC_SetUTC(tamp, 1);
+}
+
 int luat_rtc_get(struct tm *tblock) {
 	Date_UserDataStruct Date;
 	Time_UserDataStruct Time;

+ 7 - 3
bsp/air105/hal/core_rtc.c

@@ -105,11 +105,10 @@ void RTC_GlobalInit(void)
 
 }
 
-void RTC_SetDateTime(Date_UserDataStruct *pDate, Time_UserDataStruct *pTime, uint8_t isForce)
+void RTC_SetUTC(uint32_t Tamp, uint8_t isForce)
 {
-	uint64_t Tamp = UTC2Tamp(pDate, pTime);
 	uint32_t curTime;
-	uint32_t newTime = (uint32_t)Tamp;
+	uint32_t newTime = Tamp;
 	while (!(RTC->RTC_CS & RTC_CS_READY)) {;}
 	if (isForce)
 	{
@@ -132,6 +131,11 @@ void RTC_SetDateTime(Date_UserDataStruct *pDate, Time_UserDataStruct *pTime, uin
 	}
 }
 
+void RTC_SetDateTime(Date_UserDataStruct *pDate, Time_UserDataStruct *pTime, uint8_t isForce)
+{
+	RTC_SetUTC((uint32_t)UTC2Tamp(pDate, pTime), isForce);
+}
+
 void RTC_GetDateTime(Date_UserDataStruct *pDate, Time_UserDataStruct *pTime)
 {
 	Tamp2UTC(RTC_GetUTC(), pDate, pTime, 0);

+ 1 - 0
bsp/air105/include/core_rtc.h

@@ -29,6 +29,7 @@ void RTC_SetDateTime(Date_UserDataStruct *pDate, Time_UserDataStruct *pTime, uin
 void RTC_GetDateTime(Date_UserDataStruct *pDate, Time_UserDataStruct *pTime);
 
 uint64_t RTC_GetUTC(void);
+void RTC_SetUTC(uint32_t Tamp, uint8_t isForce);
 
 void RTC_SetAlarm(uint32_t TimeSecond, CBFuncEx_t CB, void *pParam);
 #endif

+ 7 - 9
bsp/air105/platform/app_main.c

@@ -32,22 +32,20 @@ extern const uint32_t __init_fun_array_start;
 extern const uint32_t __init_fun_array_end;
 extern const uint32_t __task_fun_array_start;
 extern const uint32_t __task_fun_array_end;
+#define SCRIPT_LUADB_START_ADDR			(__FLASH_BASE_ADDR__ + __CORE_FLASH_BLOCK_NUM__ * __FLASH_BLOCK_SIZE__)
 const uint32_t __attribute__((section (".app_info")))
-    g_CAppInfo[256] =
+    g_CAppInfo[8] =
 {
 	__APP_START_MAGIC__,
-	sizeof(g_CAppInfo),
+	&__isr_start_address,
 	0,//此处后期放入luatos固件版本
 	0,
+	SCRIPT_LUADB_START_ADDR,
+	SCRIPT_LUADB_START_ADDR + __SCRIPT_FLASH_BLOCK_NUM__ * __FLASH_BLOCK_SIZE__,
+	0,
+	0,
 };
 
-//enum
-//{
-//	USER_EVENT_TEST_START = USER_EVENT_ID_START+1,
-//	USER_EVENT_SPI_DONE,
-//	USER_EVENT_I2C_DONE,
-//	USER_EVENT_HWTIMER_DONE,
-//};
 static void prvSystemReserCtrl(void)
 {
 #ifdef __DEBUG__

+ 3 - 3
bsp/air105/platform/bl_main.c

@@ -590,7 +590,7 @@ OTA_END:
 
 void SystemInit(void)
 {
-	SYSCTRL->LDO25_CR = (1 << 5);
+	SYSCTRL->LDO25_CR = (1 << 4);
 #ifdef __RUN_IN_RAM__
 	memcpy(__SRAM_BASE_ADDR__, &__isr_start_address, 1024);
 	SCB->VTOR = __SRAM_BASE_ADDR__;
@@ -649,7 +649,7 @@ LOCAL_UPGRADE_START:
 	Remote_Upgrade();
 //	__disable_irq();
 	BL_LockFlash();
-
+	BL_EncryptCheck();
 	memcpy(AppInfo, __FLASH_APP_START_ADDR__, sizeof(AppInfo));
 	if (__APP_START_MAGIC__ == AppInfo[0])
 	{
@@ -658,7 +658,7 @@ LOCAL_UPGRADE_START:
 #else
 		DBG_INFO("bootloader build release %s %s!", __DATE__, __TIME__, QSPI->DEVICE_PARA);
 #endif
-		Jump_AppRun(__FLASH_APP_START_ADDR__ + AppInfo[1]);
+		Jump_AppRun(AppInfo[1]);
 	}
 	else
 	{

BIN
lib/libencrypt.a


+ 3 - 2
project/air105/app.ld

@@ -22,9 +22,10 @@ SECTIONS
     /* The startup code into "FLASH" Rom type memory */
     .app_info :
     {
-        . = ALIGN(512);
+        . = ALIGN(32);
         KEEP(*(.app_info)) /* Startup code */
-        . = ALIGN(512);
+        KEEP(*(.safe_code)) /* Startup code */
+        . = ALIGN(1024);
     } >FLASH
     .isr_vector :
     {

BIN
project/air105/soc_download.exe


+ 5 - 3
xmake.lua

@@ -112,7 +112,7 @@ target("bootloader.elf")
     add_includedirs("bsp/device/include",{public = true})
     add_files("bsp/device/src/*.c",{public = true})
 
-    add_ldflags("-Wl,-Map=./build/out/bootloader.map","-Wl,-T$(projectdir)/project/air105/bl.ld",{force = true})
+    add_ldflags("-Wl,--start-group ./lib/libencrypt.a -Wl,--end-group -Wl,-Map=./build/out/bootloader.map","-Wl,-T$(projectdir)/project/air105/bl.ld",{force = true})
 
 	after_build(function(target)
         sdk_dir = target:toolchains()[1]:sdkdir().."/"
@@ -158,7 +158,6 @@ target("lvgl")
     add_includedirs(luatos.."luat/packages/u8g2",{public = true})
     add_includedirs(luatos.."components/qrcode",{public = true})
 
-
     set_targetdir("$(buildir)/lib")
 target_end()
 
@@ -316,6 +315,9 @@ if with_luatos then
     add_files(luatos.."components/zlib/*.c")
     add_includedirs(luatos.."components/zlib")
 
+    add_files(luatos.."components/mlx90640-library/*.c")
+    add_includedirs(luatos.."components/mlx90640-library")
+
     add_files(luatos.."components/camera/*.c")
     add_includedirs(luatos.."components/camera")
 
@@ -365,7 +367,7 @@ end
     -- add_files(luatos.."components/nes/*.cpp",luatos.."components/nes/luat/*.c",{public = true})
     -- add_includedirs(luatos.."components/nes",luatos.."components/nes/luat",{public = true})
 
-    add_ldflags("-Wl,--whole-archive -Wl,--start-group ./lib/libgt.a -Wl,--end-group -Wl,--no-whole-archive","-Wl,-Map=./build/out/app.map","-Wl,-T$(projectdir)/project/air105/app.ld",{force = true})
+    add_ldflags("-Wl,--whole-archive -Wl,--start-group ./lib/libgt.a ./lib/libencrypt.a -Wl,--end-group -Wl,--no-whole-archive","-Wl,-Map=./build/out/app.map","-Wl,-T$(projectdir)/project/air105/app.ld",{force = true})
 
 	after_build(function(target)
         sdk_dir = target:toolchains()[1]:sdkdir().."/"