标签: msp430

命令提示错误"C:\ Program"未被识别为内部或外部命令,可运行程序或批处理文件

我正在尝试运行以下批处理命令.该命令已从IDE中提取,因此已确认正在运行.得到下面提到的错误.

我用双引号尝试了一些变化,但它们没有用.即使在powershell上它也有相同的信息.

C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\bin\icc430.exe F:\CP001\source\Meter\Main.c -D Hardware_P20E -D Calibration_code -D _Optical -D _Configuration_TS0382 -o F:\CP001\Temp\C20EO\Obj\ --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa --debug -D__MSP430F425 -e --double=32 --dlib_config C:\Program Files\IAR Systems\Embedded Workbench 7.0\430\lib\dlib\dl430fn.h -Ol --multiplier=16 --segment __data16=DATA16 --segment __data20=DATA20
Run Code Online (Sandbox Code Playgroud)

命令提示符

更新:

尝试使用引号解决方案会以某种方式混淆编译器

在此输入图像描述

command-line batch-file msp430 iar

37
推荐指数
3
解决办法
14万
查看次数

为什么上传的二进制文件大小比实际大小小得多?

我只使用过AVR和MSP430,但对于这两种情况都是如此.在编译和静态链接之后,我的最终ELF二进制文件大约为208kB,而Intel Hex二进制文件大约为41kB.AVRDUDE告诉我上传大约18kB.这里到底发生了什么?

embedded avr msp430

10
推荐指数
1
解决办法
1780
查看次数

"static/extern uint8_t array [2] = {0};" 符合ANSI C规范?

我有一个关于以下代码的问题:

#include "all_needed.h"

static uint8_t array[2] = {0};

void main(void)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

允许如上所述初始化(模块)全局数组,以使每个成员在ANSI C符合时设置为零吗?

我在Code Composer 5(MSP430项目)中遇到了问题,我不得不将其更改为

static uint8_t array[2] = {0, 0};
Run Code Online (Sandbox Code Playgroud)

用于正确初始化阵列的第二个成员.

c embedded msp430

9
推荐指数
3
解决办法
2163
查看次数

如何将编译标志传递给cmake初始编译器测试?

我正在尝试使用CMake构建一个项目,该项目使用MSPGCC交叉编译器来实现MSP430微控制器.要使用它成功编译任何简单程序,我们需要传递一个指示目标处理器的编译标志,否则它会像这样失败:

$ msp430-gcc -o test test.c
In file included from test.c:1:0:
/usr/local/lib/gcc/msp430/4.6.3/../../../../msp430/include/msp430.h:813:2: warning: #warning Unable to identify and include MCU header, use -mmcu=MCU [-Wcpp]
/usr/local/lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld: cannot open linker script file memory.x: No such file or directory
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

因此,如果我使用-mmcu开关指示处理器,它可以正常工作.问题是,虽然我已经在我的CMakeLists.txt文件中指定了这个:

cmake_minimum_required (VERSION 2.6)

project (test-project C)

set (SOURCES
  test.c
  )

add_executable (test-project ${SOURCES})
set (CPU_FLAG "-mmcu=msp430f148")

set (CMAKE_C_FLAGS ${CPU_FLAG})
set (CMAKE_EXE_LINKER_FLAGS ${CPU_FLAG})
Run Code Online (Sandbox Code Playgroud)

CMake的抱怨编译器测试失败编译一个简单的程序,我敢打赌,因为它可能是发生未使用-mmcu开关(注意有关无法打开链接脚本文件memory.x消息):

$ cd ~/git/test-project
$ …
Run Code Online (Sandbox Code Playgroud)

cmake cross-compiling msp430

9
推荐指数
1
解决办法
7570
查看次数

MSP430上C程序所需的最大堆栈大小

在不使用递归的C程序中,理论上应该可以计算出调用给定函数所需的最大/最坏情况堆栈大小,以及它调用的任何内容.是否有任何免费的开源工具可以从源代码或编译的ELF文件中执行此操作?

或者,有没有办法从ELF文件中提取函数的堆栈帧大小,所以我可以尝试手动解决它?

我正在使用MSPGCC 3.2.3编译MSP430(我知道它是旧版本,但在这种情况下我必须使用它).要分配的堆栈空间在源代码中设置,并且应该尽可能小,以便其余的内存可以用于其他事情.我已经读过你需要考虑中断使用的堆栈空间,但我正在使用的系统已经考虑到了这一点 - 我正在尝试计算出多少额外的空间来添加.另外,我已经读过函数指针使这很困难.在这里使用函数指针的少数地方,我知道它们可以调用哪些函数,因此如果已知调用函数和调用函数所需的堆栈空间,则可以手动考虑这些情况.

静态分析似乎比运行时的堆栈绘制更强大,但如果没有好的静态方法,那么在运行时进行静态分析是一种选择.

编辑:

我找到了GCC的-fstack-usage标志,它在编译时保存了每个函数的帧大小.不幸的是,MSPGCC不支持它.但是对于那些试图在不同平台上做类似事情的人来说,这可能是有用的.

c stack elf msp430

9
推荐指数
1
解决办法
2431
查看次数

为什么int是MSP430-GCC中的小整数的优先级而不是(无符号)char

在msgpcc(GSP for MSP430微控制器)手册中,作者写道:

如果要在函数中使用小整数,请使用int而不是char或unsigned char.生成的代码将更有效,并且在大多数情况下,实际上不会浪费存储.

为什么int效率更高?

UPD.为什么(u)int_fast8_t在mspgcc中定义(unsigned) char,而不是(unsigned) int.据我所知,(u)int_fast*_t应该定义为具有足够大小的最有效类型.

c microcontroller assembly msp430 mspgcc

9
推荐指数
3
解决办法
2958
查看次数

MSP430 CMP运算符

假设我有下面的MSP430装配部分:

R15:

439c
Run Code Online (Sandbox Code Playgroud)

记忆地图:

4390:   6045 0200 9c43 6400 8844 5044 363a 0000
Run Code Online (Sandbox Code Playgroud)

码:

448a:  cmp  #0x363a, 0x0(r15)
4490:  jnz  $+0x1c
4492:  Code continues
.
.
.
44ac: Jump to location
Run Code Online (Sandbox Code Playgroud)

目标是让Z标志高.要使用cmp执行此操作,src和dst必须相等.如果我在r15的内存位置有363a,为什么生成的cmp不会触发Z标志?

通过实验,我发现将3a36放在r15的内存位置实际上触发了Z标志,但我不明白为什么.

如果有人能说明这一点,我将非常感激.

如果需要更多信息,我很乐意提供.

assembly msp430

9
推荐指数
1
解决办法
2486
查看次数

如何在Mspgcc中声明中断处理程序(ISR)?

在mspgcc中声明中断处理程序的首选方法是什么?

msp430 mspgcc

8
推荐指数
2
解决办法
7199
查看次数

由于看门狗(IAR/MSP430),我的嵌入式应用程序永远不会完成init到main()

我正在使用带有10K RAM的MSP430芯片.如果我超过5k的RAM使用量,它永远不能进入main().init代码调用__data20_memzero清除已用RAM空间.

__data20_memzero来源

它看起来像是通过内存递增并清除字节直到R14 = R12.R14是0x34B4.但是在重新启动并重新开始之前,R12的最大值为0x2c86.我通过调试器手动关闭了看门狗,它开始运行就好了.我不能认为这是正常的.知道如何解决这个问题吗?

c embedded startup msp430 iar

7
推荐指数
1
解决办法
893
查看次数

在msp430中有没有办法进行多精度算术(整数大于64位)?

  • 我想知道在MSP430上是否有任何方法,如果可能的话,用任何简单的方法对大于64位的整数进行算术运算

我之所以这么具体,是因为我正在尝试在msp430g2553平台上实现加密算法(RSA,AES,哈希函数,数字签名等).

我通过互联网搜索,并通过误导的绝望,我安装了Linux发行版,以便使用GMP,但失败了.我安装了Kali,然后安装一个USB(2.0)棒的Lubuntu ,只是因为无法忍受的冻结而受到影响,并且不知道它是否会起作用.后来尝试了VMBox的魔力,之后事情变得更容易了,虽然没有定论.我最终得到了一个点mps430-gcc和mspdebug,我可以调试一些示例代码,并看到它们工作,但仍然无法进行GMP操作,因为主要是库错误(未定义引用mpz_t init ...等) .

据我所知,GMP是一个用于特定处理器架构的多精度算术库,而MSP430不是其中之一,但是,在这一点上,如果它是其中之一,我不会感到惊讶.我得到的最佳答案是,一些TI员工对此并不熟悉.所以;

  • 是否可以在MSP430上使用GMP,或者更具体地说在msp430g2553上使用GMP?

我几乎没有在谷歌上看到任何与gmp交叉引用msp430的东西,而我正在努力实现一个可怜的64位密钥大小的RSA,如果有的话,几乎不能正常工作.所以我希望这篇文章及其答案可以帮助某些人,并希望以后能够帮助我.

我也忘了提到,我已经阅读了遗物工具包,(但是没有花时间尝试实施它,因为GMP看起来更像是该领域的标准),我想知道:

  • 是否有可以链接的假人遗物指南,如果可以在MSP430上使用它,可以再次使用吗?

感谢大家.

c gcc gmp msp430 relic

7
推荐指数
1
解决办法
184
查看次数