RT_THREAD之nano学习
nona版本为精简版本,只保留FISH(选配)最小内核,可以适配STM的STD.HAL/LL库,需要手动进行移植;现在可以在KEIL MDK/CUBEMX中进行集成,也可以RT-Thread Nano 离线安装包下载手动下载源码(安装在
)自己搭建。keil mdk在实时运行环境中打开,通过RT_CONFIG.H进行配置。
中断处理:原3个中断需要注释掉避免重复定义HardFault_Handler()
、PendSV_Handler()、SysTick_Handler()
系统时钟配置:需要一个硬件定时器来实现OSTICK处理
内存堆栈初始化: RT_USING_HEAP使能后就可以进行 rt_malloc、rt_free 以及各种系统动态创建对象的 API。默认是通过数组实现,也可以也推荐通过分散加载文件将堆空闲的起始分别设定为RAM_ZI的结束及RAM的结束。
串口控制台实现的RT_Kprintf()只进行了\n判断,所有要实现回车换行需要添加\r处理,否则不会回到行首实现回车换行;
FISH组件是在串口控制台(只实现了输出打印)基础上又实现串口的输入操作,从而可以自动初始化和调试,其实FISH接口还可以由USB、网口等其他实现。FISH是RT_THREAD的shell(包裹在操作系统外的门卫,上报输入和传达结果),有MSH(传统命令行模式,占用资源少,缺省选型,按EXIT切换到C-Style 模式(占用资源多,调用须要加(),输入MSH切换到MSH),FISH有内置命令和自动以命令
- 内置命令:table键/help回车查看支持的命令;free查看动态内存;ps/list_thread列出所有的线程;list_信号量、互斥量、事件、邮箱、队列、定时器、设备、内存池等
- 外置命令:MSH_CMD_EXPORT(name, desc);
MSH_CMD_EXPORT(name, desc:neme<参数>);//带参数
FINSH_FUNCTION_EXPORT(name, desc); //C-Style 模式 -》变量
FINSH_VAR_EXPORT(name, type, desc);
FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc);//当超过16字节时需要用别名
- 输出:依赖
rt_kprintf()
输出。在启动函数rt_hw_board_init()
中,rt_console_set_device(const char* name)指定控制台输出的接口
- 输入:
rt_device_read()
函数从设备(串口中断->释放信号量rx_indicate())来读
RT_THREAD之nano学习的更多相关文章
- RT_THREAD之组件学习
CmBacktrace (Cortex Microcontroller Backtrace)是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪.定位,错误原因自动分析的开源库.支持 ...
- linux系统的学习
通过<鸟哥的linux私房菜>的学习,自己得到的收获! 关机与重启 shutdown -k now "message" 用以发送所有信息,并不是真的关机.还可以登录新的 ...
- 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...
- 从零到有的lex学习
最近总是在忙各种事情,毕业设计要求写一个基于云计算的java语法分析器.其实选题的时候就没有底,现在什么都不懂,只有从零开始.我与lex和yacc的缘分应该是在编译原理课程上,但是当时有很多门课,所以 ...
- Linux入门学习 常用命令
cd命令 功能是切换到指定的目录:命令格式:cd [目录名]有几个符号作为目录名有特殊的含义:"/"代表根目录.".."代表上一级目录."~" ...
- Arduino小车学习与研究
信安系统设计基础实践模块 Arduino小车学习与研究 ================== 陈都(20135328) 余佳源(20135321) 莫凡(20135225) ---------- 索引 ...
- Linux 第一次学习笔记
一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有 ...
- LINUX信息安全系统设计基础第一周学习总结
Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...
- Arduino小车学习与研究博客
Arduino小车学习与研究博客 信安系统设计基础实践模块 Arduino小车学习与研究 ================== 陈都(20135328) 余佳源(20135321) 莫凡(201352 ...
随机推荐
- [CF1220C] Substring Game in the Lesson - 博弈论
[CF1220C] Description 给定一个字符串 \(S\) , 同时维护一个区间 \([l,r]\) .轮流操作,每次可以扩展到一个新区间使得原区间是新区间的真子区间,并且字典序更小,不能 ...
- (转)git学习教程
转自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
- [C语言学习笔记四]变量与系统的交互
使用 const 创建常量和使用 volatie 优化变量 C语言中使用 const 定义常量. 例如: const INT a = 10; 此处如果添加a = 20;,编辑器则会报错,因为此处 a ...
- 关于jquery绑定事件执行两次
经常会出现jquery绑定事件执行两次的情况,如: $("a[tag=slide]").click(function () { alert(1); $(this).parent() ...
- php & c# DES
php <?php class DES { var $key; var $iv; //偏移量 function DES($key = '11001100', $iv=0 ) { //key长度8 ...
- Apache Kafka(五)- Safe Kafka Producer
Kafka Safe Producer 在应用Kafka的场景中,需要考虑到在异常发生时(如网络异常),被发送的消息有可能会出现丢失.乱序.以及重复消息. 对于这些情况,我们可以创建一个“safe p ...
- 10.4.3反向迭代器Reverse_iterator笔记
反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器.对于反向携带器,递增(以及递减)操作的含义会颠倒过来.递增一个反向迭代器(++it)会移动到前一个元素:递减一个迭代器(--it)会移动到下一个 ...
- 【C语言】输入三个正整数a,b,c,求最大值,要求定义一个计算最大值的函数max(a,b),返回a,b的值
#include<stdio.h> int max(int a, int b)/*定义函数*/ { if (a > b) return a; else return b; } int ...
- HTML学习(11)表格
HTML表格由<table>标签定义,下面是一个2行3列的表格: <table> <tr> <td>11</td> <td>12 ...
- 如何预测股票分析--长短期记忆网络(LSTM)
在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期 ...