Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 系统调用在Atmel AVR Studio中不工作(使用ASF)_C_Standard Library_Avr Gcc_Atmel_Avr Studio6 - Fatal编程技术网

C 系统调用在Atmel AVR Studio中不工作(使用ASF)

C 系统调用在Atmel AVR Studio中不工作(使用ASF),c,standard-library,avr-gcc,atmel,avr-studio6,C,Standard Library,Avr Gcc,Atmel,Avr Studio6,我在AVR怪物论坛上没有得到答案,不知道这里是否有人能帮我 答案可能在于,但我不确定为什么有必要这样做 基本上,我有我的第一个Atmel项目(AVR studio 6,UC3处理器)。代码经过编译和链接,我可以将其加载到Atmel板并在调试器中逐步执行 然而,当我试图跳过(或运行到第二行的断点)对sprintf()、malloc()或memcpy()的(有效)调用时(可能还有更多,我还没有发现),IDE永远不会返回到代码的下一行,只是看起来挂起或永远运行 [注意]编译器优化已关闭 我是否需要设置

我在AVR怪物论坛上没有得到答案,不知道这里是否有人能帮我

答案可能在于,但我不确定为什么有必要这样做

基本上,我有我的第一个Atmel项目(AVR studio 6,UC3处理器)。代码经过编译和链接,我可以将其加载到Atmel板并在调试器中逐步执行

然而,当我试图跳过(或运行到第二行的断点)对sprintf()、malloc()或memcpy()的(有效)调用时(可能还有更多,我还没有发现),IDE永远不会返回到代码的下一行,只是看起来挂起或永远运行

[注意]编译器优化已关闭

我是否需要设置一些链接器选项(例如链接静态(我尝试了,但没有帮助)?或者使用一些库进行构建

让我困惑的是,代码编译器和链接——当我调用这些标准函数时,链接的是什么?如果我需要其他东西,我会期望编译器或链接器出现错误,但没有错误——那么为什么我的代码不能运行呢

很抱歉问这么愚蠢的n00nb问题,但这是我的第一个微控制器项目

当我调用这些标准函数时,链接的是什么

AVR libc,将C标准库移植到AVR平台的实现

那么为什么我的代码不能运行呢

编译器错误和运行时错误甚至不相关。这两行代码都是有效的C语言,它们可以编译,但是,在大多数系统上,我希望它们可以转储内核:

int x = 1 / 0;
*(int *)0 = 41;
因此可能是:

  • 标准库中的错误(不太可能发生),或
  • 在线调试器中出现错误(可能性很小),或
  • 也许你只是期待一些不该发生的事情
当我调用这些标准函数时,链接的是什么

AVR libc,将C标准库移植到AVR平台的实现

那么为什么我的代码不能运行呢

编译器错误和运行时错误甚至不相关。这两行代码都是有效的C语言,它们可以编译,但是,在大多数系统上,我希望它们可以转储内核:

int x = 1 / 0;
*(int *)0 = 41;
因此可能是:

  • 标准库中的错误(不太可能发生),或
  • 在线调试器中出现错误(可能性很小),或
  • 也许你只是期待一些不该发生的事情

如果在要跳过的行之后的下一行设置断点,而不是尝试跳过,会发生什么情况


另外,如果关闭编译器优化,操作是否会更改?

如果在要跳过的行之后的下一行设置断点,则会发生什么情况


另外,如果关闭编译器优化,操作是否会改变?

我发现我板上的CPU是一个工程示例,没有新的io.h文件,Atmel Studio不支持它

我从这个问题中得出了一些结论:


很抱歉打扰您。

我发现我的主板上的CPU是一个工程示例,没有新的io.h文件,Atmel Studio不支持它

我从这个问题中得出了一些结论:


很抱歉打扰您。

+1@H2CO3+1点无效,但是:我在main()开头尝试了一些非常简单的例子。
char s[32];sprintf(s,“四十二=%d\n”,42);
等等。对于memcpy()我确保源代码是非空的,dest有足够的空间,源代码和dest没有重叠。等等。总之,我确信代码是正确的,特别是当它在AVR Studio的模拟器模式下运行,以及udner Netbeans和Cygwin。我坚信这只是n00b对项目设置的无知,可能是我的链接器设置。你能吗帮助?@Mawg是否在AVR上运行而不进行调试?即,仅在“发布模式”下启动它或者不管怎样,不要附加调试器。+1点不错;我必须检查tml。但是,很明显,我无法调试的东西对我没有多大用处;这是一个大项目+1@H2CO3+1点无效,但是:我在main()的开头尝试了一些非常简单的示例。
char s[32];sprintf(s,“四十二=%d\n”,42)
等用于memcpy()我确保源代码是非空的,dest有足够的空间,源代码和dest没有重叠。等等。总之,我确信代码是正确的,特别是当它在AVR Studio的模拟器模式下运行,以及udner Netbeans和Cygwin。我坚信这只是n00b对项目设置的无知,可能是我的链接器设置。你能吗帮助?@Mawg是否在AVR上运行而不进行调试?即,仅在“发布模式”下启动它或者不管怎样,不附加调试器。+1很好的一点;我必须检查tml。但是,很明显,我无法调试的东西对我没有多大用处;这是一个大型项目。你是否尝试过加入调用?你可能最终会进入AVR assembly land,但至少你可能能够找到崩溃的原因。你是否尝试过加入调用s?你可能会在AVR组装区结束,但至少你可以找到崩溃的原因。+1同样的事情会发生,如果我在后面的线路上断点并运行到那个位置。而且,因为我还在开发,所以我关闭了优化。+1同样的事情会发生,如果我在后面的线路上断点并运行到那个位置。而且,因为我还在开发,所以我有optimi我走了。