基于龙芯 CPU 的气井控制器的软件设计(三)

news2024/11/13 15:15:54

 

4.1 系统软件的总体设计
基于龙芯 CPU 的气井控制器的设计需要开发测试硬件模块的测试软件,主要对 RTC
模块、存储器模块、 4G 通信、以太网通信、 UART 串口以及 AI 模块进行了驱动程序和
应用程序设计。将各个模块设计为不同的任务,龙芯 RTU 软件设计流程图如图 4-1 所示。
4.2 嵌入式 Linux 开发环境
4.2.1 嵌入式 Linux 系统的构建
随着微处理器的迅速发展,各种成本低廉、结构紧凑的 CPU 与外围连接形成了稳定
可靠的硬件架构。二十世纪八十年代末以来, Vxwork pSOS Neculeus Windows CE
等嵌入式操作系统相继出现逐步成熟起来。然而,对于成本要求尽可能低廉的嵌入式领
域的产品,此类针对商用而专门研发的操作系统的价格相对高昂,难以接受。此外,嵌
入式领域的产品研发对操作系统的源代码是否开源也有较高的需求,开源的操作系统代
码更能激发嵌入式领域研究人员的创造激情。而且,从上层应用程序开发人员的角度考
虑,做嵌入式系统的开发的操作系统的简洁程度、界面是否友好、价格是否低廉、系统
移植性高不高等都是非常关键的因素。随着 1991 年引入 Linux 系统, Linux 系统已发展
成为在计算机行业发挥核心作用的项目,除了在台式机和服务器系统上使用外, Linux
统还构成了 Android 操作系统的基础,该操作系统几乎已在 15 亿移动设备上应用 [37] 。究
其原因, Linux 操作系统以其代码开源、高稳定性、软件免费、易于裁剪和移植等得天独
厚的优势 [38] ,在嵌入式系统打开了新的发展局面,因而,嵌入式 Linux 系统成为了众多
开发设计人员的首要选择 [39]
在嵌入式系统中, Linux 是一种应用最为广泛的开发环境。代码生成工具、项目管理
工具、版本控制工具、调试工具等是其重要的组成部分。在开发工具中,代码生成工具
是开发的重要组成部分,用于生成嵌入式可执行程序。其他工具可以帮助完成嵌入式开
发并加快开发过程。
对于 Linux 操作系统很多人都只是简单的认为是 linux 内核源码构成的操作系统,其
实, linux 系统应该包含 linux 内核、由 shell 程序、程序库、编译器及工具等组成的 GNU
软件工具包、文件系统和系统库等。这些东西才构成了完整的 Linux 系统,缺一不可。
使用 Linux 作为嵌入式操作系统具有以下优势:
1 )适用于多种硬件平台,开发人员通过在硬件平台上研发出原型设计图,再将硬
件设计图移植到实物,目前, Linux 已经被移植到各种硬件平台上。站在开发任务重、时
间紧迫的开发项目和团队的角度来看, Linux 系统降低了软件和硬件的开发复杂度、节
约了研发资金,加快了工作速度,因而 Linux 以其独特的魅力吸引了众多研究开发人员。
2 Linux 可以在没有许可证或商业合作的情况下任意配置 Linux 。配置工程十分
自由。
3 )免费、源代码开源这是 Linux 操作系统最吸引嵌入式研发人员的目光的优点。
毫无疑问,相对于其他收费高昂的操作系统,使用 Linux 操作系统的开发成本会大大降
低。
4 Linux 内部设有网络支持,网络功能相当强大。
5 Linux 模块化程度较高,易于添加各种小部件。
基于 Linux 操作系统的以上优势,开发者在实际运用系统的过程中,可根据开发需
求对 Linux 系统展开裁剪或者移植等工作,以便于该系统获得稳定的运行环境,系统间
良好的兼容性。嵌入式 Linux 系统通过其出色的性能、易于裁剪和开发的优势支持各类
架构的 CPU 和硬件平台的研究开发。
嵌入式 Linux 操作系统主要由 BootLoader 、内核以及根文件系统组成 [39] 。如图 4-2
所示。
PMON 是一个主要用于嵌入式系统的开源软件,具备基本输入输出系统( BIOS )和
引导程序( BootLoader )的某些功能 [40,41] 。此外, PMON 支持 BIOS 启动配置,内核加
载,程序调试,内存寄存器显示、设置和内存反汇编等功能 [42] 。基于龙芯的系统在 PMON
上做了大量的改进工作,使得作为基本输入输出系统和引导程序的替代系统的 PMON
加完善。
对于 Linux 应用软件的开发人员来说,基于设计需求,首先要对复杂的 Linux 内核
进行配置,即可裁剪出满足设计需求的量身定制的内核,然后对内核进行编译,将编译
好的内核移植到硬件目标板中进行操作。 Linux 内核的编译过程主要分为两步:第一要
进行根据需求配置内核。第二进要行内核编译。
Linux 内核启动之后,因系统要实现最基本的一些功能,所以首先必须加载根文件
系统。根文件系统制作完成后,再使用各类文件系统镜像制作工具制作根文件系统目录
对应类型的文件系统镜像。
4.2.2 在主机搭建 Linux 环境
在嵌入式 Linux 系统开发过程中,毕竟硬件电路板上的支持软件的开发和调试的各
类系统资源有限,往往无法进行软件开发和调试,因此本文将 PC 机上装有 Linux 的发
行版本 Ubuntu VMware Workstation 虚拟机作为交叉编译环境的主机 [41] ,进而采用串
口通信或者以太网通信等通信方式进行软件开发与调试工作。
1 )安装虚拟机
在没有虚拟机出现之前,开发嵌入式 Linux 系统通常会在一台机子上安装双操作系
统,当进入程序编辑、程序编译、程序调试时要进入到 PC-Linux 系统中,当进行调试或
配置、文档编写时要进入到 Windows 。双系统的切换就是启动计算机再启动计算机或者
是将 Linux 系统或 windows 系统分装到两台计算机上,两者之间通过共享的方式进行数
据传输。虚拟机出现后,双系统就犹如一台电脑上的两个软件或两个磁盘而已。通常是
Win10 系统中通过虚拟机软件模拟 PC 机,再在虚拟机软件中搭建 Linux 系统 [43]
VMware Workstation 是一个虚拟 PC 的软件,由于我们的日常使用的大多数计算机
都安装了 Windows 操作系统, VMware workstation 虚拟机可以在现有的 Windows 操作系
统上创建一个甚至多个新的硬件环境,即模拟一台甚至多台 PC 机。 Linux 操作系统即可
在搭建好的虚拟的 PC 机上运行。本文安装的是 VMware Workstation 15.5 Pro 版本的虚
拟机。如图 4.3 所示是安装后的虚拟机界面。
2 )安装 Ubuntu 系统
桌面环境、数据库、媒体播放器、办公套件等是目前 Linux 的发行版本必不可少的
应用程序。目前, Ubuntu 作为一款相当完善的 Linux 操作系统发行版本,以其出色的桌
面应用环境和便于开发等优势备受嵌入式系统开发人员的青睐。本文安装的 Ubuntu16.04
LTS 版本,安装好后的 Ubuntu 桌面环境如图 4-4 所示。
要开发嵌入式 Linux 的应用软件,由于该开发过程是要通过跨平台开发,所以应该
搭建一个交叉开发环境 [44] 。进行应用软件开发的通用计算机一般为装有 Windows 操作系
统的 PC 机。在 windows 平台上开发应用程序的很多程序并不了解交叉编译器,因为它
已经集成到很多的 IDE 软件中。交叉编译器是在一个计算机环境中运行并生成在另一个
环境中可以运行的代码的独立的编译工具。这个编译过程就叫交叉编译。通俗点讲,即
需要在 A 平台上编译生成 B 平台上的可执行程序。如果要运行在嵌入式 Linux 开发平台
上的为嵌入式目标板上编写的源代码,则需要在运行前使用交叉编译器对其进行编译。
要进行交叉编译,我们必须在宿主平台上安装相应的交叉编译工具链,我们编写的源代
码经过交叉编译工具链编译后,即可在相应的目录找到在嵌入式目标板中可运行的程序。
我们目前采用的是针对平台编译好的二进制工具包为 buildroot-2016.02-glibc-gcc-4.7.x
mips32-nofpu.tar.bz2 ,把制作好的交叉工具解压至 Linux 系统的根目录下,此外,还要设
置工具链的路径到系统环境变量。如图 4-5 所示,我们可看到 gcc 版本号为 4.7.4 ,即为
建立好的交叉编译环境。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 监听过期的key(KeyExpirationEventMessageListener)

目录一、简介二、maven依赖三、编码实现3.1、application.properties3.2、Redis配置类3.3、监听器3.4、服务类3.5、工具类四、测试4.1、测试类4.2、单实例4.3、多实例结语一、简介 本文今天主要是讲Redis中对过期key的监听,可能很多小伙伴不会,或者使用会…

day15_常用类

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、代码块[了解] 三、API 四、Object 五、包装类 六、数学和随机 零、 复习昨日 抽象接口修饰符abstractinterface是不是类类接口属性正常属性没…

Leetcode(每日一题)——1139. 最大的以 1 为边界的正方形

摘要 1139. 最大的以 1 为边界的正方形 一、以1为边界的最大正方形 1.1 动态规划 第530题需要正方形所有网格中的数字都是1,只要搞懂动态规划的原理,代码就非常简洁。而这题只要正方形4条边的网格都是1即可,中间是什么数字不用管。 这题…

Hive的安装与配置

一、配置Hadoop环境先看看伪分布式下的集群环境有没有错误的情况:输入命令:start-all.sh jps查看伪分布式的所有进程是否完善二、解压并配置HiveHive压缩包→ https://pan.baidu.com/s/1eOF_ICZV8rV-CEh3nX-7Xw 提取码: m31e 复制这段内容后打开百度网盘…

逆向 xx音乐 aversionid

逆向 xx音乐 aversionid 版本 7.2.0 版本 7.22.0 第一步,charles 抓包 目标字段 aversionid 加固平台 com.stub.StubApp 360加固s.h.e.l.l.S 爱加密com.secneo.apkwrapper.ApplicationWrapper 梆梆加固com.tencent.StubShell.TxAppEntry 腾讯加固 第二步&…

【网络编程】Java快速上手InetAddress类

概念 Java具有较好的网络编程模型/库,其中非常重要的一个API便是InetAddress。在Java.net 网络编程中中有许多类都使用到了InetAddress 这个类代表一个互联网协议(IP)地址。 IP地址是一个32(IPV4)位或128(…

求职季哪种 Python 程序员能拿高薪?

本文以Python爬虫、数据分析、后端、数据挖掘、全栈开发、运维开发、高级开发工程师、大数据、机器学习、架构师这10个岗位,从拉勾网上爬取了相应的职位信息和任职要求,并通过数据分析可视化,直观地展示了这10个职位的平均薪资和学历、工作经…

02 Context的使用

对于 HTTP 服务而言,超时往往是造成服务不可用、甚至系统瘫痪的罪魁祸首。 context 标准库设计思路 为了防止雪崩,context 标准库的解决思路是:在整个树形逻辑链条中,用上下文控制器 Context,实现每个节点的信息传递…

Package ‘oniguruma‘, required by ‘virtual:world‘, not found

一、操作系统环境 OS版本信息:Rocky Linux 9.1 PHP版本:8.0.26 安装的依赖: dnf -y install libXpm-devel libXext-devel gmp gmp-devel libicu* icu* net-snmp-devel libpng-devel libjpeg-devel freetype-devel libxslt-devel sqlite…

真正意义上的数字零售,最为重要的一点就是要回归零售本身

互联网浪潮的退却并未真正将人们的思维带离互联网的牢笼,相反,越来越多的人依然在用互联网式的眼光看待后互联网时代的事物。尽管这样一种做法可以在一定程度上取得一定的效果,但是,如果仅仅只是用互联网思维来揣度这一切&#xf…

基于虚拟机机的代码保护技术

虚拟机保护技术是基于x86汇编系统的可执行代码转换为字节码指令系统的代码,以达到保护原有指令不被轻易逆向和篡改的目的。 字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的 ,是一种中间码。字节是…

《第一行代码》 第五章:详解广播机制

如果你了解网络通信原理应该会知道,在一个 IP 网络范围中最大的IP 地址是被保留作为广播地址来使用的。比如某个网络的 IP 范围是 192.168.0XXX,子网掩码是255.255.255.0那么这个网络的广播地址就是 192.168.0255广播数据包会被发送到同-网络上的所有端口…

Spring Security OAuth2四种授权模式总结(七)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️&#…

【MySQL】MySQL表的增删改查(CRUD)

✨个人主页:bit me👇 ✨当前专栏:MySQL数据库👇 ✨算法专栏:算法基础👇 ✨每日一语:生命久如暗室,不碍朝歌暮诗 目 录🔓一. CRUD🔒二. 新增(Creat…

将array中元素四舍五入取整的np.rint()方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将array中元素四舍五入取整 np.rint()方法 选择题 关于以下python代码说法错误的一项是? import numpy as np a np.array([-1.7, 1.5, -0.2, 0.3]) print("【显示】a\n",a) pr…

BI是报表?BI是可视化?BI到底是什么?

很多企业认为只要买一个前端商业智能BI分析工具就可以解决企业级的商业智能BI所有问题,这个看法实际上也不可行的。可能在最开始分析场景相对简单,对接数据的复杂度不是很高的情况下这类商业智能BI分析工具没有问题。但是在企业的商业智能BI项目建设有一…

数字化系统使用率低的原因剖析

当“数字化变革”成为热门话题,当“数字化转型”作为主题频频出现在一个个大型会议中,我们知道数字化时代的确到来了。但是,根据Gartner的报告我们看到一个矛盾的现象——85%的企业数字化建设与应用并不理想、但对数字化系统的需求多年来持续…

软件测试项目实战(附全套实战项目教程+视频+源码)

开通博客以来,我更新了很多实战项目,但一部分小伙伴在搭建环境时遇到了问题。 于是,我收集了一波高频问题,汇成本篇,供大家参考,避免重复踩坑。 如果你还遇到过其他坑和未解决的问题,可在评论区…

webpack安装步骤(一)

系列文章目录 安装步骤系列文章目录前言一、Webpack是什么?Webpack官网解释解释内容如下图二、Webpack的安装步骤第一步:检查本机是否已经安装过Webpack(全局)1.操作如下2.结果如下图第二步:安装webpack(非…

利用无线通讯技术构建工厂智能化立体仓储

立体仓库主要通过检测、信息识别、控制、通信、监控调度、大屏显示及计算机管理等装置组成。完成仓库各设备连接无线化,可大幅减少网线布防成本,缩短生产线调度时间,实现汽车装配生产线的柔性生产,提高汽车装配生产的自动化水平。…