赞
踩
在arm开发板上主要基于C语言 虚拟机的使用 。而在操作一个系统必须的 三大步骤
1、open 函数 打开文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>//open 函数所需要的头文件在学习使用一个函数时了解它的函数作用及头文件
int open(const char *pathname, int flags);//函数返回类型是int 函数类型(文件路径,操作权限)通常权限有三种 O_RDONLY 只读
O_WRONLY 只写
O_RDWR 读写
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
int openat(int fd, const char *pathname, int flags);fd 叫文件描述符
int openat(int fd, const char *pathname, int flags, mode_t mode);
2、write 函数 写入
#include <unistd.h>write 函数所需的头文件
ssize_t write(int fd, const void *buf, size_t count);
//函数名(fd文件描述符“实际就是open函数的返回文件”,void * 万能指针 //一般来说是写入的内容,写入内容的大小)
要求某个字符串的 大小 就是 利用 string
#include <string.h>
size_t strlen(const char *s);
s:你要求长度的字符串
返回值即是这个字符串的长度 不包含\0
3、close 函数 关闭
#include <unistd.h>//close 函数所需要的头文件
int close(int fd);函数名(fd 文件描述符)
模块化设计
首先在文件中设置打开文件的open函数
在上LcdInit() 函数中利用映射
映射
#include <sys/mman.h> mmap 映射所需要的头文件
void *mmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset);//addr:表示的是地址 一般填写NUL为系统默认地址;
size_t length :表示的是 映射的东西的大小;而在这个地方我们用的 是arm开发板所以是800*480*4(4表示的 是字节数)
int prot:表示映射后对于内存的操作权限一般来说有三种
PROT_READ 只读
PROT_WRITE 只写
PROT_READ | PROT_WRITE 读写
int flags:映射权限 有两种、
1、MAP_SHARED 表示公有映射 表示对于该内存的操作可以直接影响文件。
2、MAP_PRIVATE 表示私有映射 分配给你自己一块内存仅限在那一块内存操作文件
fd:映射的文件 你要映射那个文件
myint munmap(void *addr, size_t length);
addr :映射的路径 size_t length:映射内容的大小
此模块是建立空白背景的模块需要(在前期我们无法优化背景,因此我们给背景上色需要利用这个模块);此处Display中x+x0 表示的是长 y+y0表示的是宽,它是后面构造的一个给显示屏上色的一个函数模块如下:
这个便是利用了映射。
下面是关闭映射的函数:
而接下来我们便要构造一个方块来表示小鸟让它向上移动向下移动
上边的两个便是小鸟向上移动,向下移动的函数模块
接下来我们需要设置当我们点击触摸屏幕的时候小鸟的状态
这个便是我们点击触摸屏幕时系统做出的各项反应 也是我们在学习了解设计程序时的需要。
在linux系统里触摸屏也是一个硬件他在的文件夹路径是/dev/input/even0 因此我们要写入这个文件夹 要使用open函数 在此处默认以阻塞式打开这个文件同样的 是我们也要给他读写权限。在此我们的触摸屏有x方向和y方向两个方向 属于二维的空间 而我们的内存属于一个一维的空间我们需要利用函数体来让它转化为一维保存所以我们定义一个struct input_even ev结构体他的头文件是#include<linux/input.h>
后续的在下词更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。