- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 大话嵌入式之一---变量
动态变量也就是很多书中提到的局部变量,是函数运行过程中申请的,生命周期随着函数的开始而诞生,随着函数的结束而消亡;是动态存在的。程序分配栈空间给局部变量使用;由于程序或者任务的栈空间的大小限制,所以不建议在函数中申请大量的局部变量,如大空间的数组;静态变量,可以包含有局部静态变量用static修饰和全局变量,这种变量一旦定义不会消亡,和函数的生命周期无关;两种静态变量只是作用范围不一样,局部静态变量只为某个函数服务,而全局变量为整个工程里的所有函数服务;因此也有书本会说static会定义变量的作用域。.
2020-05-10 22:10:19 226
原创 一种全新的任务分配机制----无操作系统
无操作系统时传统的程序编写机制Gufeng11main{初始化定时器;while(1){if(A变量== 1){执行函数1();执行函数2();…….}}}定时器中断(){1秒时间到{A变量 =1;}}优点:实现简单;缺点:当需要执行的秒任务增多,可能会出现任务没有运行的状态,丢任务;int loop;main{初始化定时器;while(1)...
2020-03-30 22:59:28 268
原创 关于计数型信号量
计数型信号量在事件控制块中增加了计数器,这个计数器可以表示为事件发生的次数或者对资源数量的管理。计数信号量有释放信号量操作和获取信号量操作,释放信号量操作的时候计数器的值会加一,获取信号操作,计数器的值减一,如果减到0任务会进入到等待状态;具体操作方式有两种,如下所示:Wait操作和Notify操作,接下来会详细描述这两个操作的具体过程。Wait操作,首先等待计数器的值是否为大于0,如...
2018-10-30 21:19:25 4231
原创 一种全新的链表模式
一般使用如下所示的方式定义节点typedef struct _tNode{int NodeData;struct tNode * node;} tNode;在进行节点的初始化的时候,需要将定义头节点,如下所示:tNode * pHead;然后开始进行链表的生成,具体的如下所示:程序执行的主要关系是,先给首节点变量赋值,将节点指针指向null,再创建一个临时节点p,并为p.dat...
2018-10-26 11:14:49 275
原创 bitmap位图数据结构在RTOS优先级中的应用
bitMap就是用每一位来存放某种状态,用32位的数据位来存放,某种状态。初始化操作,将所有位清零;置1某位,给定某位,将某个位置一;清零某位,清零某位,将某个位清零;查找第一个置位的位置,从第0为开始,判断哪一个位置一;查找算法,使用了两种算法:1、从第0位开始,逐个查找;2、分组查找法;32位的数据分为4个组,分别对4个组进行查找,分组后的数据如下列出数据表格如下所示:st...
2018-10-22 17:14:01 607
原创 RTOS的变量锁的发生
变量的改变有以下几个步骤,读-改-写,当一个变量被改变的时候,有任务或者中断将这个过程打断。同时在中断函数中,将变量重新赋值,那原来的变量改就失效,变量变成了我们不希望出现的值。因此我们需要在任务中屏蔽中断的发生。下面我们将利用函数,模拟变量读改写的过程被打断:void task1Entry(void * param){int i,j;i = 10;tSetSysTickPeriod(...
2018-10-22 11:03:44 713
原创 RTOS的任务切换核心程序
用FreeRTOS也有断时间了,但是由于不理解底层的源代码,所以用起来不舒服。尝试去阅读FreeRTOS的源代码,由于缺少对RTOS的整体架构的理解,总是顾头不顾尾。于是想自己尝试编写RTOS,做一个简单的任务的切换。荣幸听了一位大神的从0到1写RTOS,才有勇气到这里发表一些小小的个人理解。这篇文章主要是我对RTOS任务切换核心程序的理解。任务开始时,先创建任务栈寄存器,并对对其进行初始化。这...
2018-10-19 09:28:05 750
原创 嵌入式软件,JAVA,Zookeeper中的资源共享的问题
最近在学习大数据的相关知识,环境搭建了,mapreduce程序也写过了,HIVE,sqoop等组件也都安装,并进行了测试,但是总是感觉有写不踏实,必进对于一枚嵌入式工程师来说,大数据的知识总是有一些遥不可及。终于在有一天看到了分布式共享锁的问题,想想恰好在FREERTOS中也有资源共享的问题,而JAVA的多进程实现中也有资源同步的问题,于是闲来无事,写了这篇文章,看看这些资源共享和同步中都有哪些区...
2018-09-26 19:20:38 219
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人