[嵌入式系统-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.hqwc.cn/news/441455.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

螺旋遍历二维数组【leetcode】

给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。 螺旋遍历:从左上角开始,按照 向右、向下、向左、向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。 示例 1: …

[docker] Docker容器服务更新与发现之consul

一、consul的相关知识 1.1 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#…

走迷宫-bfs

package Test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int N 110,hh 0,tt -1,n,m;static int[][] g new int[N][N]; //用来存储迷宫static int[][] d new int[N][N]; //用来存储d[i…

【送书福利-第三十期】《Java面试八股文:高频面试题与求职攻略一本通》

内容简介 本书将碎片化的Java面试八股文知识点系统化、结构化,精选了近200道经典高频的八股文面试题,整理了近20个经典高频的实战场景解决方案,准备了10多个面试简历实操技巧。每道面试题都标注了难度指数、考查频率、开发年限和匹配岗位等&…

c++之说_9_6|自定义类型 struct operator 重载运算符关键字

c中 struct 和 class 特性几乎一模一样 所以很多都是共有的特性 篇幅就很多了 c中 我觉得最牛皮的概念之一 就是 重载运算符 operator 关键字 这个东西 能将 我们的 运算符 (-*/) new delete 类型转换 写在类里面当成员函数 并制定 该类型变…

手机屏幕生产厂污废水处理需要哪些工艺设备

随着手机行业的快速发展,手机屏幕生产厂的规模也越来越大,但同时也带来了大量的污废水排放问题。为了保护环境和人类的健康,手机屏幕生产厂需要采取适当的工艺设备来处理污废水。本文将介绍手机屏幕生产厂污废水处理所需的工艺设备。 首先&am…

数据据库八之 视图、触发器、事务

【零】准备数据 【1】创建表 (1)部门表 d_id是部门的编号d_name是部门的名字 # 确保表不存在 drop table if exists department; # 创建表 create table department( d_id int auto_increment primary key, d_name varchar(6) )auto_increment 501 …

CSS之webkit内核中的属性text-stroke

让我为大家介绍一下text-stroke 大家是否想过要弄一个描边过的文字&#xff0c;接下来&#xff0c;text-stroke就可以为你解决 text-stroke是一个复合属性&#xff0c;里面有两个参数&#xff1a;描边的尺寸 描边的颜色 <!DOCTYPE html> <html lang"en">…

【服务端性能测试】性能测试策略如何做

一、需求收集 先需要确认本次测试目的是什么&#xff0c;然后再看我们需要用什么参数来判断这个目的是否能够达成。 1.1 业务性能指标参考&#xff1a; TPS、QPS、RT、请求成功率&#xff08;一般请求成功率>99.99%&#xff09; 1.2 硬件性能指标参考&#xff1a; 即服…

【React】前端项目引入阿里图标

【React】前端项目引入阿里图标 1、登录自己的iconfont-阿里巴巴矢量图标库&#xff0c;把需要的图标加入到自己的项目中去&#xff1b;2、加入并进入到项目中去选择Symbol点击复制代码3、安装ant-design/icons4. 新建一个MyIcon.js文件内容如下5、在项目中使用 1、登录自己的i…

【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解

文章目录 0. 前言1. ROI池化的提出背景2. RoI池化的结构与工作原理3. RoI池化的作用及意义4. RoI使用示例 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解及成果&#xff0c;但是内容可能存在不准确的地方…

【Java程序设计】【C00176】基于SSM的图书管理系统(论文+PPT)

基于SSM的图书管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的图书管理系统 本系统分为前台系统、后台管理员以及后台学员3个功能模块。 前台系统&#xff1a;当游客打开系统的网址后&#xff0c;首先看到的就…