- 博客(58)
- 资源 (1)
- 收藏
- 关注
原创 C++中常用特殊符号简介(: , :: ,)
“::”类作用域操作符。“::”指明了成员函数所属的类。如:M::f(s)就表示f(s)是类M的成员函数。1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedefstruct_XXX{unsigned char a:4;unsigned char c;} ; XXX(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。struct _XXX{_XXX() : y(0xc0) {}};(3) ..
2022-05-08 11:38:27
7919
原创 Makefile知识记录
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所...
2022-04-27 23:36:39
304
原创 linux读取整个文件
#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h> FILE * pFile; long lSize; char * buffer; size_t result; /* 若要一个byte不漏地读入整个文件,只能采用二进制方式打开 */ pFile = fopen ("./test/dd.txt", .
2022-04-27 15:58:17
797
原创 Linux系统串口接收数据编程
linux串口接收数据,目前有三种方法:一:循环读取数据。二:通过软中断方式,使用信号signal机制读取串口,这里需要注意的是硬件中断是设备驱动层级的,而读写串口是用户级行为,只能通过信号机制模拟中断,信号机制的发生和处理其实于硬件中断无异。该方法问题。 异步通知的方式释放SIGIO信号实现应用层到内核的访问,现在发现当SIGIO信号释放时,应用程序的sleep会被中断。 SIGIO本来就是利用内核的软中断实现的,不想影响你的sleep,那么你就用多路复用IO的方式。
2022-01-19 12:27:32
9968
1
转载 用openssh 登录开发板
源码及依赖库:编译openssl若需openssh支持Openssl,还需进行Openssl的安装,否则跳过本小节。解压并进入Openssl目录:tar -zxvf openssl-1.0.2p.tar.gzcd openssl-1.0.2p配置环境:export CC=arm-himix100-linux-gcc配置Openssl:./Configure \--prefix=/usr/local/openssl \--openssldir=/usr/lib/ss
2022-01-16 14:26:01
639
原创 TCP UDP SOECKET记录
char Buf[256] = {0}; int optval = 1,recv_len,i=0; struct sockaddr_in LocalSockAddr; int RemotServerFd = 0; int addr_len=0; struct sockaddr_in Remote_addr; Remote_addr.sin_family = AF_INET; Remote_addr.sin_addr.s_addr = inet_addr("192.168.66.84")..
2021-12-19 09:20:53
521
转载 linux线程间通信及同步机制总结
线程间的通信有两种情况:1、一个进程中的线程与另外一个进程中的线程通信,由于两个线程只能访问自己所属进程的地址空间和资源,故等同于进程间的通信。2、同一个进程中的两个线程进行通信。本文说的就是第二种情况。关于进程间通信(IPC)可以看我的另一篇博文http://blog.youkuaiyun.com/a987073381/article/details/52006729比起进程复杂的通信机制(管道、匿名管道、消息队列、信号量、共享内存、内存映射以及socket等),线程间通信要简单...
2021-12-15 09:45:36
421
转载 动态库制作和使用简介-转载
动态库制作和使用简介 在Linux中制作动态链接库只需要使用好GCC这两个编译选项即可搞定,下面小哥画了一张图简单的说明了下:过程简要说明: 其实链接库的生成过程也可以先分别生成位置无关的目标文件.o文件,然后再创建生成最终的.so动态链接文件。不过gcc可以直接使用这两个编译选项一次性生成。2动态链接库制作过程01准备源文件 这里小哥还是使用昨天的两个module作为例子来讲解动态链接过程,这里就不板书了,可以到上一...
2021-12-12 21:24:40
196
转载 自己动手做一个USB摄像头--转载
手里有一块AT32的开发板和一个OV2640摄像头模块,因为做智能车模型需要一个摄像头,就想能不能废物利用一下,用这俩做一个即插即用的USB摄像头,能够直接用在树莓派的Linux系统上,而不需要在Linux上再另外开发摄像头驱动了。但真正做起来之后才发现,淘宝上几十块一个的摄像头开发起来竟然这么麻烦,涉及到了很多东西,完完全全是一个大坑,断断续续做了两个来月才总算实现了。期间一度想直接下单一个,又清晰又稳定,但想想还是不甘心,谁让当初就这么下手了呢。。o(╥﹏╥)o在本文中,我将从下面四个.
2021-12-12 16:17:15
11100
2
原创 君正T31 ACC解码
faad2是AAC音频解码的lib,支持MPEG2和MPEG4格式的audio解码。代码下载网址:https://www.linuxfromscratch.org/blfs/view/svn/multimedia/faad2.html。解压:tar xvzf faad2-2_10_0.tar.gzcd faad2-2_10_0/./configure --host=mips-linux-gnu CC=mips-linux-uclibc-gnu-gcc --enable-shared --pre.
2021-12-11 21:45:03
2863
1
原创 BIN文件和HEX文件差异
Hex文件和Bin文件是什么Hex文件是以ASCII文本形式保存编译后的二进制文件信息。Hex文件使用ASCII文本的形式保存Bin文件的内容和Bin文件的一些配置信息。Hex文件可以由下载器(比如jlink)烧写到MCU的ROM中。Bin文件是MCU固件烧写的最终形式,也就是说MCU的ROM中烧写的内容完全就是Bin文件的内容。Hex文件和Bin文件的关系Hex文件可以说是MCU固件的中间形式,由下载器的软件根据Hex文件生成Bin文件再烧写到MCU的ROM中。既然Bin文件是最终我们想要的,
2021-12-05 21:35:52
5314
原创 linux nm 指令
查询 动态库libsdl.so 中有没有 ugw_dev_log_func 函数nm libsdl.so |grep ugw_dev_log_func如果有会输出:00040e44 T ugw_dev_log_func详细的用法可以参考linux中的nm命令简介 - _小百 - 博客园
2021-12-02 18:40:14
1003
原创 P-MOS N-MOS使用
当Vgs<0,即Vs>Vg,管子导通。S点的电压会传到D点。当Vgs>0,即G点电压大于S点电压,管子就会导通,D点电压就会传到S点
2021-12-02 12:26:41
724
原创 Linux下进程间通信方式——使用消息队列
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、在Linux中使用消息队列Linux提供了一系列消息队列的函数接口来让我们方便地使用它来实现进程间的通信。它的用法与其他两.
2021-11-16 16:01:43
564
原创 Linux动态库生成以及调用
Linux下动态库文件的文件名形如libxxx.so,其中so是 Shared Object 的缩写,即可以共享的目标文件。在链接动态库生成可执行文件时,并不会把动态库的代码复制到执行文件中,而是在执行文件中记录对动态库的引用。程序执行时,再去加载动态库文件。如果动态库已经加载,则不必重复加载,从而能节省内存空间。Linux下生成和使用动态库的步骤如下:编写源文件。 将一个或几个源文件编译链接,生成共享库。 通过-L<path> -lxxx的gcc选项链接生成的li...
2021-11-14 21:27:54
379
原创 pthread_detach 和 pthread_join
一:pthread_join()(1)pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源。(2)函数说明1)头文件 : #include <pthread.h>2)函数定义: int pthread_join(pthread_t thread, void **retval);3)描述 :pthread_join()函数,以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立
2021-11-06 12:00:32
568
原创 arm linux设置开机自动登录
在menuconfig中使能允许root用密码登录terminal,然后在/etc/inittab文件下做如下更改# Put a getty on the serial port#console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIALconsole::respawn:-/bin/sh
2021-10-26 20:26:22
1275
原创 交叉编译说明。
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。其实./configure、make、makeinstall这三个命令,我们可以用&&来把命令连接起来执行,表示当前一条命令正常结束后,后面的命令才会执行,这个办法很好,既节省时间,又可以防止发生错误。例:./configure&&make&&makeinstallconfigure文件是一个可执行的脚本文件,它有很...
2021-10-24 22:47:13
261
原创 链表合并并排序
#include <stdio.h>#include <stdlib.h>#define LEN 5#define ERROR -1#define OK 0/* 数据元素类型 */typedef int Type ;/* 双链表结点结构体 */typedef struct _DListNode{ struct _DListNode*next ; Type data ;}DListNode ;/* 用于初始化链表 */int...
2021-04-05 22:07:59
407
转载 setsockopt函数
#include <sys/socket.h>int setsockopt( int socket, int level, int option_name,const void *option_value, size_t ,ption_len); 第一个参数socket是套接字描述符。第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为SOL_SOCKET。option_name指定准备设置的选项,option_name可以有哪些取值,..
2021-03-31 07:45:22
190
原创 LINUX中断--申请中断和卸载中断
inlineint__must_checkrequest_irq(unsignedintirq,irq_handler_thandler,unsignedlongflags,constchar*name,void*dev)unsignedintirq:为要注册中断服务函数的中断号,定义在mach/irqs.hirq_handler_thandler:为要注册的中断服务函数unsignedlongirqflags:触发中断的参数,比如边沿触发,定义...
2020-10-23 08:20:36
1031
原创 物理地址、虚拟地址
(1)物理地址CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中内存的,但也常被映射到其他存储器上(如显存、bios等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。(2)总线地址总线的地址线或在地址周期上产生的信号。外设使用的是地址总线,cpu使用的是物理地址。物理地址和总线地址之间的关系有系统设计决定的。在X86平台上,物理地址就是总线地址,这是因为它们共享相同的地址空间。在其他平台上,可能需要转
2020-10-11 21:16:36
2304
原创 LINUX链表学习
使用前需要初始化,内核链表的结构是个双向循环链表,只有指针域,数据域根据使用链表的人的具体需求而定。 两种初始化方法struct list_head { struct list_head *next, *prev;};static inline void INIT_LIST_HEAD(struct list_head *list){ list->next = list; list->prev = list;}#def...
2020-07-05 20:54:26
265
原创 阻塞式按键驱动
#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/delay.h> /*delay*/#include <linux/cdev.h>#include <linux/device.h&g...
2020-04-18 23:19:26
5098
原创 双向链表的使用。
#include <stdio.h>#include <stdlib.h>#define LEN 5#define ERROR -1#define OK 0/* 数据元素类型 */typedef int Type;/* 双链表结点结构体 */typedef struct _DListNode{ struct _DListNode ...
2020-04-07 23:56:36
241
原创 队列的实现
#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct student_grade{ char name[20]; char score;} Student;#define QueueLen 10//Student StudentBuf[Que...
2020-04-07 20:19:35
658
原创 几个重要文件说明
/etc/profile,/etc/bashrc 是系统全局环境变量设定~/.profile,~/.bashrc用户家目录下的私有环境变量设定当登入系统时候获得一个shell进程时,其读取环境设定档有三步1首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如/etc/profile.d和/etc/inputrc2然后根据不同使用者帐号,...
2020-04-03 20:45:20
1475
原创 X210 FIMC驱动
mach-x210.c中,先注册platform设备。static struct resource s3c_fimc0_resource[] = { [0] = { .start = S5P_PA_FIMC0, .end = S5P_PA_FIMC0 + S5P_SZ_FIMC0 - 1, .flags = IORESOURCE_MEM, }, [1] = { .star...
2020-04-01 22:46:32
178
原创 等待队列示例
#include <linux/module.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/cdev.h>#include <linux/slab.h>#include <linux/device.h>#include <linu...
2020-03-31 15:28:08
287
原创 IIC驱动
linux iic驱动体系分三部分。struct i2c_adapter用来描述I2C控制器的,只和主机有关系。换一颗SoC则需要修改该结构体。struct i2c_client I2C从机设备信息struct i2c_driver I2C(从机)设备驱动I2C总线上有2条分支:i2c_client链和i2c_driver链; 当任何一个driver或者client去注册...
2020-03-26 11:59:07
239
原创 自旋锁
spinlock_t *lockspin_lock_init();//初始化spin_lock() ; //上锁spin_unlock() ;//解锁自旋锁和信号量的使用要点(1)自旋锁不能递归(2)自旋锁可以用在中断上下文(信号量不可以,因为可能睡眠),但是在中断上下文中获取自旋锁之前要先禁用本地中断(3)自旋锁的核心要求是:拥有自旋锁的代码必须不能睡眠,要一直持有CPU直...
2020-03-25 20:26:25
367
原创 linux中断处理
linux中断处理的特点。(1)中断上下文,不能和用户空间数据交互(2)不能交出CPU(不能休眠、不能schedule)(3)ISR运行时间尽可能短,越长则系统响应特性越差中断下半部2种解决方案(1)中断分上半部(top half,又叫顶半部)和下半部(bottom half,又叫底半部)(2)下半部处理策略1:tasklet(小任务),类似一直软件中断方式。(3)下半部处理策略2...
2020-03-25 19:23:18
219
原创 Platform总线匹配方法。
如果有idtable就说明驱动支持多个设备,所以要去对比idtable中的所有name。只要找个一个相同的就匹配上了,不用再找。如果idtable都配置完了还没有找到就说明没有匹配上。如果没有idtalbe或者没有匹配上。那就对比device和driver的name。如果匹配上就匹配上,没有匹配上就匹配失败。struct bus_type platform_bus_...
2020-03-24 12:16:09
859
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人