Linux下的小说与视频--课设

Linux平台下多媒体播放器的设计

课程设计目的

1、深入了解电子信息类产品开发研制过程,掌握其工作原理;
2、了解整个linux系统项目的流程、项目分析,以及项目实施过程;
3、掌握虚拟机环境的搭建、Ubuntu安装和基本指令;
4、掌握uboot移植、内核的裁剪,根文件系统的搭建;
5、掌握视频音频的移植以及播放界面的整体设计;
6、掌握综合应用项目的开发与调试,增强从事科研与生产工作的事业心和责任感,巩固所学理论知识,获取本专业较为全面的实际知识,掌握从事本专业工作所需要的初步工作能力和专业技能;
7、掌握电子信息产品的组装和调试方法技能,加深对已学专业理论知识的理解和认识,训练自己发现问题、分析问题和解决问题的能力;

课程设计内容

  1. linux底层环境的搭建(uboot移植、内核裁剪和根文件系统制作)

  2. LCD屏和触摸屏驱动移植

  3. 视频播放界面的设置以及界面的布局

  4. 主界面:

    视频播放和电子书浏览的入口图标(缩略图)和可通过点击图标进入视频播放主界面和电子书浏览主界面。

  5. 视频播放界面:

    a. 在LCD屏上显示所有本地的视屏资源(矩形缩略图)

    b. 可通过触摸屏点击选中某一视频,进入播放界面

    c.在播放界面可控制视频的播放/暂停/快进/后退/全屏/退出播放界面(返回视频资源界面)

课程设计的实现

Linux开发环境的搭建

  1. VMware Workstation的安装

    VMware Workstation 是一款虚拟 PC 软件,利用 VMware 工作站,可在现有操作系统上虚拟出一个或多个硬件环境,相当于模拟出多台 PC,以此来实现在一台机器上同时运行多个独立的操作系统。

    安装目的:使用的是windows10操作系统,在此系统的基础上使用ubuntu系统,需要该软件的支持(该软件需要破解)。

  2. Ubuntu和VMware tools 的安装

    ①:下载ubuntu镜像

    ​ 去阿里云下载ubuntu的镜像文件。

    ②:创建并安装ubuntu虚拟机

    ​ 按照步骤,即可轻松创建好ubuntu的虚拟机,我们只需要根据电脑的详细资源配置,分配好windows和ubuntu的硬件资源配置。

    ③:安装VMware tools

    ​ VMware tools能够实现主机和虚拟机之间的文件共享和直接拖拽的功能,

  3. linux基本指令的练习

    常用指令如下:

    (1) 用户切换指令(su)
    语法: su [选项] [登录]
    作用: su 的作用是变更使用者的身份,切换时需要键入该使用者的密码(超级用户除外)。

    (2)显示绝对路径(pwd)
    语法: pwd [选项]
    作用: 执行 pwd 指令可显示当前所在的工作目录的绝对路径名称

    (3)list directory contents(ls)
    语法: ls [选项] [文件]
    作用: 用于显示指定工作目录下之内容

    (4)make directories(mkdir)
    语法: mkdir [选项] 目录
    作用: 在指定位置创建以指定的目录, 创建的目录不能与其父目录中的文件名重名,即同一个目录下不能有同名的(区分大小写)。 这里的目录位置可以使用相对路径和绝对路径。

    (5) touch
    语法: touch [选项] 文件
    作用: 修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件;

    (6)remove files or directories(rm)
    语法: rm [选项] [文件]
    作用: 删除一个目录中的一个或多个文件或目录,如果没有使用- r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

  4. gcc编译工具的使用

    GCC 是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高 20%~30%, 一个交叉平台编译器 ,适合在嵌入式领域的开发编译。

    程序编译过程

    ①:编译预处理 gcc -E xxx.c -o xxx.i
    处理伪指令(#)和特殊的特殊符号

    ②:编译 gcc -S xxx.i -o xxx.s
    把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件

    ③:汇编 gcc xxx.s -o xxx.o
    汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句对应一条机器指令

    ④:链接 gcc xxx.o -o xxx
    头文件只是函数声明,实现封装在库文件中,链接就是找到指定路径下的库文件

Linux内核环境的搭建

搭建交叉编译器

  • 获取源码

    arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz

  • 拷贝文件夹到 Ubuntu 系统

    把文件放到自己的ubuntu的文件中

  • 解压缩到根目录

    tar -xzvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /

  • 修改环境变量

    修改/etc/profile 文件 sudo gedit /etc/profile

    在文件末尾加上 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin

  • 环境变量生效

    source /etc/profile

  • 安装 32 位库兼容包

    sudo apt-get install lib32ncurses5 lib32z1

  • 测试是否安装成功

    arm-linux-gcc -v

    安装成功将会输出 arm-linux-gcc的版本号

uboot 的烧写

  • uboot 介绍

    是常用的嵌入式操作系统启动程序。

    把操作系统镜像从介质如 flash、 nand、 SD 卡等加载到内存

  • 拷贝文件

    uboot_tiny4412-sdk1506.tar 拷贝到ubuntu的文件夹里

  • 解压操作

    sudo tar -vrf uboot_tiny4412-sdk1506.tar

  • 编译

    make 生成可执行文件,在 uboot 目标目录下生成 u-boot.bin

  • 烧写

    1. 进入 sd_fuse 里面 执行 make
    2. 进入 tiny4412 目录下
    3. 挂接 SD 卡 ;找到正确的挂接点 ls /dev/sd*
    4. 烧写 uboot sudo ./sd_fusing.sh /dev/sdb

内核的烧写

  • 内核的介绍

    linux 内核五大功能:
    进程管理(cpu)
    内存管理(内存)
    设备管理(驱动)
    网络管理(网络协议 tcp/ip)
    文件系统(vfs)

  • 拷贝文件driver.tar 到虚拟机 ,并进行解压

    tar -xvf driver.tar

  • 生成内核镜像

    make zImage

  • 编译

    生成的 arch/arm/boot 下的zImage

  • 烧写

    ①进入到 arch/arm/boot

    ​ 输入:cd arch/arm/boot

    ②烧录到SD卡中

    dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdbseek=1057

根文件系统的搭建

  • 将 driver 文件拷贝到虚拟里

  • 然后将它拷贝到根目录

    sudo mv dirver /

  • 然后解压文件

    sudo tar -xvf driver.tar

NFS 服务搭建与测试

  • 安装 nfs 服务

    sudo apt-get install nfs-kernel-server nfs-common

  • 修改配置文件

    sudo gedit /etc/exports

    修改内容如下:

    /driver/rootfs *(rw,sync,no_root_squash,no_subtree_check)

  • 重启 nfs 服务和 rpcbind 服务

    sudo /etc/init.d/nfs-kernel-server restart

    sudo /etc/init.d/rpcbind restart

  • Ubuntu下添加有线的网络配置

    ①:IPV4修改为192.168.15.2

    ②:子网掩码为255.255.255.0

    ③:IPV6修改为192.168.15.1

  • Windows10的有线网络配置

    ①:IPV4修改为192.168.15.12

    ②:子网掩码为255.255.255.0

    ③:IPV6修改为192.168.15.1

  • 代码运行测试

    先使用make,编译代码

    再将编写好的可执行文件在单片机上运行

代码调试与下载

代码调试目的

实现以下功能:

主界面:视频播放和电子书浏览的入口图标(缩略图)和可通过点击图标进入视频播放主界面和电子书浏览主界面。

视频播放界面:a. 在LCD屏上显示所有本地的视屏资源(矩形缩略图)b. 可通过触摸屏点击选中某一视频,进入播放界面c.在播放界面可控制视频的播放/暂停/快进/后退/全屏/退出播放界面(返回视频资源界面)

系统的原理框图

系统主要有5大界面:

1、主界面 2、小说主界面 3、小说阅读界面 4、视频主界面 5、视频播放界面

对应界面,触摸显示屏相应位置,即可触发相应的功能。

image-20201203230428379

程序流程:

进入到main,先初始化显示屏设备,显示出主界面;在主界面上有两个图标(小说、视频)。

在main函数中,检测触摸屏相应位置是否按下;

点击小说图标,系统进入小说主界面,这时会看到我们准备好的小说,点击相应的小说图标后,就会进入到小说阅读界面,阅读小说,小说阅读界面可以进行上一页、下一页、回到开头,退出

返回到主界面后,进入点击视频图标,这是会看到我们准备好的视频,点击相应的视频图标后,就会进入视频播放界面,进而播放我们想看的视频,视频播放界面可以进行快进、快退、上一个、暂停、下一个、全屏、退出

遇到的问题:

  1. 根目录无法挂载

    原因分析:使用的ubuntu版本过高,使用的ubuntu版本为20.04,导致无法挂载成功

    问题解决:询问工程师,问题得以解决。

  2. 内核文件编译时,无法找到路径

    原因分析:Makefile的内核编译路径不正确。

    问题解决:内核文件裁剪后,需要找到他的“绝对路径”,在Makefile里面的内核路径要换成对应的路径。

  3. 图片无法读取问题

    原因分析:图片的格式不是.bmp

    问题解决:将图片的格式存储为.bmp格式,如果只是修改文件的后缀为.bmp格式的文件,在程序中依然会出现图片格式不正确的问题。

  4. 小说显示乱码

    原因分析:小说是.txt文档,在windows下创建的.txt文档,但是放到程序里面依然读取出乱码。

    问题解决:看到老师给出的工程代码中,发现.txt文档是一个可执行的文件,而自己创建的.txt文档是一个普通文件,所以说要将这个文件属性修改,文字乱码问题得以解决。

课程设计结果

1、视频主界面:包含了小说图标和视频图标,点击相应图标的位置就可进入相应的界面。

1

2、小说主界面,预先存放了4本小说,点击相应的小说图标就可以观看相应的小说。

2

3、小说观看界面,打开的小说是“语音信号处理”,有4个操作,分别是:第一页、上一页、下一页、退出

3

4、视频界面,预先存储了4个视频,每个视频均可以打开观看。

4

5、视频观看界面:打开的视频是“马老师”,观看时可以进行一下操作:快退、快进、上一个、暂停、下一个、全屏、退出

5
posted @ 2020-12-03 22:42  啊振不坏  阅读(293)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css