- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,所以我正在尝试将模拟(通过 TSIM)LEON3 处理器连接到 UART 终端。如果我没有记错的话,我相信我需要编译一个 C 程序以使其能够与终端对话,因为我很难以其他方式进行操作。
我找到了一些UART通信的源代码here一切似乎都很好。
但是,我在 Eclipse 中使用 SPARC Bare C 工具链编译它时遇到问题,因为它说 windows.h 文件不存在。现在我知道它存在,因为我已经使用 GCC 工具链成功编译了它,并且在网络上找不到任何类似的案例来解释为什么会发生这种情况。
有人遇到过类似问题或知道解决方案吗?
此外,如果您知道我在 LEON3 UART 通信方面做了错误的事情,请告诉我,我会离开。
谢谢。
最佳答案
BCC 是一个交叉编译器,针对独立、基于 LEON3 和 LEON4 的环境。作为一个交叉编译器,它的工作是为与其运行环境不同的环境构建二进制文件。
相关头文件描述了程序在其运行时(目标)环境中可用的函数。交叉编译时,构建环境库及其头文件不相关,因为构建环境和目标环境不同。 BCC 正确地仅公开其编译环境的 header ,并且该环境不提供 Windows API 函数。如果您尝试构建的代码依赖于 Windows API,那么您需要修改它以删除该依赖项,或者找到不同的东西。
另一方面,我强烈怀疑你处理这整件事的方式是错误的。特别是,当你说,
I believe I need to compile a C program to enable it to talk with a terminal
听起来您认为您要构建某种帮助程序,但如果这是您的想法,那么要么您为错误的环境构建了它,要么您的想法完全错误。
如果您想要一个与模拟计算机对话的 Windows 程序,那么您应该将其构建为 Windows 程序,而 BCC 不会这样做。在这种情况下,您应该为模拟器的主机环境使用 MinGW 的 gcc
或其他 C 编译器。此外,到仿真环境的 UART 的主机端接口(interface)也是仿真器的一个方面。我不知道您正在使用什么模拟器,但它可能不会将该接口(interface)的主机(Windows)端显示为 UART,并且可能根本不需要使用 Windows API。
或者,如果您确实打算为独立的 LEON3 目标环境构建一个程序,那么您需要了解,当它运行时,它将是在该环境中运行的唯一程序 。这就是“独立”的含义——底层没有操作系统,因此没有单独的进程,通常甚至没有多个执行线程。因此,您不需要辅助程序;你只需要一个程序。
The BCC documentation讨论那里可用的库,特别是,它描述了在该环境中如何仅在映射到 UART A 的标准输入和输出流上允许文件 I/O。因此,如果您使用 BCC 来构建程序要在模拟器中运行,那么您无需在该端执行任何特殊操作即可与 UART 通信。您只需使用针对 stdin
和 stdout
的 stdio 函数即可。
第三,如果您在模拟环境中运行实际的操作系统,那么要构建在其上运行的程序,您应该使用该环境的 native 编译器,in环境,或者针对该托管环境的交叉编译器。不管怎样,BCC 不是这样的编译器,但 GCC 可能是。不管怎样,由于 Windows 不能在 LEON3 上运行,所以可以肯定地说,如果这就是您想要做的事情,那么您仍然需要一些不依赖于 Windows API 的东西。
关于c - 使用 Eclipse SPARC bare-C 编译器未找到 "windows.h",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40975856/
有没有办法将在 SPARC 上运行的 Solaris 设置为在小端模式下运行? 我一直在读到 v9 架构芯片是双端芯片,但默认情况下,系统以大端运行。如何切换到小端? 谢谢! 最佳答案 不,小端模式几
在过去的几个月里,我一直很好奇尝试为 SPARC 处理器(V8 或 V9)进行一些组装。我的问题是,我无法访问 SPARC 机器,有没有办法可以在我的 x86 机器上运行 SPARC 二进制文件?我看
我安装了 CentOS 7.6,然后在我的机器上安装了所有 QEMU。我有一个 SPARC 镜像,需要在 VM 中调出。我一直在使用 qemu-system-sparc . $ qemu-system
我很少有符合 SPARC V8 32 位架构的基准测试应用程序。我将它们用于 SPARC 32 位处理器的性能评估。然而,很少有应用程序在性能上达不到要求。我想测试 64 位 SPARC V9 架构(
我很少有符合 SPARC V8 32 位架构的基准测试应用程序。我将它们用于 SPARC 32 位处理器的性能评估。然而,很少有应用程序在性能上达不到要求。我想测试 64 位 SPARC V9 架构(
我正在学习 SPARC 程序集,我必须创建一个从寄存器中提取字段的脚本。该脚本接受 3 个值,初始编号、字段开始位置、字段长度。 它不能使用任何移位函数,但可以使用乘法和除法。 我目前患有呼吸道病毒,
我目前正在使用 Sparc 处理器系列的一些汇编代码,但我在处理一段代码时遇到了一些麻烦。我认为代码和输出解释了更多,但简而言之,这是我的问题: 当我调用函数时 println()我写入 %fp -
是否有与 x86 的单步模式等效的 SPARC?我想要的是在每条指令之后停止执行并将控制流移动到陷阱处理程序或类似的东西。 我考虑过在延迟执行槽中使用 ta 指令,但是当前一条指令是设置了 annul
我的 gcc 交叉编译器不支持Built-in functions for atomic memory access 。我如何使用 Sparc V8 架构的内联汇编来实现以下功能: long __sy
我希望我的程序让二进制文件中的每个函数在结束后都留有一些空间。这样一来,如果以后需要进行一些小的更改,则只需更改该功能,而额外的空间将作为解释小更改的空间。 -falign-function 可以完成
java -version 2>&1 |gawk 'NR==1{ gsub(/"/," "); print $3}' 这适用于 Linux 和 Solaris,它将返回该计算机中安装的 Java 版本
我想在我的 C 程序中编写一个什么都不做的非常简单的内联汇编例程否则然后将本地寄存器 %l0 - %l7 设置为不同的值。我尝试了以下直接的方法: asm volatile ( ".text\
我想在 Sparc 中进行一些“内联”汇编编程,我想知道如何通过寄存器传递来做到这一点。 最好用一个小例子来解释我的问题 int main() { int a = 5; int b = 6
我目前正在学习计算机科学,我的必修类(class)之一是“计算机组织和体系结构”——或者换句话说,是汇编语言的介绍。这个特定的类(class)使用 SPARC 语言,因为部门机器只与 SPARC 兼容
我正在开发一个跨平台应用程序,我希望为其提供 Solaris/SPARC 支持,但我无法再访问服务器。我在 VirtualBox 上有一个 OpenSolaris VM,但我不知道有任何可以用来编译和
我有安装了Solaris 10 SPARC的Sun服务器。 我已经使用tarball源代码成功安装了libevent和openssl。我正在尝试使用gnu gmake编译tor-0.2.5.16。我在
所以;在符合 v9 的 64 位 SPARC CPU 上,存在我知道的 cas 指令。这对单个字长值进行操作。 我还在网络上看到了对 casx 指令的引用 - 但我找不到更多关于它的信息。 我想知道
我正在尝试以正确的方式优化此代码。我所说的正确的意思是......我想有一种通用的方法来执行这些优化,如果其他人查看代码,他们将能够删除优化。 可读性的 C 代码示例... int a = 1; //
我想了解为什么使用此代码会出现总线错误。 int main() { int p=34; int *pp= (int *) ((char *)&p+1); cout<<*pp<<"\n"; return
我正在确定函数中的数字是否为零。如果它为零,我需要将一些字符串(如“Is Zero”)传递到我声明为 B 的变量中。我确定它是否为零的函数有效,但是当我尝试使用我的 SPARC 源代码将字符串传递到变
我是一名优秀的程序员,十分优秀!