zoukankan      html  css  js  c++  java
  • 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()只进行了 判断,所有要实现回车换行需要添加 处理,否则不会回到行首实现回车换行;

    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())来读
  • 相关阅读:
    Linux下chmod 777 修改权限
    设计模式
    oracle连接出错的解决方法
    JSON简介
    Kafka安装部署
    磁盘挂载及文件系统初始化
    ES Templates push
    常用脚本
    RocketMQ 零拷贝
    kafka Py客户端
  • 原文地址:https://www.cnblogs.com/jieruishu/p/11984450.html
Copyright © 2011-2022 走看看