首页 > 嵌入式硬件 > 嵌入式开发

在桌面级操作系统中,下载一个截图软件就能实现截屏操作,但在嵌入式Linux系统中,要实现小小的截图功能却没有那么简单。本文为您介绍嵌入式Linux系统中实现截屏功能的方法和步骤。

1 . 原理

由于 Linux 系统的 FrameBuffer 机制,会把屏幕上的每个点映射成一段线性内存空间,程序就可以通过改变这段内存的值来改变屏幕上某一点的颜色。屏幕色彩的原始数据保存在/dev/fb0文件内,因此我们可以直接cat /dev/fb0 > fb.raw读取该文件获得数据。

 

1.png

 

图1 原始截屏数据

显然,这种原始数据无法通过简单的工具直接查看,特别是在精简的嵌入式Linux系统上。因此,我们找到了一个不错的工具——gsnap。这个工具可以将framebuffer中的数据直接保存为png或者jpeg格式的图片。当然,我们需要获得该工具的源码,并且在交叉编译后移植它。

2 . 原材料

本次尝试笔者选择周立功/致远电子开源开发套件EasyARM-i.MX283A3,宿主机选用Ubuntu14.04。首先,我们需要获取gsnap源码,该源码可在网络中搜索下载。源码解压后得到的文件如图2:

 

2.png

 

图2 gsnap源码

其中gsnap.c为解析算法,感兴趣的读者可以打开研究,本文我们不做分析。我们直接打开跟编译相关的Makefile文件,内容如下。从下图可知,该源码依赖libpng、libjpeg、zlib、libmath四种库。由于交叉编译器的库种包含有libmath,因此我们需要准备好另外三种库备用。

 

3.png

 

图3 gsnap的Makefile

解压后得到的文件如图4。(源码包可从库官网或论坛下载)

 

4.png

 

图4 库的源码包解压

3 . 交叉编译

第一步,交叉编译libjpeg。进入到源码目录,执行./configure --host=arm-linux --prefix=/home/vmuser/gsnap/jpeg_install/,然后执行make、make install ,在安装目录/home/vmuser/gsnap/jpeg_install/得到交叉编译过的库。

 

5.png

 

图5 交叉编译libjpeg

第二步,交叉编译zlib。由于zlib是libpng的依赖,因此必须首先编译zlib。由于zlib中的configure并未提供--host参数,因此需要为它手动指明交叉编译器:export CC=arm-fsl-linux-gnueabi-gcc,然后执行./configure --prefix=/home/vmuser/gsnap/z_install/,make、make install 。得到的文件类同第一步,不再放图。

第三步,交叉编译libpng。与上述两步骤又不同,libpng中提供有Linux平台下的Makefile例程,我们可以直接拿来修改使用。进入到libpng的源码目录,执行拷贝cp scripts/makefile.linux Makefile,然后打开Makefile修改,如图6。修改的内容为交叉编译器名称和依赖的zlib的路径。最后make、makeinstall得到头文件可库文件。

 

6.png

 

图6 修改libpng的Makefile

第四步,交叉编译gsnap。为方便起见,我们将上述得到的库文件和头文件分别集中拷贝到自行建立的lib和includes目录下,并且修改gsnap的Makefile。执行make后就能得到可执行文件gsnap。

 

7.png

 

图7 修改gsnap的Makefile

4 . 验证

将得到的gsnap可执行文件拷贝到目标板的/opt目录下,执行截屏命令:./gsnapfb.jpg /dev/fb0,将得到的截屏fb.jpg拷贝到ubuntu中可得图8。

 

8.png

 

图8 截屏得到的图片

换一批

延伸阅读

[行业资讯] 感知一切,这是传感器的时代

感知一切,这是传感器的时代

人类步入21世纪,全面进入信息时代,从一定意义上讲,也就进入了传感器时代。在现代控制系统中,传感器处于连接被测对象和测试系统的接口位置,可直接或间接接触被测对象,是信息输入的“窗口”,是万物互联的眼睛。......

关键字:传感器 嵌入式 产品创新

[行业资讯] 多重因素影响下,传感器市场逐渐降温

多重因素影响下,传感器市场逐渐降温

由于全球经济疲软,IC Insights报告指出,2020年传感器和执行器全球销售额增长恐将放缓至3%。而在2021年至2023年间会逐渐恢复增长势头,2023年预计将达到211亿美元。......

关键字:传感器 嵌入式 执行器

[行业资讯] RT-Thread启动嵌入式软件人才计划及开发者能力认证

RT-Thread启动嵌入式软件人才计划及开发者能力认证

睿赛德科技宣布全面启动嵌入式软件人才计划,并推出业内首个IoT OS工程师能力认证——RAC(RT-Thread开发者能力认证,RT-Thread Ability Certification),旨在推动嵌入式及物联网人才的培养和发展,为企业......

关键字:睿赛德科 嵌入式软件 物联网

[行业资讯] 开启嵌入式智能时代,亮点产品大盘点

开启嵌入式智能时代,亮点产品大盘点

嵌入式世界展(Embedded World)是全球领先的嵌入式技术国际展会,是工程师及创新人士汇聚一堂、新技术与新创意集体亮相的殿堂。 ......

关键字:嵌入式 智能时代 CYW20819

[行业资讯] 看准高速通讯及存储器市场 晶心推小型CPU核心N22

看准高速通讯及存储器市场 晶心推小型CPU核心N22

瞄准高速通讯和存储等市场需求,嵌入式处理器IP公司晶心科技宣布推出32位元RISC-V CPU核心N22,可应用于小型物联网及穿戴设备等入门级MCU。总经理林志明表示,N22的高性能和精简设计,相当适合处理以高数据传输率运行中的协定封包。 ......

关键字:嵌入式 处理器 CPU
条评论

我 要 评 论

网友评论

大家都爱看