全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)

前面,QEMU的基础仿真环境已经搭建成功了。能够实现printf这样的提示功能我觉得在软件的调试上就有很多可以尝试的地方了。如果能够改改中断,模拟几个GPIO信息,可能这样的环境会更完善一些。即使是GPIO的信息不支持,pritnf用一个变量模拟一下也有很好的体验。

接下来,分析一下blinky示范工程。可能,这是所有的例程中最简单的一个了吧。

这里的这个注释还是很有价值的,解决了我之前的一个疑惑。感觉我自己第一次尝试的时候运气还是有的,居然直接碰出来了正确的结果。

现在的配置是使能了blinky的例程,其实整个配置的生效很简单,具体如下:

从全工程的角度看,这个配置的信息出现在了3个不同的文件,但是其实只有main.c中涉及到真正的代码。

main函数中,通过这个配置实现了2个main函数的配置分支。

另一个地方则是tick hook函数,这个在blinky的例程中是被禁用掉了的。

main函数这边付恩性需要看两部分信息,一部分是辅助信息,另一部分则是串口初始化。剩下的部分直接进入到了不同的main实现,创建不同的OS例程。上面的注释部分,是我之前看过的一个页面。

串口初始化看起来是一个模拟环境支持的一个成熟的外设,这个让我对QEMU有了更多的期待。

接下来,创建了一个队列对象。判断,如果队列创建成功那么接下来创建2个任务以及一个软件定时器对象。软件定时器对象还注册绑定了一个回调函数,之后启动了定时器和OS的调度。为了能够阅读更舒服,我做了简单的排版,但是尝试了编译执行没有影响。

通过上面的信息,大概可以知道接收队列消息的任务会被来自队列消息发送任务或者定时器回调函数发出来的队列消息激活。其中,按照周期信息看,两者有一个10倍的关系。

发送任务,向队列每200ms发一个消息。

回调函数,每2S中发一个消息。

接收任务,我做了简单的修改,为了能更好看清楚前面分析出来的倍数关系。

最后补充软件定时器的部分配置谢谢你,这个优先级还是很高的,现定时器任务在的优先级是5,高于前面的收发两个任务。

最后看看运行效果,这个可以看出来10倍的关系,但是第一次的执行不是10。应该是定时器启动早于调度器启动导致的吧?可以作为一个问题后面跟踪一下,我想这个等守护程序的配置加上之后可以测试出来。

1250_FreeRTOS_QEMU_M3_blinky例程梳理分析相关推荐

  1. 六大国产CPU | 全面梳理分析

    前言 CPU作为ICT设备的运算和控制核心,负责指令读取.译码与执行,因研发门槛高.生态构建难,被认为是集成电路产业中的"珠穆朗玛峰".纵观全球,Intel.AMD两大巨头领跑通用 ...

  2. Xilinx XDMA 例程代码分析与仿真结果

    PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054]7 Series Integrated ...

  3. 如何对一个老系统进行梳理分析

    我们大部分时候面临的都是老系统改造,在老的系统上进行代码的开发,需求的实现.当我们觉得老系统实在"太老"的时候,就想着应该怎么分析老系统,以便支持我们去重构.本文从老系统分析的方向 ...

  4. i.MX6ULL终结者MPU6050 六轴传感器例程原理分析

    MPU6050的原理部分,如图 1所示: 图 1 从原理我们可以看到MPU6050的电源使用3.3V,和i.MX6ULL通过I2C2接口,地址选择引脚AD0接到了GND上.

  5. UART两个例程分析

    UART学习 UART基本概念 在编写具体程序之前,可以先了解下UART大致的概念,之后再在example内寻找例程进行分析.最后再参照手册就可以做出具体的东西了 通用异步收发传输器(Universa ...

  6. Zookeeper源码分析:主从角色关系流程概述

    参考资料 <<从PAXOS到ZOOKEEPER分布式一致性原理与实践>> zookeeper-3.0.0 主从关系概述 在概述了主从角色的初始化流程之后,本文主要来梳理分析一下 ...

  7. 数据权限设计思路_后台权限管理设计思路:三种模型分析

    编辑导语:任何系统/产品搭建时,最先考虑的都应该是权限管理模块,而且权限管理模块的清晰.稳定是平台产品健康发展的基石,权限管理核心考虑的问题是用户与权限的关系.本文作者对三种不同权限管理的版本展开了梳 ...

  8. 深度分析:经典视频产品架构拆解

    本文由作者 大橘子-huiqing 发布于社区 01 产品架构 产品架构就是在充分理解产品用户需求基础上对产品数据流转的逻辑梳理.简言之,就是产品架构是功能梳理+策略整合.纯银曾经说真正拥有产品架构能 ...

  9. Halcon例程详解 (深度图转换为3D图像)—— xyz_attrib_to_object_model_3d

    一.前言 深度图向点云图进行转换是进行3D检测项目时会遇到的问题,halcon里也有针对此问题的相关例程,下面对此例程进行分析.通过学习此例程,我们可以掌握如何将一张深度图像和一张正常二维图像转换为3 ...

  10. 学习Enroll例程

    学习Enroll例程 Visual C++提供了一个名为Enroll的例子来作为学习MFC数据库编程的教程.Enroll分为四步,本节的任务就是指导读者完成前三步的Enroll例程,并对其进行较彻底的 ...

最新文章

  1. cocostudio UI编辑器中UITextField输入框控件光标
  2. APUE(第九章)进程关系
  3. 5GS 协议栈 — Overview
  4. linux coredump配置与调试
  5. 数据光端机设备性能指标介绍
  6. Redis配置文件配置
  7. 运行初始化过程代码笔记
  8. RecyclerView(六)设置下拉刷新
  9. 等待队列中为什么需要互斥锁?一个线程在等待时被唤醒后会做什么?安全队列的代码实现
  10. 50个常用mysql语句_50个常用的sql语句
  11. docker volume mysql_docker volume的理解
  12. 【bug】记一个有趣的“bug”
  13. [cocos2dx]斗地主随机发牌界面生成
  14. python 多分类情感词典_基于情感词典的python情感分析
  15. php分钟转时间戳,php函数转时间戳
  16. 哪家的云游戏服务器好?如何选择云游戏服务器?
  17. Android 自定义锁屏_开发自定义ROM提速:红米Note 6 Pro等Android Pie内核源代码上线...
  18. 领英辅助工具领英精灵的下载安装的细节和方法
  19. Python爬取所有人位置信息——腾讯位置大数据!
  20. java基础_设计模式_设计基础(小鸭子游戏)

热门文章

  1. poi生成excel并让excel的列有筛选功能
  2. 关于内网和外网 区别
  3. ORACLE通过身份证号计算年龄
  4. 宝妈群体又一次遭受职场歧视?公司要求怀孕即离职?或许抖音小店是突破口
  5. c语言实现输入电压检测,STC12C2052AD单片机AD转换C语言程序的实现
  6. osm地图数据 mysql_GIS 地图数据的来源?
  7. springboot中Excel文件导出
  8. 正式学习Linux的第一节课
  9. 第三章软件项目成本管理
  10. 什么是区块链BaaS平台?