以Mini2440为例,其Linux内核目录为/opt/FriendlyARM/mini2440/linux-2.6.32.2,在linux-2.6.32.2(Linux内核目录)下的drivers目录下新建目录名为add_sub_Kconfig. 在add_sub_Kconfig目录下新建文件add_sub.c,add_sub.h,test_communication.c,代码如下:(例子来自<Linux驱动开发入门与实践 第2版>) #ifndef ADD_SUB_H #define AD…
Linux下多任务间通信和同步-信号 嵌入式开发交流群280352802,欢迎加入! 1.概述 信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式.信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件.它可以在任何时候发给某一进程,而无需知道该进程的状态.如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程.信号是进程…
Linux下多任务间通信和同步-概述 嵌入式开发交流群280352802,欢迎加入! 在前面,我们学习了两种多任务的实现手段:进程和线程.由于进程是工作在独立的内存空间中,不同的进程间不能直接访问到对方的内存空间,因而需要某种方式来通信.而同一进程内的线程共享内存空间,很容易实现数据共享,但需要严格控制多线程对同一内存地址的访问,因而需要采用某种方式来同步. 在linux中有一些多任务通信和同步的方式,有的方式既能实现通信又能实现同步,有的方式不但进程能用线程也能用,因此我们将这些东西放在一起来…
Linux下多任务间通信和同步-消息队列 嵌入式开发交流群280352802,欢迎加入! 简介 消息队列简称为队列.消息队列就是一些消息的列表.用户可以在消息队列中添加消息和读取消息等.从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势.同时,这些消息又是存在于内核中的,由"队列ID"来标识. 消息队列的实现包括创建或打开消息队列,添加消息,读取消息和控制消息队列这四种操作: 创建或打开消息队列使用的函数是msgget,这里创建的消息队列…
Linux下多任务间通信和同步-mmap共享内存 嵌入式开发交流群280352802,欢迎加入! 1.简介 共享内存可以说是最有用的进程间通信方式.两个不用的进程共享内存的意思是:同一块物理内存被映射到两个进程的各自的进程地址空间.一个进程可以及时看到另一个进程对共享内存的更新,反之亦然. 采用共享内存通信的一个显而易见的好处效率高,因为进程可以直接读写内存,而不需要任何数据的复制.对于向管道和消息队列等通信等方式,则需要在内核和用户空间进行四次的数据复制,而共享内存则只需要两次数据复制:一次从…
目录 概述 关于程序的编译和链接 Makefile 介绍 Makefile的规则 一个演示例子 make是怎样工作的 makefile中使用变量 让make自己主动推导 另类风格的makefile 清空目标文件的规则 Makefile 总述 Makefile里有什么? Makefile的文件名称 引用其他的Makefile 环境变量 MAKEFILES make的工作方式 书写规则 规则举例 规则的语法 在规则中使用通配符 文件搜寻 伪目标 多目标 静态模式 自己主动生成依赖性 书写命令 显示命…
在Linux(以Redhat Linux Enterprise Edition 5.3为例)下,有时需要编写Service.Service也是程序,一般随系统启动用户不干预就不退出的程序,可以称为Service.Linux下的Service一般称为Daemon. 以上是广义的Service的定义.Linux下的服务一般放在/etc/init.d文件夹下.浏览一下这个文件夹下的文件,可以发现在Linux下编写Service一般遵循的原则. Linux下编写Service一般遵循的原则 1)真正运行…
一.在Ubuntu\Linux 下编写及调试C\C++需要配置基本的环境,即配置gcc编译器.安装vim编译器,具体配置安装步骤我在这里就不多说了. 二.基本环境配置完了我们就可以进入自己的程序编写了,为了方便起见,我们可以新建一个文件专一放自己的程序代码. 基本步骤如下: 1.vim hello.c /hello.cpp     //进入编辑器后按 i 进入insert模式,开始编写你的代码 2.编写完后,按Esc退出编辑;按:wq 保存退出vim编辑器 3.编译,C语言:gcc -o hel…
一..ko 文件介绍 .ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载. 二.优点 (1)这样可以缩小内核体积: (2)使用方便. 三..ko文件一般的用处 (1)作为一个功能模块,需要使用时,直接插入运行就行.如在imx6上连接模拟摄像头,先运行模拟摄像头对应的驱动模块 camera.ko文件,然后对应的工程执行文件运行就行. 四.使用.ko 文件 1.加载驱动模块test.ko (1)方法一 进入tes…
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP  入门级客户端与服务端交互代码 网络编程和套接字 网络编程其实和我们计算机上的文件读取操作很类似,通俗地讲,网络编程就是编写程序使两台联网的计算机相互交换数据.那么,数据具体怎么传输呢?其实操作系统会提供名为“套接字”的部件,套接字就是网络数据传输用的软件设备而已.即使你对网络数据传输原理不太熟悉,你也可以通过套接字完成数据传输.因…