RT-Thread
文章平均质量分 56
在ART-Pi开源硬件学习整理RT-Thread
lqonlylove
这个作者很懒,什么都没留下…
展开
-
RT-Thread Nano移植使用整理
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/an0038-nano-introduction一、RT-Thread Nano 简介RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适转载 2021-09-13 22:06:58 · 4121 阅读 · 0 评论 -
rt-thread源码分析篇十八:rt_system_scheduler_start函数分析
一、rt_system_scheduler_start源码{ register struct rt_thread *to_thread; register rt_ubase_t highest_ready_priority;#if RT_THREAD_PRIORITY_MAX > 32 register rt_ubase_t number; number = __rt_ffs(rt_thread_ready_priority_group) - 1; hi原创 2021-09-11 11:51:32 · 1169 阅读 · 0 评论 -
rt-thread源码分析篇十七:rt_thread_idle_init函数分析
一、rt_thread_idle_init源码void rt_thread_idle_init(void){ /* initialize thread */ rt_thread_init(&idle, "tidle", rt_thread_idle_entry, RT_NULL, &rt_thread_stack[0],原创 2021-09-09 21:48:21 · 653 阅读 · 0 评论 -
rt-thread源码分析篇十六:rt_system_timer_thread_init函数分析
一、函数分析void rt_system_timer_thread_init(void){#ifdef RT_USING_TIMER_SOFT int i; for (i = 0; i < sizeof(rt_soft_timer_list) / sizeof(rt_soft_timer_list[0]); i++) { rt_list_init(rt_soft_timer_list + i); }原创 2021-09-09 00:01:20 · 474 阅读 · 0 评论 -
rt-thread源码分析篇十五:rt_application_init函数分析
一、rt_application_init函数调用二、函数分析void rt_application_init(void){ rt_thread_t tid;#ifdef RT_USING_HEAP tid = rt_thread_create("main", main_thread_entry, RT_NULL, RT_MAIN_THREAD_STACK_SIZE, RT_MAIN_THREAD_PRIORITY, 20);原创 2021-09-08 23:43:29 · 1464 阅读 · 0 评论 -
rt-thread源码分析篇十四:rt_system_signal_init函数分析
一、rt_system_signal_init源码int rt_system_signal_init(void){ _rt_siginfo_pool = rt_mp_create("signal", RT_SIG_INFO_MAX, sizeof(struct siginfo_node)); if (_rt_siginfo_pool == RT_NULL) { dbg_log(DBG_ERROR, "create memory pool for signal in原创 2021-09-07 00:51:38 · 535 阅读 · 0 评论 -
rt-thread源码分析篇十三:rt_system_scheduler_init函数分析
一、rt_system_scheduler_init源码void rt_system_scheduler_init(void){ register rt_base_t offset; rt_scheduler_lock_nest = 0; RT_DEBUG_LOG(RT_DEBUG_SCHEDULER, ("start scheduler: max priority 0x%02x\n", RT_THR原创 2021-09-03 00:32:14 · 549 阅读 · 0 评论 -
rt-thread源码分析篇十二:rt_system_timer_init函数分析
一、源码#define RT_TIMER_SKIP_LIST_LEVEL 1struct rt_list_node{ struct rt_list_node *next; /**< point to next node. */ struct rt_list_node *prev; /**< point to prev node. */};typedef原创 2021-09-02 20:31:36 · 678 阅读 · 0 评论 -
rt-thread源码分析篇十一:rt_show_version函数分析
一、rt_show_version函数调用关系二、rt_show_version函数分析/** * This function will show the version of rt-thread rtos */void rt_show_version(void){ rt_kprintf("\n \\ | /\n"); rt_kprintf("- RT - Thread Operating System\n"); rt_kprintf(" / | \\原创 2021-09-01 21:15:36 · 714 阅读 · 0 评论 -
rt-thread源码分析篇十:rt_console_set_device函数分析
一、前言rt_console_set_device被rt_hw_board_init调用。#define RT_CONSOLE_DEVICE_NAME "uart1"#ifdef RT_USING_CONSOLE rt_console_set_device(RT_CONSOLE_DEVICE_NAME);#endif二、rt_console_set_device函数分析rt_device_t rt_console_set_device(const char *name){原创 2021-08-31 23:34:07 · 1447 阅读 · 0 评论 -
rt-thread源码分析篇九:rt_components_board_init函数分析
一、前言rt_components_board_init被rt_hw_board_init调用。#ifdef RT_USING_COMPONENTS_INIT rt_components_board_init();#endif二、rt_components_board_init函数分析#define RT_DEBUG_INIT 0/** * RT-Thread Components Initialization for board */void rt_components_bo原创 2021-08-29 23:24:48 · 2172 阅读 · 2 评论 -
rt-thread源码分析篇八:rt_system_heap_init函数分析
一、前言rt_system_heap_init被rt_hw_board_init调用。rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);二、参数分析#define STM32_SRAM_SIZE 64#define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024)extern int Image$$RW_IRAM1$$ZI$$Limit;#define HEAP_BEG原创 2021-08-22 14:06:02 · 2232 阅读 · 2 评论 -
rt_thread源码分析篇六:变量整理(一)
一、前言整理rt-thread中重要变量。原创 2021-08-22 01:14:04 · 397 阅读 · 0 评论 -
rt-thread源码分析篇五:结构体和枚举整理(一)
一、前言主要整理rt-thread中数据类型。二、结构体整理数据类型说明heap_mem堆信号量1、heap_mem三、枚举整理原创 2021-08-22 01:12:19 · 315 阅读 · 0 评论 -
rt-thread源码分析篇七:rt_hw_board_init函数调用
原创 2021-08-22 01:02:43 · 1148 阅读 · 0 评论 -
rt-thread源码分析篇四:堆栈分配机制
一、前言参考文档:《Libraries and Floating Point Support Guide》二、堆栈分配机制《Libraries and Floating Point Support Guide》文档中对堆栈描述如下:堆栈模型有2种:1、单内存区域模型(堆栈共用一片空间)2、双内存区域模型(堆和栈都有独立空间)双内存区域模型开启方法:1、汇编语言使用语句:IMPORT __use_two_region_memory2、c语言使用语句:#pragma import(__use原创 2021-08-21 11:34:42 · 1068 阅读 · 0 评论 -
rt-thread源码分析篇三:链接器功能
一、前言在分析rt-thread源码时,rt-thread使用rt_components_board_init函数进行组件初始化功能。rt_components_board_init函数通过使用链接器输入节放置规则完成组件初始化功能,因此整理链接器相关功能并记录。参考文档:《RealView编译工具 - 链接器用户指南》二、映像结构上图为可执行文件映像的结构,图片在《链接器用户指南》第三章截取。映像由一个或多个区组成区由一个或多个输出节组成输出节由一个或多个输入节组成输入节由代码和数据原创 2021-08-20 00:16:58 · 389 阅读 · 0 评论 -
rt-thread源码分析篇二:$Super$$ 和 $Sub$$
https://developer.arm.com/documentation/dui0377/g/pge1362065967698一、简介ARM链接器提供$Super$$和$Sub$$关键字用来为一些无法修改的函数打补丁。这是一种特殊模式:用于有一个已经存在且不能被改变的函数的情况(比如不能更改的库函数);使用这两个模式可以帮原函数打补丁,如存在一个函数foo();$Sub$$foo :定义的新功能函数,在foo()函数之前/后使用$Sub$$foo 可以添加一些新的程序代码。$Super$$f原创 2021-08-15 16:47:37 · 599 阅读 · 0 评论 -
rt_thread源码分析篇一:rt_thread启动流程
通过 RT-Thread Simulator 例程 学习 rt-thread。一、rt-thread启动流程原创 2021-08-15 16:29:47 · 443 阅读 · 0 评论