Linux嵌入式设备与QT软件开发
2018-12-20秦贞滕张永状邓志豪重庆三峡学院电子与信息工程学院通信工程专业2015级
秦贞滕 张永状 邓志豪 重庆三峡学院电子与信息工程学院通信工程专业2015级
引言:随着社会的不断发展,无线的传输速度和传输时延也越来越快,这将推动着物联网技术的快速发展,而嵌入式系统可以说是一种比较好的与各类硬件软件连接工作的平台,嵌入式系统可以自定义各种驱动是否含有,让操作系统能以最小的体积,最合适的功能,不浪费运行空间和设备性能来保证嵌入式设备正常工作。而QT是一种一次开发,多处运行的一种开发平台,还是一种面向对象的C++应用程序图形界面设计,其中的信号与槽机制能有效的开发所设计的功能。作者就是为了给各位读者搭建一个基本的开发嵌入式硬软件的基本概念和流程。
1 Linux系统概述
Linux其实仅仅是代表内核,但大多数人都喜欢用这个单词代表系统,该内核是开源的,免费的,可以自由传播。Linux系统支持多用户,多线程,多核CPU的实时操作系统,Linux可以自由裁剪,自由选择驱动和想要的组件,以缩小系统大小,舍去无需的服务以减少运行系统的资源开支。
关于linux系统的实时性,就是在确定的范围之内响应某个事件的特性,这对于一些嵌入式设备是基本的要求。对于嵌入式硬件,这种对于体积和造价要求比较苛刻的设备来说,里面的硬件资源是寸土寸金的,所以必须严格控制软件占用,让整个系统平稳运作。
Linux系统的移植还需要一个基本工具就是bootloader,用来引导操作系统,主要作用是初始化和检测硬件设备,建立内存空间映射让基本的硬件都协调工作,实现基本硬件功能,为了接下来的系统移植提供基本的硬件准备。
2 QT开发平台概述
Qt是一款跨平台C++图形用户应用开发平台,可以开发GUI应用,也可以开发非GUI应用,控制台,服务器等都可以,我们为了监控和控制嵌入式设备一般都是开发图形用户界面来直观的观察情况。由于QT的跨平台性,我们可以在任何一个平台开发,到其他平台上编译,然后去运行,省去了二次开发的麻烦。QT提供了很多API,包括串口通信,TCP/IP网络,各种GUI组件和控件,XML支持。QT独特的信号与槽机制让各种可以与用户交互的按钮和控件可以关联到SLOT槽函数里面,交互即执行函数,直观便于理解。
对一些新手开发者最有利的就是,QT官方提供了大量的开发文档,可以在QT creator 里面直接搜索得到解决办法。
3 项目设计和开发
任何项目或者设计在开始之前都需要合理规划和分析,然后再去一步一步的开发和设计,避免从做无用的工作。
3.1 需求分析
开发人员在开始一个项目之前,需要深入细致的用户调研,开发分析,根据客户的要求和功能实现,来初步设计项目的模板,评价项目的可行性,可靠性,把需求转化为可开发功能,最后对项目所需人员,财力物力进行评估,才能开始进行开发。
3.2 硬件搭建
3.2.1 硬件设备选择
根据项目规划和需求分析选择最合理,最合适,最擅长的硬件,一来可以缩短开发周期,二可以节省开发成本。
选择各种硬件设备的时候还要考虑各种硬件之间的兼容性和冲突性,最好选择兼容性最好的硬件,也便于接下来的维修维护。
3.2.2 系统裁剪和移植
Linux系统移植有着基本的步骤,我们这次设计举例用Ubuntu系统。
大部分开发平台和目标硬件设备是不同的芯片或者操作系统,这时候就需要搭建交叉编译环境,比如我们在ARM平台开发程序,在x64或者x86平台,就需要搭建arm平台的编译环境,可以安装编译器arm-linux-gcc用来编译开发主机所需的程序。移植的linux系统也是必须用这个编译器来编译。
u-boot移植,分析架构和硬件兼容性,根据u-boot给的origen板子实例,找到与开发主机相同的芯片编译文件,拷贝板级文件到编译目录,修改Makefile编译新加入的文件,拷贝板级头文件,修改boards.cfg配置文件,添加BL1和BL2启动代码(根据不同芯片查看开发主机的芯片手册),添加看门狗关闭代码编,关闭中断,添加电源管理相关代码,添加串口初始化相关代码,译后把u-boot.bin文件烧写到emmc中即可观察到串口数据输出。u-boot移植完成后需要设置网络tftp服务或者其他通信方法,因为串口通信速度慢。
内核编译,根据开发主机选择linux内核源码,根据开发主机芯片型号选择内核编译选项和添加配置文件,不需要的功能和一些服务可以去掉,用来节省空间,编译后会生成一个uImage镜像文件。
设备树文件就是把系统中各种文件分类添加索引,以至内核可以准确找到想要找的文件,编译设备数文件,为.dtb文件。在编译内核和设备树的时候可以根据需求添加驱动。
编译完成内核和设备树后就可以通过u-boot的tftp下载到开发主机中。编译完成后开发主机就可以执行我们编写的生成的.out等文件。
3.3 软件开发
3.3.1 开发主机应用程序
根据开发主机的搭载芯片,和电路连接,查看芯片手册和硬件工程师提供资料来开发程序,实现对应功能,不同寄存器的设置代表不同功能,查看手册和讨论编写程序来调用芯片相连的硬件,实现目标功能。
3.3.2 图形化界面开发
QT开发我们可以选择在Windows平台开发,根据需求绘制图形化窗口,设置基本需要显示的数据,图像,窗口,可以通过无线协议,有线连接,通过服务器等获取开发主机的信息,或者控制开发主机。
4 调试阶段
所有工作做完并且没有错误可以运行在主机上,就可以进行调试测试阶段,调试包括基本功能测试,稳定性测试,干扰分析,连接强度,等一些根据项目具体情况要求的测试。
5 总结
科技的发展不会停止,5g通信技术已经在实践阶段,我们不难想象以后的世界会是物物互联,万物相通的方向发展,学习基本的嵌入式设备开发和软件调试技巧是非常有必要的。学习基本嵌入式开发知识对我们今后的学习和工作也有着很重要的作用,当我们拿到任何一个项目或者硬件设备都会有基本的思路来调试。