一个面向MCU的小型前后台系统

这篇具有很好参考价值的文章主要介绍了一个面向MCU的小型前后台系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JxOS简介

JxOS面向MCU的小型前后台系统,提供消息、事件等服务,以及软件定时器,低功耗管理,按键,led等常用功能模块。

gitee仓库地址为(复制到浏览器打开):

https://gitee.com/jeremyceng/JxOS/tree/master

在此基础上实现了基于433的简单无线网络功能。

此项目的设计思想是:功能模块与硬件高度解耦,提高代码模块的可复用性;不使用复杂的数据结构和语法以提高不同硬件平台和编译器之间的兼容性,实现工程在不同MCU之间的快速移植;提供实用稳定常用的功能模块,实现项目的快速开发;定义标准应用开发框架,减轻应用开发的工作量和难度。

已使用此系统用于开发项目的硬件平台有:N76E003、STM8S103K、PC、KF8TS2716

Software Architecture

一个面向MCU的小型前后台系统,单片机,arm开发,嵌入式硬件

一个面向MCU的小型前后台系统,单片机,arm开发,嵌入式硬件

JxOS
├───demo_code    参考代码,未整理代码
│
├───jxos     jxos
│   ├───bsp     过时分类,将逐步归类到 driver 和 lib 中
│   ├───kernel    内核,提供系统内核功能:任务、事件、消息、公告板、邮箱、管道、注册、内存分配……
│   ├───driver    使用 静态 初始化的功能代码模块,使用config.h文件进行配置;此目录下的代码大部分与硬件相关,如:传感器、按键扫描、屏幕…… (driver 与 lib 有时并没有清晰的界限,如driver:led_blink 就有可能抽象成 lib:sw_pwm)
│   ├───lib     使用 动态 初始化的功能代码模块,使用初始化函数进行配置;此目录下的模代码大部分与硬件无关,如:环形缓冲区、crc16、栈、软件定时器…… 
│   ├───sys_service   基于任务实现的系统服务,如:低功耗管理、软件定时器、打印输出……(只有对外接口,不发出对外消息)
│   └───std_app    基于任务实现的常用标准应用,如独立按键扫描、按键多次点击、指示灯闪烁……(此类模块和user app属于同一级别,只不过已经标准化;此类模块发出对外消息,也有对外接口,用于兼容不能支持消息功能的硬件平台)
│
├───platform
│   ├───N76E003    ┐
│   ├───N76E003    ├───  基于 jxos 实现的,使用不同平台硬件的具体项目
│   └───STM8S103K3 ┘
│
├───JSnet   ┐
├───....    ├───   基于 jxos 实现的功能模块
└───SRTnet  ┘
  1. kernel 提供系统内核功能:任务、事件、消息、公告板、邮箱、管道、注册、内存分配……
  2. driver 使用 静态 初始化的功能代码模块,使用config.h文件进行配置;此目录下的代码大部分与硬件相关,如:传感器、按键扫描、屏幕…… (driver 与 lib 有时并没有清晰的界限,如driver:led_blink 就有可能抽象成 lib:sw_pwm)
  3. lib 使用 动态 初始化的功能代码模块,使用初始化函数进行配置;此目录下的模代码大部分与硬件无关,如:环形缓冲区、crc16、栈、软件定时器……
  4. sys_service 基于任务实现的系统服务,如:低功耗管理、软件定时器、打印输出……(只有对外接口,不发出对外消息)
  5. std_app 基于任务实现的常用标准应用,如独立按键扫描、按键多次点击、指示灯闪烁…… (此类模块和user app属于同一级别,只不过已经标准化;此类模块发出对外消息,也有对外接口,用于兼容不能支持消息功能的硬件平台)
  6. platform 基于 jxos 实现的,使用不同平台硬件的具体项目
  7. 在某些编译器环境下可能出现以某些限制(不支持函数指针,不支持中断处理函数中调用其他函数,不支持函数指针带参数,不支持结构体),因此 std_app 提供的消息可能无法使用,作为补充std_app 也会同时提供全局变量来传出信息和函数接口来传入信息
  8. 为提高代码的兼容性;尽量不要使用函数指针
  9. 为提高代码的可复用性,std_app 中的功能尽量在 driver 和 lib 中实现,std_app 中的代码仅作为提供系统tick和统一对外接口的功能
  10. 模块和 std_app 可以提供多个不同实现方法的文件,但保持对外接口的统一
  11. 对外提供两套接口方案 jxos_public.h 提供高级接口(消息 事件等),jxos_public_lite.h 提供低级接口(全局变量, 函数)

  资料直通车:Linux内核源码技术学习路线+视频教程内核源码

学习直通车:Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈

Instructions

  1. 导入 jxos_public.h 即可调用系统所有的对外接口
  2. 每个项目通过 jxos_init_config.c 和 jxos_config.h 对系统进行配置,即每个项目有独立配置文件
  3. 在 jxos_init_config.c 实现需要硬件支持的系统模块硬件初始化,以及用户任务的初始化顺序
  4. 在 jxos_config.h 配置系统模块的参数和使能
  5. event 用于任务内部的信号同步,主要是将中断信号传递到任务
  6. msg 用于任务之间的消息传递,使用 jxos_msg_get_handle 可通过消息名(字符串)获取消息句柄
如何建立新项目:
 获取 Jxos 所有文件和目录结构
 在 \platform 目录下建立当前工程的目录(platform\芯片型号\工程命名\)
 在 \工程名称 目录下新建工程文件(keil、iar 等IDE的newproject)
 在 \工程名称 目录下新建 \config 目录,增加 jxos_config.h type.h 系统配置文件
 在 \config 目录下增加工程用到的功能模块的配置文件 (如 button_config.h sim_timer_config.h ...)
 在 \工程名称 目录下新建 \framework 目录
 在 \framework 目录下增加 main.c ,实现main函数,在main函数中调用jxos_run() ( void main(void) {jxos_run();} )
 在 \framework 目录下增加 isr.c ,实现工程需要的中断处理函数
 在 \framework 目录下增加 callback_handler.c ,实现工程用到的功能模块的callback函数
 建议在 \工程名称 目录下新建 \app 目录,实现用户功能任务
 建议在 \芯片型号 目录下增加芯片需要用到的库文件目录
 在IDE的新工程中导入 jxos.c
 在IDE的新工程中导入需要的Jxos模块的文件(kernel、sys_service ...)
 在IDE的新工程中导入 main.c, isr.c, callback_handler.c
 在IDE的新工程中导入用户任务文件 (\工程名称\app\)
 在IDE的新工程中增加include目录,包括:\joxs,\platform\芯片型号\工程命名\config
 在IDE的新工程中增加其他的include目录,如芯片库文件的头文件
 按照框架实现用户任务

如何配置与使用 kernel
如何配置与使用 sys_service
如何配置与使用 std_app
如何使用标准框架的 driver 模块
如何使用标准框架的 lib 模块

原文作者:【一起学嵌入式

一个面向MCU的小型前后台系统,单片机,arm开发,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-696725.html

到了这里,关于一个面向MCU的小型前后台系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 川西旅游网系统-前后端分离(前台vue 后台element UI,后端servlet)

    前台:tour_forword: 川西旅游网前端----前台 (gitee.com) 后台:tour_back: 川西旅游网-------后台 (gitee.com) 后端 :tour: 川西旅游网------后端 (gitee.com)

    2024年02月07日
    浏览(38)
  • Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)

    vue3-element-admin 是基于 vue-element-admin 升级的 Vue3 + Element Plus 版本的后台管理前端解决方案,技术栈为 Vue3 + Vite4 + TypeScript + Element Plus + Pinia + Vue Router 等当前主流框架。 相较于其他管理前端框架,vue3-element-admin 的优势在于 一有一无 (有配套后端、无复杂封装): 配套完整 Java 后

    2024年02月05日
    浏览(63)
  • ElasticSearch如何在前后台启动

    进入es的目录 bin/elasticsearch Ctrl + C停止进程 进入es的目录 bin/elasticsearch -d 1.查看端口9200被哪个进程占用 sudo lsof -it tcp:port 例如:sudo lsof -it tcp:9200 或者直接查看es的进程 ps - ef | grep elasticsearch 2.kill相应进程 sudo kill -9 pid 例如:sudo kill -9 987

    2024年02月16日
    浏览(46)
  • 前后台协议联调&拦截器

    目标 能够完成前后台功能整合开发 掌握拦截器的编写 创建一个Web的Maven项目 pom.xml添加SSM整合所需jar包 创建对应的配置类 编写Controller、Service接口、Service实现类、Dao接口和模型类 resources下提供jdbc.properties配置文件 内容参考前面的项目或者直接使用前面的项目进行本节内容

    2023年04月14日
    浏览(45)
  • android 监听app前后台切换

    需求是统计app使用时长,要求在按home键的时候也算一次完成的使用记录。刚开始打算采用监听home键点击,寻求的方法是监听系统广播。 可以实现监听home键被点击,但有一个弊端就是点击home键app切换到后台后,在使用别的app点击home键 自己的app还是会收到这个广播,因为这是

    2024年02月11日
    浏览(37)
  • 如何判断Android应用置于前后台

            项目开发过程中总会遇到判断应用程序是否置于后台或者从后台切换到前台。往往在切换的时候应用会通过请求接口更新页面展示数据或者提示广告信息等相关操作。因此对于开发者来说判断应用程序前后台状态还是比较重要的。下面记录两种判断应用前后台状态的

    2024年02月12日
    浏览(41)
  • Vue 3.3 + Vite 4.3 + TypeScript 5+ Element-Plus:从零到一构建企业级后台管理系统(前后端开源)

    vue3-element-admin 是基于 vue-element-admin 升级的 Vue3 + Element Plus 版本的后台管理前端解决方案,技术栈为 Vue3 + Vite4 + TypeScript + Element Plus + Pinia + Vue Router 等当前主流框架。 相较于其他管理前端框架,vue3-element-admin 的优势在于 一有一无 (有配套后端、无复杂封装): 配套完整 Java 后

    2024年02月12日
    浏览(62)
  • 【jenkins部署】一文弄懂自动打包部署(前后台)

    软件开发中,会分多个环境,开发环境、测试环境、预发布环境、生产环境,软件部署如果是纯人工一个个通过jar的方式, 会有如下问题: 服务器过多,容易出错 修改配置,可能会存在未修改到位的情况 服务器部署权限一般只有开发服务器人才有权限,涉及到服务器的安全

    2024年02月08日
    浏览(52)
  • 大文件分片上传的实现【前后台完整版】

    在一般的产品开发过程中,大家多少会遇到上传视频功能的需求,往往我们采用的都是对视频大小进行限制等方法,来防止上传请求超时,导致上传失败。这时候可能将视频分片上传可以对你的项目有一个小小的体验优化。 本片文章前端是vue,后台基于PHP进行的分片上传,需

    2024年02月10日
    浏览(51)
  • centos配置nginx+node前后台+mongodb

    centos 环境下安装

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包