| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /******************************************************************************
- 版权所有: @copyright (C) 2024-2034 HaiYang Technology Corp. All rights reserved.
- 文件名称: shm.c
- 文件版本: 01.01
- 创建作者: zhaoyang
- 创建日期: 2025-08-21
- 功能说明: 共享内存驱动头文件
- 其它说明:
- 修改记录:
- */
- #ifndef _BSP_SHM_H_
- #define _BSP_SHM_H_
- #include <stdlib.h>
- #include <stdint.h>
- #define SHM_ADDR_U_ADC_1 0x00040000 //第一片AD7616 采样数据区
- #define SHM_ADDR_U_ADC_2 0x00060000 //第二片AD7616 采样数据区
- #define SHM_ADDR_U_ADC_3 0x00080000 //第三片AD7616 采样数据区
- #define SHM_ADDR_U_ADC_4 0x000A0000 //第四片AD7616 采样数据区
- #define SHM_ADC_SIZE (SHM_ADDR_U_ADC_2 - SHM_ADDR_U_ADC_1)
- /*
- noted by zhaoyang:
- 共享内存使用说明:
- 共享内存总大小为4M,每为读空间和写空间,各4M;
- 读空间为linux核向裸核读取数据的空间,linux核只读,裸核只写;
- 写空间为linux核向裸核写入数据的空间,linux核只写,裸核只读;
- 如:
- u8 a = SHM_BASE_R[0]; ----- linux核读取共享内存的第1个字节数据
- SHM_BASE_W[0] = 0x55; ----- linux核向共享内存的第1个字节写入数据
- 可以用接口函数操作,shm_read 和shm_write;
- 也可以直接操作SHM_BASE_R和SHM_BASE_W;
- 注意:
- 因为读空间和写空间是不一样的,所以shm_read(addr=0)和shm_read(addr=0),
- 他们操作的空间是不一样的。
- */
- #define SHM_MAX_SIZE 0x400000 //共享内存的大小,读和写空间各有4M
- extern uint8_t *SHM_BASE_R; //共享内存---读(从裸核读取数据)---开始地址
- extern uint8_t *SHM_BASE_W; //共享内存---写(向裸核写入数据)---开始地址
- /******************************************************************************
- 函数名称: shm_read
- 函数版本: 01.01
- 创建作者: zhaoyang
- 创建日期: 2025-08-21
- 函数说明: 读取共享内存的数据.
- 参数说明:
- addr:所以读取共享内存的地址
- len:需要读取数据的长度
- out_data:输出buf
- out_data_size:输出buf的长度
- 返回值: 成功返回读取数据的长度, 失败返回-1
- 修改记录:
- */
- int shm_read(uint32_t addr, uint32_t len, uint8_t *out_data, uint32_t out_data_size);
- /******************************************************************************
- 函数名称: shm_write
- 函数版本: 01.01
- 创建作者: zhaoyang
- 创建日期: 2025-08-21
- 函数说明: 向共享内存写入数据.
- 参数说明:
- addr:共享内存的地址
- data:写入数据
- len:写入数据长度
- 返回值: 成功返回写入数据的长度, 失败返回-1
- 修改记录:
- */
- int shm_write(uint32_t addr, uint8_t *data, uint32_t len);
- /******************************************************************************
- 函数名称: shm_init
- 函数版本: 01.01
- 创建作者: zhaoyang
- 创建日期: 2025-08-21
- 函数说明: shm初始化.
- 参数说明:
- 无
- 返回值: 成功返回0, 失败返回-1
- 修改记录:
- */
- int shm_init(void);
- /******************************************************************************
- 函数名称: shm_exit
- 函数版本: 01.01
- 创建作者: zhaoyang
- 创建日期: 2025-08-21
- 函数说明: shm反初始化.
- 参数说明:
- 无
- 返回值: 总是返回0.
- 修改记录:
- */
- int shm_exit(void);
-
- #endif
- /*------------------------------ 文件结束 -------------------------------------
- */
|