问题标签 [sdcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3070 浏览

hex - 如何在 cc2530 EB 上刻录 .hex intel 格式文件

您好,我是一名在 SMARTRF-05EB - 评估板上工作的新手,我已经在 Linux 虚拟机中安装了 SDCC 和 Contiki-2.6。我能够构建此目录中存在的所有示例 contiki-2.6/contiki/examples/cc2530dk ,但我对如何在 EB 上刷新最终的 .hex 图像文件一无所知。

有没有办法直接使用一些命令从 Linux 刻录它,或者我必须切换回 Windows 并使用 TI 的 Flash Programmer 来刻录应用程序映像。当我尝试使用 Flash Programmer 烧写应用程序时,我收到这条消息以红色突出显示:“Flash Image 与引导加载程序重叠”

有人可以让我知道如何正确地将应用程序代码放置在特定地址上,以便我可以保存引导加载程序以免被我的应用程序 .hex 文件损坏。

我想以简单的“hello world”.hex 文件为例。

谢谢

0 投票
2 回答
1289 浏览

assembly - C51 C 编译器内联汇编到 SDCC 内联汇编

我不是很喜欢汇编,但对于一个项目,我必须将 C51 C 编译器的几行汇编代码修改为 SDCC。

这是 C51 的代码

其中,用 SDCC 编译产生

作为编译器错误/警告。

  • 我知道$- 符号被汇编器替换为指令的实际地址 - 但是 SDCC 等价物是什么?
  • 如何解决T0Run等的警告?
0 投票
1 回答
510 浏览

assembly - SDCC/C51:重新定义 SDCC 符号

我想在SDCC下编译一个我以前在C51下编译的程序..

这将被翻译成75A800(十六进制)

当我在 SDCC 下编译这个

在我看来,SDCC 忽略了我对 TCON 寄存器的定义,如下所示:

所以这是我的问题:

如何告诉 SDCC 使用我在另一个头文件中定义的地址?

整个事情当然是这样的:

0 投票
0 回答
1028 浏览

8051 - 8051:当UART中断使能时定时器没有激活中断子程序

我能够使用定时器和UART生成的中断,就像我希望在单独使用它们时能够使用它们的方式一样(也就是说,定时器能够在单独使用时激活中断子程序,并且UART在自己使用时能够激活中断子程序),但似乎在UART产生中断后(表明写缓冲区被清除),然后定时器中断停止工作;如果我同时使UART和定时器产生中断,定时器不会在一两个周期后将程序发送到中断子程序中。我有应该使用 UART 定期发送消息的代码 - 每当计时器倒计时达到零时从循环缓冲区发送消息:

0 投票
1 回答
328 浏览

eclipse - Eclipse:编辑代码解析器

我正在使用 Eclipse 插件(SDCC的 Eclipse 插件)。

这工作正常(到目前为止),但问题是内联汇编..

在此处输入图像描述

解析器将此代码标记为语法错误并且标记在头文件中定义的符号非常烦人。

因此,我想稍微扩展插件,以便解析器忽略内联汇编部分,因为如果 SDCC 编译器发现错误,它无论如何都会抱怨它。

我已经看到自 CDT 7.0 以来存在错误解析,但我不确定这是否是查看的正确位置。

任何人都可以帮忙吗?

0 投票
1 回答
970 浏览

c - 定时器中断中断期间重新配置定时器 8051

我正在使用 SDCC 编译器。

我想要实现的是在其自己的中断处理程序期间以模式 2 自动重新加载重新配置 Timer0。这是C代码:

以下是问题:

  1. 在 Timer0 自己的中断处理程序执行期间,是否可以在模式 2 自动重载模式下为 Timer0 重新配置 TL0 和 TH0?

  2. 是否有必要在重新配置期间停止 Timer0,因为它在中断期间没有运行?

  3. TH0 和 TL0 值是否在中断程序开始之前被压入堆栈?如果这些值被推入堆栈,然后在例程处理程序执行期间我重新配置这些值,这些值是否会在退出中断时被堆栈中的 POP 值覆盖?

0 投票
1 回答
274 浏览

c - doxygen 变量被识别为函数

在我当前的项目中,我正在尝试使用 doxygen 生成文档。但是我有一个变量的问题。不知何故,doxygen 将变量识别为函数。

编码:

关于代码的注意事项:代码是为8051 微控制器的SDCC 编译器编写的。__xdata __at ()指令是一条特殊指令,因此编译器知道它必须将数据放在一个单独的内存段(称为 XDATA)中的预定位置(地址 0x0F00)。

我的问题是 doxygen 将其识别__at()为函数而不是变量,因此会覆盖该main()函数。

尽管有一些方法可以使 doxygen 忽略该__xdata __at () char Programmed语句,但它的缺点是变量被忽略,因此没有记录。

那么有没有人知道如何让 doxygen 将其识别__xdata __at () char Programmed为变量而不是函数?

0 投票
2 回答
3500 浏览

floating-point - 想用整数数学将 int 缩放为 int

我在 SDCC 2.8.0 上,因此内存和代码大小非常有限。假设我有一个介于 0 和 127 之间的输入值,我想将其缩放到 20 - 100。通常我会这样做:

通过调用scale(64, 20, 100);我得到 60,正好在 20 和 100 之间。

不使用浮点数如何做到这一点?任何位移魔法?

0 投票
1 回答
248 浏览

c - 将结构复制到另一个结构的成员

我在 SDCC 3.4 上,这是一个乐器的 MIDI 项目,这几天我一直在努力解决这个问题……我什至觉得有点难以解释,所以在这里我试着做一个更好的例子。基本上,我正在扫描按钮按下、发送 MIDI 信息并相应地点亮 LED。我需要的是一种数据库,其中包含与每个按钮相关的所有数据,其中一部分必须是恒定的(按钮和 LED 的 ID),而一部分可以是可变的,因为用户可以改变。在初始化阶段,我需要将常量部分分配给结构并保持变量部分不变。当用户修改一个按钮的功能时,我需要覆盖可变部分,保持不变部分不变。

现在,我需要做的是复制 to 的全部cBtnDefinitions[]内容Button[]->c如果我做

数据按顺序复制到 c 和 v 中,而不仅仅是在成员 c 中。

主循环()中的其余代码如下所示:

当然,我可能有不同类型的按钮,所以我可以将 sButton 结构用于其他目的,并让它们都由相同的函数处理。

0 投票
1 回答
568 浏览

c - 8051 的 sdcc 编译器的奇怪行为

我以前使用 Keil 对 8051 微控制器进行编程。出于某种原因,我必须在 SDCC 中编写代码,但今天我在编译器中遇到了非常奇怪的行为。我正在使用代码块 IDE 12.11 和 SDCC 3.4 版本。

我正在编译这段简单的代码。

这是 serial_send 函数的定义。

问题是,根据代码,它应该在终端上打印两次“a”字符,但它只打印一次。问题出在全局可验证数字[] 数组中。

该函数仅适用于常量值,但不适用于基于参数的变量。

我在这里发布这个问题是因为我认为这个问题与一些 C 语言技巧有关,我无法弄清楚。

我尝试重新安装编译器和IDE,但问题仍然存在。请一些机构解释为什么会这样。我尝试了不同的代码,在所有代码中,常量和局部变量都可以正常工作,但全局变量提供了奇怪的行为。