精通网站建设 100%全能建站密码pdf,网页开发工资,服装网站建设目的,建设网站公司谁家好前言
不知道从什么时候起#xff0c;智能设备开始普及到了我们日常生活的方方面面。下班还未到家#xff0c;热水器就可以调到合适的温度#xff1b;上班刚进公司#xff0c;忘关空调也不再是什么烦恼#xff1b;诸如夜晚的灯光变换#xff0c;白昼的窗帘适应等更给我们…前言
不知道从什么时候起智能设备开始普及到了我们日常生活的方方面面。下班还未到家热水器就可以调到合适的温度上班刚进公司忘关空调也不再是什么烦恼诸如夜晚的灯光变换白昼的窗帘适应等更给我们的生活带来诸多方便与快乐。
那么有没有小伙伴曾经困惑或者思考过为什么汽车可以不需要人来驾驶为什么工业可以不需要人来把关为什么便利店不需要收银员来收银结算为什么小饭馆不需要大厨师来调色增香
其实这一切都得益于一个技术的诞生与发展物联网Internet of Things或者我们可以更抽象的说它是万物互联。
那么物联网到底是什么呢
物联网简介
物联网是指通过信息感知设备和信息传输设备按约定的协议将物与物、物与人通过网络相连接物体通过信息传播媒介进行信息交换和通信以实现智能化识别、定位、跟踪、监控与管理等功能。
这其中有三个至关重要的概念
感知层通过各种传感器采集信息识别物体的特征、位置、状态等信息网络传输层通过网络实现物与物、物与人之间的信息交换应用层依据采集的大量数据通过计算机信息系统进行存储、处理与分析实现对物体的智能监控与控制
那么你可能有疑问这么牛逼的东西是怎么运行的那些能控制硬件的代码是怎么写出来的呢
物联网操作系统原理探究
接着上面的话继续聊。
想要实现物联网的相关功能物联网操作系统是不可或缺的部分。物联网操作系统由内核、通信支持WiFi/蓝牙、2/3/4G等通信支持、NFC、RS232/PLC支持等、外围组件文件系统、GUI、Java虚拟机、XML文件解析器等、集成开发环境等组成。 简而言之物联网操作系统是对底层硬件资源进行管理和调度为上层的应用程序提供稳定可靠的运行环境的一套系统。
从上面的图可以看出物联网操作系统的主要操作原理如下
硬件抽象层抽象出CPU、内存、总线等底层硬件设备,为上层系统提供统一的接口。内核负责系统的核心功能,包括线程管理、中断管理、定时器管理、内存管理、信号量/消息队列等IPC机制等。组件与服务在内核之上提供文件系统、GUI、数据库、网络协议栈等服务。这些服务由相应的组件实现开发者可以根据需求配置需要的组件。驱动模型提供统一的设备驱动框架和各种设备的驱动实现对底层硬件的管理与调度。应用程序:运行在操作系统之上的具体应用通过调用操作系统提供的API实现相应的业务功能。
它们之间的架构关系如下图所示 从上到下每一层的运行都依赖于下一层的功能。应用程序通过操作系统提供的 API 调用服务与组件层和内核层最终管理底层硬件。这就是一个典型物联网操作系统的主要操作原理。
下面介绍一个非常好用的物联网操作系统---- RT-Thread
RT-Thread 简介
正好 CSDN 就有相关的课程感兴趣的小伙伴可以移步16天入门物联网操作系统——RT-Thread 。
RT-Thread 是一个集实时操作系统RTOS内核、中间件组件和开发者社区于一体的国产开源技术诞生于2006年由熊谱翔先生带领并集合开源社区力量开发而成。RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。
RT-Thread 具备一个IoT OS平台所需的所有关键组件例如GUI、网络协议栈、安全传输、低功耗组件等等。经过13年的累积发展RT-Thread已经拥有一个国内最大的嵌入式开源社区同时被广泛应用于能源、车载、医疗、消费电子等多个行业累积装机量超过两千万台成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。
RT-Thread 拥有良好的软件生态支持市面上所有主流的编译工具如GCC、Keil、IAR等工具链完善、友好支持各类标准接口如POSIX、CMSIS、C应用环境、Javascript执行环境等方便开发者移植各类应用程序。商用支持所有主流MCU架构如ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V几乎支持市场上所有主流的MCU和Wi-Fi芯片。
当前的 RT-Thread 有多个版本分别是标准版Nano版和Smart版本。
关于这三个版本伙伴可以去 RT-Thread 官网查看更详细的内容。
前言铺垫了这么多终于来到我们的主题RT-Thread Nano 学习营。
RT-Thread Nano使用
RT-Thread Nano 是使用 C 语言开发一个极简版的硬实时内核它的内存资源占用极小功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。
软件框图 Nano 版本支持的架构有 ARMCortex M0/ M3/ M4/ M7 等、RISC-V 及其他内置的功能有线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。
开发环境搭建
使用 RT-Thread Nano需要先搭建它的环境。
我们可以从 RT-Thread 官网下载源码包 或者点击这里直接下载压缩包这样可以基于其他开发环境移植 RT-Thread Nano比如 IRA 或者我们通过一站式的 RT-Thread 开发工具 RT-Thread Studio 来创建 RT-Thread Nano 工程可以从这里 获取安装RT-Thread Studio 或者我们也可以基于 Keil MDK 或者 CubeMX 来移植 RT-Thread Nano。
下面重点介绍从 RT-Thread Studio 开始创建项目。
在RT-Thread Studio 上使用 RT-Thread Nano
第一步先安装 RT-Thread Studio这里就略过了。
安装好以后我们打开 IDE先更新 SDK。 更新完成后就可以新建 Nano 工程在左上角依次点击File New RT-Thread Nano Project就会弹出新建项目的配置页面。
下图是基于芯片来创建项目 如果是基于开发板就需要我们选择开发板型号BSP 版本号RT-Thread 源码版本调试器和调试接口等信息如下图 这样就创建完成了。接下来写一段代码比如打印Hello RT-Thread!连接硬件进行编译下载 由于项目配置的时候我们配置了控制台串口号及引脚号所以工程中已经实现了 uart 的驱动以及 rt_hw_console_output() 可以默认进行打印。 下面我们尝试几个简单的示例
这是一个串口通信的示例
int main()
{ /* 查找串口设备 */ rt_device_t serial; serial rt_device_find(uart1); /* 打开串口设备 */ rt_device_open(serial, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX); /* 设置串口接收回调函数 */ rt_device_set_rx_indicate(serial, uart_rx_ind); /* 发送字符串 */ rt_device_write(serial, 0, Hello RT-Thread!, 15);
} void uart_rx_ind(rt_device_t dev, rt_size_t size)
{ /* 读取数据 */ rt_uint8_t buff[32] {0}; rt_device_read(dev, 0, buff, size);
} 这是一个定时器的示例
/* 定时器控制块 */
static struct rt_timer timer; /* 定时器回调函数 */
static void timeout(void *parameter)
{ /* 线程函数打印了timeout reached! */rt_kprintf(timeout reached!\n);
} int main()
{ /* 初始化定时器 */ rt_timer_init(timer, timer, timeout, RT_NULL, 10, RT_TIMER_FLAG_ONE_SHOT); /* 启动定时器 */ rt_timer_start(timer);
} 创建线程与删除线程
#include rtthread.h#define THREAD_PRIORITY 25
#define THREAD_STACK_SIZE 512
#define THREAD_TIMESLICE 5ALIGN(RT_ALIGN_SIZE)
static rt_uint8_t thread_stack[THREAD_STACK_SIZE];
static struct rt_thread tid1;/* 线程入口 */
static void thread_entry(void* parameter)
{/* 线程函数打印了Hello RT-Thread! */rt_kprintf(Hello RT-Thread!\n); rt_thread_mdelay(500);
}int main()
{ /* 创建线程接受线程名称,线程入口函数,线程参数,线程栈及大小,优先级和时间片*/ rt_thread_init(tid1,thread1,thread_entry,RT_NULL,thread_stack,THREAD_STACK_SIZE,THREAD_PRIORITY,THREAD_TIMESLICE); /* 启动线程 */ if (tid1 ! RT_NULL) rt_thread_startup(tid1); /* 删除线程 */ rt_thread_delete(tid);
}
基本上在使用 RT-Thread Studio 开发的时候我们大体上可以分为这几个步骤创建项目、编写代码、构建项目、下载、调试、优化。所以总体感觉还是比较简单。
总结
RT-Thread Nano 具有非常多的优点。
代码足够简洁Nano 不含 Scons 构建系统不需要 Kconfig 以及 Env 配置工具也去除了完整版特有的 device 框架和组件仅是一个纯净的内核。资源占用小Nano 对 RAM 与 ROM 的开销非常小在支持 semaphore 和 mailbox 特性并运行两个线程 (main 线程 idle 线程) 情况下RAM 占用约 1K 左右ROM 占用 4K 左右。使用方便Nano 在配置文件 rtconfig.h 中列出了内核中的所有宏定义有些默认没有打开如需使用打开即可。具体的配置可见教程
除此之外Nano 还有很多让人眼前一亮的特性这里就不一一列举了。 感兴趣的伙伴们赶紧行动起来吧https://edu.csdn.net/course/detail/22983 文章转载自: http://www.morning.qkrzn.cn.gov.cn.qkrzn.cn http://www.morning.dqdss.cn.gov.cn.dqdss.cn http://www.morning.smsjx.cn.gov.cn.smsjx.cn http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn http://www.morning.fflnw.cn.gov.cn.fflnw.cn http://www.morning.tbjtm.cn.gov.cn.tbjtm.cn http://www.morning.crkhd.cn.gov.cn.crkhd.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.wncb.cn.gov.cn.wncb.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.mfmbn.cn.gov.cn.mfmbn.cn http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn http://www.morning.srgwr.cn.gov.cn.srgwr.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.hnkkm.cn.gov.cn.hnkkm.cn http://www.morning.sgwr.cn.gov.cn.sgwr.cn http://www.morning.jzccn.cn.gov.cn.jzccn.cn http://www.morning.kgsws.cn.gov.cn.kgsws.cn http://www.morning.sprbs.cn.gov.cn.sprbs.cn http://www.morning.sqnrz.cn.gov.cn.sqnrz.cn http://www.morning.bbmx.cn.gov.cn.bbmx.cn http://www.morning.jbctp.cn.gov.cn.jbctp.cn http://www.morning.mingjiangds.com.gov.cn.mingjiangds.com http://www.morning.gkgr.cn.gov.cn.gkgr.cn http://www.morning.kongpie.com.gov.cn.kongpie.com http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.nqbkb.cn.gov.cn.nqbkb.cn http://www.morning.wqtzs.cn.gov.cn.wqtzs.cn http://www.morning.rmxk.cn.gov.cn.rmxk.cn http://www.morning.whothehellami.com.gov.cn.whothehellami.com http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn http://www.morning.yxdrf.cn.gov.cn.yxdrf.cn http://www.morning.tdfyj.cn.gov.cn.tdfyj.cn http://www.morning.ljjph.cn.gov.cn.ljjph.cn http://www.morning.lrflh.cn.gov.cn.lrflh.cn http://www.morning.xbtlt.cn.gov.cn.xbtlt.cn http://www.morning.yzdth.cn.gov.cn.yzdth.cn http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.hwbf.cn.gov.cn.hwbf.cn http://www.morning.hdlhh.cn.gov.cn.hdlhh.cn http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn http://www.morning.fgxr.cn.gov.cn.fgxr.cn http://www.morning.diuchai.com.gov.cn.diuchai.com http://www.morning.lztrt.cn.gov.cn.lztrt.cn http://www.morning.spxk.cn.gov.cn.spxk.cn http://www.morning.rfpb.cn.gov.cn.rfpb.cn http://www.morning.bmyrl.cn.gov.cn.bmyrl.cn http://www.morning.nnqrb.cn.gov.cn.nnqrb.cn http://www.morning.wpkr.cn.gov.cn.wpkr.cn http://www.morning.wfyzs.cn.gov.cn.wfyzs.cn http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn http://www.morning.jyzxt.cn.gov.cn.jyzxt.cn http://www.morning.shawls.com.cn.gov.cn.shawls.com.cn http://www.morning.snlxb.cn.gov.cn.snlxb.cn http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn http://www.morning.mdwb.cn.gov.cn.mdwb.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.tmsxn.cn.gov.cn.tmsxn.cn http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn http://www.morning.rqrh.cn.gov.cn.rqrh.cn http://www.morning.wqbzt.cn.gov.cn.wqbzt.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.dblgm.cn.gov.cn.dblgm.cn http://www.morning.jrplk.cn.gov.cn.jrplk.cn http://www.morning.zsgbt.cn.gov.cn.zsgbt.cn http://www.morning.xlclj.cn.gov.cn.xlclj.cn http://www.morning.lszjq.cn.gov.cn.lszjq.cn http://www.morning.zxxys.cn.gov.cn.zxxys.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.xcszl.cn.gov.cn.xcszl.cn http://www.morning.qynpw.cn.gov.cn.qynpw.cn http://www.morning.tnjff.cn.gov.cn.tnjff.cn http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn http://www.morning.mqzcn.cn.gov.cn.mqzcn.cn