RT-thread学习(一)

引言:对于每一个软件和环境,都有每个环境的特点和优势。今天开始我会更新自己的RT-thread的学习进程,希望各位道友多多交流和指点。

在此之前我们需要知道什么是RT-thread。

一.RT-thread:

RT-thread 诞生于2006年,经过十多年的积淀,RT-thread已经成为一款知名度较高,口碑极佳,高度稳定可靠的实时操作系统。RT-thread以开源,免费的方式进行发布,许可证类似FreeRTOS。

RT-thread作为一款国产嵌入式操作系统,与其他RTOS(FreeRTOS,uC/OS)的主要区别是:RT-thread自创建之初的定位就不仅是一个RTOS内核,而是包含网络,文件系统,GUI界面等组件的中间件平台,具有极强的扩展性!

简单来说,RT-thread就是一种环境,支持对各种单片机等设备的代码操作和移植。

RT-thread学习(一)_第1张图片

二.对于RT-thread项目搭建(理论部分)

首先和VC2010 C++一样,RT-thread对于项目的搭建也是有一定步骤的。对于项目搭建之前,我个人认为我们需要知道什么是ROM,什么是RAM,以及需要掌握C语言中malloc和calloc函数的意义。

1.什么是ROM?

ROM: ROM以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。

2.什么是RAM?

RAM:RAM(Random-Access Memory)即运行内存,简称运存,是一种在手机中用来暂时保存数据的元件,相当于电脑中的内存条。它可以随时读写,而且速度很快,通常作为作业系统或其他正在运行中的程式之临时资料存储媒介。运存具有随机存取、易失性、高访问速度和需要刷新的特性,当电源关闭时RAM不能保留数据,而且它几乎是所有访问设备中写入和读取速度最快的,同时运存对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失甚至烧坏电路。

最后对于ROM,其实不难发现,ROM如果只读,不能更改,对于现在这个多变万化的时代无法满足人们的需求。所以:后来对于ROM为了方便使用又发明了: 可编程只读存储器(PROM)、可擦可编程序只读存储器(EPROM)和带电可擦可编程只读存储器(EEPROM)等不同的种类。

3.项目搭建实例(理论部分)

看图,这是我自己已经创建的一个RT-thread 的项目

RT-thread学习(一)_第2张图片

左边在工程下有5个文件夹,这是在建立之初自带的,下面我们来看看这些文件夹都包含的是什么文件。

RT-thread学习(一)_第3张图片

 让我们在进入RT-thread项目里面中的rtthread里的源码文件

RT-thread学习(一)_第4张图片

 这些文件又是什么意思呢?上图

RT-thread学习(一)_第5张图片

其实现在看来这些基于底层的文件,对于我们来说还不知道怎么使用,但是到用到他们的时候,我们需要知道去哪里去找他们,所以我对于这些底层文件了解大概,后续用到我也会一一更新!!!!

4.对于RT-thread 内存的 堆栈问题也就是MDK裸机动态内存的使用

  对于这个小点,我想我们需要知道什么是堆栈?

RT-thread学习(一)_第6张图片

  其实只有堆(heap)才是被我们所调用和使用的,对于栈(stack)我们一般没办法更改。其次对于堆的使用就需要用到malloc和calloc函数的使用。在C语言中这两个函数的用法可以在学习中自己不足,这里要主要的是在RT-thread中这两个函数用法大致相同,但是函数名有了改变。都在原来的基础上加上可rt_ 这个前缀

 RT-thread学习(一)_第7张图片

 最后我们需要注意的是:

RT-thread 环境下申请动态内存堆(此时如果剩余的可分配内存不足够你申请内存的大小) 失败则返回RT_NULL

对于calloc函数

 

为了养成良好的操作习惯,对于每次申请内存之后都需要判断他的返回值是否是RT_NULL,来判断内存申请是否成功。

  1. 当我们成功申请到一次想要的内存之后,首先这个内存是现在芯片不用的,但是它里面可以能还有之前的缓存,所以当判断 !=RT_NULL的时候 在清除一下申请到的内存然后再进行使用。清除代码:rt.memset()
  2. 内存泄漏

  如果自己申请到的一块内存,使用结束之后不释放或者释放失败,会造成系统内存的浪费,导致程序运行缓慢甚至崩溃。所以要搭配使用malloc和free这两个申请/释放函数。

                                                                                                                               continuing---------

你可能感兴趣的:(RT-thread,c语言,ide)