ソースを参照

Feat: 增加can驱动测试接口

juni 1 年間 前
親
コミット
5e52dc047c

+ 28 - 1
app_public/fuxi_public/fuxi_bsp/include/flexcan.h

@@ -12,10 +12,33 @@
 #define _FLEXCAN_H
 /*------------------------------- 头文件 --------------------------------------
 */
-
+#include "rt_types.h"
 
 /*------------------------------- 宏定义 --------------------------------------
 */
+#define RT_CAN_NUM   					4	// 原始can数量
+#define RT_CAN_DEV_TYPE   				4	// can设备类型
+
+#define RT_M_CAN0   0x0453C800
+#define RT_M_RAM0   0x04538000
+#define RT_M_TOP0   0x04530000
+#define RT_M_DMA0   0x04534000
+
+#define RT_M_CAN1   0x04541800
+#define RT_M_RAM1   0x0453D000
+#define RT_M_TOP1   0x04531000
+#define RT_M_DMA1   0x04535000
+
+#define RT_M_CAN2   0x04546800
+#define RT_M_RAM2   0x04542000
+#define RT_M_TOP2   0x04532000
+#define RT_M_DMA2   0x04536000
+
+#define RT_M_CAN3   0x0454B800
+#define RT_M_RAM3   0x04547000
+#define RT_M_TOP3   0x04533000
+#define RT_M_DMA3   0x04537000
+
 #define CAN_BUS_NUM						2	// 底板支持的CAN总线数量
 #define CAN_BUS_ADDR_NUM				16	// 底板支持的插槽数量(与CAN地址数量一一对应)
 
@@ -23,6 +46,10 @@
 
 #define CAN_FRAME_LEN_MAX				256
 
+#define CAN_MB                          16  // can buffer
+
+#define MB_CNT_CODE(x)		(((x)&0x0F)<<24)
+
 typedef int (*FN_CAN_RECV_CALLBACK)(u32 no,u8 * buf);
 
 

+ 1 - 1
app_public/fuxi_public/fuxi_bsp/source/can_app.c

@@ -516,6 +516,7 @@ int can_task(void)
 	int i;
 	u8 * buf;
 	struct can_frame_head 	*cfh;
+	static unsigned char send_discover = 0;
 #ifdef CAN_SLAVE_BOARD		
 	static unsigned long us0 = 0;
 	static unsigned long us1 = 0;
@@ -588,7 +589,6 @@ int can_task(void)
 			can_app_sb_slot_recv(buf);
 			break;
 		default:
-			can_metering_recv_app(buf);
 			break;
 		}
 	}	

+ 95 - 138
app_public/fuxi_public/fuxi_bsp/source/flexcan.c

@@ -2,8 +2,8 @@
 版权所有:	
 文件名称:	flexcan.c
 文件版本:	01.01
-创建作者:	   sunxi
-创建日期:	2013-02-03
+创建作者:	sunxi
+创建日期:	2025-09-28
 功能说明:	FLEXCAN驱动
 其它说明:
 修改记录:
@@ -11,11 +11,11 @@
 /*------------------------------- 头文件 --------------------------------------
 */
 #include "bspconfig.h"
+#include "ustimer.h"
 #include "rt.h"
-
-// sunxi 20220408 #include "mcf5441x_gpio.h"
-// sunxi 20220408 #include "mcf5441x_flexcan.h"
 #include "flexcan.h"
+#include <string.h>
+#include <sys/mman.h>
 
 #ifdef BSP_CAN_ENABLE
 
@@ -93,6 +93,16 @@
 
 /*------------------------------ 类型结构 -------------------------------------
 */
+//CANFD 基地址
+static unsigned int g_rt_canfd_baseaddr[RT_CAN_NUM][RT_CAN_DEV_TYPE]=
+{
+	{RT_M_CAN0, RT_M_RAM0, RT_M_TOP0, RT_M_DMA0},
+	{RT_M_CAN1, RT_M_RAM1, RT_M_TOP1, RT_M_DMA1},
+	{RT_M_CAN2, RT_M_RAM2, RT_M_TOP2, RT_M_DMA2},
+	{RT_M_CAN3, RT_M_RAM3, RT_M_TOP3, RT_M_DMA3},
+
+};
+
 // 保证所有结构的大小都是4的倍数
 //长帧缓冲区
 struct can_longframe_buf
@@ -218,6 +228,10 @@ struct can_platform_data
 /*------------------------------ 全局变量 -------------------------------------
 */
 //flexcan设备
+int g_can_fd = -1;
+unsigned g_can_mapped_size;
+void *g_can_map_base[CAN_BUS_NUM], *g_can_virt_addr[CAN_BUS_NUM]; 
+
 static struct can_dev g_can_dev[CAN_BUS_NUM] __attribute__ ((aligned(4)));
 
 FN_CAN_RECV_CALLBACK g_can_recv_callback;
@@ -250,6 +264,25 @@ int can_init(void)
 {
     struct can_dev *dev; 
     int i;
+	off_t target;
+	unsigned page_size, offset_in_page;
+    unsigned width = 8 * sizeof(int);
+
+	g_can_mapped_size = page_size = sysconf(_SC_PAGESIZE);
+    offset_in_page = (unsigned)target & (page_size - 1);
+    if (offset_in_page + width > page_size) {
+		/* This access spans pages.
+		 * Must map two pages to make it possible: */
+		g_can_mapped_size *= 2;
+	}
+
+	g_can_fd = open("/dev/mem",  O_RDWR | O_SYNC);
+    if (g_can_fd < 0)  
+    {
+        printf("open(/dev/mem) failed.\n");    
+        return -1;
+    }
+    fflush(stdout);
 
 	//初始化缓冲区
 	memset(g_can_dev,0,sizeof(g_can_dev));
@@ -258,44 +291,42 @@ int can_init(void)
 	{
 		dev = &g_can_dev[i];
 		dev->no = i;
+		target = g_rt_canfd_baseaddr[i][0];
 
 		if(i==0)
 		{
 			/* CAN0 */
-			dev->base_addr = 0xFC020000;
-			
-			MCF_PMM_PPMCR0 = 8;	/* enable FlexCAN0 clock */
+			g_can_map_base[i] = mmap (NULL, g_can_mapped_size, PROT_READ | PROT_WRITE, MAP_SHARED, g_can_fd, target & ~(off_t)(page_size - 1));
+			if (g_can_map_base[i] == (void *)-1)
+			{
+				printf ("can[%d] dev null pointer!\n", i);
+			}
+			else
+			{
+				printf ("BSP can[%d] map Successfull!\n", i);
+			}
+			fflush(stdout);
 			
-			MCF_GPIO_PAR_CANI2C =
-				(MCF_GPIO_PAR_CANI2C & MCF_GPIO_PAR_CANI2C_I2C0SCL_MASK) |
-				MCF_GPIO_PAR_CANI2C_I2C0SCL_CAN0TX;
-			MCF_GPIO_PAR_CANI2C =
-				(MCF_GPIO_PAR_CANI2C & MCF_GPIO_PAR_CANI2C_I2C0SDA_MASK) |
-				MCF_GPIO_PAR_CANI2C_I2C0SDA_CAN0RX;
-				
-			//设置驱动能力	
-			MCF_GPIO_SRCR_CANI2C=MCF_GPIO_SRCR_CANI2C | 0x03 ;	
+			dev->base_addr = g_can_map_base[i];
 				
 		}
 		else 
 		{
 			/* CAN1 */
-			dev->base_addr = 0xFC024000;
-			
-			MCF_PMM_PPMCR0 = 9;	/* enable FlexCAN1 clock */
+			g_can_map_base[i] = mmap (NULL, g_can_mapped_size, PROT_READ | PROT_WRITE, MAP_SHARED, g_can_fd, target & ~(off_t)(page_size - 1));
+			if (g_can_map_base[i] == (void *)-1)
+			{
+				printf ("can[%d] dev null pointer!\n", i);
+			}
+			else
+			{
+				printf ("BSP can[%d] map Successfull!\n", i);
+			}
+			fflush(stdout);
 			
-			MCF_GPIO_PAR_CANI2C =
-				(MCF_GPIO_PAR_CANI2C & MCF_GPIO_PAR_CANI2C_CAN1TX_MASK) |
-				MCF_GPIO_PAR_CANI2C_CAN1TX_CAN1TX;
-			MCF_GPIO_PAR_CANI2C =
-				(MCF_GPIO_PAR_CANI2C & MCF_GPIO_PAR_CANI2C_CAN1RX_MASK) |
-				MCF_GPIO_PAR_CANI2C_CAN1RX_CAN1RX;
+			dev->base_addr = g_can_map_base[i];
 			
-			//设置驱动能力		
-			MCF_GPIO_SRCR_CANI2C=MCF_GPIO_SRCR_CANI2C | 0x0C ;			
 		}
-
-		MCF_GPIO_PAR_CANI2C = 0x5f;
 		
 		/* set chip into reset mode */
 		_can_set_reset_mode(dev);
@@ -326,6 +357,21 @@ int can_init(void)
 
 int can_exit(void)
 {
+	int i = 0;
+	if (g_can_fd >= 0)
+    {
+        close(g_can_fd);
+        g_can_fd = -1;
+    }
+	for (i = 0; i < CAN_BUS_NUM; i++) {
+		if (g_can_map_base[i]) {
+			if (munmap(g_can_map_base, g_can_mapped_size) == -1) {
+				printf("can[%d] dev munmap failed!", i);
+				return -1;
+			}
+		}
+	}
+
 	rt_free_irq(CFG_CAN_VECTOR_BEGIN + 0);
 	rt_free_irq(CFG_CAN_VECTOR_BEGIN + 1);
 	rt_free_irq(CFG_CAN_VECTOR_BEGIN + 3);
@@ -583,29 +629,7 @@ int can_stat_reset(void)
 */
 static int _can_set_reset_mode(struct can_dev *dev)
 {
-	volatile struct can_regs *regs = \
-			(volatile struct can_regs *)dev->base_addr;
-	int i;
-
-	/* disable all MB interrupts */
-	regs->canimask = IMASK_BUFF_DISABLE_ALL;
-
-	/* disable error and bus off interrupt */
-	regs->canctrl &= ~(CANCTRL_ERRMSK | CANCTRL_BOFFMSK);
-
-	/* reset chip */
-	regs->canmcr &= ~(CANMCR_MDIS);
-	regs->canmcr |= CANMCR_SOFTRST;
-
-	for (i = 0; i < FLEXCAN_SET_MODE_RETRIES; i++) {
-		/* check reset bit */
-		if ((regs->canmcr & CANMCR_SOFTRST) == 0x00) {
-			//priv->can.state = CAN_STATE_STOPPED;
-			return 0;
-		}
-
-		ustimer_delay(10*USTIMER_US);
-	}
+	
 
 	return 1;
 
@@ -625,37 +649,7 @@ static int _can_set_reset_mode(struct can_dev *dev)
 */
 static int _can_set_normal_mode(struct can_dev *dev)
 {
-	volatile struct can_regs *regs = \
-			(volatile struct can_regs *)dev->base_addr;
-	int i;
-
-	// 模式寄存器配置
-//	regs->canmcr |= CANMCR_SRXDIS;	// 禁止自接收(如果允许监视所有短帧,必须允许自接收)
-	regs->canmcr |= CANMCR_WARN_EN;	// 允许告警
-	regs->canmcr |= CANMCR_FEN;		// 允许接收FIFO
 	
-	/* enable the module */
-	regs->canmcr &= ~CANMCR_MDIS;
-
-	/* synchronize with can bus*/
-	regs->canmcr &= ~CANMCR_HALT;
-
-	for (i = 0; i < FLEXCAN_SET_MODE_RETRIES; i++) 
-	{
-		/* check freeze and disabled bit */
-		if (!(regs->canmcr & (CANMCR_NOTRDY | CANMCR_FRZACK))) 
-		{
-
-			/* enable all MB interrupts */
-			regs->canimask = IMASK_BUFF_ENABLE_ALL;
-			/* Enable error and bus off interrupt */
-		//	regs->canctrl |= (CANCTRL_ERRMSK | CANCTRL_BOFFMSK);
-			regs->canctrl |= (CANCTRL_TWRN_MSK | CANCTRL_RWRN_MSK | CANCTRL_BOFFMSK);
-			return 0;
-		}
-		ustimer_delay(10*USTIMER_US);
-
-	}
 	
 	return 1;
 
@@ -692,26 +686,25 @@ static int _can_set_normal_mode(struct can_dev *dev)
 */
 static int _can_set_bittiming(struct can_dev *dev)
 {
-	volatile struct can_regs *regs = \
-		(struct can_regs *)dev->base_addr;
-	volatile u32 reg = 0;
-
 	/* Clear the old bittiming */
-	reg = CANCTRL_PRESDIV(0xFF) | CANCTRL_RJW(0x03);
-	reg |= (CANCTRL_PROPSEG(0x07) |
-		CANCTRL_PSEG1(0x07) |
-		CANCTRL_PSEG2(0x07) |
-		CANCTRL_SAMP(0x01));
-	regs->canctrl &= ~reg;
-
-	//配置波特率为1M
-	reg = CANCTRL_PRESDIV(4) | CANCTRL_RJW(0); 
-	reg |= (CANCTRL_PROPSEG(3) |  
-		CANCTRL_PSEG1(2) |
-		CANCTRL_PSEG2(1) |
-		CANCTRL_SAMP(0)); 
-	regs->canctrl |= reg;		
-
+	char cmd_buf[256] = {0x00};
+	sprintf(cmd_buf, "ip link set can%d down", dev->no);
+	system(cmd_buf);
+
+	/* 设置队列宽度 */ 
+	memset(cmd_buf, 0, sizeof(cmd_buf));
+	sprintf(cmd_buf, "ip link set can%d qlen %d", dev->no, 100);
+	system(cmd_buf);
+
+	/* 配置波特率为1M */
+	memset(cmd_buf, 0, sizeof(cmd_buf));
+	sprintf(cmd_buf, "ip link set can%d type can bitrate %d loopback off restart-ms %d", dev->no, 1000000, 10);
+	system(cmd_buf);
+
+	/* 启动can设备 */
+	memset(cmd_buf, 0, sizeof(cmd_buf));
+	sprintf(cmd_buf, "ip link set can%d up", dev->no);
+	system(cmd_buf);
 	return 0;
 }
 
@@ -739,42 +732,7 @@ static int _can_set_bittiming(struct can_dev *dev)
  */
 static void _can_chipset_init(struct can_dev *dev, int clock_src)
 {
-	volatile struct can_regs *regs = \
-		(volatile struct can_regs *)dev->base_addr;
-	int i, j;
 
-	/* Setting the Clk */
-	if (clock_src)
-		regs->canctrl |= CANCTRL_CLKSRC;
-	else
-		regs->canctrl &= ~CANCTRL_CLKSRC;
-
-	/* set LBUF to sending from lower buffer*/
-	regs->canctrl |= CANCTRL_LBUF;
-	
-	// 初始化消息buf
-	for (i = 0; i < CAN_MB; i++) 
-	{
-		regs->cantxfg[i].can_dlc = 0;
-		regs->cantxfg[i].can_id = 0;
-		for (j = 0; j < 8; j++)
-			regs->cantxfg[i].data[j] = 0;
- 	} 
-
-	//使用各自独立的报文过滤
-	regs->canmcr |=   CANMCR_BCC;
-	for (i = 0; i < CAN_MB; i++) 
-	{
-		//不过滤报文
-		regs->rximr[i]=0x00000000;
-
-	}
-
-	//闭环模式
-#if 0
-	regs->canctrl |= CANCTRL_LPB;
-#else
-	regs->canctrl &= ~CANCTRL_LPB;
 #endif
 }
 
@@ -1287,7 +1245,6 @@ int can_test(void)
 	return 0;
 }
 
-#endif
 
 /*------------------------------ 文件结束 -------------------------------------
 */

+ 3 - 5
app_public/fuxi_public/rt_lite/source/rt_console.c

@@ -228,16 +228,14 @@ int dt_cmd_rt_reset(void);
 int dt_cmd_adc(void);
 int dt_cmd_freq(void);
 int dt_cmd_comm(void);
+extern int can_stat(void);
 #if 0
 static int dt_soe_gen(void);
 int printf_file101(void)
 {
 	return 0;
 }
-int can_stat(void)
-{
-	return 0;
-}
+
 int can_stat_reset(void)
 {
 	return 0;
@@ -444,8 +442,8 @@ TCmd gCmd[] =
 	//{"sec", sec_info_printf, "安全信息打印"},
 	//{"ept", print_EquipParaTable, "装置参数打印"},
 	
-#if defined(BSP_DTU3) || defined(BSP_DTU2)
 	{"can",can_stat,"CAN总线统计"},
+#if defined(BSP_DTU3) || defined(BSP_DTU2)
 	{"sb",can_app_sb_monitor, "子板监视信息"},
 	{"cantest",can_app_test_printf, "子板测试信息"},
 #endif

+ 2 - 4
dtu/dtu_main_t536/app/Down.c

@@ -52,7 +52,7 @@ int init_file_program(u8 slot, s32 index)
 	u8 *buf;
 	char file_name[64];
 
-	struct file * pfile;
+	int pfile;
 	loff_t pos;
 
 	sprintf(file_name,"%s%s",g_file_item[index].file_dir,g_file_item[index].file_name);
@@ -67,9 +67,7 @@ int init_file_program(u8 slot, s32 index)
 	}
 
 	// µÃµ½Îļş³¤¶È
-	rt_file_llseek(pfile,0,SEEK_END);
-	len = pfile->f_pos;
-	rt_file_llseek(pfile,0,SEEK_SET);
+	len = rt_file_getfile_size(pfile);
 	
 	// ·ÖÅäÄÚ´æ
 	buf = rt_malloc(len);

+ 2 - 4
dtu/dtu_main_t536/app/can_board.c

@@ -146,7 +146,7 @@ int equ_init_can_file_res(void)
 #ifdef CAN_BOARD_DEBUG
 	u8 j = 0;
 #endif
-	struct file * pfile;
+	int pfile;
 	loff_t pos;
 	int slot;
 	u8 id_len;
@@ -160,9 +160,7 @@ int equ_init_can_file_res(void)
 	}
 
 	// µÃµ½Îļþ³¤¶È
-	rt_file_llseek(pfile,0,SEEK_END);
-	len = pfile->f_pos;
-	rt_file_llseek(pfile,0,SEEK_SET);
+	len = rt_file_getfile_size(pfile);
 	
 	// ·ÖÅäÄÚ´æ
 	buf = rt_malloc(len);

+ 1 - 1
dtu/dtu_main_t536/app/defineSys.h

@@ -1189,7 +1189,7 @@
 
 //伏羲暂不支持can、伏羲加密S1芯片
 #ifdef  CPU_FUXI 
-	#undef BSP_CAN_ENABLE
+	#define BSP_CAN_ENABLE		// can bsp
 	#undef CAN_SLAVE_BOARD
 	#undef METERING_ENERGY
 	#undef ADD_MULTIPLE_FILE_WR_FUN

+ 208 - 24
dtu/dtu_main_t536/compile_commands.json

@@ -38,12 +38,12 @@
       "dummyinc",
       "-mcpu=cortex-a55",
       "-o",
-      "tmp/rt_lite/source/rt_clib_snprintf.o",
-      "tmp/rt_lite/source/rt_clib_snprintf.c"
+      "main_mod.o",
+      "main_mod.c"
     ],
     "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
-    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/rt_lite/source/rt_clib_snprintf.c",
-    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/rt_lite/source/rt_clib_snprintf.o"
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/main_mod.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/main_mod.o"
   },
   {
     "arguments": [
@@ -176,12 +176,12 @@
       "dummyinc",
       "-mcpu=cortex-a55",
       "-o",
-      "main_mod.o",
-      "main_mod.c"
+      "tmp/rt_lite/source/rt_clib_snprintf.o",
+      "tmp/rt_lite/source/rt_clib_snprintf.c"
     ],
     "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
-    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/main_mod.c",
-    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/main_mod.o"
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/rt_lite/source/rt_clib_snprintf.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/rt_lite/source/rt_clib_snprintf.o"
   },
   {
     "arguments": [
@@ -1701,6 +1701,98 @@
     "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/fuxi_bsp/source/fourier.c",
     "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/fuxi_bsp/source/fourier.o"
   },
+  {
+    "arguments": [
+      "/home/juni/workspace/T536/SYYFX/t536_f1_linux_sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc",
+      "-c",
+      "-O2",
+      "-g",
+      "-Wshadow",
+      "-Wformat",
+      "-w",
+      "-W",
+      "-Wno-unused-parameter",
+      "-Wno-unused-but-set-variable",
+      "-Wno-pointer-sign",
+      "-Wno-date-time",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/rt_lite/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/fuxi_bsp/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/bsp_share",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/get_keyword",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/gps",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/xdljd",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/sys_api",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/cobalt",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/trank",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/app",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+      "-DGW_AREA_MAIN_2021",
+      "-DCPU_FUXI",
+      "-DMACHINE_NULL",
+      "-D_GNU_SOURCE",
+      "-D_REENTRANT",
+      "-fasynchronous-unwind-tables",
+      "-D__COBALT__",
+      "-D__COBALT_WRAP__",
+      "-idirafter",
+      "dummyinc",
+      "-mcpu=cortex-a55",
+      "-o",
+      "tmp/fuxi_bsp/source/can_app.o",
+      "tmp/fuxi_bsp/source/can_app.c"
+    ],
+    "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/fuxi_bsp/source/can_app.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/fuxi_bsp/source/can_app.o"
+  },
+  {
+    "arguments": [
+      "/home/juni/workspace/T536/SYYFX/t536_f1_linux_sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc",
+      "-c",
+      "-O2",
+      "-g",
+      "-Wshadow",
+      "-Wformat",
+      "-w",
+      "-W",
+      "-Wno-unused-parameter",
+      "-Wno-unused-but-set-variable",
+      "-Wno-pointer-sign",
+      "-Wno-date-time",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/rt_lite/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/fuxi_bsp/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/bsp_share",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/get_keyword",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/gps",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/xdljd",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/sys_api",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/cobalt",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/trank",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/app",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+      "-DGW_AREA_MAIN_2021",
+      "-DCPU_FUXI",
+      "-DMACHINE_NULL",
+      "-D_GNU_SOURCE",
+      "-D_REENTRANT",
+      "-fasynchronous-unwind-tables",
+      "-D__COBALT__",
+      "-D__COBALT_WRAP__",
+      "-idirafter",
+      "dummyinc",
+      "-mcpu=cortex-a55",
+      "-o",
+      "tmp/fuxi_bsp/source/flexcan.o",
+      "tmp/fuxi_bsp/source/flexcan.c"
+    ],
+    "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/fuxi_bsp/source/flexcan.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/fuxi_bsp/source/flexcan.o"
+  },
   {
     "arguments": [
       "/home/juni/workspace/T536/SYYFX/t536_f1_linux_sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc",
@@ -1970,12 +2062,12 @@
       "dummyinc",
       "-mcpu=cortex-a55",
       "-o",
-      "tmp/app/app.o",
-      "tmp/app/app.c"
+      "tmp/app/history_db.o",
+      "tmp/app/history_db.c"
     ],
     "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
-    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/app.c",
-    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/app.o"
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/history_db.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/history_db.o"
   },
   {
     "arguments": [
@@ -2016,12 +2108,12 @@
       "dummyinc",
       "-mcpu=cortex-a55",
       "-o",
-      "tmp/app/history_db.o",
-      "tmp/app/history_db.c"
+      "tmp/app/app.o",
+      "tmp/app/app.c"
     ],
     "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
-    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/history_db.c",
-    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/history_db.o"
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/app.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/app.o"
   },
   {
     "arguments": [
@@ -2338,12 +2430,12 @@
       "dummyinc",
       "-mcpu=cortex-a55",
       "-o",
-      "tmp/app/dcfactor.o",
-      "tmp/app/dcfactor.c"
+      "tmp/app/csv_rw.o",
+      "tmp/app/csv_rw.c"
     ],
     "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
-    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/dcfactor.c",
-    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/dcfactor.o"
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/csv_rw.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/csv_rw.o"
   },
   {
     "arguments": [
@@ -2384,12 +2476,12 @@
       "dummyinc",
       "-mcpu=cortex-a55",
       "-o",
-      "tmp/app/csv_rw.o",
-      "tmp/app/csv_rw.c"
+      "tmp/app/dcfactor.o",
+      "tmp/app/dcfactor.c"
     ],
     "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
-    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/csv_rw.c",
-    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/csv_rw.o"
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/dcfactor.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/dcfactor.o"
   },
   {
     "arguments": [
@@ -2437,6 +2529,52 @@
     "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/down_panel_prog.c",
     "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/down_panel_prog.o"
   },
+  {
+    "arguments": [
+      "/home/juni/workspace/T536/SYYFX/t536_f1_linux_sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc",
+      "-c",
+      "-O2",
+      "-g",
+      "-Wshadow",
+      "-Wformat",
+      "-w",
+      "-W",
+      "-Wno-unused-parameter",
+      "-Wno-unused-but-set-variable",
+      "-Wno-pointer-sign",
+      "-Wno-date-time",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/rt_lite/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/fuxi_bsp/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/bsp_share",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/get_keyword",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/gps",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/xdljd",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/sys_api",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/cobalt",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/trank",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/app",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+      "-DGW_AREA_MAIN_2021",
+      "-DCPU_FUXI",
+      "-DMACHINE_NULL",
+      "-D_GNU_SOURCE",
+      "-D_REENTRANT",
+      "-fasynchronous-unwind-tables",
+      "-D__COBALT__",
+      "-D__COBALT_WRAP__",
+      "-idirafter",
+      "dummyinc",
+      "-mcpu=cortex-a55",
+      "-o",
+      "tmp/app/Down.o",
+      "tmp/app/Down.c"
+    ],
+    "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/Down.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/Down.o"
+  },
   {
     "arguments": [
       "/home/juni/workspace/T536/SYYFX/t536_f1_linux_sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc",
@@ -5657,6 +5795,52 @@
     "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/base64.c",
     "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/base64.o"
   },
+  {
+    "arguments": [
+      "/home/juni/workspace/T536/SYYFX/t536_f1_linux_sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc",
+      "-c",
+      "-O2",
+      "-g",
+      "-Wshadow",
+      "-Wformat",
+      "-w",
+      "-W",
+      "-Wno-unused-parameter",
+      "-Wno-unused-but-set-variable",
+      "-Wno-pointer-sign",
+      "-Wno-date-time",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/rt_lite/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/fuxi_bsp/include",
+      "-I/home/juni/workspace/T536/T536_DTU/app_public/fuxi_public/bsp_share",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/get_keyword",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/gps",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/xdljd",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app_public/sys_api",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/cobalt",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/xenomai/include/xenomai/trank",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/app",
+      "-I/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+      "-DGW_AREA_MAIN_2021",
+      "-DCPU_FUXI",
+      "-DMACHINE_NULL",
+      "-D_GNU_SOURCE",
+      "-D_REENTRANT",
+      "-fasynchronous-unwind-tables",
+      "-D__COBALT__",
+      "-D__COBALT_WRAP__",
+      "-idirafter",
+      "dummyinc",
+      "-mcpu=cortex-a55",
+      "-o",
+      "tmp/app/can_board.o",
+      "tmp/app/can_board.c"
+    ],
+    "directory": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536",
+    "file": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/can_board.c",
+    "output": "/home/juni/workspace/T536/T536_DTU/dtu/dtu_main_t536/tmp/app/can_board.o"
+  },
   {
     "arguments": [
       "/home/juni/workspace/T536/SYYFX/t536_f1_linux_sdk/out/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc",

BIN
dtu/dtu_main_t536/dtu_t536


BIN
dtu/dtu_main_t536/ko/GuoWang/dtu_t536


BIN
dtu/dtu_main_t536/out/dtu_t536


+ 4 - 0
dtu/dtu_main_t536/sh/t536/Makefile

@@ -75,6 +75,8 @@ OBJS =  main_mod.o \
 		tmp/fuxi_bsp/source/ustimer.o \
 		tmp/fuxi_bsp/source/watchdog.o \
 		tmp/fuxi_bsp/source/fourier.o \
+		tmp/fuxi_bsp/source/flexcan.o \
+		tmp/fuxi_bsp/source/can_app.o \
 		\
 		tmp/bsp_share/bsp_shm.o \
 		tmp/bsp_share/bsp_share.o \
@@ -93,6 +95,7 @@ OBJS =  main_mod.o \
 		tmp/app/csv_rw.o\
 		tmp/app/dcfactor.o\
 		tmp/app/down_panel_prog.o\
+		tmp/app/Down.o\
 		tmp/app/encrypt_core.o\
 		tmp/app/equ.o\
 		tmp/app/fft.o\
@@ -163,6 +166,7 @@ OBJS =  main_mod.o \
 		tmp/app/lib61850.o\
 		tmp/app/read_id.o\
 		tmp/app/base64.o\
+		tmp/app/can_board.o\
 		\
 		tmp/app/printf_e907.o\
 		tmp/app/fuxi_shm_app.o\