feat: 🎨 合并 接收端 ctrl 控制代码
This commit is contained in:
parent
7e1adb1cef
commit
14deafb3a8
@ -57,17 +57,21 @@ struct sockaddr_in server_addr_case52; //
|
|||||||
|
|
||||||
#define MAP_SIZE_CASE52 1028096 //
|
#define MAP_SIZE_CASE52 1028096 //
|
||||||
#define MAP_SIZE_ST_CASE52 4096 // 4096
|
#define MAP_SIZE_ST_CASE52 4096 // 4096
|
||||||
// #define MAP_ADDR_TX_BASE_CASE52 0x84C00000 // TX 数据位起始
|
#define CTRL_BUFFER_SIZE 1024
|
||||||
|
// #define MAP_ADDR_TX_BASE_CASE52 0x84C00000 // TX 数据位起始
|
||||||
|
#define UCP4008_CTRL_PHYSADDR 0x82000000 // 接收开关
|
||||||
#define MAP_ADDR_RX_BASE_CASE52 0x85001000 // RX 数据位起始
|
#define MAP_ADDR_RX_BASE_CASE52 0x85001000 // RX 数据位起始
|
||||||
#define MAP_ADDR_RXFLAG_DATA_CASE52 0x85000000 // wr 计数起始位
|
#define MAP_ADDR_RXFLAG_DATA_CASE52 0x85000000 // wr 计数起始位
|
||||||
|
|
||||||
int mem_fd_case52; // 统一文件描述符
|
int mem_fd_case52; // 统一文件描述符
|
||||||
ssize_t send_len;
|
ssize_t send_len;
|
||||||
// void *map_base_tx_case52; // TX映射地址 20块
|
// void *map_base_tx_case52; // TX映射地址 20块
|
||||||
|
void *ucp4008_ctrl_mmap_base; // 接受开关映射地址
|
||||||
void *map_base_rx_case52; // RX映射地址 8块
|
void *map_base_rx_case52; // RX映射地址 8块
|
||||||
void *map_base_rxf_case52; // wr 计数映射地址
|
void *map_base_rxf_case52; // wr 计数映射地址
|
||||||
uint8_t w_idx, r_idx; // RX 信号
|
uint8_t w_idx, r_idx; // RX 信号
|
||||||
uint16_t udp_data_buffer[8008];
|
uint16_t udp_data_buffer[8008];
|
||||||
|
volatile uint32_t *mapped_addr;
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
|
|
||||||
volatile uint32_t slot_ind_flag = 0;
|
volatile uint32_t slot_ind_flag = 0;
|
||||||
@ -110,6 +114,7 @@ void *handleUdpTransmission(void *arg)
|
|||||||
perror("open /dev/mem");
|
perror("open /dev/mem");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TX
|
// TX
|
||||||
// printf("[mmap]:/*************** mmap_tx ***************/\n");
|
// printf("[mmap]:/*************** mmap_tx ***************/\n");
|
||||||
// map_base_tx_case52 = mmap(NULL, MAP_SIZE_CASE52, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd_case52, MAP_ADDR_TX_BASE_CASE52);
|
// map_base_tx_case52 = mmap(NULL, MAP_SIZE_CASE52, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd_case52, MAP_ADDR_TX_BASE_CASE52);
|
||||||
@ -120,6 +125,7 @@ void *handleUdpTransmission(void *arg)
|
|||||||
// exit(EXIT_FAILURE);
|
// exit(EXIT_FAILURE);
|
||||||
// }
|
// }
|
||||||
// printf("[mmap]: tx ready\n");
|
// printf("[mmap]: tx ready\n");
|
||||||
|
|
||||||
// RX
|
// RX
|
||||||
printf("[mmap]:/*************** mmap_rx ***************/\n");
|
printf("[mmap]:/*************** mmap_rx ***************/\n");
|
||||||
map_base_rx_case52 = mmap(NULL, MAP_SIZE_CASE52, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd_case52, MAP_ADDR_RX_BASE_CASE52);
|
map_base_rx_case52 = mmap(NULL, MAP_SIZE_CASE52, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd_case52, MAP_ADDR_RX_BASE_CASE52);
|
||||||
@ -131,6 +137,7 @@ void *handleUdpTransmission(void *arg)
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
printf("[mmap]: rx ready\n");
|
printf("[mmap]: rx ready\n");
|
||||||
|
|
||||||
// RX_FLAG
|
// RX_FLAG
|
||||||
printf("[mmap]:/************** rx_flag ***************/\n");
|
printf("[mmap]:/************** rx_flag ***************/\n");
|
||||||
map_base_rxf_case52 = mmap(NULL, MAP_SIZE_ST_CASE52, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd_case52, MAP_ADDR_RXFLAG_DATA_CASE52);
|
map_base_rxf_case52 = mmap(NULL, MAP_SIZE_ST_CASE52, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd_case52, MAP_ADDR_RXFLAG_DATA_CASE52);
|
||||||
@ -143,6 +150,56 @@ void *handleUdpTransmission(void *arg)
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
printf("[mmap]: wr_idx ready\n");
|
printf("[mmap]: wr_idx ready\n");
|
||||||
|
|
||||||
|
// ucp4008_ctrl
|
||||||
|
ucp4008_ctrl_mmap_base = mmap(
|
||||||
|
NULL,
|
||||||
|
MAP_SIZE_ST_CASE52,
|
||||||
|
PROT_READ | PROT_WRITE,
|
||||||
|
MAP_SHARED,
|
||||||
|
mem_fd_case52,
|
||||||
|
UCP4008_CTRL_PHYSADDR
|
||||||
|
);
|
||||||
|
if (ucp4008_ctrl_mmap_base == MAP_FAILED) {
|
||||||
|
printf("[mmap]: ucp4008_ctrl mapping failed!\n");
|
||||||
|
perror("ucp4008_ctrl error");
|
||||||
|
close(mem_fd_case52);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
// udp_ctrl
|
||||||
|
char *ctrl_message = "ready";
|
||||||
|
sendto(sockfd_case52, ctrl_message, strlen(ctrl_message), 0,
|
||||||
|
(struct sockaddr *)&server_addr_case52, sizeof(server_addr_case52));
|
||||||
|
printf("[sendto]:%s\n", message);
|
||||||
|
|
||||||
|
char ctrl_buffer[CTRL_BUFFER_SIZE];
|
||||||
|
struct sockaddr_in from_addr;
|
||||||
|
socklen_t from_addr_len = sizeof(from_addr);
|
||||||
|
int recv_len
|
||||||
|
int strcmp_flag = 1;
|
||||||
|
|
||||||
|
while (strcmp_flag)
|
||||||
|
{
|
||||||
|
recv_len = recvfrom(sockfd_case52, ctrl_buffer, CTRL_BUFFER_SIZE, 0,
|
||||||
|
(struct sockaddr *)&from_addr, &from_addr_len);
|
||||||
|
if (recv_len < 0) {
|
||||||
|
printf("[recv_len]:recv_len < 0\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
ctrl_buffer[recv_len] = '\0';
|
||||||
|
printf("[recvfrom]:%s\n", ctrl_buffer);
|
||||||
|
if (strcmp(ctrl_buffer, "ok") == 0) {
|
||||||
|
//usleep(1000000);
|
||||||
|
printf("[mmap]:wr...\n");
|
||||||
|
mapped_addr = (volatile uint32_t *)ucp4008_ctrl_mmap_base;
|
||||||
|
*mapped_addr = 0xA5A55A5A;
|
||||||
|
print("[mmap]: wr 0xA5A55A5A done :) \n");
|
||||||
|
strcmp_flag = 0;
|
||||||
|
} else {
|
||||||
|
printf("[recvfrom]:strcmp no ok!\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 初始化消费者索引
|
// 初始化消费者索引
|
||||||
/************************************************************************************** */
|
/************************************************************************************** */
|
||||||
r_idx = 0;
|
r_idx = 0;
|
||||||
@ -194,6 +251,12 @@ void *handleUdpTransmission(void *arg)
|
|||||||
// printf("[while(1)]:/*************************************/\n");
|
// printf("[while(1)]:/*************************************/\n");
|
||||||
// size_t current_pos = 0;
|
// size_t current_pos = 0;
|
||||||
// uint16_t value_mem = 0;
|
// uint16_t value_mem = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t block_n = 0;
|
uint8_t block_n = 0;
|
||||||
uint8_t cut_i = 0;
|
uint8_t cut_i = 0;
|
||||||
while (1)
|
while (1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user