shm.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /******************************************************************************
  2. 版权所有:
  3. 文件名称: shm.c
  4. 文件版本: 01.01
  5. 创建作者: sunxi
  6. 创建日期: 2022-04-21
  7. 功能说明: 共享内存驱动头文件
  8. 其它说明:
  9. 修改记录:
  10. */
  11. #ifndef _SHM_H_
  12. #define _SHM_H_
  13. /*
  14. noted by sunxi:
  15. 共享内存使用说明:
  16. 共享内存总大小为4M,每为读空间和写空间,各2M;
  17. 读空间为linux核向裸核读取数据的空间,linux核只读,裸核只写;
  18. 写空间为linux核向裸核写入数据的空间,linux核只写,裸核只读;
  19. 如:
  20. u8 a = SHM_BASE_R[0]; ----- linux核读取共享内存的第1个字节数据
  21. SHM_BASE_W[0] = 0x55; ----- linux核向共享内存的第1个字节写入数据
  22. 可以用接口函数操作,shm_read 和shm_write;
  23. 也可以直接操作SHM_BASE_R和SHM_BASE_W;
  24. 注意:
  25. 因为读空间和写空间是不一样的,所以shm_read(addr=0)和shm_read(addr=0),
  26. 他们操作的空间是不一样的。
  27. */
  28. #define SHM_MAX_SIZE 0x200000 //共享内存的大小,读和写空间各有2M
  29. extern uint8_t *SHM_BASE_R; //共享内存---读(从裸核读取数据)---开始地址
  30. extern uint8_t *SHM_BASE_W; //共享内存---写(向裸核写入数据)---开始地址
  31. /******************************************************************************
  32. 函数名称: shm_read
  33. 函数版本: 01.01
  34. 创建作者: sunxi
  35. 创建日期: 2022-04-21
  36. 函数说明: 读取共享内存的数据.
  37. 参数说明:
  38. addr:所以读取共享内存的地址
  39. len:需要读取数据的长度
  40. out_data:输出buf
  41. out_data_size:输出buf的长度
  42. 返回值: 成功返回读取数据的长度, 失败返回-1
  43. 修改记录:
  44. */
  45. int shm_read(uint32_t addr, uint32_t len, uint8_t *out_data, uint32_t out_data_size);
  46. /******************************************************************************
  47. 函数名称: shm_write
  48. 函数版本: 01.01
  49. 创建作者: sunxi
  50. 创建日期: 2022-04-21
  51. 函数说明: 向共享内存写入数据.
  52. 参数说明:
  53. addr:共享内存的地址
  54. data:写入数据
  55. len:写入数据长度
  56. 返回值: 成功返回写入数据的长度, 失败返回-1
  57. 修改记录:
  58. */
  59. int shm_write(uint32_t addr, uint8_t *data, uint32_t len);
  60. /******************************************************************************
  61. 函数名称: shm_init
  62. 函数版本: 01.01
  63. 创建作者: sunxi
  64. 创建日期: 2022-04-21
  65. 函数说明: shm初始化.
  66. 参数说明:
  67. 返回值: 成功返回0, 失败返回-1
  68. 修改记录:
  69. */
  70. int shm_init(void);
  71. /******************************************************************************
  72. 函数名称: shm_exit
  73. 函数版本: 01.01
  74. 创建作者: sunxi
  75. 创建日期: 2022-04-21
  76. 函数说明: shm反初始化.
  77. 参数说明:
  78. 返回值: 总是返回0.
  79. 修改记录:
  80. */
  81. int shm_exit(void);
  82. #endif
  83. /*------------------------------ 文件结束 -------------------------------------
  84. */