FreeRTOS:Jlink RTT移植
2023-05-08 本文已影响0人
xEndLess
1. 源码
在Jlink的安装目录C:\Program Files (x86)\SEGGER\JLink\Samples\RTT下找到压缩包SEGGER_RTT_V770
,解压。
* `RTT/`
* `SEGGER_RTT.c` - Main module for RTT.
* `SEGGER_RTT.h` - Main header for RTT.
* `SEGGER_RTT_ASM_ARMv7M.S` - Assembly-optimized implementation of RTT functions for ARMv7M processors.
* `SEGGER_RTT_Printf.c` - Simple implementation of printf (`SEGGER_RTT_Printf()`) to write formatted strings via RTT.
* `Syscalls/`
* `SEGGER_RTT_Syscalls_*.c` - Low-level syscalls to retarget `printf()` to RTT with different toolchains.
* `Config/`
* `SEGGER_RTT_Conf.h` - RTT configuration file.
* `Examples/`
* `Main_RTT_InputEchoApp.c` - Example application which echoes input on Channel 0.
* `Main_RTT_MenuApp.c` - Example application to demonstrate RTT bi-directional functionality.
* `Main_RTT_PrintfTest.c` - Example application to test RTT's simple printf implementation.
* `Main_RTT_SpeedTestApp.c` - Example application to measure RTT performance. (Requires embOS)
2.源码放入工程
将整个源码包复制到工程目录下Middlewares下。
3. 加入makefile
C_SOURCES = \
...
Middlewares/SEGGER_RTT_V770/RTT/SEGGER_RTT.c \
Middlewares/SEGGER_RTT_V770/RTT/SEGGER_RTT_printf.c \
Middlewares/SEGGER_RTT_V770/Syscalls/SEGGER_RTT_Syscalls_GCC.c \
C_INCLUDES = \
...
-IMiddlewares/SEGGER_RTT_V770/RTT \
-IMiddlewares/SEGGER_RTT_V770/Config
4. 初始化
main.h中调用
int main(void)
{
...
SEGGER_RTT_Init();
...
}
5. 实战
文件Middlewares\SEGGER_RTT_V770\Syscalls\SEGGER_RTT_Syscalls_GCC.c中有对printf重定向。实际项目中调用printf即可打印信息。但是测试中发现printf打印完3条输出信息后,就不在输出了。在_write_r中断点也不能进入。很是奇怪。问题先记录,以后再解决。
调用如下函数没有出现上述问题。
int SEGGER_RTT_printf(unsigned BufferIndex, const char *sFormat, ...)