问题标签 [keil]

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 投票
1 回答
1592 浏览

c - 在 keil c 中传递数组会给出 C182、c235 警告(指向不同对象的指针,参数 2 不同类型)

你好,

在 Keil 中,上面的代码对 foo 的调用给出了警告 C182,它在 foo 的定义中给出了警告 c235。但它似乎在 VC++ 中运行良好。任何想法为什么以及如何解决?

谢谢!

0 投票
1 回答
2412 浏览

size - 在 Keil 中提供更多堆

我正在研究 MCB2300(带有 LPC2378 处理器)并使用 keil uVision4。在我的程序中,我正在使用 malloc() 函数创建动态内存。由于所有动态内容都将存储在堆中,因此我需要确保分配所需的堆大小。我的启动文件 (LPC2300.s) 中堆的默认值为0x00000800。在我的应用程序中,我正在读取图像(bmp 格式)并将像素值存储到矩阵中,并且该矩阵是根据输入图像的大小动态创建的。我可以在启动文件中设置的最大堆值是0x000072FF。对于这个堆值,我能够成功读取 44 x 33 的图像。超出此大小的内存不会被分配。我需要读取尺寸至少为 100 x 100 的图像。我的可用 RAM 为32K

这些是我编译代码后的输出值

程序大小: Code=30664 RO-data=1220 RW-data=132 ZI-data=37628

如何提供额外的堆?

是否可以将堆内存存储在为 LPC2378 提供的 SD/MMC 卡或外部存储器上。请帮我解决这个问题

0 投票
2 回答
6569 浏览

embedded - 如何确定嵌入式系统中的最大堆栈使用量?

当我为 Keil 编译器提供“--callgraph”选项时,它会为我静态计算确切的“最大堆栈使用量”。

唉,今天它给了我一个“最大堆栈使用量 = 284 字节 + 未知(没有堆栈大小的函数...)”消息,以及一个“没有堆栈信息的函数”列表。

Nigel Jones 说递归在嵌入式系统中是一个非常糟糕的主意(“计算堆栈大小” 2009),所以我一直小心不要在这段代码中创建任何相互递归的函数。

另外,我确保我的中断处理程序在最后的中断返回指令之前都不会重新启用中断,所以我不需要担心可重入中断处理程序。

如果没有递归或重入中断处理程序,它应该能够静态确定最大堆栈使用量。(所以大多数关于 如何确定最大堆栈使用量的答案? 不适用)。我的理解是,处理“--callgraph”选项的软件首先找到每个中断处理程序没有被更高优先级中断中断时的最大堆栈深度,以及main()函数的最大堆栈深度。没有中断。然后它将它们全部加起来以找到总(最坏情况)最大堆栈深度。当 main() 后台任务在其被最低优先级中断中断时处于其最大深度时,会发生这种情况,而当它被下一个最低优先级中断中断时,该中断处于其最大深度,依此类推。

我怀疑处理 --callgraph 的软件对“没有堆栈信息的函数”列表中的小型汇编语言函数感到困惑。--callgraph文档似乎暗示我需要手动计算(或保守估计)它们使用了多少堆栈——它们很短,所以应该很简单——然后“在汇编语言中使用框架指令代码来描述您的代码如何使用堆栈。” 其中之一是在跳转到 main() 之前将堆栈重置为零的初始启动代码——因此,实际上,这消耗了零堆栈。另一个是“故障”中断处理程序,它锁定在无限循环中,直到我重新启动电源——假设这消耗零堆栈是安全的。

我正在使用 Keil uVision V4.20.03.0 为 LM3S1968 ARM Cortex-M3 编译代码。

那么如何使用“框架指令”来告诉处理“--callgraph”的软件这些函数使用了多少堆栈呢?还是有更好的方法来确定最大堆栈使用量?

(请参阅如何使用 gcc 确定嵌入式系统中的最大堆栈使用量?对于针对 gcc 编译器的几乎相同的问题。)

0 投票
2 回答
159 浏览

windows - 在嵌入式和 Windows 平台上使用相同代码的可行性

我们有一个用 VBA 编写的程序,它在Windows机器上运行。

我们有一个用 ANSI C 编写的非常相似的程序,使用Keil IDE 和在STR9x uP 上运行的编译器。

我们的计划是使用 C#在.NET中重写 VBA 代码。

用C++ 编写共享代码以在两个系统上使用的可行性是什么?显然,.NET 框架是不受限制的,但这不是什么大问题。具体来说,我想知道您认为编译过程的劳动密集程度如何。

我知道,这是一个理论问题,但感谢您的任何想法。

0 投票
3 回答
965 浏览

c - Configure port1 of 8051 micro-controller as input

I am writing a very simple application which allows one to change the temperature. The temperature is displayed using LEDS (BCD format)

I wrote the following code in Keil C51:

I then complied this and obtained the Intel hex file which i then tried to simulate using the Edsim.

According to the C code the temp should change when prog=1 and when either up(p1.0) or down(p1.1) is pressed, but in the simulation it only changes when both select(p1.7) and up/down is pressed!

Why is this happening?

0 投票
2 回答
4017 浏览

variables - STM32:非初始化变量?

使用 uvision IDE 进行 STM32 开发,我想让一些定时器变量在启动时不初始化。我努力了:

但似乎没有任何效果。根据其他地方的提示,我还在 options/target/IRAM1 中检查了 NoInit。尽管如此,变量在重置后仍设置为零。

有人可以帮忙吗?

0 投票
2 回答
341 浏览

sockets - RL-ARM 库的 BSD 套接字 API

这里是 RL-ARM 库中的 BSD 套接字 API 列表

http://www.keil.com/support/man/docs/rlarm/rlarm_tn_bsd_funcs.htm

它有这样的注释:

■BSD 接口函数实现标准的伯克利套接字通信接口。这些 API 不是 BSD API 的完整实现。

这个注释是什么意思?这是否意味着列表中的某些例程功能不全?还是别的什么?

0 投票
2 回答
409 浏览

embedded - 软件中断,Keil MCB1700 评估板

我尝试为 MCB1700 评估板开发程序。是否可以在没有 RTOS RTX 的情况下使用软件中断 (SWI)?

0 投票
1 回答
1037 浏览

embedded - 为 Keil MCB1700 评估板实施我的程序的最佳方式是什么?

我想为 MCB1700 评估板开发一个程序。PC 客户端软件从硬盘读取图片。然后通过socket(以太网)将图片发送到MCB1700评估板。MCB1700 服务器通过Socket 连接从PC 接收图片并显示在LCD 上。

服务器还必须执行以下任务:

  • 将图片保存到 U 盘;
  • 从U盘中读取图片并通过socket发送给客户端;
  • 通过 CAN 发送和接收信息
  • COM 日志记录。
  • 等等

套接字连接可以在 CMSIS 和 RL-ARM 库的帮助下实现。

但是,据我了解,在这两种情况下,软件都必须监听传入的 TCP 连接并在无限循环中处理网络事件——Keil 的所有示例都基于这样的原则。

我一直认为,嵌入式编程使用无限循环是一种糟糕的方式。此外,我读到了这样有趣的声明

“当然可以在没有 RTOS 的情况下创建实时程序(通过在循环中执行一个或多个任务)”

我认为最好通过中断来处理所有事件。

是否可以使用 CMSIS 和 RL-ARM 库的套接字连接并通过处理中断来组织我的所有软件?我的服务器(在 MCB1700 上)必须执行很多任务。我想,我应该在我的软件中使用 RTOS RTX。不是这样吗?在没有 RTX 的情况下实施我的软件会更好吗?

0 投票
4 回答
4537 浏览

embedded - 尝试调试 STM32F205ZG 时出现“无法停止 Cortex-M 设备”错误

我在使用 µVision4 和 ULINK2 的 STM32F205ZG 上运行调试器时遇到问题。我不断收到错误消息“无法停止 Cortex-M 设备!请检查 JTAG 电缆。” 我正在使用 SW 端口。对此的任何帮助将不胜感激。