#粤嵌星计划
粤嵌星计划,粤嵌我来了
一、文件分类
linux下一切皆文件,这是学linux的公知,而文件也分很多种,下面进行简单介绍:
1、普通文件:像.c,.h,.txt,.bmp,.mp3等都是普通文件,在linux下用‘-’来标注;
2、目录文件:也就是文件夹,用‘d’标注;
3、设备文件:分为块设备文件(如硬盘)和字符设备文件(如键盘),前者用‘b’标注,后者用‘c’标注;
4、套接字文件:网络编程时操作的网络文件,以‘s’标注;
5、链接文件:大致相当于windows的快捷方式,以‘l’标注;
6、管道文件:FIFO(先进先出),以‘p’标注。
二、开发板液晶屏介绍
1、文件路径:/dev/fb0
2、分辨率:800*480
3、液晶屏的使用跟普通文件的使用并无差别,都是对文件进行读写操作,一般只会对液晶屏进行写操作
4、800*480代表像素点的个数,也就是开发板一行有800个像素点,总共有480行;每个像素点都是用ARGB组成,A代表色深,也就是透明度,RGB代表三原色,也就是红绿蓝,ARGB每个占1字节,所以应该像素点的大小为4字节。
三、内存映射
内存映射:因为在对液晶屏进行写入时,由于write的效率太低,可以通过内存映射来解决,内存映射就是把液晶屏的内存映射出一块虚拟内存,对这块内存进行直接操作,可达到直接影响液晶屏的效果。
头文件:#include
void *mmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset);
参数一:如果映射成功,返回的虚拟内存首地址,与返回值一样,一般传NULL
参数二:需要申请的映射内存大小的字节数
参数三:映射成功后该内存的使用权限,一般写可读可写:PROT_READ | PROT_WRITE
参数四:映射内存的开放性,对于申请内存的对外开放程度,一般选择共享:MAP_SHARED(即其他进程和线程也可以使用)
参数五:要映射的文件或设备的文件描述符
参数六:偏移量,一般写0
返回值:成功返回一个虚拟内存的首地址;失败返回NULL。
int munmap(void *addr, size_t length);
功能:解除映射
参数一:需要解除映射的内存首地址,即mmap的返回值
参数二:解除映射的内存大小一般跟mmap的参数二一致
粤嵌星计划,粤嵌我来了
一、文件分类
linux下一切皆文件,这是学linux的公知,而文件也分很多种,下面进行简单介绍:
1、普通文件:像.c,.h,.txt,.bmp,.mp3等都是普通文件,在linux下用‘-’来标注;
2、目录文件:也就是文件夹,用‘d’标注;
3、设备文件:分为块设备文件(如硬盘)和字符设备文件(如键盘),前者用‘b’标注,后者用‘c’标注;
4、套接字文件:网络编程时操作的网络文件,以‘s’标注;
5、链接文件:大致相当于windows的快捷方式,以‘l’标注;
6、管道文件:FIFO(先进先出),以‘p’标注。
二、开发板液晶屏介绍
1、文件路径:/dev/fb0
2、分辨率:800*480
3、液晶屏的使用跟普通文件的使用并无差别,都是对文件进行读写操作,一般只会对液晶屏进行写操作
4、800*480代表像素点的个数,也就是开发板一行有800个像素点,总共有480行;每个像素点都是用ARGB组成,A代表色深,也就是透明度,RGB代表三原色,也就是红绿蓝,ARGB每个占1字节,所以应该像素点的大小为4字节。
三、内存映射
内存映射:因为在对液晶屏进行写入时,由于write的效率太低,可以通过内存映射来解决,内存映射就是把液晶屏的内存映射出一块虚拟内存,对这块内存进行直接操作,可达到直接影响液晶屏的效果。
头文件:#include
void *mmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset);
参数一:如果映射成功,返回的虚拟内存首地址,与返回值一样,一般传NULL
参数二:需要申请的映射内存大小的字节数
参数三:映射成功后该内存的使用权限,一般写可读可写:PROT_READ | PROT_WRITE
参数四:映射内存的开放性,对于申请内存的对外开放程度,一般选择共享:MAP_SHARED(即其他进程和线程也可以使用)
参数五:要映射的文件或设备的文件描述符
参数六:偏移量,一般写0
返回值:成功返回一个虚拟内存的首地址;失败返回NULL。
int munmap(void *addr, size_t length);
功能:解除映射
参数一:需要解除映射的内存首地址,即mmap的返回值
参数二:解除映射的内存大小一般跟mmap的参数二一致
#粤嵌星计划,粤嵌我来了#粤嵌星计划
今日知识分享:
UDP通信协议:
面向非连接的,不可靠的通信协议。
相关函数
1) sendto UDP数据包发送函数
#include
#include
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
sockfd : UDP套接字
buf : 需要发送的消息的缓冲区
len : 消息的大小
flags : 标志 默认为0
dest_addr : 存放接收方的地址结构体指针
addrlen : 地址结构体的大小
返回值:实际发送的字节数,失败返回-1
2) recvfrom UDP数据包接收函数
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
sockfd:UDP套接字、
buf : 存放接收到的消息的缓冲区
len : 一次想要接收的消息的大小
flag : 标志 0
src_addr : 发送方的地址结构体指针
addrlen : 存放发送方的地址结构体大小
返回值:成功返回实际读取的字节数,没有读取到数据返回0,失败返回-1
今日知识分享:
UDP通信协议:
面向非连接的,不可靠的通信协议。
相关函数
1) sendto UDP数据包发送函数
#include
#include
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
sockfd : UDP套接字
buf : 需要发送的消息的缓冲区
len : 消息的大小
flags : 标志 默认为0
dest_addr : 存放接收方的地址结构体指针
addrlen : 地址结构体的大小
返回值:实际发送的字节数,失败返回-1
2) recvfrom UDP数据包接收函数
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
sockfd:UDP套接字、
buf : 存放接收到的消息的缓冲区
len : 一次想要接收的消息的大小
flag : 标志 0
src_addr : 发送方的地址结构体指针
addrlen : 存放发送方的地址结构体大小
返回值:成功返回实际读取的字节数,没有读取到数据返回0,失败返回-1
#粤嵌星计划#
(第九周第二次)
今天分享下UDP通信流程
发送方:
创建 UDP 套接字: int fd = socket();
准备好接收方的地址:struct sockaddr_in peerAddr;
给对方发送 UDP 数据报:sendto(fd, peerAddr);
接收方:
创建 UDP 套接字:int fd = socket();
准备好自己的地址:struct sockaddr_in addr;
绑定套接字和地址:bind(fd, addr);
坐等各方发来的 UDP 数据报:recvfrom(fd);
(第九周第二次)
今天分享下UDP通信流程
发送方:
创建 UDP 套接字: int fd = socket();
准备好接收方的地址:struct sockaddr_in peerAddr;
给对方发送 UDP 数据报:sendto(fd, peerAddr);
接收方:
创建 UDP 套接字:int fd = socket();
准备好自己的地址:struct sockaddr_in addr;
绑定套接字和地址:bind(fd, addr);
坐等各方发来的 UDP 数据报:recvfrom(fd);
✋热门推荐