问题标签 [iar]
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.
ide - IAR Embedded Workbench 和自定义构建
我在 IAR Embedded Workbench 中有一个运行良好的项目。在这个项目中有一个由另一个工具自动创建的源文件 (webpages.c)。此工具从位于指定文件夹 pages 中的文件开始创建文件 pages.c(因此从一组文件开始生成一个文件)。
我想以这样的方式在 IAR 中配置项目,在构建过程之前,如果自上次构建以来网页文件夹中的文件发生更改,则该工具会自动运行。
我配置了一个预构建步骤,它确实适用于 Rebuild All。但是,如果我只更改网页文件夹中的一个文件并发出 Make 命令,IDE 会认为该项目是最新的并且不会开始构建。
有什么解决办法吗?
c - 在 IAR 中将常规指针转换为 FLASH 指针
IAR 定义了 __flash 关键字来指定一个指针在使用时指向 FLASH 空间,如
我正在尝试通过常规指针将地址传递给函数,并使用 FLASH 指针指向 FLASH 中的该地址。由于可移植性原因(跨其他架构),我被限制使用常规指针传入,所以我不能只更改我的函数定义。似乎找不到任何方法来“抛弃” __flash 修饰符。我买了一张去 IAR 的票,但我真的很想在这个周末结束这件事。
有人有想法么?
checksum - 为什么 xlinker 的 sum 和 checksum 不匹配?(IAR 5.40)
我正在使用 IAR 5.40 和 xlink 来生成校验和。生成的校验和和计算的校验和不匹配。这是我的内存映射的样子:
__checksum
位于_FF7E - FF7F
我正在使用 IAR 提供的校验和计算器:
和sum
不__checksum
匹配。看起来我错过了一些东西。需要帮忙!!
stm32 - 省电模式 STM32F205RG
我正在使用 STM32F205RGT6 Cortex-M3 微控制器并使用 IAR Embedded Workbench 进行编码。
我计划在大多数情况下将微控制器保持在省电模式,除非外部组件尝试通过 SPI(STM32 微控制器是 SP 从机)或通过 USB 进行通信。
一个外部组件通过 SPI (PB12-15) 连接,PC 通过 USB (PA11-12) 连接。通信工作正常 - 我已经测试了 SPI 和 USB。我想一旦我完成了 SPI 和 USB 的设置,我将调用一个省电函数并在中断服务例程的末尾添加相同的函数调用。我找到了我尝试使用的 PWR_EnterSTANDBYMode 和 PWR_EnterSTOPMode(在 stm32f2xx_pwr.h 中)。但是,通过这种安排,我无法与微控制器建立任何通信(SPI 或 USB)。
是否需要配置一些额外的东西(例如哪些引脚应该唤醒微控制器)?我使用了错误的功能吗?还是错误的头文件?你能给我举一个类似这种情况的例子吗(我在 ST 的网站上找不到类似的东西)?
欢迎任何建设性的反馈。
jenkins - Jenkins,无法在并行作业中运行 Windows 批处理命令
我有几个构建作业,带有单独的工作区,用 Jenkins 中的 Windows 批处理命令使用 iarbuild 构建单独的模块。如果我分别运行这些作业中的每一个,它构建得很好,但是如果我尝试使用 iarbuild 并行运行两个不同的作业(彼此在 10 秒内开始),则至少一个构建将失败,仅显示“构建中止”消息.
如果我直接从各自的 Jenkins 工作区中的 Windows 命令提示符并行运行相同的两个构建,它们将构建得很好。只有在 Jenkins 中并行构建存在问题。
有谁知道什么可能导致这个问题?
Jenkins 中的 windows 批处理命令是否在构建作业之间共享资源?
c++ - 在高度优化的代码中计算代码运行时间
我正在研究 Cortex M3 并使用 IAR EWARM。我使用DWT_DYCCNT
时间计算。问题是当我优化代码以提高速度时(使用编译器选项),我DWT_DYCCNT
在调试时失去了价值。代码使用 C 和 C++ 编写。我还尝试使用打印变量的值,printf
但这也会返回错误。
我尝试制作变量volatile
,但这也无济于事。
在调试时,我总是得到unknown value
这个变量。
我想知道如何计算已针对速度进行了优化的代码中的代码时序,并且不会丢失变量的值。如何强制编译器保留这些变量的值?
编辑:
调试代码时, 的值count
“丢失”。
谢谢
c - 执行/时间差异取决于语句样式
以下两个语句在时间/执行方面有何不同。我正在研究 AT91CSAM7x512 设备。我们能够通过更改以下分配样式来解决一个麻烦的错误。
我正在使用 IAR Embedded Workbench Ver 4.41A。这是由于某些编译器指令还是其他原因而发生的?
这与处理堆栈的方式有什么关系吗@指令我对处理器比较陌生,需要帮助。
inline-assembly - 获取 ARM 内联汇编中的地址
ARM Cortex-M3 的 IAR 编译器提供内联汇编。如何将特定函数的地址存储到堆栈上的某个位置?
C代码会这样
虽然这通常有效,但编译器在发布版本中对其进行了优化。我试图用内联汇编对其进行编码
ldr
IAR 编译器不接受该指令。问题是这条指令需要一个带有寄存器和偏移量的寻址模式。函数的实际地址tick
存储在函数后面,ldr
指令仅保存到保存实际地址的内存位置的偏移量。反汇编类似这样:
如何tick
立即获取寄存器的地址以将其用于堆栈操作?
c - 为什么 C 编译器不接受这个条件赋值?
我想知道为什么二进制数不能与按位运算符一起使用?
c++ - 错误[Pe513]:“void *”类型的值不能分配给“uint8_t *”类型的实体
我正在尝试将 C 项目转换为 C++。
在 C 项目中,我在编译成 c++ 时解决了这个错误:
错误[Pe513]:“void *”类型的值不能分配给“uint8_t *”类型的实体
下面的代码给出了这个错误:
谁能解释这在 C 中做了什么以及如何将其转换为 C++?