瀏覽代碼

1. 读写SN号,读版本号
2. 加入生成公司bin文件格式的工具

Signed-off-by: huhui <huhui@sharkgulf.com>

huhui 5 年之前
父節點
當前提交
b2b6440d8a

+ 14 - 3
Application/app/bms_message.c

@@ -6,10 +6,13 @@
 #include "app/sox/state.h"
 #include "bsp/gpio.h"
 #include "bsp/ml5238.h"
+#include "bsp/fmc_flash.h"
 #include "libs/logger.h"
 #include "protocol.h"
 #include "bms_message.h"
 
+extern char* bsp_get_fversion(void);
+
 static uint8_t bms_insert = 0;
 static uint8_t bms_insert_ack = 0;
 //主要用来告知PSxxx是否刚插入,PSxxx答复后需要清除
@@ -149,16 +152,24 @@ void process_bms_message(can_frame_t *frame, int len){
 			protocol_send_ack(frame->head.can_addr, frame->key, result);
 			break;
 		case CAN_KEY_SET_SN:
+			fmc_write_sn((uint8_t *)frame->data, len);
 			protocol_send_ack(frame->head.can_addr, frame->key, result);
 			break;
 		case CAN_KEY_GET_SN: {
-			data = (u8 *)"SP730FL123223431";
-			data_len = strlen((char *)data);
+			uint8_t sn[32];
+			int sn_len = sizeof(sn);
+			fmc_read_sn(sn, &sn_len);
+			if (sn_len == 0){
+				memset(sn, 0, sizeof(sn));
+				sn_len = 21;
+			}
+			data = (u8 *)sn;
+			data_len = sn_len;
 			protocol_send_bms_info(frame->head.can_addr, frame->key, data, data_len);
 			break;
 		}
 		case CAN_KEY_GET_VERSION: {
-			data = (u8*) "HSP730FL_V2_13032048";
+			data = (u8*)bsp_get_fversion();
 			data_len = strlen((char *)data);
 			protocol_send_bms_info(frame->head.can_addr, frame->key, data, data_len);
 			break;

+ 6 - 2
Application/bsp/bsp.c

@@ -6,7 +6,7 @@
 #include "bsp/clock.h"
 #include "bsp/fmc_flash.h"
 #include "libs/logger.h"
-
+#include "version.h"
 #include <string.h>
 
 #if defined CONFIG_BOARD_SP700
@@ -14,7 +14,7 @@ const char iap_board_name[] __attribute__((at(0x08002800))) = "SP700";
 #elif defined CONFIG_BOARD_SP600
 const char iap_board_name[] __attribute__((at(0x08002800))) = "SP600";
 #endif
-const char iap_fw_version[] __attribute__((at(0x08002A00))) = "1.0";
+const char iap_fw_version[] __attribute__((at(0x08002A00))) = CONFIG_VERSION;
 const char iap_fw_name[] __attribute__((at(0x08002C00))) = "App";
 
 #define CONFIG_DEBUG 1
@@ -63,6 +63,10 @@ void bsp_init(void){
 	AT24CXX_Init();
 }
 
+char* bsp_get_fversion(void){
+	return (char *)iap_fw_version;
+}
+
 /* timeout:1-25 */
 void wdog_start(int timeout){
 #if CONFIG_DEBUG == 0

+ 10 - 3
Application/bsp/fmc_flash.c

@@ -23,11 +23,18 @@ static uint32_t _image_write_addr = 0;
 static uint32_t _image_read_addr = 0;
 void fmc_write_sn(uint8_t *sn, int len){
 	_fmc_erase_addr(_sn_addr(), len);
-	_fmc_write_data(_sn_addr(), sn, len);
+	_fmc_write_data(_sn_addr(), (uint8_t *)&len, sizeof(len));
+	_fmc_write_data(_sn_addr() + sizeof(len), sn, len);
 }
 
-void fmc_read_sn(uint8_t *sn, int len){
-	_fmc_read_data(_sn_addr(), sn, len);
+void fmc_read_sn(uint8_t *sn, int *len){
+	int sn_len = 0;
+	_fmc_read_data(_sn_addr(), (uint8_t *)&sn_len, sizeof(sn_len));
+	if (sn_len > 0 && sn_len < *len) {
+		_fmc_read_data(_sn_addr() + sizeof(sn_len), sn, sn_len);
+		*len = sn_len;
+	}
+	*len = 0;
 }
 
 void fmc_write_data(uint8_t *data, int len){

+ 1 - 1
Application/bsp/fmc_flash.h

@@ -3,7 +3,7 @@
 #include <stdint.h>
 
 void fmc_write_sn(uint8_t *sn, int len);
-void fmc_read_sn(uint8_t *sn, int len);
+void fmc_read_sn(uint8_t *sn, int *len);
 
 void fmc_write_data(uint8_t *data, int len);
 void fmc_read_data(uint8_t *data, int len);

+ 3 - 0
Application/version.h

@@ -0,0 +1,3 @@
+#pragma once
+
+#define CONFIG_VERSION "HSP730FL_V2_13091921"

+ 6 - 6
Project/SP700.uvprojx

@@ -70,9 +70,9 @@
             <nStopU2X>0</nStopU2X>
           </BeforeCompile>
           <BeforeMake>
-            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg1>1</RunUserProg1>
             <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
+            <UserProg1Name>SharkFwVersion gen ..\Application\version.h</UserProg1Name>
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -80,10 +80,10 @@
             <nStopB2X>0</nStopB2X>
           </BeforeMake>
           <AfterMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>1</RunUserProg2>
+            <UserProg1Name>fromelf --bin --output ./Output/SP700.bin ./Output/SP700/SP700.axf</UserProg1Name>
+            <UserProg2Name>SharkFwVersion mv  ./Output/SP700.bin</UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
             <nStopA1X>0</nStopA1X>

二進制
Project/SharkFwVersion.exe


+ 2 - 0
Project/version.cfg

@@ -0,0 +1,2 @@
+project: HSP730FL
+version: 2