做网站用什么系统好,电商网站开发需要什么语言,自助建站和wordpress,房产网网站目录
概述系统架构模块介绍编译方法使用方法使用场景设计架构示例程序
概述
UniProton是鸿蒙操作系统面向工业控制领域的轻量级实时操作系统(RTOS)#xff0c;专为资源受限的嵌入式设备设计。作为鸿蒙生态的重要组成部分#xff0c;UniProton提供了高效的实时任务调度、内…目录概述系统架构模块介绍编译方法使用方法使用场景设计架构示例程序概述UniProton是鸿蒙操作系统面向工业控制领域的轻量级实时操作系统(RTOS)专为资源受限的嵌入式设备设计。作为鸿蒙生态的重要组成部分UniProton提供了高效的实时任务调度、内存管理和IPC机制满足工业控制场景对实时性和可靠性的严格要求。基本信息版本: 3.1.0许可证: BSD 3-clause资源占用: ROM约300KBRAM约100KB支持架构: ARMv7-M和ARMv8架构适用系统: mini系统类型系统架构UniProton采用分层架构设计从下到上分为硬件抽象层、内核层和系统服务层。分层架构┌─────────────────────────────────────────┐ │ 应用层 │ ├─────────────────────────────────────────┤ │ 系统服务层 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 文件系统 │ │ 网络协议 │ │ 设备管理 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ ├─────────────────────────────────────────┤ │ 内核层 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 任务管理 │ │ 内存管理 │ │ IPC机制 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 定时器 │ │ 中断管理 │ │ 错误处理 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ ├─────────────────────────────────────────┤ │ 硬件抽象层 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ CPU抽象 │ │ 中断抽象 │ │ 内存抽象 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────┘模块介绍UniProton内核由五大子系统构成各子系统的职责如下1. Mem子系统功能: 实现内存分区的创建内存块的申请和释放等功能算法: 采用FSC(First Fit with Segregation and Coalescing)内存管理算法特点: 将内存划分为多个大小不同的分区每个分区采用链表管理空闲内存块2. Arch子系统功能: 实现和芯片强相关的硬件特性功能如硬中断、异常接管等支持架构: ARMv7-M和ARMv8架构抽象层: 提供CPU抽象、中断抽象和内存抽象3. Kernel子系统功能: 实现任务、软中断、TICK中断、软件定时器等功能调度机制: 支持基于优先级的抢占式调度同优先级任务采用时间片轮转算法任务状态: 支持就绪态、运行态、阻塞态和挂起态四种状态4. IPC子系统功能: 实现事件、队列、信号量等进程间通信机制通信方式: 提供信号量、事件、队列和互斥锁等多种IPC机制应用场景: 满足不同应用场景下的进程间通信需求5. OM子系统功能: 实现cpup、hook等调测功能监控能力: 提供CPU占用率统计、错误处理和钩子函数功能运维支持: 帮助开发者进行系统监控和问题诊断编译方法环境要求操作系统: SUSE Linux Enterprise ServerPython: 3.4CMake: 3.20.5编译器:ARMv7-M: GNU Arm Embedded Toolchain 10-2020-q4-majorARMv8: gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf编译步骤方法一Linux环境编译创建编译工具目录mkdir-p /opt/buildtoolschmod-R755/opt/buildtools安装编译器# ARMv7-M编译器tar-xvf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt/buildtools# ARMv8编译器tar-xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz -C /opt/buildtools安装CMaketar-xvf cmake-3.20.5-Linux-x86_64.tar.gz -C /opt/buildtools下载代码gitclone https://gitee.com/openeuler/UniProton.git下载依赖库按照platform/README.md指导下载libboundscheck库执行编译cdUniProton python build.py m4# 编译ARMv7-M版本# 或python build.py armv8# 编译ARMv8版本方法二Docker环境编译拉取镜像docker pull swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/uniproton:v002创建并进入容器docker run -it -v$(pwd):/home/uniproton swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/uniproton:v002下载代码gitclone https://gitee.com/openeuler/UniProton.git下载依赖库按照platform/README.md指导下载libboundscheck库执行编译cdUniProton python build.py m4编译结果生成的静态库文件存放在output/UniProton/lib/cortex_m4目录下生成的libboundscheck库文件存放在output/libboundscheck/lib/cortex_m4目录下使用方法基本开发流程准备开发环境安装交叉编译工具链配置CMake构建环境准备目标硬件平台创建应用项目参考demos/helloworld目录结构创建apps、bsp、build、config、include、libs等目录配置系统参数修改prt_config.c和prt_config.h文件根据需求裁剪功能模块编写应用代码实现PRT_AppInit函数创建任务实现PRT_HardDrvInit函数初始化硬件实现PRT_HardBootInit函数进行系统初始化编译和链接编译应用代码链接UniProton静态库生成可执行文件烧录和调试将可执行文件烧录到目标硬件连接调试器进行调试API接口使用UniProton提供了丰富的API接口主要包括任务管理接口PRT_TaskCreate: 创建任务PRT_TaskResume: 恢复任务PRT_TaskDelay: 任务延时PRT_TaskDelete: 删除任务内存管理接口PRT_MemAlloc: 分配内存PRT_MemFree: 释放内存IPC接口PRT_SemCreate: 创建信号量PRT_SemPend: 等待信号量PRT_SemPost: 释放信号量PRT_EventCreate: 创建事件PRT_EventRead: 读取事件PRT_EventWrite: 写入事件使用场景UniProton广泛应用于工业控制、物联网设备、智能家居、汽车电子等领域特别适合对实时性要求高的场景工业自动化控制系统PLC控制器运动控制系统工业机器人控制物联网设备智能传感器网络边缘计算节点工业网关智能家居智能家电控制安防监控系统环境监测设备汽车电子车身控制模块发动机控制单元高级驾驶辅助系统实时数据采集系统数据采集终端信号处理设备仪器仪表设计架构代码目录结构一级目录二级目录三级目录说明builduniproton_ci_lib编译框架的公共脚本uniproton_configconfig_m4cortex_m4芯片的功能宏配置文件cmakecommonbuild_auxiliary_script转换Kconfig文件为buildef.h脚本functionscmake的公共功能函数tool_chain编译器和编译选项配置文件demoshelloworldapps示例程序的main函数文件以及业务代码bsp板级驱动适配代码builddemo构建及链接脚本config用户配置文件功能宏定制头文件includesrc/include/uapi及posix目录下头文件拷贝目录libs源码编译静态库文件存放目录Hi3093Hi3093芯片示例RASPI4树莓派4B示例doc项目配置、规范、协议等文档designUniProton系统架构和特性说明platformlibboundscheck使用说明libboundschecklibboundscheck预留目录用户将下载的源码放在此目录下srcarchcpucpu对应架构的功能适配代码includecpu对应架构的头文件config用户main函数入口config用户配置功能宏开关coreipc事件、队列、信号量等功能kernel任务、中断、异常、软件定时器等功能fslittlefslittlefs适配层代码不包含完整littlefs代码vfs文件系统vfs层接口代码includeuapi对外头文件posixposix接口头文件mem内存管理基本功能fsc内存管理FSC算法代码include内存管理头文件netlwip-2.1lwip适配层代码不包含完整lwip代码omcpupcpu占用率统计功能err错误处理功能hook钩子函数功能include系统管理头文件osalposixposix功能实现源码securityrnd随机化功能utilitylib公共库函数核心设计理念模块化设计各子系统独立设计降低耦合度支持按需裁剪减小系统体积清晰的接口定义便于扩展和维护实时性保证抢占式任务调度确保高优先级任务及时执行中断处理机制快速响应外部事件精确的定时器管理满足时间敏感型应用资源高效利用轻量级内核最小资源占用高效的内存管理算法减少内存碎片优化的数据结构提高系统性能可靠性设计完善的错误处理机制内存保护机制防止非法访问栈溢出检测提高系统稳定性示例程序Hello World示例以下是一个简单的Hello World示例程序展示如何使用UniProton创建任务并输出信息#includestdio.h#includestdlib.h#includestring.h#includestdarg.h#includesecurec.h#includertt_viewer.h#includeprt_config.h#includeprt_config_internal.h#includeprt_clk.h#includetest.hvoidhelloworld_task(U32 uwParam1,U32 uParam2,U32 uwParam3,U32 uwParam4){printf(hello world!\n);while(1){PRT_TaskDelay(10);}return;}U32PRT_AppInit(void){U32 ret;TskHandle taskPid;structTskInitParamstInitParam{helloworld_task,10,0,{0},0x500,TaskA,0};retPRT_TaskCreate(taskPid,stInitParam);if(ret){returnret;}retPRT_TaskResume(taskPid);if(ret){returnret;}returnOS_OK;}U32PRT_HardDrvInit(void){RttViewerInit();RttViewerModeSet(0,RTT_VIEWER_MODE_BLOCK_IF_FIFO_FULL);returnOS_OK;}U32 g_testRandStackProtect;voidOsRandomSeedInit(void){#ifdefined(OS_OPTION_RND)U32 ret;U32 seed;seedPRT_ClkGetCycleCount64();g_testRandStackProtectrand_r(seed);retPRT_SysSetRndNum(OS_SYS_RND_STACK_PROTECT,g_testRandStackProtect);#endif}voidOsGlobalDataInit(void){}voidPRT_HardBootInit(void){OsGlobalDataInit();OsRandomSeedInit();}U32PRT_Printf(constchar*format,...){va_list vaList;charbuff[0x200]{0};S32 count;U32 ret;va_start(vaList,format);countvsprintf_s(buff,0x200,format,vaList);va_end(vaList);if(count-1){returnOS_ERROR;}RttViewerWrite(0,buff,count);returncount;}S32main(void){returnOsConfigStart();}编译和运行将上述代码保存为main.c文件放在demos/helloworld/apps目录下按照编译方法中的步骤编译项目将生成的可执行文件烧录到目标硬件连接调试器可以看到输出hello world!总结UniProton作为鸿蒙操作系统面向工业控制领域的轻量级实时操作系统具有实时性强、可靠性高、资源占用少、模块化程度高等特点广泛应用于工业控制、物联网设备、智能家居、汽车电子等领域。通过本文档的介绍开发者可以了解UniProton的系统架构、模块功能、编译方法、使用方法和设计理念为基于UniProton的应用开发提供指导。