本内核开源免费,欢迎大家下载使用学习,目前内核基础工作模块工作正常,有bug可以反馈给我。内核源码下载链接:https://gitee.com/qidiyun/QDos此例程是基于 STM32F407ZG 芯片的,STM32F103 的也差不多,自己移植,或者我有空了再放上来。自制国产实时内核——vnRTOS 所有文档:第 1 节 内核介绍第 2 节 代码结构第 3...
原创
2021-07-09 11:26:45
387阅读
本内核开源免费,欢迎大家下载使用学习,目前内核基础工作模块工作正常,有bug可以反馈给我。内核源码下载链接:https://gitee.com/qidiyun/QDos 此例程是基于 STM32F407ZG 芯片的,STM32F103 的也差不多,自己移植,或者我有空了再放上来。自制国产实时内核——vnRTOS 所有文档:第 1 节 内核介绍第 2 节 代码结构第 3 节 让内核跑起来第
原创
2022-02-24 16:32:28
177阅读
自制国产实时内核——vnRTOS 所有文档:vnRTOS 文档本节主要是讲下如何使用 vnRTOS代码框架目前源码使用的是STM32F407芯片。整个代码的框架如下:其中, n_os 是整个内核的源码部分。打开可以看到如下文件:chip —— 是和具体芯片相关的代码,如果要移植,主要移植这个文件。其中有三个文件:chip / cpu_sys.c —— 该...
原创
2021-07-09 11:59:35
501阅读
首先,我们先问自己几个问题:问:当前市场上有ucOS、freeRTOS、RT-thread 等内核、还有开源的linux等,为什么我们还要自己在开发一套内核呢?ucOS 是商业收费的,freeRTOS 是一个免费的开源的内核,非常好用。RT-thread也是一款国产的实时内核,非常好用,强烈推荐大家使用 RT-thread。至于为什么还要自己开发一套实时内核呢?一个是源于技术的追求。vnRTO
原创
2022-02-24 16:32:47
342阅读
首先,我们先问自己几个问题:问:当前市场上有ucOS、freeRTOS、RT-thread 等内核、还有开源的linux等,为什么我们还要自己在开发一套内核呢?ucOS 是商业收费的,freeRTOS 是一个免费的开源的内核,非常好用。RT-thread也是一款国产的实时内核,非常好用,强烈推荐大家使用RT-thread。至于为什么还要自己开发一套实时内核呢?一个是源于技术的追求。v...
原创
2021-07-09 11:59:36
768阅读
自制国产实时内核——vnRTOS 所有文档: vnRTOS 文档本节主要是讲下如何使用 vnRTOS代码框架目前源码使用的是STM32F407芯片。整个代码的框架如下:其中, n_os 是整个内核的源码部分。打开可以看到如下文件:chip —— 是和具体芯片相关的代码,如果要移植,主要移植这个文件。其中有三个文件:chip / cpu_sys.c —— 该文件主要是实现系统心跳定时的功能,
原创
2022-02-24 16:33:30
50阅读
自制国产实时内核——vnRTOS 所有文档: vnRTOS 文档对于多线程,还有一个问题不容忽视。就是生产者和消费者的问题。我们考虑一个场景。线程 A 接受网络数据,如果没有网络数据,那线程 A 就要进入休眠。那当网卡接收到数据包的时候,如何去唤醒 线程A 呢?我们引入信号量的概念:线程A 首先去获取网络数据包这个信号量,如果为0 说明没有网络数据,进入休眠。如果网卡接收到了数据,那么网卡线程可以
原创
2022-02-24 16:34:09
42阅读
自制国产实时内核——vnRTOS 所有文档:vnRTOS 文档对于多线程,还有一个问题不容忽视。就是生产者和消费者的问题。我们考虑一个场景。线程 A 接受网络数据,如果没有网络数据,那线程 A 就要进入休眠。那当网卡接收到数据包的时候,如何去唤醒 线程A 呢?我们引入信号量的概念:线程A 首先去获取网络数据包这个信号量,如果为0 说明没有网络数据,进入休眠。如果网卡接收到了数据,那...
原创
2021-07-09 11:59:32
461阅读
自制国产实时内核——vnRTOS 所有文档:vnRTOS 文档首先我们看下如何使用:main函数部分: core_init(); led1_id = task_create(led1_task, (void *)0, 10 * TASK_STACK_40_BYTE, USER_PRIO_BASE, "led1"); led2_id = task_create(led2...
原创
2021-07-09 11:59:34
587阅读
自制国产实时内核——vnRTOS 所有文档: vnRTOS 文档首先我们看下如何使用:main函数部分:core_init(); led1_id = task_create(led1_task, (void *)0, 10 * TASK_STACK_40_BYTE, USER_PRIO_BASE, "led1"); led2_id = task_create(led2_task, (voi
原创
2022-02-24 16:33:42
83阅读
自制国产实时内核——vnRTOS 所有文档: vnRTOS 文档线程的同步与互斥——资源:我们想象一个场景,比如我们有两个线程都需要使用到打印机。但是打印机只能同时给一个线程使用,那么我们内核如何解决此类问题呢?这里我们引入一种资源的概念。我们把打印机看成资源。线程需要使用的时候,先获取该资源,如果能获取到,则进行接下来的操作,如果获取不到,则退出或者休眠,等待资源准备好。这里我们就需要使用两
原创
2022-02-24 16:31:43
58阅读
自制国产实时内核——vnRTOS 所有文档:vnRTOS 文档线程的同步与互斥——资源:我们想象一个场景,比如我们有两个线程都需要使用到打印机。但是打印机只能同时给一个线程使用,那么我们内核如何解决此类问题呢?这里我们引入一种资源的概念。我们把打印机看成资源。线程需要使用的时候,先获取该资源,如果能获取到,则进行接下来的操作,如果获取不到,则退出或者休眠,等待资源准备好。这...
原创
2021-07-09 11:59:33
438阅读