2013-02-16 2 views
2

AVR Freaks 포럼에 대한 답변을 얻지 못했고 여기 누군가가 나를 도울 수 있는지 궁금합니다.Atmel AVR Studio (ASF 사용)에서 작동하지 않는 시스템 호출

대답 this SO question에 속할 수 있습니다.하지만 왜 필요한지 확실하지 않습니다.

기본적으로 저는 Atmel 프로젝트 (AVR studio 6, UC3 프로세서)를 가지고 있습니다. 코드가 컴파일 및 링크되고 Atmel 보드에로드하여 디버거에서 단계별로 실행할 수 있습니다.

그러나 sprintf(), malloc() 또는 memcpy()에 대한 (유효한) 호출을 건너 뛰거나 줄 바꿈 점까지 실행하려고하면 아직 발견되지 않음), IDE는 코드의 다음 줄로 돌아 가지 않으며, 멈추거나 영원히 멈추는 것처럼 보입니다.

[참고] 컴파일러 최적화가 꺼져

내가 (일부 링커 옵션을 설정해야합니까 예를 들어, 링크 나)는 도움이되지 않았다 & 시도? 또는 일부 라이브러리를 구축?

을하는 (정적 무엇 코드 컴파일러와 링크 -이 표준 함수를 호출 할 때 연결되는 것은 무엇입니까? 다른 컴파일러 나 링커 오류가 예상되지만 아무 것도 얻지 못한다면 - 내 코드가 실행되지 않는 이유는 무엇입니까?

그런 바보 같은 n00nb 질문에 미안하지만 내 첫 마이크로 컨트롤러 프로젝트입니다.

+1

통화를 스테핑 * 해 보았습니까? 당신은 AVR 조립 지역에서 끝날 수도 있지만, 적어도 당신은 무엇이 충돌인지 알 수있을 것입니다. – nneonneo

답변

1

내가이 표준 함수를 호출 할 때 연결되는 것은 무엇입니까?

AVR-libc는 AVR 플랫폼에 포팅 된 C 표준 라이브러리의 구현입니다.

내 코드가 실행되지 않는 이유는 무엇입니까?

컴파일러 오류와 런타임 오류는 관련이 없습니다. 그러나, 대부분의 시스템에서, 내가 그들을 덤프 기대,이 라인은 모두 유효한 C 그리고 그들은 컴파일 핵심 :

int x = 1/0; 
*(int *)0 = 41; 

그래서 수 있습니다 중 하나

  • 표준 버그 라이브러리 ( 매우 가능성이 ), 또는
  • (매우 가능성) 온라인 디버거의 버그 또는
  • ,
  • 어쩌면 당신은 단지 일어날 예정이없는 무엇인가를 기대할 수 있습니까?
+0

+1 @ H2CO3 +1 잘못된 점에 대해 취한 점 : 그러나 주()의 시작 부분에 몇 가지 간단한 예제를 시도했습니다. 'char s [32]; memcpy()에서 소스가 null이 아니 었는지, dest가 충분한 공간을 가지고 있는지, 소스와 dest가 겹치지 않았는지 확인했습니다. Etc 등 짧은 코드에서 AVR Studio의 시뮬레이터 모드와 Cygwin을 사용하는 Netbeans에서 실행될 때 코드가 좋다고 확신합니다. 나는 이것이 프로젝트 설정에 대한 n00b의 무지, 아마 내 부분의 링커 설정이라고 강력하게 믿는다. 도울 수 있니? – Mawg

+1

@Mawg 디버깅하지 않고 AVR 자체에서 실행됩니까? I. e. 디버거를 연결하지 않고 "릴리즈 모드"또는 그 무엇이든 시작하십시오. –

+0

+1 좋은 지적; 나는 tml을 점검해야 할 것이다. 하지만 분명히 디버깅 할 수없는 것은별로 유용하지 않습니다. * 큰 * 프로젝트입니다. – Mawg

1

넘어서려는 대신 다음 단계에서 중단 점을 설정하고 단계를 넘기려면 어떻게해야합니까?

컴파일러 최적화 기능을 해제해도 작업이 변경됩니까?

+0

+1 줄에서 중단 점을 찾아 실행하면 같은 일이 발생합니다. 그리고 저는 아직 개발 중이기 때문에 최적화를하지 못했습니다. – Mawg

관련 문제