Linux基本知识和嵌入式开发板的相关使用

文件颜色所代表的属性

绿色文件: 可执行文件,可执行的程序

红色文件:压缩文件或者包文件

蓝色文件:目录

白色文件:一般性文件,如文本文件,配置文件,源码文件等

浅蓝色文件:链接文件,主要是使用ln命令建立的文件

红色闪烁:表示链接的文件有问题

黄色:表示设备文件

灰色:表示其他文件

输入ls -l会显示相关信息
在这里插入图片描述

共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称

可以用字符表示的文件类型

-:普通文件

d:目录文件

l:链接文件

b:块设备文件

c:字符设备文件

p:管道文件

shell命令

cd 切换工作目录

格式:
cd xxx(目标目录的路径)

路径的描述方式:

		绝对路径:相对于根目录所做的路径描述
		相对路径:相对于当前目录所做的路径描述

ls 查看目标文件或目标目录的相关信息

格式:
	ls		默认查看当前目录下有哪些非隐藏文件
	ls -l	默认查看当前目录下有哪些非隐藏文件,且附带相关信息
	ls -a	默认查看当前目录下的所有文件

cp 复制并粘贴

格式:
	cp xxx(目标文件) xxx(目的目录)
	把目标文件复制到目的目录

mv 剪切并粘贴/移动

格式:
	mv xxx(目标文件) xxx(目的目录)
	把目标文件移动到目的目录

rm 删除目标

格式:
	rm xxx(目标文件或目录) -rf

mkdir 创建目录

格式:
	mkdir xxx

touch 创建文件

格式:
	touch xxx

vi/vim 文件编辑器

进入vi编辑器,可以直接vi+"文件名称"即可

vi test.c

按下字母I(大写)既可以进入插入模式,可以编辑,按Esc退出插入模式
按下冒号(:)进入命令模式

:q 退出
:wq 保存退出

man 手册命令 可以查看Linux命令的相关信息

	1.man man
	   1   Executable programs or shell commands
			命令手册
	   2   System calls (functions provided by the kernel)
			系统函数
	   3   Library calls (functions within program libraries)
			库函数
	2.man -f xxx(目标)
		查看目标所在手册的编号
	3.man x(手册编号) xxx(目标)
		查看目标在对应编号手册中的具体信息

gcc/arm-linux-gcc

本地编译命令/交叉编译命令
gcc编译生成的文件在Ubuntu中执行
arm-linux-gcc编译生成的文件在开发板上执行
格式:
	gcc -o xxx(目标文件) xxx.c(源文件)
	或者
	gcc xxx.c(源文件) -o xxx(目标文件)

创建共享文件夹:

windows和Ubuntu实现共享
1.点击虚拟机上方菜单的“虚拟机”选项
2.在弹出框中选择“设置”
3.在弹出框中选择“选项”
4.选择“共享文件夹”
5.选择“总是启用”,然后添加自己的共享文件夹
	前提是现在windows下有这么个以备共享的文件夹
共享文件夹在Ubuntu中的访问路径:
		/mnt/hgfs/

C语言文件IO函数: input/output

open	打开目标文件
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 int open(const char *pathname, int flags);
		打开已存在文件
   int open(const char *pathname, int flags, mode_t mode);
		可以打开不存在的文件,即是可以创建并打开文件
   int creat(const char *pathname, mode_t mode);
		创建目标文件
		参数:
		pathname:目标文件的所在位置
		flags:权限标志,即是权限的选择
				必选项,三选其一
				只读		O_RDONLY
				只写		O_WRONLY
				可读可写	O_RDWR
				其它选项:
				创建		O_CREAT
		mode:文件权限,创建文件时进行赋予
	返回值:
		成功时,返回一个文件描述符,范围是0~1023
		失败时,返回-1
		close	关闭目标文件
   #include <unistd.h>
    int close(int fd);
    参数;
		fd:目标文件的文件描述符
		返回值:
		成功时,返回值为0
		失败时,返回值为-1	
read	读取目标文件的数据,到程序空间
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);	
参数:
		fd:目标文件的文件描述符
		buf:将要用来存放读取数据的空间的地址
		count:想要读取的数据的上限,单位字节
	返回值:
		成功时,返回实际读取到的数据的字节数,范围是0~count
		失败时,返回-1
		返回值可以为0吗?
			可以
		返回值为0时,成功了吗?
			成功
		什么情况下,返回值会为0?
			1.目标文件为NULL
			2.文件光标与文件尾重合
			3.count为0	
write	把程序空间的数据,写入目标文件
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);	
参数:
		fd:目标文件的文件描述符
		buf:将要写入的数据在程序中的存放地址
		count:想要写入的数据的大小,单位字节
	返回值:
		成功时,返回实际写入的数据的字节数,大小是count
		失败时,返回-1
		返回值可以为0吗?
			可以返回值为0时,成功了吗?
			成功什么情况下,返回值会为0?
			1.count为0	
lseek	重定位文件光标
   #include <sys/types.h>
   #include <unistd.h>
   off_t lseek(int fd, off_t offset, int whence);
   参数:
		fd:目标文件的文件描述符
		offset:相对于参考位置进行偏移方向和偏移量的确定,单位字节
				负数,表示向文件头进行偏移
				正数,表示向文件尾进行偏移
				0,表示相对于参考位置不进行偏移
		whence:选择光标重定位的参考位置
				利用相关的宏定义进行选择
			文件头		SEEK_SET
			文件尾		SEEK_END
			当前位置	SEEK_CUR
			返回值:
		成功时,返回文件光标重定位后距离文件头的远近,单位字节
		失败时,返回-1
		例子:
			文件光标会被定位在哪里?返回值是什么?可表示什么意义?
			lseek(fd,0,SEEK_SET);
				文件头,返回值为0
			lseek(fd,0,SEEK_CUR);
				当前位置,即文件光标重定位前后没有区别,可得到当前光标和文件头之间的数据的多少
			lseek(fd,0,SEEK_END);
				文件尾,返回值可表示文件的大小

开发板系统命令

链接开发板前,要安装USB驱动,然后打开SecureCRT来操作开发板系统,就可以进行命令行界面,学习过的应该知道,没学习过的可以百度

mkdir
创建一个自己的目录,存放下载到开发板上的文件
rx 名称
下载对应的文件,然后点击下图位置第三个,点击进入,找到要下载的对应文件,等待下载完成即可
在这里插入图片描述
下载的文件里面重要的是在Linux里面编译生成的编译文件,在Linux下编译用的不是寻常的GCC,用的是arm-linux-gcc,即交叉编译,只有这样生成的文件才可以在开发板上运行。

arm-linux-gcc name.c -o name

运行的文件就是上面命令生成的name文件

在执行文件之前,需要修改 文件权限才可以执行

chmod 777 name//修改文件权限,更改为最高。

运行文件和在Linux上运行文件一样,在开发板系统上主要用的命令如上,其他的命令基本和Linux一样。

触摸屏: 输入设备

触摸屏的设备文件:
	/dev/input/event0

测试触摸屏的设备文件:
	cat /dev/input/event0

输入子系统:

添加对应的头文件:
	/usr/include/linux/input.h
struct input_event {
struct timeval time;		事件时间
__u16 type;					事件类型
__u16 code;					事件主值	事件类型的进一步区分
__s32 value;				事件辅值	事件真正的值
};

插U盘到开发板上去,进入mnt/udisk/目录下

一、如何播放视频?

1)播放器 —> mplayer(linux)
2)视频文件 —> mp4 avi

二、分析LCD架构

分辨率: 800 * 480 —> 宽:高 = 5:3
像素:透明度、红色、绿色、蓝色

三、视频格式

mp4 —> 不能随意更改宽高比,导致不能在板子中正常播放。

帧宽度:1280
帧高度:720 宽高比–>16:9 不能修改为板子的比例,需转换avi格式

avi —> 根据意愿来修改帧宽度与帧高度的比例

1)打开格式工厂,转换视频格式为avi

2)输出配置中要设置以下参数

屏幕大小: 800x480
宽高比: 5:3

视频:
1.下载mplayer到开发板的/bin目录下,并且赋予权限

mplayer -slave -quiet -input file=/tmp/pipe -geometry 0:0 -zoom -x 400 -y 400 mn.avi

mplayer -》命令的主体
-quiet -》屏蔽一些信息输出

-slave -》屏蔽键盘,改用命令
-input file=/tmp/pipe -》 命令管道文件所在位置

-geometry 0:0 -》视频的开始坐标
-zoom -x 400 -y 400 -》视屏的边框大小

mn.avi -》音视频文件

音频:
mplayer 1.mp3

一:mplayer简介

MPlayer是一款开源的多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流作业系统使用,例如Linux和其他类Unix作业系统、微软的视窗系统及苹果电脑的Mac OS X系统。MPlayer是建基于命令行界面,在各作业系统可选择安装不同的图形界面。

因为linux下都是命令行的操作方式,所以对mplayer的各种操作都是用命令来实现的,这次主要用的是它的slave工作方式

slave模式协议

1,简介:

  默认mplayer是从键盘上获得控制信息

mplayer另外提供了一种更为灵活的控制方式,用来进行播放控制——slave模式

  在slave模式下,MPlayer为后台运行其他程序,不再截获键盘事件,MPlayer会从标准输入读一个换行符(\n)分隔开的命令。

2,操作:

#mplayer -input cmdlist

// 会打印出一份当前mplayer所支持的所有slave模式的命令

方法一:从控制台输入控制命令(测试使用)

运行mplayer -slave -quiet ,并在控制台窗口输入slave命令。

//-slave 启动从模式

//-quiet 不输出冗余的信息

常用到的 Mplayer指令:

volume 100 1 //设置音量 中间的为音量的大小。

mute 1/0 //静音开关

pause //暂停/取消暂停

方法二:从有名管道(fifo)输入控制命令(应用编程中使用)

创建管道文件
#mkfifo 

#mplayer  -slave  -input  file= 

//用户可以通过往管道里写入slave命令来实现对应的功能


mplayer命令行参数中添加参数来说明管道的路径

  mplayer -slave -quiet -geometry 0:0 -zoom -x 800 -y 480 Faded3.avi

 添加指定管道文件参数

  mplayer -slave -quiet -input file=/tmp/fifo -geometry 0:0 -zoom -x 800 -y 480 Faded3.avi &

  &:不是C语言中的取地址符号,而是Linux命令在后台播放,前台资源没有被占用。这样就可以实现一边播放视频,另一边就可以处理别的事情(触摸屏)。

什么是管道?

 Linux下,一切都是文件   ---> 文件IO  -->  open/read/write/close

 -:普通文件    --->  touch
 d:目录文件    --->  mkdir
 l:软连接文件  --->  ln
 
 p: 管道(fifo)文件  ---> 通过一个函数接口得到  --->  mkfifo


  思路:

  0. 判断文件是否存在,若不存在,则创建  ---  access  ---  man 3 access

   #include <unistd.h>

  int access(const char *path, int amode);

   path:文件所在的路径
   amode:  F_OK  是否存在

  返回值:
  成功:0
  失败:-1

  1. 创建管道文件  mkfifo  --->  man 3 mkfifo

  #include <sys/types.h>
  #include <sys/stat.h>

  int mkfifo(const char *pathname, mode_t mode);

  参数:
  pathname:文件的路径
  mode:八进制的权限    0777

  返回值:
  成功:0
  失败:-1
	 
  2. 打开管道文件   ---> open  ---> man 2 open

  练习:在板子中的 /tmp/ 创建一个命名管道名字为 fifo,并打开它。
  
	/tmp/fifo

	/tmp:一般是用于存放临时文件

例子:
fd 就是打开的管道文件。
-input file=/tmp/pipe

注意:在arm开发板上字符串不要加\r   

write(fd, "pause\r\n",strlen("pause\n")); 命令,用 -slave 使其与键盘分离,记住,
当与键盘分离后,mplayer接受的命令都是以\n结尾的命令,
而且如果命令后还要加参数
,命令和参数之间至少要有一个空格,不然起不到效果。
 
write(fd,"volume +5\n",strlen("volume +5\n"));加声音

write(fd,"volume -5\n",strlen("volume -5\n"));减声音
 

write(fd,"seek -5\n",strlen("seek -5\n"));快退。
write(fd,"seek +5\n",strlen("seek +5\n"));快进。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值