ThreadX(RTOS)在Ubuntu编译,并执行案例
关于ThreadX编程的调试,本篇不包含如何正确使用该系统应用在实际项目中,旨在无设备下想要了解该系统。
系统环境:Ubuntu20、gcc、cmake、ninja
代码下载:ThreadX版本6.4.1
https://github.com/eclipse-threadx/threadx/tree/master
ThreadX在linux下编译后可以得到libthreadx.a文件,这个文件可以被链接到samples目录下的案例,并得到一个在Ubuntu上可直接运行的二进制文件。
首先,samples目录下没有编译指导文件,需要添加一个CMakeLists.txt文件,内容如下:
cmake_minimum_required(VERSION 3.5.0)
set (TAGETsm sample_tx)
set(SRCSs
demo_threadx.c
)
include_directories(
PUBLIC
${CMAKE_CURRENT_LIST_DIR}/../common/inc
${CMAKE_CURRENT_LIST_DIR}/../ports/linux/gnu/inc # 这里针对linux所以使用ports下的linux头
)
link_directories(/home/tukuku/Desktop/threadx_tt/threadx/build) # 这里是为了获取libthreadx.a文件目录,自行产生
add_executable(${TAGETsm} ${SRCSs})
target_link_libraries(${TAGETsm}
libthreadx.a
)
在根CMakeLists.txt文件末尾添加如下,不要直接复制,详情见注释部分
".*~$"
)
set(CPACK_VERBATIM_VARIABLES YES)
include(CPack)
#"
# -------上面是原本包含的内容,下面这行才是需要添加的----------
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/samples)
#"
编译命令:在同根CMakeLists.txt目录下进行,如果出现缺少找不到函数状况见注释
# -DCMAKE_T****LE=cmake/linux.cmake 可指定在不同编译目标可修改
cmake -Bbuild -GNinja -DCMAKE_TOOLCHAIN_FILE=cmake/linux.cmake .
cmake --build ./build
# 此时能够编译得到 libthreadx.a 文件,此时编译samples时可能会提示缺少各种函数,重新执行
cmake --build ./build
执行:
此时在./build/samples/目录下能够看到samples_tx文件,这个文件是可执行的,由于是在linux下编译的三方OS,所以内部执行的输出通常使用串口获取到(猜测)。
如果想要在终端直接显示调试内容可以使用printf函数,添加:
#include<stdio.h>
printf("sssssss");
至此,在终端能够看到执行的输出内容,可一步一步的获得执行日志。
调试:
在编译时默认debug编译,所以可以进行断点调试,但是调试会出现"User defined signal 1/2"这类异常,原因未知。
至此:在Ubuntu下能够编译和运行samples下的案例。当然,这类RTOS最好是能够在实际机器上运行,通过丰富的外部设备进行开发。这种建立在现有的Ubuntu系统上不是很好,或者可以采用qemu仿真软件进行其他CPU架构的开发。如果有机会将发出如何简单使用qemu软件。