自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

转载 嵌入式C高级用法 //转自RT_Thread物联网操作系统

1、内存管理我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的,只知道地址。 内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系统中),而且内存分配也会直接影响到程序的效率。因此,我们要对C语言中的内存管理,有个系统的了解。 在C语言中,定义了4个内存区间:...

2018-09-29 12:11:21 236

原创 基础篇_11_内存池

内存池,申请出得内存情况是内存块,相对于动态内存申请rt_malloc()申请的内存,rt_mp_alloc()申请的内存块的开头和结尾会包含指向上一块的指针和指向下一块内存块的指针。每块内存块的大小相等。动态申请内存不会出现任务调度,内存池申请内存会出现任务调度。1.初始化内存池对象/*静态初始化内存池对象*/static rt_uint8_t *ptr[50];static rt...

2018-09-24 19:25:11 319

原创 基础篇_10_软件定时器

定时器,由RT_Thread虚拟出来得定时器,输入的参数有五个;相对于硬件的定时器,虚拟出来的定时器的定时时间的时间精度为滴答时钟起振的倍数,所以精度会有所损失;不过有利就有弊,软件定时器可以虚拟很多啊,也很好用。1.定时器的创建/* 静态创建 *//* 定时器的控制块 */static struct rt_timer static_timer;rt_timer_init(&am...

2018-09-24 16:59:48 1045

原创 基础篇_09_信号机制

信号,信号不同于一般得IPC变量,信号不需要初始化,也没有删除;信号有安装,监控,发送,响应的操作。为什么没有安装操作的原因是,信号大部分是被系统所使用的,是已经创建过的,信号室友具体标号的,例如我们能使用的SIGUSR1,SIGUSR2;还有我们可以自己定义的部分。/** Each of the following macros expand to a positive integral...

2018-09-24 12:27:26 374 2

原创 基础篇_08_IPC之消费者生产者问题

/* * 程序清单:生产者消费者例子 * * 这个例子中将创建两个线程用于实现生产者消费者问题 *(1)生产者线程将cnt值每次加1并循环存入array数组的5个成员内; *(2)消费者线程将生产者中生产的数值打印出来,并累加求和 */#include <rtthread.h>#define THREAD_PRIORITY 6#define THREA...

2018-09-24 10:42:08 346

原创 基础篇_07_IPC之事件

事件是什么,为什么需要事件?在RT-Thread中的IPC量已经包含了信号量,互斥量,邮箱,消息队列。事件作为IPC量的一种,它的和信号量和互斥锁类似,同样是为线程的运行增加限定条件。只不过事件的满足,拥有更加严格的条件。例如:同时满足1和2,满足1和2中的某一个,同时满足1,2,3,6中的条件或者满足其中某一个。1.事件的创建/*静态事件的创建*//*事件控制块*/static...

2018-09-23 22:01:42 399

原创 基础篇_06_IPC之邮箱及消息队列

邮箱和消息队列,都是在需要数据交换的场景下使用。那么首先,先介绍邮箱。邮箱有一个具体的大小,邮箱内接收的数据的个数,不能超过邮箱总大小的四分之一。1.邮箱的创建&消息队列的创建/*静态邮箱的创建*/static struct rt_mailbox static_mailbox;static char mb_pool[2048];rt_mb_init(&stat...

2018-09-23 20:08:29 1592

原创 基础篇_05_IPC之互斥锁

互斥锁,IPC的一部分。互斥锁,算是信号量中特殊的一个例子,即信号量的数量只为1,只要有任何一个线程获取到这个互斥量,在没有释放这个互斥量之前,任何线程都获取不到。除此之外,互斥锁还有一个作用,那就是提升当前信号量获取线程的的优先级。/*节选自rt_mutex_take()函数*//* change the owner thread priority of mutex */ if (th...

2018-09-23 09:26:47 459

原创 基础篇_04_IPC之信号量

IPC: Inter proess communication 大的任务中的各任务信息交互配合,内容包括信号量,互斥锁,消息队列,邮箱,事件 本篇文章,只讨论第一个内容,信号量1.信号量的创建和线程的创建方式类似,信号量的创建也分动态dynamic和静态static的分别,分别由两个函数实现。/*静态信号量的线程控制块*/static struct rt_semapho...

2018-09-22 11:26:06 707

原创 基础篇_03_堆的初始化及 map 文件

堆栈,是我们常常会听说过的词汇。搞嵌入式如果说不懂得堆栈可能会被怀疑学习了一个假的嵌入式。不过,坦白来说,我还是不太理解其中的细节,比如说栈的位置在哪?我们说栈是先进后出FILO形式的数据结构,堆是先进FIFO先出的形式的数据结构。栈是由系统操作的,而堆是由程序员操作的。我感觉这些解释都是玄而又玄的说法,我现在还没有理清头绪,以后有具体头绪了再来写出我的想法。现在先学习大佬的想法:栈...

2018-09-19 21:21:29 419

原创 基础篇_02_线程切换钩子函数与临界区

我们常说,空闲任务的优先级是最低的,仿佛任何任务都比它重要。但是实际上空闲任务,是作为所有RTOS中不可或缺的一部分。不管有那个任务被执行,总需要在必要时间切换到其他任务,满足系统的需要。所以,它最神奇,同时也最深奥。不过,由于知识能力所限,本人现在还不能清楚其中的重要核心部分;为了满足开发的需求,需要简单理解空闲任务及回调函数(钩子函数)的使用现象和简单的思考。1.钩子函数的创建 ...

2018-09-18 16:25:55 852

原创 基础篇_01_线程创建

1.thread线程的创建/*静态线程的创建启动删除的注意点*/在创建静态线程时,要注意分配线程控制块大小,以及线程结构体 threadx_statck[XX],static char threadx_statck[xx];static struct rt_thread threadx;静态线程的创建需要使用rt_thread_init()函数rt_thread_init...

2018-09-18 16:25:14 536 3

原创 ARM的异常响应过程

其他内容不再赘述,现在粘贴三张需要的表表1                异常类型,优先级及向量地址异常类型 优先级 工作模式 异常向量地址 说明 复位 RESET 1 管理模式 0x00000000 当RESET引脚有效时进入该异常 未定义的指令 UND 6 未定义指令的终止模式 0x00000004 协处理...

2018-09-08 09:48:50 12032

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除