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(SRCSsdemo_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目录下进行,如果出现缺少找不到函数状况见注释

	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.mzph.cn/news/744681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis的快速入门【全方位进攻】

目录 什么是Redis? Redis的应用场景 Redis的常用指令 Redis的持久化机制 缓存穿透、缓存击穿与缓存雪崩 1.缓存穿透 2.缓存击穿 3.缓存雪崩 后续会持续更新!!! 什么是Redis? Redis是一个开源的、使用ANSI C语言编写的高性能Key-Value数据库,支持网络通信,并且可以基于内…

springboot学习(八十六) springboot使用graalvm编译native程序

一、windows环境下 1.下载graalvm的jdk https://injdk.cn/ 下载windows版本 配置java环境变量&#xff0c;配置过程略 2.下载visual Studio Build Tools 下载地址&#xff1a;https://aka.ms/vs/17/release/vs_BuildTools.exe 安装后选择组件&#xff1a; 其中windows S…

Java创建数组、赋值的四种方式,声明+创建+初始化 详解

文章目录 一、创建数组的四种方式二、详解三、数组存储的弊端 一、创建数组的四种方式 以int数据类型为例 Test public void testNewArray() {//创建数组//法一int[] arr1 new int[]{1,2,3,4,5};System.out.println(arr1.length " " arr1[2]); //5 3//Arr…

Linux发展史

Linux发展史 ​ Linux是一款较为安全、快速、稳定的操作系统&#xff0c;常用于后端的服务器&#xff1b; 一、计算机的发展史 ​ 1946年世界上第一台计算机埃尼阿克出世&#xff0c;此时的计算机主要是用于军事领域的&#xff0c;如&#xff1a;计算导弹的弹道轨迹。这个时…

《ElementPlus 与 ElementUI 差异集合》el-form-item CSS 属性 display 有变化

差异 element-ui el-form 中&#xff0c;属性display: flex; 导致元素在一排&#xff1b;element-plus el-form 中&#xff0c;属性display: block; 元素按照自己的属性排列&#xff1b; /* element ui */ display: block;/*element plus */ display: flex;如图所示 解决方案…

深度解析:cache的基本概念原理扫盲

引流关键词:缓存,高速缓存,cache, CCI,CMN,CCI-550,CCI-500,DSU,SCU,L1,L2,L3,system cache, Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存…

【BUG 弹药库】Tortoise git 绿色的勾 ✔ 和 红色的 !突然不见了该如何解决呢?

文章目录 1. 出现的问题描述如下所示&#xff1a;2. 如何解决这个问题呢 &#xff1f; 1. 出现的问题描述如下所示&#xff1a; 用 TortoiseGit 提交代码的时候&#xff0c;红色的 ! 和 绿色的 ✔ 突然消失了&#xff1b; 2. 如何解决这个问题呢 &#xff1f; ① 首先按住快…

Windows / Mac应用程序在Linux系统中的兼容性问题 解决方案

Linux系统可以通过多种方式提高与Windows或Mac应用程序的兼容性。这里有一些解决方案 Windows应用程序兼容性解决方案&#xff1a; Wine Wine是一个允许Linux和Unix系统上运行Windows应用程序的兼容层。 它不是模拟器&#xff0c;而是实现了Windows API的开源实现。 许多W…

【OpenGL经验谈01】Vertex 规范最佳实践

目录 一、概述二、缓冲区对象的大小三、格式化VBO数据3.1 最小化顶点状态变化3.2 属性大小3.3 交织3.4 流属性 四、顶点、法线、特坐标五、动态VBO六、顶点布局规范 一、概述 在使用GLSL中&#xff0c;越是深入使用&#xff0c;越觉得难以把控&#xff0c;而且常常是黑屏无Deb…

flink重温笔记(十六): flinkSQL 顶层 API ——实时数据流结合外部系统

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 16 天啦&#xff01;学习了 flinkSQL 与企业级常用外部系统结合&#xff0c;主要是解决大数据领域数据计算后&#xff0c;写入到文件&#xff0c;kafka&#xff0c;还是mysql等 sink 的问题&#xff0c;即数据计算完后保存…

华为机试题-士兵的任务 2

题目 士兵在迷宫中执行任务,迷宫中危机重重,他需要在在最短的时间内到达指定的位置。你可以告诉土兵他最少需要多长时间吗? 输入一个 n m 的迷宫中,迷宫中 0 为路,1 为墙,2 为起点,3 为终点,4 为陷阱,6 为炸弹。士兵只能向上下左右四个方向移动,如果路径上为墙,不能移动。已知…

商业模式的深度解析:以四个特点构筑成功之路

商业模式&#xff0c;是企业将产品、服务、信息流、资金流等要素组合在一起&#xff0c;形成独特价值主张&#xff0c;并通过特定的渠道和方式传递给目标市场&#xff0c;从而获取利润的一种系统性设计。一个成功的商业模式&#xff0c;往往具备四个显著特点&#xff1a;重点突…

企业微信如何接入第三方应用?

1.登录企业微信管理后台&#xff1a;https://work.weixin.qq.com/wework_admin​​​​​ 2.点击创建应用&#xff1b; ​​​​​​​ 3. 此时可以看到已经创建好的应用&#xff0c;并且生成应用的唯一id&#xff08;agentId&#xff09; 4. 第三方应用申请域名 (举例&…

智慧楼宇物联网建设实施方案(2)

建设方案 楼宇综合管理平台 智慧楼宇物联网应用综合管理系统是对整个物联网系统的集中监控和展示。其主要功能是对各应用子系统的关键监测数据进行数据格式解析并呈现。进而使管理者能够从整体上对整个物联网系统运行状态有个直观的了解。其不同于各专业子系统的管理软件,重…

flstudio教程如何设置成中文 flstudio基础教程 flstudio免费

Fl studio编曲软件总共有英文和中文两种语言供用户选择&#xff0c;对于我们来说&#xff0c;更习惯于使用中文版本的flstudio编曲软件&#xff0c;包括我自己也比较习惯于使用中文版本的flstudio&#xff0c;同时也能提高工作效率。Flstudio编曲软件默认语言是英文&#xff0c…

vue:功能【xlsx】动态行内合并

场景&#xff1a;纯前端导出excel数据&#xff0c;涉及到列合并、行合并。 注&#xff09;当前数据表头固定&#xff0c;行内数据不固定。以第一列WM为判断条件&#xff0c;相同名字的那几行数据合并单元格。合并的那几行数据&#xff0c;后面的列按需求进行合并。 注&#x…

vue2 elementui 封装一个动态表单复杂组件

封装一个动态表单组件在 Vue 2 和 Element UI 中需要考虑到表单字段的动态添加、删除以及验证等复杂功能。下面是一个简单的例子&#xff0c;展示如何创建一个可以动态添加和删除字段的表单组件。 首先&#xff0c;你需要安装并引入 Element UI&#xff1a; bash 复制 npm in…

CV论文--2024.3.13

1、Sora Generates Videos with Stunning Geometrical Consistency 中文标题:Sora 生成具有惊人几何一致性的视频。 简介&#xff1a;最近发布的 Sora 模型展示了在视频生成领域的出色表现&#xff0c;引发了人们对其模拟真实世界现象能力的激烈讨论。尽管该模型越来越受欢迎&…

如何保证Redis和数据库数据一致性

缓存可以提升性能&#xff0c;减轻数据库压力&#xff0c;在获取这部分好处的同时&#xff0c;它却带来了一些新的问题&#xff0c;缓存和数据库之间的数据一致性问题。 想必大家在工作中只要用了咱们缓存势必就会遇到过此类问题 首先我们来看看一致性&#xff1a; 强一致性…

前端实现生成图片并批量下载,下载成果物是zip包

简介 项目上有个需求&#xff0c;需要根据表单填写一些信息&#xff0c;来生成定制的二维码图片&#xff0c;并且支持批量下载二维码图片。 之前的实现方式是直接后端生成二维码图片&#xff0c;点击下载时后端直接返回一个zip包即可。但是项目经理说后端实现方式每次改个东西…