目录
1、搭建开发板模拟器环境
(1)将simulator.tar.gz拷贝到虚拟机,解压
(2)在mmap_drv文件夹中打开终端
(3)编译
编译:sudo make
问题1:如果需要清除生成驱动文件,则输入以下内容
sudo make clean
再执行sudo make
问题2:如果出现sudo :make:command not found ,则进行安装即可
sudo apt install make
然后执行提示:/bin/sh:1:gcc-12:not found问题,则执行以下命令安装依赖包即可:
sudo apt install gcc g++ gcc-12-multilib g++-12-multilib
(4)安装生成的驱动文件
sudo insmod mmp_drv.ko
//删除驱动文件:sudo rmmod mmp_drv.ko
驱动模拟文件ko分为自动和手动两种模式
(5)在event_drv文件夹中打开终端,也一样操作
cd ~/Desktop/event_drv
sudo make clean ///清除文件
sudo make
sudo insmod event_drv.ko
(6)启用模拟器
cd ~/Desktop/VTSLcd
sudo ./VTSLcd
(7)模拟器测试(需要另外打开一个终端)
cd ~/Desktop/lcd_event
gcc bmp.c lcd_event_ui.c -o lcd_event_ui
sudo ./lcd_event_ui //sudo管理员权限
2、lcd设备文件控制(颜色显示)
(1)通过系统函数来控制lcd设备文件的流程如下
- 打开文件
- 将颜色写入到 lcd 屏幕上
- 关闭文件
(2)lcd特性
- 设备名字:"/dev/ubuntu_lcd"
- 设备宽高(像素点、尺寸、分辨率):800*480
- 位深度(一个像素点所占用的大小):32位
- 1字节=8位; 4字节=32位
- 整个屏幕的大小=宽*高*位深度/8
- int lcd_argb[800*480];
- 屏幕属性组成:
透明度(a)、红(r)、绿(g)、蓝(b)
例如:在不考虑透明度(AA)的情况下,
红色为0xAA FF 00 00,
绿色为0xAA 00 FF 00,
蓝色为0xAA 00 00 FF,
黑色为0xAA 00 00 00
(3)系统函数具体详解
a.打开文件open
// 调用open函数时前,包含以下头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
// open 函数原型:声明
int open(const char *pathname, int flags);
参数列表说明
const char *pathname :即将要打开的文件的(路径/文件名字),以字符串做识别,例如,设备文件名字,"/dev/ubuntu_lcd"
int flags:权限标记(常用权限:O_RDONLY:只读, O_WRONLY:只写, O_RDWR:可读可写)
open前面的int:open的返回值数据类型:失败返回-1(失败的状态为-1),成功(非-1)则返回打开的文件的别名(整数)
eg:
b.写入文件write
// 调用write之前需要包含以下头文件:
#include <unistd.h>
// write的函数原型:声明
ssize_t write(int fd, const void *buf, size_t count);
int fd:已经打开的文件的别名(整数)
const void *buf:缓冲区,容器,即将要写入文件的数据
size_t count :缓冲区的大小
eg:
c.关闭文件close
// 调用close之前需要包含以下头文件:
#include <unistd.h>
// close的函数原型:声明
int close(int fd);
int fd:即将要关闭的文件的别名(整数)
eg:
close(lcd_stauts);