上位机图像处理和嵌入式模块部署(树莓派4b利用驱动实现进程数据共享)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们讨论过,目前在linux系统上面有很多办法可以实现多进程数据共享。这里面比如说管道,比如说共享内存,比如说网络等等。但是这几种方法,总觉得使用不是很方便。管道的话,需要了解对应api;共享内存,则需要了解boost库;而网络编程,一般都需要找一个比较靠谱一点的网络库。思来想去,完全可以通过驱动的方法,实现进程间通信。

1、设计一个字符设备的驱动

        我们都知道,linux下面有三种设备,分别是字符设备、块设备和网络设备。因为我们驱动设置的目的,主要就是为了共享内存使用的,所以这里选用最简单的字符设备就可以了。

sudo insmod share_memory.ko

2、驱动代替了消息分发的功能

        如果有了这个带消息分发功能的驱动,其实就没有必要存在消息分发的应用程序了。因为驱动本身就替我们完成了这样一个工作。驱动启动之后呢,就等着各个模块注册。每个模块自己需要哪些信息,会发送哪些信息,这部分都是可以自定义的。

3、模块收发两条线

        每个模块注册的时候,都要给两个内存,一个是发的memory,一个是收的memory。驱动收到对应的消息之后,会把这个消息转发给对应的模块。因此,每一个模块还要有一个收的memory,这个memory主要是用来接收从别的模块那里传递过来的消息。

4、需要一个分析和debug驱动的应用程序

        一开始的时候,肯定需要一个应用程序来分析一下驱动程序的功能和性能。比如,某个模块收不到消息,某个模块发不出去消息等等,都需要这个应用程序来看下。还有就是性能,理论上说速度是非常快的,但是这里面难免会出现代码bug的情况,所以有一个能调试的应用程序本身,还是非常有必要的。

5、各子程序安全推出阻塞函数

        既然是程序读写,就不可避免地遇到驱动的阻塞函数。这个时候如果强行kill的时候,一定要对现场进行清理和恢复工作。这样下次程序重新加载的时候,还能正常运行使用,不会遇到其他意想不到的问题。

6、辅助sdk的帮助

        除了上面的驱动代码之外,还需要一些辅助代码的帮助,这些主要体现在消息的接受上面,因为发送不会遇到这样的问题。假设我们消息接收的时候,希望有一些特定的函数去处理它,这个时候用户一般注册一个bind函数就好了。但是后台处理的时候,一般还需要sdk做一些额外的工作,比如说消息的bind,比如说函数的查找,再比如是不是需要多线程一起处理等等。这些工作对于使用的同学来说不一定是可见的,所以还需要sdk来进行相应的处理工作。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 22:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 22:54:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 22:54:03       82 阅读
  4. Python语言-面向对象

    2024-04-30 22:54:03       91 阅读

热门阅读

  1. 【Git】修改提交记录的日期和提交信息

    2024-04-30 22:54:03       31 阅读
  2. MySQL-角色管理

    2024-04-30 22:54:03       25 阅读
  3. 「Destiny」Solution

    2024-04-30 22:54:03       36 阅读
  4. Agent AI智能体的崛起和未来社会角色

    2024-04-30 22:54:03       30 阅读
  5. PCL 点云下采样VoxelGrid滤波器

    2024-04-30 22:54:03       30 阅读
  6. 程序员通过用户画像细化客户

    2024-04-30 22:54:03       28 阅读
  7. C#中正则表达式(Regular Expression)

    2024-04-30 22:54:03       35 阅读
  8. 电脑有用快捷键

    2024-04-30 22:54:03       33 阅读
  9. python实现Web开发的工具

    2024-04-30 22:54:03       26 阅读
  10. Python FastApi 解决跨域及OPTIONS预请求处理

    2024-04-30 22:54:03       34 阅读