问题标签 [codewarrior]

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 投票
3 回答
1277 浏览

arm - Kinetis 中断处理程序代码战士

如何使用 codewarrior 处理 ARM 微控制器的中断?在 HCs08 处理器中,我这样做,例如:

在启用中断之后,当然......但我不知道如何使用 codewarrior 或 KDS 在 ARM 处理器中处理这些中断

0 投票
2 回答
424 浏览

c - C Global 在 ISR 中声明

我正在为他们的 ARM 系列微控制器评估飞思卡尔的 Kinetis Design Studio。我正在看一个例子 作为我第一个“闪烁 LED”项目的基础。当使用在我的主程序和 ISR(例如计数器)之间共享的变量时,我通常会在 main.c 中定义一个 volatile 全局变量,并将其作为 ISR 中的 extern 引用。他们的例子正好相反,他们也没有使用 volatile 关键字。我从来没有见过这样做的。这有优势吗?顺便说一句,无论哪种方式,我的程序都可以正常工作。

0 投票
1 回答
396 浏览

c - 需要 C 语言中的 main 函数,用于微控制器

我已经将 C 用于嵌入式系统有一段时间了,但我对 main() 函数有疑问。

当微控制器启动时,控制首先到达复位处理程序,控制从那里转到我需要的任何功能。如果我不使用编译器库提供的​​初始化代码,我可以继续调用我想要的任何函数。那么,为什么我需要 main()?我的 IDE(Codewarrior)坚持使用 main()。有任何想法吗?

0 投票
0 回答
112 浏览

c - 编译时间如何受编码风格(模块化编程等)的影响?

我以两种方式在 freescale codewarrior 中编写了大约 4700 行的简单 C 代码。在这两种方式中,行数和内容都是相同的。代码主要包含 if else 循环。尽管内容相同,但样式 1 需要编译器 40 秒,而样式 2 需要 10 秒。两种样式的详细信息如下:

样式 1

大部分代码是在一个循环中编写的,每 10 毫秒调用一次。

风格 2

与样式 1 相同,只是代码分为 4-5 个函数,这些函数在同一循环中调用。

编译器如何处理这两种样式?为什么样式 2 比样式 1 花费的时间要少得多?

0 投票
2 回答
376 浏览

c - 在结构定义内的函数指针内使用 void* 作为参数会导致语法错误

我正在创建一个接口结构

我的问题是,当我尝试编译为什么使用 void* 作为函数参数时会引发语法错误。

如果我使用 typedef typedef void* VoidPtr

然后使用

一切都很好。

发生这种情况时有人知道吗?提前致谢。

0 投票
1 回答
79 浏览

embedded - 为什么处理器专家所做的更改不适用于我的代码?

我在 CodeWarrior 中遇到了处理器专家的问题。我无法将外围设备中的更改应用于生成的代码。例如,在使用计时器的代码中,如果我禁用计时器、重新生成代码、编译和加载代码,它会继续工作。

另一方面,如果我从头开始一个项目,在我启用外围设备(在本例中为计时器)之前,相同的代码将不起作用。

所以看起来第一次代码生成工作正常,但是对同一个外围设备所做的任何更改都没有效果。

我尝试寻找线索,并查看了处理器专家用户指南,到目前为止没有运气。我很感激任何关于我可能做错的想法。谢谢

0 投票
0 回答
50 浏览

flash - CodeWarrior 编程 MCF51QE128 获取写入闪存的“特权冲突”异常

我在 CodeWarrior 中有一个用 C 语言(对我来说是新的)编写的应用程序。处理器是MCF51QE128。我熟悉旧 MC6809(8 位)处理器中的汇编语言。麻烦的代码是:

在 .lcf 文件中,我将权限更改为 MEMORY { code (RWX) : ORIGIN = 0x00000410, LENGTH = 0x0001DBF0 userram (RWX) : ORIGIN = 0x00800000, LENGTH = 0x00002000 userrom (RWX) : ORIGIN = 0x0001E000, LENGTH} = 0x000

该代码导致“保护违规”标志出现在“FSTAT”寄存器中(在调试中观察到),程序进入 lala 土地。安全性已关闭。userrom 部分是否仍被视为闪存的“受保护”区域?我需要在停电期间存储易失整数。我错过了什么?

0 投票
1 回答
1386 浏览

loops - 简单的 for 循环和求和

我正在尝试学习 HCS12 汇编语言,但互联网上没有足够的示例。我试图编写代码,但没有成功。我被困住了。这不是绝对的功课。有人可以用 HCS12 汇编语言编写它并附上注释吗?我想要代码,因为我真的想一步一步地阅读它。顺便说一句,还有其他更简单的方法来定义数组吗?

我的尝试:

0 投票
1 回答
461 浏览

c - 使用 FreeScale Code Warrior 将 GCC 目标文件与 main 中的 __eabi 调用链接起来

我正在链接用于 MPC5554 的 FreeScale Code Warrior 5.9,它是具有 e500mc 内核的 PPC 芯片。我正在使用为 powerpc-none-eabi 编译的 GCC 4.6.4 进行编译。

我正在main使用 GCC 交叉编译器为我的项目编译一些 C 代码,包括带有 的文件。不过,我需要使用 Code Warrior 进行链接。__eabiGCC在 main 的开头添加了一个对函数的调用,该函数应该初始化几个寄存器。它不能被删除,并且对于我正在做的事情是不必要的。GCC 期望它由 crt 提供。

这些是我的 GCC 编译标志: -O2 -std=c99 -w -mno-eabi -mregnames -mcpu=e500mc -misel=yes -mfloat-gprs=single -mno-string -msdata=none

GCC PowerPC 的文档说有一个-no-eabi参数,应该删除它,但是如果你深入研究它,就会有许多错误报告指出文档是错误的,并且标志实际上并没有删除对__eabi.

我尝试简单地__eabi从 CodeWarrior 向 crt 添加一个函数。在 __ppc_eabi_init.c 我添加了函数:

但是,当我尝试链接时,我仍然收到__eabimain.o 中的 main 未定义的错误。Code Warrior 链接器似乎找不到我的函数。我验证了 __ppc_eabi_init.c 在链接顺序中排在第一位。

我怎样才能得到这个链接?有没有办法删除对 的调用__eabi?为什么Code Warrior在我提供的时候找不到这个功能?

0 投票
1 回答
406 浏览

c++ - CodeWarrior 中的错误:协处理器偏移超出范围

我正在尝试使用 CodeWarrior 在 Freescale Kinetis K70F120M 开发板上运行模糊推理系统 (FIS) 应用程序。

我编写了一个解释器软件,它读取两个纯文本文件(一个包含模糊模型,另一个包含要识别的模式)并编写一个 C++ 应用程序,该应用程序可以上传到开发板以根据传感器读取的数据进行操作。

FIS C++ 应用程序中包含的所有信息都是由解释器编写的,我不可能错误地计算向量的维度,因为元素的数量是从文件中包含的数据中计算出来的。

我已经设法在板上运行了 FIS 示例应用程序,但是当我尝试运行需要运行的实际应用程序时,出现以下 71 个错误:

说明资源路径位置类型
C:\Users\CRISTH~1\AppData\Local\Temp\ccLOvcxh.s 协处理器偏移超出范围
Prueba FALLAS 2
第 8696 行,外部位置:C:\Users\CRISTH~1\AppData\ Local\Temp\ccLOvcxh.s
C/C++ 问题

C:\Users\CRISTH~1\AppData\Local\Temp\ccLOvcxh.s co-processor offset out of range
Prueba FALLAS 2
line 8697,外部位置:C:\Users\ CRISTH~1\AppData\Local\Temp\ccLOvcxh.s
C/C++ 问题

...

C:\Users\CRISTH~1\AppData\Local\Temp\ccLOvcxh.s 协处理器偏移超出范围
Prueba FALLAS 2
行15897 ,外部位置:C:\Users\CRISTH~1\AppData\Local\Temp\ccLOvcxh.s
C/C++ 问题

mingw32-make: *** [Sources/main.o] 错误 1
​​Prueba FALLAS 2
C/C++ 问题

这是我试图运行的代码:

此 CodeWarrior 项目是在 CodeWarrior IDE v.10.6.4 中作为新的裸板项目创建的:
要使用的设备:MK70FN1M0 处理器(K70F 120 MHz 系列)
项目类型:
要使用的应用程序连接:开源 JTAG
语言:C++
浮点:硬件 (-mfloat-abi=hard) 与 (-fp vfpv4)
I/O 支持:调试器控制台
ARM 构建工具:GCC
快速应用程序开发:无
从设计的透视图开始:当前透视图

我正在使用 FLASH 配置和调试作为“Prueba FALLAS 2_FLASH_OSJTAG”来构建项目。
我在 Windows 7 上运行 CodeWarrior。

帮我找出阻止代码在板上运行的原因。

更新 #1: 我已经删除了关于“ClassNeuron”和“RuleNeuron”对象的生成以及 patternArray 向量的代码,包括使用该向量的函数,所以剩下的应用程序只创建了 50 个“Universe”对象. 这样做之后,我开始删除故意数量的 Universe 对象,以尝试找出是否存在与内存限制相关的问题,但无论是 15 个还是 26 个对象,我都会得到上述类型的随机数量的错误(甚至0 个错误)。我需要使用确切数量的对象(50 个 Universe、10 个类、32 个规则和 50x60 模式阵列)运行我的应用程序。

我怀疑这个问题与代码创建的对象数量有关,但我不确定在编译项目时 CodeWarrior 是否设置了 FLASH 内存限制。尽管如此,我很确定这些错误与数组处理无关,因为我已经从项目中彻底删除了对 patternArray 的任何引用,而且,如果我对数组做错了什么,CodeWarrior IDE 应该给出我对此有一些线索。

帮助我解决这个问题,因为即使在 NXP(飞思卡尔)社区中也很难找到有关此问题的信息。

更新#2: 如以下相关问题所述,看来这个错误实际上是编译器错误,请向我确认:

这是我在 NXP(原飞思卡尔)社区的帖子:协处理器偏移超出范围


部分解决

我将我的代码移到了 Kinetis Design Studio 中的一个项目中。它编译没有错误,我可以调试应用程序,直到电路板内存不足的某个时候,然后我应用了一些优化更改,一切都很顺利。