[嵌入式系统-6]:龙芯1B 开发学习套件 -3-软件层次架构

目录

一、龙芯软件架构

1.1 通用软件架构

1.2 龙芯软件架构

1.3 龙芯各种应用程序

1.4 龙芯SOC芯片硬件:龙芯1B

1.5 PMON软件

1.6 龙芯IDE管辖的软件

(1)CPU Core驱动程序

(2)SOC芯片外设驱动程序

(3)实时操作系统层

(4)glibc等标准库

(5)龙芯IDE第三方库

(6)应用程序

二、龙芯IDE裸机应用程序结构

三、龙芯IDE RTThread应用程序结构

3.1 RTThread

3.2 FreeRTOS


一、龙芯软件架构

1.1 通用软件架构

1.2 龙芯软件架构

1.3 龙芯各种应用程序

1.4 龙芯SOC芯片硬件:龙芯1B

龙芯1B是中国龙芯(Loongson)系列SOC(System on Chip)芯片的一种型号。以下是关于龙芯1B芯片的一些基本硬件信息:

  1. 处理器核心:龙芯1B采用自主设计的Loongson 1处理器核心,采用MIPS32指令集架构。

  2. 频率:1B芯片的工作频率通常在组件版本和设计参数间有所变化,常见的频率范围为200 MHz至400 MHz。

  3. 缓存:1B芯片具有L1指令缓存和L1数据缓存,每个缓存块大小为16KB。

  4. I/O接口:1B芯片提供了一些常见的外设接口,包括串行接口(UART)、并行接口(GPIO)以及SPI等。

  5. 内存控制器:1B芯片支持DDR1 SDRAM,最高支持的频率为133 MHz。

  6. 图形处理器(GPU):1B芯片未集成GPU,对于图形处理通常需要外部附加芯片或通过软件实现。

需要注意的是,这些硬件规格可能根据具体版

1.5 PMON软件

龙芯的PMON是指"Processor Monitor",是一款用于Loongson处理器的引导加载程序(Bootloader)。PMON负责引导启动计算机系统,并提供一些调试和配置功能

PMON的主要功能包括:

  1. 引导加载:PMON负责从存储设备(如硬盘、闪存等)中加载操作系统其他引导程序,并将控制权交给所加载的程序

  2. 系统监控:PMON可以监控系统的状态和运行情况,并提供一些调试功能,例如查看和修改寄存器值、读取和写入内存等。

  3. 系统配置:PMON可以对系统进行一些基本的配置,例如设置启动选项、设定引导顺序、配置外设等。

  4. 固件升级:PMON允许用户通过固件升级功能更新龙芯处理器的引导加载程序和相关固件。

需要注意的是,PMON是针对Loongson处理器架构设计的特定软件,主要用于Loongson系列计算机系统。不同版本的Loongson处理器和计算机系统可能会使用不同版本的PMON软件。因此,在具体使用和配置PMON时,可能需要参考相关的文档和指南,以确保正确操作。

1.6 龙芯IDE管辖的软件

(1)CPU Core驱动程序

CPU Core驱动程序是指用于操作系统与特定的处理器核心进行通信和协作的驱动程序。它负责初始化、配置和控制处理器核心以及与之相关的硬件资源。

CPU Core驱动程序的主要功能包括:

  1. 初始化和配置:CPU Core驱动程序负责初始化处理器核心,设置它的工作状态、特性和功能。这包括设置处理器寄存器、启动时钟和中断等。

  2. 电源管理:CPU Core驱动程序可能负责管理处理器核心的电源管理功能,包括频率调节、低功耗模式和休眠状态等。它可以控制处理器的运行模式,以提供最佳的性能和功耗平衡。

  3. 中断处理:CPU Core驱动程序负责处理来自处理器核心的中断信号,并将其分发给相应的中断处理程序。它处理和管理中断请求,确保适当的响应和处理。

  4. 缓存管理:CPU Core驱动程序可能负责管理处理器核心的缓存,包括设置缓存策略、刷新和失效操作,以提高数据访问效率和性能。

  5. 时钟管理:CPU Core驱动程序可以管理和控制处理器核心的时钟,包括调整时钟频率和时钟源的选择。

CPU Core驱动程序的实现方式和功能范围会因处理器架构和硬件厂商的不同而有所差异。操作系统通常提供通用的CPU Core驱动程序,以支持不同的处理器架构和型号。对于特定的处理器核心和硬件配置,可能需要额外的定制或适配工作。

(2)SOC芯片外设驱动程序

SOC芯片外设驱动程序是针对特定系统芯片(SOC)中的外设组件(如UART、SPI、I2C、GPIO等)而编写的软件程序。它们负责初始化、配置和控制SOC芯片中的外设,使其能够与系统和操作系统进行正确的通信和交互。

SOC芯片外设驱动程序的主要功能包括:

  1. 初始化和配置:外设驱动程序负责初始化外设,包括设置其工作模式和寄存器配置,以适应特定的应用需求。

  2. 数据传输和操作:驱动程序通过提供接口函数,使操作系统能够与外设进行数据传输和操作。它们实现了读写外设寄存器或缓冲区的功能,以实现数据的输入和输出。

  3. 中断处理:某些外设支持中断机制,外设驱动程序负责检测和处理外设的中断信号。驱动程序会响应外设的中断请求,并通过相应的中断处理程序处理中断。

  4. 电源管理:SOC芯片外设驱动程序可能支持外设的电源管理功能,包括通过控制外设的电源模式和电源管理寄存器来控制功耗和休眠状态。

  5. 错误检测和处理:外设驱动程序会监测外设的状态和运行异常情况,并提供错误检测和处理机制,以确保外设的正确运行。

SOC芯片外设驱动程序的具体实现方式和功能范围会因SOC芯片的型号和厂商的不同而有所差异。SOC芯片供应商通常会提供相应的开发者文档、软件包和示例代码,以帮助开发者编写和集成外设驱动程序。

(3)实时操作系统层

RT-Thread、FreeRTOS和uCOS是三个常用的实时操作系统(RTOS),主要用于嵌入式系统开发。它们都提供了实时任务调度、中断处理、任务通信和内存管理等功能,以帮助开发者在嵌入式系统中有效管理和控制任务和资源。

以下是对这三个操作系统的简要介绍:

  1. RT-Thread:RT-Thread是一个开源的实时操作系统,具有小巧、高效、可裁剪和可移植的特性。它支持多种处理器架构和各种外设,可以适应不同的嵌入式硬件平台。RT-Thread提供了一套完整的组件库,包括任务管理、信号量、消息队列、定时器和文件系统等。

  2. FreeRTOS:FreeRTOS是一个免费的实时操作系统内核,广泛用于嵌入式系统中。它具有小巧、可移植和可裁剪的特点,适用于使用RAM和ROM有限的嵌入式设备。FreeRTOS提供了多任务调度、中断处理、任务通信和内存管理等核心功能,同时具有低延迟和低资源占用的优势。

  3. uCOS:uCOS是嵌入式实时操作系统(RTOS)的商业版本,也有一个开源版本uCOS-II。它是一个可移植、可裁剪和高度可靠的操作系统,广泛用于嵌入式系统和实时应用中。uCOS提供了任务管理、事件触发、内存管理和通信机制等功能模块,支持多任务调度和优先级管理

这三个实时操作系统都有较强的嵌入式系统支持,适用于不同类型的应用和硬件平台。选择合适的操作系统取决于具体的应用需求、项目要求以及开发者的经验和偏好。建议在选择之前,先了解相关操作系统的特性、文档和社区支持,以便作出更准确的决策。

(4)glibc等标准库

glibc(GNU C Library)是一种C语言标准库,它是GNU计划的一部分,提供了许多用于编程的标准函数和接口。glibc是一个广泛使用的C库,被用于大多数基于Linux的操作系统和许多其他Unix-like系统。

glibc提供了一系列常用的函数,包括字符串处理、文件操作、内存管理、数学运算、时间和日期处理等。它还提供了操控进程和线程、网络编程和套接字操作等系统级功能的接口。

除了glibc,还有其他一些常见的标准库,包括:

  1. libc:libc是C语言的标准库,提供了基本的C语言函数和类型定义。它定义了C语言的基本操作和数据类型,是其他C库和应用程序的基础。

  2. libstdc++:libstdc++是C++语言的标准库,提供了一组用于C++编程的类和函数。它提供了许多C++标准函数和容器,包括字符串、数组、列表、映射等。

  3. libm:libm是数学库,提供了数学运算函数,如三角函数、指数函数、对数函数等。

这些标准库通常由操作系统或编译器提供,并与操作系统的API和编程语言的规范相匹配。开发人员可以使用这些标准库来编写跨平台、可移植和可靠的应用程序,因为它们已经被广泛测试和使用,并且具有良好的兼容性和稳定性。

(5)龙芯IDE第三方库

龙芯IDE(Integrated Development Environment)是一个用于开发龙芯(Loongson)处理器架构的嵌入式系统的集成开发环境。虽然我无法提供详细的信息,但是一般来说,第三方库的可用性和支持取决于龙芯IDE版本以及龙芯处理器架构的特定要求。

对于任何开发平台和工具链,第三方库通常是由开发者社区或厂商提供的,用于扩展和增强开发环境的功能。这些库可能包括用于图形界面、网络通信、数据库操作、音频处理、图像处理等不同领域的函数和模块。

在寻找与龙芯IDE兼容的第三方库时,你可以考虑以下几个途径:

  1. 龙芯IDE文档:查阅龙芯IDE相关的官方文档和用户手册,以寻找关于第三方库的详细信息。这些文档通常会提供有关支持的库和资源链接。

  2. 开发者社区:参与龙芯开发者社区,例如论坛、邮件列表、社交媒体等。这些社区是交流和分享经验的好地方,你可以了解其他开发者使用的第三方库,并获取相关建议和资源。

  3. 特定项目资源:如果你正在进行特定领域或特定应用的开发,你可以寻找与该项目相关的第三方库。这些库通常由具体的项目或领域专家维护,在龙芯IDE中使用这些库可能会得到更好的支持和集成。

  4. 开源生态系统:龙芯是基于开源原则的处理器架构,因此,你还可以查看开源软件库和项目,以寻找适用于龙芯IDE的第三方库。开源社区通常提供了许多开发工具和库,你可以找到与龙芯架构兼容的库。

需要注意的是,具体可用的第三方库取决于龙芯IDE的版本和编译工具链的支持情况。因此,请确保查阅相关文档、官方资源或与专业人士交流,以确保你选择的库与你的开发环境兼容。

(6)应用程序

当涉及到龙芯IDE上的应用程序开发时,你可以根据具体的需求和应用场景选择不同的开发方法和工具。以下是几种常见的应用程序开发方法:

  1. C/C++编程:C/C++是传统的应用程序开发语言,可以使用龙芯IDE中提供的编译器和调试工具来进行开发。你可以使用C/C++语言编写应用程序的逻辑和功能,并使用IDE提供的工具进行构建、调试和测试。

  2. Python编程:Python是一种易学易用的高级编程语言,也可以在龙芯IDE上进行开发。你可以使用Python编写应用程序的脚本和逻辑,利用IDE提供的Python解释器和工具来运行和测试应用。

  3. Java编程:如果你想开发基于Java的应用程序,你可以使用适用于龙芯IDE的Java开发工具,比如Eclipse IDE。这样,你可以使用Java语言编写跨平台的应用程序,并利用IDE的功能进行开发和调试。

  4. Web应用程序开发:对于Web应用程序开发,你可以使用龙芯IDE中的Web开发工具,如HTML、CSS和JavaScript编辑器等。你可以使用这些工具编写网页界面和前端逻辑,并配合后端服务器进行开发。

  5. 嵌入式应用程序开发:龙芯处理器架构主要用于嵌入式系统开发,因此你也可以使用龙芯IDE进行嵌入式应用程序的开发。你可以使用C/C++语言编写底层驱动程序、任务逻辑和RTOS相关的代码,利用IDE进行编译、调试和下载到目标硬件平台。

这些只是一些常见的应用程序开发方法,实际上还有更多的选择。具体选择哪种方法取决于你的应用需求、开发经验和个人偏好。在进行应用程序开发时,确保参考相关的文档、教程和资源,以便了解和使用龙芯IDE中的功能和工具。

二、龙芯IDE裸机应用程序结构

三、龙芯IDE RTThread应用程序结构

3.1 RTThread

RTThread继承了特定CPU内核的初始化!!!

3.2 FreeRTOS

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode.2808. 使循环数组所有元素相等的最少秒数

题目 题目链接 分析 我们最终形成的数组一定是当前数组nums 中的一个数字。 所以我们的想法就是枚举数组 nums 中的所有数字,取最小值。 题目告诉我们每一秒都可以向左右扩散一位,那么多个相同的 x 同时扩散,扩散完整个数组耗时就取决于两…

8. 实现VLAN间的通信

文章目录 一. 初识VLAN通信1.1. VLAN的概述1.2. Dot1q 终结子接口(单臂路由 )1.3. VLANIF接口 二. 实验专题2.1. 实验1: Dotlq 终结子接口2.1.1. 实验目的2.1.2. 实验拓扑图2.1.3. 实验步骤(1)配置PC机的网络(2)交换机…

Jmeter分布式场景

Jmeter分布式 1. 为什么使用Jmter分布式测试 1.1 需求 对学院接口(查询学院-所有)进行1000用户并发访问,测试服务器处理批量请求能力1.2 现状 我们单台电脑由于配置(CPU、内存)问题,最模拟500用户时,就出现卡死现象按照一般的压力机配置&…

C/C++ (stdio.h)标准库详解

cstdio,在C语言中称为stdio.h。该库使用所谓的流与物理设备(如键盘、打印机、终端)或系统支持的任何其他类型的文件一起操作。 在本文将会通过介绍函数参数,举出实际的简单例子来帮助大家快速上手使用函数。 目录 一、流 二、库函数 1、F…

Angular组件(二) 分割面板ShrinkSplitter

Angular组件(二) 分割面板ShrinkSplitter 前言 在Angular组件(一) 分割面板ShrinkSplitter文章中我们实现了Splitter组件,后来在业务场景中发现在开关右侧容器和底部容器时,使用起来不方便,ngModel绑定的值始终是左侧容器和顶部容器的大小&…

sony ps3 eye 摄像头win10、win11directShow补丁驱动,补充CL5.3驱动无法外部程序调用问题

最近把几年前,淘的sony ps3 eye 摄像头(30元左右)拿出来测试,发现升值了。原因是,这个摄像头可以树莓派结合做只能机器人,次摄像头,拥有高达640下60帧,320下120帧高速率,…

KAFKA节点故障的容错方案

KAFKA节点故障的容错方案 1. broker启动加载逻辑1.1 日志组成和分析1.2 snapshot文件1.3 broker启动流程1.4 LogManager的初始化和启动过程 2. controller高可用1.1 选主逻辑1.2 HA切换1.3 controller的职责 3. partition高可用3.1 ISR列表3.1 选举Leader 4. 疑问和思考4.1 如果…

跟着cherno手搓游戏引擎【15】DrawCall的封装

目标: Application.cpp:把渲染循环里的glad代码封装成自己的类: #include"ytpch.h" #include "Application.h"#include"Log.h" #include "YOTO/Renderer/Renderer.h" #include"Input.h"namespace YO…

VRRP负载平衡

1.构图 2.实验 2.1如图提示配置pc1-pc4 掩码:255.255.255.0网关均设置为192.168.1(\2).254 2.2配置sw1-sw2 [sw1]port-group 1 //创建接口组,组号是1[sw1-port-group 1]group-member gigabitethernet 0/0/1 to gigabitethernet 0/0/3 //添加组成员,从…

Java注解和反射

注解和反射 课程:注解和反射02:内置注解_哔哩哔哩_bilibili 一.注解入门 1.Annotation是jdk1.5开始引入的新技术。 2.Annotation的作用: 不是程序本身,可以对程序作出解释; 可以被其他程序(例如编译器&…

4D毫米波雷达分类和工程实现

4D毫米波目标检测信息丰富,可获得目标3维位置信息、径向速度vr和rcs等,能够对目标准确分类。 4D毫米波和激光做好时空同步,可以用激光目标给4D毫米波做标注,提升标注效率。 1 激光用做4D毫米波分类真值 128线激光推理的结果作为4…

计算机网络-数据交换方式(电路交换 报文交换 分组交换及其两种方式 )

文章目录 为什么要数据交换?总览电路交换电路交换的各个阶段建立连接数据传输释放连接 电路交换的特点电路交换的优缺点 报文交换报文交换流程报文交换的优缺点 分组交换分组交换流程分组交换的优缺点 数据交换方式的选择分组交换的两种方式数据报方式数据报方式的特…

基于二值化图像转GCode的双向扫描实现

基于二值化图像转GCode的双向扫描实现 什么是双向扫描双向扫描代码示例 基于二值化图像转GCode的双向扫描实现 什么是双向扫描 在激光雕刻中,双向扫描(Bidirectional Scanning)是一种雕刻技术,其中激光头在雕刻过程中沿两个方向…

怎么查询鸿蒙真机支持的API版本

1、打开设备的开发者模式与USB调试并通过USB连接上电脑。 2、管理员身份运行cmd。 3、进入hdc.exe所在目录。(鸿蒙OS IDE的SDK下载目录中) 4、输入hdc shell,进入特殊模式 5、输入 getprop hw_sc.build.os.apiversion 查看API版本 6、输入 getprop hw_sc.build…

算法:积木游戏学习数学

一、算法描述 小华和小微一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小微找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的…

Java 开发环境 全套包含IDEA

一、JDK配置 1.下载 JDK Builds from Oracle 去这边下载open JDK 2.JDK环境变量配置 按win,打开设置 找到环境变量编辑 这边输入的是你下载的那个JDK的bin的路径 检擦配置是否正确在cmd中输入 二、IDEA安装配置 1.下载(社区版) JetBrai…

华为---STP(二)---STP报文和STP端口状态

目录 1. STP报文简介 1.1 Configuration BPDU 1.2 TCN BPDU 2. STP交换机端口状态 2.1 STP交换机端口状态表 2.2 STP交换机端口状态迁移过程图 2.3 STP交换机端口状态变化举例说明 3 引起的STP网络拓扑改变的示例 3.1 根桥出现故障 3.2 有阻塞端口的交换机根端口所在…

学习鸿蒙基础(2)

arkts是声名式UI DevEcoStudio的右侧预览器可以预览。有个TT的图标可以看布局的大小。和html的布局浏览很像。 上图布局对应的代码: Entry //入口 Component struct Index {State message: string Hello Harmonyos //State 数据改变了也刷新的标签build() {Row()…

万户 ezOFFICE DocumentEditExcel.jsp SQL注入漏洞

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

Unity3D正则表达式的使用

系列文章目录 unity工具 文章目录 系列文章目录前言一、匹配正整数的使用方法1-1、代码如下1-2、结果如下 二、匹配大写字母2-1、代码如下1-2、结果如下 三、Regex类3-1、Match()3-2、Matches()3-3、IsMatch() 四、定义正则表达式…