- 博客(33)
- 资源 (10)
- 收藏
- 关注
原创 Arm64平台搭建交叉编译开发环境-以FT1500a cpu+Kylin4.0.2-sp2系统为例
最开始接触ARM-Linux平台下开发时,用的还是ARM7/ARM9之类的处理器,32位的CPU,系统运行在norFlash+nandFlash组合的存储上。由于ARM7/ARM9的处理器性能偏弱,而且配套的存储空间一般也不够打,所以大多数情况下都采用交叉编译开发的方式,具体实现的方式就是在x86-Linux平台下,下载安装一个交叉编译器。Ubuntu系统下安装交叉编译器可以通过apt命令在线安装...
2020-04-04 18:46:47
5451
6
原创 3.UEFI-edk2 增加中文显示
edk2源码中默认只有英文和法文的字库,在UI界面上或者shell终端打印中文字符,要么显示的是乱码,要么就没显示。例如,上一篇博客中的TestoneApp.cpp中,增加一行带中文的打印:Print(L"Hello, world!\r\n"); Print(L"UEFI-dek 你好..!\r\n");实际上运行的效果是如下图这样的。...
2020-03-22 18:16:13
4081
7
原创 2.UEFI-edk2 编写第一个应用
上一章把UEFI的编译开发和模拟器环境都搭建好了,这里开始写第一个应用。写之前先简单介绍下UEFI-edk2的源码目录结构,源码目录下主要有以下这些子目录:BaseTools: 包含代码编译所需的二进制编译工具集和编译环境配置文件。MdePkg: 包含各个平台通用的基本的底层库函数、协议和工业标准。MdeModulePkg:包含一系列各平台通用的模块,其中包括MdePkg中公共库的应用模块示...
2020-03-08 15:31:11
3036
原创 1.UEFI-edk2 开发环境搭建
EDK2是UEFI使用比较广泛的开源实现,支持在多种操作系统平台下进行开发。为了开发调试方便,这里采用在win10下用visual studio进行UEFI的开发。VS号称地表Top one的IDE,功能强大自不在话下,开发起来往往起到事半功倍的效果。此篇博客我们完成edk2源码的开发编译环境的搭建,同时编译运行一个模拟器,用来测试efi程序。一、相关工具安装首先下载安装vs2017或者vs2...
2020-02-29 21:14:10
7210
4
原创 phoronix-test-suite测试套件使用-树莓派32位系统 vs 64位系统下CPU性能对评测
一直传闻64位系统性能更好,但到底好多少,一直也没个量化的标准,今天就来测试下树莓派4运行32位系统和运行64位系统下CPU的性能差异。树莓派4官方系统为Raspbian,为了保持与旧版树莓派软硬件的兼容,官方Raspbian系统一直是32位的。而树莓派4的CPU BCM2835却是实实在在的64位CPU,在32位系统下并不能完全发挥其性能优势。从网上搜索看,为树莓派移植64位系统的玩家不在少数...
2020-02-12 22:38:48
1378
原创 CTK插件框架学习6-注册接口调用
插件化编程后,各个插件直接暴漏在外面的接口就是固定的了。与自定义类不同,插件化定义的类仅有start()与stop()接口用以实现,使用该插件时,能直接调用的也只有这两个接口。如何在插件中调用自定义接口呢?Ctk插件框架通过注册接口实现。在上一篇博客中插件间通信就是一个调用注册接口的例子,代码如下。ctkEventAdmin插件有自定义接口postEvent(const ctkEvent&...
2020-01-14 21:09:24
2465
1
原创 Centos禁止屏幕虚拟键盘弹出
使用centos7.5版本系统的时候,接触摸屏的情况下,点击屏幕老是会触发屏幕虚拟键盘弹出。原本触摸屏下虚拟键盘的作用是便于输入,可以在不用外接键盘的情况下,直接用屏幕键盘作为输入,可是当想把屏幕键盘关掉却发现并不是那么简单。关闭屏幕键盘的主要原因是运行用户程序时,在触屏界面下操作程序界面,在不点击输入框的情况下,点击界面图标/文字,屏幕虚拟键盘也总会偶尔弹出,影响用户体验。要关掉屏幕键盘,首选...
2020-01-11 19:54:55
4117
1
原创 CTK插件框架学习5-插件间通信(Netlink实现热拔插监控)
本章会写一个插件,实现通过NETLINK读取linux系统中的hotplug信息,比如usb设备、SD卡、磁盘等设备的插拔事件产生的信息,将读到的信息通过插件间通信的方式发出。1. eventadmin库编译CTK Plugin Framework下插件间通信是通过事件管理机制实现的,其代码位于CTK/Libs/PluginFramework/service/event目录下,使能事件管理机制...
2020-01-08 20:08:26
2955
11
原创 QT之C++程序引用.pro文件中宏定义
Qt开发中,可以在.pro文件中设置一些宏定义的值,来改变工程的编译配置。如下图所示,一个最基本的工程中.pro文件中,会有QT、CONFIG、SOURCE、TARGET等宏定义的设置,其中QT指定工程用的qt的功能模块,SOURCE指定工程源文件,TARGET指定生成的目标文件,有的工程还会添加HEADERS与LIBS的宏定义,用于指定工程编译所需的头文件核动态库文件的路径与名称。那么在c++...
2020-01-05 15:27:40
10883
4
原创 CTK插件框架学习4-创建跨平台插件工程
在上一篇博文中已经实现了一个简单的插件和测试程序的编写,但是插件跟应用是分开独立的工程。实际应用开发中需要把相关的库和头文件打包到一个工程中,如下图所示,这样比较方便调试开发,也为创建跨平台工程提供了便利。此节我们将创建一个初步完整的工程,工程文件中包含应用程序以及要使用的各个插件,同时将各个平台编译后的ctk插件库文件也整合到一起。目前支持如下三个平台:系统CPU编译器说明...
2020-01-02 20:42:42
2290
5
原创 CTK插件框架学习3-第一个插件编写
前两章把CTK插件库编译好了,这里篇编写一个插件试一下,共需要创建两个小工程,一个是插件库,一个是测试程序。1. 插件库编写1.1 创建工程打开Qt creator,新建一个Emputy qmake Project,并给工程命名为ctk-plugin-first。Kits选择"Desktop Qt5.12.3 MSVC2017 64bit"。更改ctk-plugin-first.pro文...
2019-12-26 18:26:41
3450
7
原创 CTK插件框架学习2-编译CTK-VS2015
CTK基于MINGW7.3_64版本编译后,运行测试并不顺利,遇到了很奇怪的问题,编译生成的测试程序只有部分能正常运行。mingw工具用来调试程序还是不太方便,特别是这种编译动态库程序的时候。不过无妨,Qt在windows平台下还有MSVC编译器可选,另外,Visual Studio号称地表最强IDE,在编译调试程序方面用起来想必也要更加顺手一些。接下来尝试通过VS2015编译运行CTK库,并与M...
2019-12-26 16:58:42
2044
3
原创 phoronix-test-suite测试套件使用-树莓派4 vs FT2000/4性能评测2-CPU性能对比测试
接上篇,首先确保两个平台均安装了phoronix-test-suite软件以及测试CPU性能的几个软件包。1. 运行测试-ft2000/4首先通过sudo su命令切换到root用户,在root用户下执行如下命令phoronix-test-suite run coremark gmpbench c-ray openssl sample-program在探测的提示中,输入测试的名称cpu...
2019-12-21 17:45:04
6204
原创 phoronix-test-suite测试套件使用-树莓派4 vs FT2000/4性能评测1-软件简介与安装
1. 简介phoronix-test-suite是Linux系统下一款简洁易用、功能强大的测试套件,该软件中集成了各式各样的测试软件,其中的测试可以分为System、Processor、Memory、Graphical、Disk、Network几大类。phoronix-test-suite提供了web gui界面供用户使用,同时也支持通过终端命令进行测试操作。该软件最大的特点是可以将测试结果上传...
2019-12-21 16:42:29
2432
原创 基于QT的整机测试工具1-软件介绍
编写TestSOP整机测试接口软件的初衷是方便对装有linux系统的设备进行整机接口遍历式测试,因为单独对一台设备测试时,不用辅助软件的情况下,很容易漏测,同时某些测试结果不宜保存,对多台设备进行测试后不利于结果对比分析。...
2019-12-20 20:50:09
2357
1
原创 arm处理器下的对齐异常1-简介
问题引入什么是对齐异常呢,为什么ARM处理器下会有对齐异常?这个要先从arm 32位处理器下的两条指令LDR与STR说起。作为A32指令集的两条最基本指令,STR/LDR 可以用于寄存器与内存之间的数据交换,LDR是将内存中的数载入到寄存器,STR是将寄存器中的数载入内存。A32下LDR与STR一次操作4个字节,例如如下汇编程序:LDR R1, 0xE0000000该指令将0xE0...
2019-12-18 17:59:38
3063
原创 记一次centos系统下的串口登陆异常问题
在使用centos7.5版本系统时,安装配置好桌面环境后,发现通过串口登陆系统出现了问题。https://www.centos.org/forums/viewtopic.php?t=61569https://bugzilla.redhat.com/show_bug.cgi?id=691374...
2019-11-16 16:37:39
1794
原创 imx6芯片通过EIM总线外扩多路sja1000 CAN控制器
有时会需要扩展多个CAN接口,在CAN设备比较多的时候作分组控制。这里使用imx6q芯片,它本身已经自带了两个CAN接口,如果需再扩展4个接口,就要想想办法了。sja1000是一个经典的CAN控制器,稳定可靠,由于它在业界使用方案比较成熟,用它来扩展再好不过。imx6q作为一款性能强大的处理器,扩展sja1000这种相对慢速的芯片,着实有点屈才。可是没办法,项目需要,就像PCIE转ISA,或者US
2018-01-15 21:09:13
7752
原创 构建安装ARM Ubuntu系统
一、简介 Ubuntu作为通用化的桌面系统,平易近人。我比较喜欢在Windows系统上安装个ubuntu虚拟机,用来做一些嵌入式linux应用的开发。之前用到嵌入式开发套件时,其配带光盘里都会给出对应的linux系统,一般版本过时,功能简陋。这里自己构建安装系统,可以在不改变原有linux内核的情况下,搭建一个自己想要的开发环境,系统版本、桌面环境啥的,自由更换,方便定制。 一个完整的基于L
2018-01-05 16:19:45
17364
原创 Qt tslib校准程序
在电阻式的触摸屏上开发嵌入式应用时,Qt+tslib的组合很常见,可谓经典组合。tslib库中提供了一些测试程序,比如ts_calibrate,ts_test,可以用来对触摸屏进行校准,测试。在Qt中也提供了一个例程,也是用来触屏校准的(http://doc.qt.io/qt-4.8/qt-qws-mousecalibration-calibration-cpp.html) ,Qt库中把触摸屏模拟成
2017-03-29 15:44:21
5792
5
原创 Win10 Bash搭建嵌入式Qt开发平台
在Windows下利用mingw进行一些简单程序的编译还行,但是路径问题以及工具链的制作问题,总是会遇到麻烦,不如安装个虚拟机好用。曾试着在windows下编译下qt,后来果断放弃。Win10推出ubuntu bash后,算是为在widows系统下开发运行linux程序带来了可能,我这里就试着在win10 bash下搭建了一个嵌入式qt的开发平台。win10 bash与在虚拟机上安装个ubuntu
2016-08-19 16:52:24
7801
3
原创 S5PV210 ADC驱动分析
我这里用的是mini210开发板,在其内核源码中,采用了Linux设备驱动模型中的platform虚拟总线来管理ADC设备。首先看S5PV210提供的ADC驱动接口。在plat-samsung/dev-adc.c中定义了s3c_device_adc,它是一个platform_device结构体,描述adc这个设备。/* plat-samsung/dev-adc.c */static struct
2016-05-17 11:39:31
2273
原创 关于udev,sys,proc,tmpfs一些定义的问题
谈这些概念之前,首先不得不说下devfs。devfs(设备文件系统)时由Linux2.4内核引入的,它的出现可以使得程序在设备初始化时在/dev目录下创建设备文件,卸载时将它删除。虽然它在2.6内核版本后已被udev取代,这里还是简要列出它的范例,方便后面的分析。
2016-05-06 12:09:46
1484
原创 <六> 通过RTP协议传输H264视频
之前用Jrtp的库来传输H264视频时,将摄像头编码后的视频数据直接发送,然后在另外一个开放板接收数据,解码,显示,实现效果很不错。一个开发板编码发送,一个开发板接收解码,不用考虑帧率,也不用考虑RTP数据报头部数据各个位的含义。然而想做到在开发板上采集,电脑上通过VLC播放时,却一直实现不了。后来在网上找了个通过UDP实现RTP协议的代码,终于OK了。通过WireShark抓包发现,我在用Jrt
2016-01-18 17:26:56
6342
12
原创 <五> S5PV210 H264视频解码后显示
上一章写了如何通过SPPV210芯片H264硬件解码生存yuv格式视频文件,yuv格式是由一帧帧的图像组成,做一下格式转换写到framebuffer上即可实现显示了。
2016-01-12 17:43:01
2373
原创 <二> Qt更新sqlite3插件
今天在Qt的帮助手册里看到,可以用自己编译的sqlite库来替换qt源码中所带的sqlite。这样就好办了,可以更新Qt的sqlite3插件,编程的时候直接用Qt的数据库语句,上一章中用sqlite3的函数来编程,总感觉怪怪的。毕竟是写Qt sqlite程序,应该写成Qt的风格,后面使用Qt的数据模型就比较方便。 上一章中已经说了sqlite3源码的编译,这里我把通过交叉编译后安装在虚拟
2016-01-11 11:21:25
2235
原创 <四> H264解码输出yuv文件
现在来写下s5pv210的h264解码,这一章有些部分我理解的不是很透彻,只能写个大概了。希望看到的人能给出些意见,有些地方写错的还望指正出来! 解码过程与编码过程类似,编码过程是先初始化编码器,然后从编码器输出buf中读出h264文件头数据,写入输出文件,然后开始不断地将一帧帧NV12格式的图像写入到编码器的输入buf,启动编码,从编码器输出buf中将h264视频数据写入到输出文件。解
2016-01-08 15:50:38
8054
3
原创 Smart210一键部署运行qt程序
目前只实现了一键编译、部署应用到开发板并运行的功能,一键调试还没有搞定。这一节讲一下在smart210开发板上配置一键部署qt应用程序的过程。 首先是qte库的编译,源码选用的是友善之臂光盘里的arm-qte-4.8.5-20131207.tar.gz。编译时首先配置好交叉编译器的路径,这个手册里都有说明。下面看我解压到的路径。ws@ubuntu:/opt/FriendlyARM/m
2016-01-08 10:33:22
2166
原创 <一> 第一个qt+sqlite3程序
目前想学习下sqlite数据库编程。之前在开发板上运行Qt程序时,出现了只能读数据库,不能进行写入的情况。在网上查得可以不使用Qt自带的数据库,重新编译一个sqlite3库,然后在Qt中使用这个库就可以了。为了使学习的更为全面,报着认真敲代码的态度,我将这个学习过程以博客的形式写出来。对程序中可能出现的问题,尽量不留死角。同时,在后面尽量解决以前遇到的问题。 现在开发工具如下:
2016-01-06 17:44:28
2267
原创 <三> H264编码
H.264是一种数字视频压缩方式,因为摄像头原始帧数据一般比较大,比如一帧YUV(640*480)格式的图像,大小为640*480*12/8,约460KB,如果一秒取20帧,进行实时视频传输,每秒需要传输9M左右,比较占用宽带资源,而且视频过大不利于存储。利用H264进行编码后传输是一种比较好的解决方案。 这里我对上一篇摄像头应用程序进行部分修改,并添加h264编码部分。实现效果是,在程
2016-01-05 11:22:56
2087
18
原创 <二> 摄像头画面显示
摄像头画面显示的程序比较简单,友善之臂的光盘里面已经提供了相关的代码,这里对其进行简单的封装,以便后续工程的使用。 首先从main函数看起,代码如下。/* * main.cpp * * Created on: 2015年12月4日 * Author: Westlor */#include #include #include #include "camer
2016-01-04 12:59:56
2019
5
原创 <一> 基于S5PV210实时视频传输总述
手上有两套Smart210的开发板,打算在项目之余做些东西出来,确实最近闲了点。鉴于Smart210底板上有AV-in接口,而我这里刚好有一个车载摄像头(型号:Veise DF-8073VR),所以就实时视频传输这块写几篇博客,一方面边学习边巩固,一方面也希望能在这个领域探索的更远。 先嗮张图片好了。 简介下开发板的资源。采用三星 S5PV210 作为主处理器,运行主频可高
2016-01-04 10:35:15
2255
CtkpluginProj.tar.gz
2020-01-02
2_qt+sqlite3_plug
2016-01-11
1_qt+sqlite3程序
2016-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人