当前位置: 首页 > article >正文

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软件。


http://www.kler.cn/a/272646.html

相关文章:

  • Java并发编程:线程安全的策略与实践
  • Flink (九):DataStream API (六) Process Function
  • 19. C语言 共用体(Union)详解
  • JavaEE之CAS
  • PyTorch DAY2: 搭建神经网络
  • win32汇编环境,窗口程序中基础列表框的应用举例
  • 实时表支持自定义打印,适配又便捷
  • WEB前端 HTML 列表表格
  • SRC实战 | 信息泄露挖掘
  • 坐席助手:提升服务体验
  • Qt实现简单的五子棋程序
  • C++不定参数模板、折叠表达式和类型推导
  • 代码训练LeetCode(11)删除有序数组中的重复项II
  • 新一代云原生数据库OLAP
  • python知识点总结(三)
  • Python实战:Flask轻量级web框架入门
  • B007-springcloud alibaba 消息驱动 Rocketmq
  • 数据结构的美之链表和树
  • 浅谈嵌入式软件测试秘诀
  • 使用tui-image-editor 图片编辑 标注图片
  • 把软件加入开机自启动
  • 鸿蒙Socket通信示例(TCP通信)
  • 柔若初春,留心新生儿嘴唇发白
  • 【每日算法】理论:常见AIGC模型; 刷题:力扣单调栈
  • 红帽rhce认证报名费用多少?rhcsa 红帽认证含金量高吗?
  • 亮点抢先看!4月16-17日,百度Create大会开设“AI公开课”,大咖带你打造赚钱工具