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

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

相关文章

近期CCF系列会议截稿时间

专属领域会议订阅 关注{晓理紫},每日更新会议信息,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新会议信息。 CSFW (CCF B) IEEE Computer Security Foun…

opencv-python计算视频光流

光流基本概念 光流表示的是相邻两帧图像中每个像素的运动速度和运动方向。具体:光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系&#xf…

RISC-V指令格式

RISC-V指令格式 1 RISC-V指令集命名规范2 RISC-V指令集组成2.1 基础整数指令集2.2 扩展指令集 3 RISC-V指令格式3.1 指令表述3.2 指令格式 本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 RISC-V指令集命名规范 前面提到过RV32I,这是…

谷粒商城【成神路】-【4】——分类维护

目录 1.删除功能的实现 2.新增功能的实现 3.修改功能的实现 4.拖拽功能 1.删除功能的实现 1.1逻辑删除 逻辑删除:不删除数据库中真实的数据,用指定字段,显示的表示是否删除 1.在application.yml中加入配置 mybatis-plus:global-config:…

基于springboot校园二手书交易管理系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括乐校园二手书交易管理系统的网络应用,在外国二手书交易管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统…

WebAssembly002 FFmpegWasmLocalServer项目

项目介绍 https://github.com/incubated-geek-cc/FFmpegWasmLocalServer.git可将音频或视频文件转换为其他可选的多媒体格式,并导出转码的结果 $ bash run.sh FFmpeg App is listening on port 3000!运行效果 相关依赖 Error: Cannot find module ‘express’ …

《Linux软件编程》的初步认识

一,Linux的认知: Linux 实际上来说是操作系统的内核,ubuntu是操作系统(包括redhat,centos,freebsd等) Linux(操作系统化的内核): 1.管理CPU 2.管理内存 3.管理硬…

基于WordPress开发微信小程序2:决定开发一个wordpress主题

上一篇:基于WordPress开发微信小程序1:搭建Wordpress-CSDN博客 很快发现一个问题,如果使用别人的主题模板,多多少少存在麻烦,所以一咬牙,决定自己开发一个主题模板,并且开源在gitee上&#xff…

redis 6.x集群搭建

redis6集群搭建 安装文件下载 redis-6.2.6.tar.gz 编译 tar -zxvf redis-6.2.6.tar.gz cd redis-6.2.6/ make MALLOClibc make install PREFIX/opt/soft/redis复制可执行文件 cp /opt/soft/redis/redis-cli /usr/bin/redis-cli cp /opt/soft/redis/redis-server /usr/bi…

2024 Flutter 重大更新,Dart 宏(Macros)编程开始支持,JSON 序列化有救

说起宏编程可能大家并不陌生,但是这对于 Flutter 和 Dart 开发者来说它一直是一个「遗憾」,这个「遗憾」体现在编辑过程的代码修改支持上,其中最典型的莫过于 Dart 的 JSON 序列化。 举个例子,目前 Dart 语言的 JSON 序列化高度依…

2024 年, Web 前端开发趋势

希腊哲学家赫拉克利特认为,变化是生命中唯一不变的东西。这句话适用于我们的个人生活、行业和职业领域。 尤其是前端开发领域,新技术、开发趋势、库和框架不断涌现,变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方…

Vue2+ElementUI 弹窗全局拖拽 支持放大缩小

拖拽组件 dialogDrag.vue <template><div></div> </template> <script>export default {name: dialogDrag,data() {return {originalWidth: null,originalHeight: null}},created() {this.$nextTick(()>{this.dialogDrag()})},mounted() {}…

业务流程自动化平台在制造业应用案例,助力业务自动化、智能化

捷昌驱动成立于2000年&#xff0c;并于2018年9月在上海证券交易所上市&#xff0c;是一家专注于线性驱动产品研发、生产及销售的科技集团。 公司整合全球资源&#xff0c;为智慧办公、医疗康护、智能家居、工业自动化等关联产业提供驱动及智能控制解决方案&#xff0c;以科技驱…

一站式在线协作开源办公软件ONLYOFFICE,协作更安全更便捷

1、ONLYOFFICE是什么&#xff1f; ONLYOFFICE是一款功能强大的在线协作办公软件&#xff0c;可以创建编辑Word文档、Excel电子表格&#xff0c;PowerPoint&#xff08;PPT&#xff09;演示文稿、Forms表单等多种文件。ONLYOFFICE支持多个平台&#xff0c;无论使用的是 Windows、…

了解UDP发送过快导致的问题和对应解决方案

在当今这个以数据为核心的时代&#xff0c;企业对于数据传输的速度和稳定性有着日益增长的需求。UDP凭借其低延迟和高效率的特性&#xff0c;在实时通信和大规模数据传输领域扮演着关键角色。然而&#xff0c;UDP的无连接特性和缺乏可靠性也给数据传输带来了挑战&#xff0c;尤…

通过html2canvas和jsPDF将网页内容导出成pdf

jsPDF参考&#xff1a;https://github.com/parallax/jsPDF html2canvas参考&#xff1a;https://github.com/niklasvh/html2canvas 或者 https://html2canvas.hertzen.com 思路 使用html2canvas将选中DOM生成截图对象将截图对象借助jsPDF导出为PDF文件 代码 这是一个示例&a…

MySQL事务隔离级别

1 引言 隔离性在实际操作中比看起来复杂很多。ANSI SQL标准定义了4种隔离级别。如果是数据库领域的新手&#xff0c;强烈建议在阅读特定的MySQL实现之前先熟悉ANSI SQL的通用标准。这个通用标准的目标是定义在事务内外可见和不可见的更改的规则。较低的隔离级别通常允许更高的…

Deepin如何开启与配置SSH实现无公网ip远程连接

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

计算机网络——链路层(1)

计算机网络——链路层&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU)前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.…

爬虫笔记(三):实战qq登录

咳咳&#xff0c;再这样下去会进橘子叭hhhhhh 以及&#xff0c;这个我觉得大概率是成功的&#xff0c;因为测试了太多次&#xff0c;登录并且验证之后&#xff0c;qq提醒我要我修改密码才可以登录捏QAQ 1. selenium 有关selenium具体是啥&#xff0c;这里就不再赘述了&#x…