- 课程目标
- 本课程是《朱有鹏老师嵌入式linux核心课程》第6部分,是一个课程后的小项目。用开发板本身自带的硬件完成一个基于linux API开发的图片解码播放器,实现了对BMP、JPG、PNG等格式图片进行解码播放的功能。
- 适用人群
- 本课程是《朱有鹏老师嵌入式linux核心课程》第6部分,适合学习完了整个课程后作为实训项目来检验所学、提升项目经验、进一步锻炼自己所用。
- 课程简介
-
为了答谢大家对《朱有鹏老师嵌入式linux核心课程》的支持,朱老师决定本项目免费赠送给已经完整购买了前5部分(ARM裸机、uboot移植、应用编程和网络编程、C高级、驱动)所有课程的同学。
该项目是整个嵌入式linux核心课程的最后一部分,使用开发板自带硬件完成了一个图片解码播放的小程序。对于整个核心课程来说是最后一部分,但是对朱老师的嵌入式项目计划来说却是个开始。
由此项目开始,朱老师及其团队会持续推出更多的大小项目,将常见的各种嵌入式模块(如温度湿度传感器、光传感器、通信模块如GSM、WIFI、4G、zigbee等、RFID模块、音视频模块如摄像头、声卡等)囊括其中,让大家能够根据自己工作中所需来选择相应的项目进行学习。
课程目录6.1.项目展示与整体规划
[免费观看]
37:02本节对项目整个的规划做个预览,并且对已经实现的项目做个展示,先让大家做到心中有数,知道我们要完成的项目什么样子。
6.2.环境搭建和基础确认
18:46本节对项目开发的环境进行搭建,并且确认一些项目开发的基础条件。
6.3.开始动手写代码
34:02本节开始着手建立工程,分析Makefile等,介绍了一个通用型的Makefile。
6.4.framebuffer基本操作代码
37:17本节开始编码,主要是framebuffer的一些基础操作,譬如打开、ioctl、map、填充背景等,由于前面裸机和驱动课程都讲过了所以走的比较快。
6.5.图片显示原理和实践
36:46本节主要强调像素、点阵、分辨率、bpp等显示相关的概念,并对Image2LCD软件做个介绍。
6.6.图片数据提取和显示
39:03本节介绍Image2LCD软件的设置和使用,并且使用该软件提取图像数据。
6.7.图片显示的高级话题
31:54本节主要强调像素数据中RGB和BGR的两种排布,以及排布引起的编程调整。
6.8.其他显示细节问题
27:07本节处理了图片分辨率比屏幕分辨率小时,显示函数的调整问题。
6.15.BMP图片的显示5
29:25本节使用标准的BMP头封装结构体,对BMP头信息进行分析和编码实践
6.9.任意起点位置图片显示1
26:12本节处理了任意起点开始显示小图片且不超过屏幕范围时,显示函数的调整问题。
6.10.任意起点位置图片显示2
28:02本节处理了任意起点开始显示且图片大小超过屏幕范围时,显示函数的调整问题。
6.11.BMP图片的显示1
33:00本节介绍BMP图片的本质,BMP图片的二进制格式及其如何解析。
6.12.BMP图片的显示2
30:05本节结合规范一起来分析BMP文件的头信息,并且讲述了如何通过代码来解析BMP文件。
6.13.BMP图片的显示3
30:34本节进行bmp解析图片的编码实践
6.14.BMP图片的显示4
34:54本节引入使用结构体方式来解析BMP头,这种方式是比较规范的处理技巧,必须掌握。
6.16.及时规整才能写出好项目1
32:38本节对之前写的代码进行规整和梳理,教会大家如何及时规整代码、梳理思路,以写出调理清晰的代码。
6.17.及时规整才能写出好项目2
30:03本节在项目中添加debug宏控制的调试信息输出,教会大家如何在项目中控制调试信息输出的技巧。这些内容以前课程中都学过,这里主要是实践使用。
6.18.及时规整才能写出好项目3
28:53本节自定义图片信息结构体并且使用该结构体进行函数间的信息传递,这种编程方式是linux下程序开发的常用套路,大家一定要掌握。
6.19.jpg图片的显示原理分析1
20:06本节对jpg图片进行本质分析,并且讲述如何去解码jpg图片并显示。先理清思路后面才好下手。
6.20.jpg图片的显示原理分析2
18:56本节主要讲解了图片编解码方面的一些知识。
6.21.libjpeg介绍及开源库的使用方法
37:54本节引入libjpeg,并且讲述了开源库的一般使用流程和方法。
6.22.libjpeg的移植实战1
22:08本节进行libjpeg的移植实战,主要是源码包的下载、解压、配置、编译、安装等。
6.23.libjpeg的移植实战2
22:54本节继续libjpeg的移植实战,主要是库的部署,以及相关编译链接参数的设置。
6.24.使用libjpeg解码显示jpg图片1
28:00本节开始研究libjpeg的使用,告诉大家如何从零开始啃下一个没有使用过的第三方库。
6.25.使用libjpeg解码显示jpg图片2
26:08本节对example.c进行源码解读,帮助大家对陌生代码进行理解,以便后续进行移植。
6.26.使用libjpeg解码显示jpg图片3
27:46本节对example.c进行初步移植,一边移植一边做些更改和理解,这就是做项目。
6.27.使用libjpeg解码显示jpg图片4
34:23本节对初步移植的代码进行编译,并且排除编译中的问题,主要是头文件包含以及编译链接选项的问题。
6.28.使用libjpeg解码显示jpg图片5
36:25本节对共享库进行部署,以让项目可以在开发板中运行起来,并且成功解码出jpg图片的头信息。
6.29.解决解码显示中的问题1
24:09本节解决图片显示不对的问题,主要着眼于思路的分析和验证排除,目的是教会大家如何分析问题并想办法验证思路。
6.30.解决解码显示中的问题2
25:18本节接上节继续解决显示问题,并且重写了fb_draw函数后将jpg图片显示正确。
6.31.结束jpg图片部分
37:18本节对jpg图片显示做个总结,并且对代码做相应封装和规整,结束了jpg显示的部分。
6.32.解码显示png图片1
28:46本节开始png图片显示部分,主要是libpng的移植和libz的移植。
6.33.解码显示png图片2
27:04本节开始png图片解码显示部分,主要是分析各种文档和示例代码,并且根据示例代码开始编程。
6.34.解码显示png图片3
29:09本节主要对检测是否png文件的函数进行调试和分析,保证libpng在开发板上成功运行。
6.35.解码显示png图片4
34:49本节参考网络资料开始编写使用libpng解码显示png图片的代码。
6.36.解码显示png图片5
26:34本节对libpng解码显示png图片的代码进行规整和总结,png显示功能完成。
6.37.图片文件的管理和检索1
30:16本节讲解如何在程序中对图片文件进行管理,并且封装相应的结构体和数组进行实战。
6.38.图片文件的管理和检索2
27:10本节讲解如何在程序中对图片文件进行检索,并且使用opendir和readdir进行实践编程
6.39.图片文件的管理和检索3
26:45本节主要解决readdir不灵的问题,通过引入lstat函数读取文件属性进行解决。
6.40.添加触摸翻页功能
34:41本节向程序中添加触摸屏翻页功能,其实就是读出触摸坐标并且驱动显示函数进行翻页。
6.41.总结与回顾
26:17本节首先解决上节遗留的bug,然后对整个项目做总结和展望,最后交代了后期的课程计划,整套课程结束,希望对大家有所帮助。
课程介绍
课程目录
往期学员作品
用户评论
课程介绍
课程目录
往期学员作品
用户评论
你将获得
- 掌握某些知识点
- 学会某些技巧(或思路)
教学服务
1v1专属答疑服务
BAT专家面试辅导
讲师介绍
朱有鹏
朱老师物联网大讲堂创始人/华为云MVP
互联网课程品牌《朱老师物联网大讲堂》创始人。著有《嵌入式linux与物联网软件开发-C语言内核深度解析》等书籍,精通U-Boot、linux kernel移植及驱动程序开发;精通C、C++、Java、C#等高级语言,熟悉ARM体系结构;熟悉linux、WinCE下的开发流程;授课风趣幽默,讲解条理清晰,对知识有自己独到见解,善于发散学生的思维。
课程详情
温馨提示
- 请勿私下交易请勿在平台外交易。与机构和老师私下交易造成的任何损失及纠纷,腾讯课堂不承担任何责任
- 听课说明
1、电脑:访问腾讯课堂官网 ke.qq.com 查看我的课表或下载win/mac客户端听课
2、手机/平板:下载腾讯课堂APP, 进入学习页面听课