一、了解源码 从官方下载到RT-Thread Nano源码目录如下图所示

1、bsp文件夹 bsp文件夹里面存放的是板级支持包(board support package),用于存放RT-Thread为各种半导体厂商的评估板写好的驱动程序,其中重要的主要是两个文件
board.c:RT-Thread用来初始化开发板硬件的相关函数;
rtconfig.h:RT-Thread功能的配置头文件,可以裁剪RT-Thread的功能;
2、components文件夹 其它第三方加进来的组件,比如gui、fatfs、lwip和finsh等。nano版本只放了finsh,是RT- Thread组件里面最具特色的,它通过串口打印的方式来输出各种信息,方便我们调试程序。
3、docs文件夹 其他文件
4、include文件夹 include目录下面存放的是RT-Thread内核的头文件,是内核不可分割的一部分。
5、libcpu文件夹 存放软件和硬件的接口文件,通常由汇编和C联合编写。
6、src文件夹 src目录下面存放的是RT-Thread内核的源文件,是内核的核心
二、官方移植 1、修改board.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 #include <rthw.h> #include <rtthread.h> #include "main.h" #if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) #define RT_HEAP_SIZE (15*1024) static rt_uint8_t rt_heap[RT_HEAP_SIZE];RT_WEAK void *rt_heap_begin_get (void ) { return rt_heap; } RT_WEAK void *rt_heap_end_get (void ) { return rt_heap + RT_HEAP_SIZE; } #endif void SysTick_Handler (void ) { rt_interrupt_enter(); rt_tick_increase(); rt_interrupt_leave(); } void rt_hw_board_init (void ) { extern void SystemClock_Config (void ) ; HAL_Init(); SystemClock_Config(); SystemCoreClockUpdate(); HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/RT_TICK_PER_SECOND); #ifdef RT_USING_COMPONENTS_INIT rt_components_board_init(); #endif #if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get()); #endif } #ifdef RT_USING_CONSOLE static int uart_init (void ) { #error "TODO 2: Enable the hardware uart and config baudrate." return 0 ; } INIT_BOARD_EXPORT(uart_init); void rt_hw_console_output (const char *str) { #error "TODO 3: Output the string 'str' through the uart." } #endif
2、修改rtconfig.h文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 #ifndef __RTTHREAD_CFG_H__ #define __RTTHREAD_CFG_H__ #define RT_USING_LIBC #define RT_THREAD_PRIORITY_MAX 8 #define RT_TICK_PER_SECOND 1000 #define RT_ALIGN_SIZE 4 #define RT_NAME_MAX 8 #define RT_USING_COMPONENTS_INIT #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 256 #define RT_DEBUG_INIT 0 #define RT_USING_TIMER_SOFT 0 #if RT_USING_TIMER_SOFT == 0 #undef RT_USING_TIMER_SOFT #endif #define RT_TIMER_THREAD_PRIO 4 #define RT_TIMER_THREAD_STACK_SIZE 512 #define RT_USING_SMALL_MEM_AS_HEAP #define RT_CONSOLEBUF_SIZE 256 #endif