ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IAR 에서 J-Link Debug
    Cortex-M3/STM32F103 2010. 5. 17. 11:47
    내가가진 책이며, 인터넷에 돌아다니는 거의모든 STM32F 관련 자료들이 IAR이나 RIDE7로 설명된게 많다.
    Keil은 자료가 많이 없어서 IAR로 다시 넘어가야 될거같아서 메뉴얼을 만든다.. T.T

    위의 링크와 똑같이 프로젝트 생성하고, 디버깅 환경까지 만들어 보겠다.

    1. 먼저 IAR을 실행한다.



    2. File > New > Workspace



    3. Project > Create New Project...  



    4. ARM > OK 선택



    5. 프로젝트 폴더와 프로젝트 이름을 적고 저장!



    6. File > Save Workspace 



    7. 워스크페이스 파일을 저장한다. '나중에 찾기 쉽게 5번의 프로젝트파일저장 경로와 같은곳에 저장'



    8. 소스관리를 편하게 하기위해 그룹을 추가한다.



    9. 그룹이름은 'src' (main.c 파일등이 들어갈 예정)



    10. 추가된 그룹에 파일을 추가



    11. src폴더의 main.c (미리 만들어놓고 추가하거나, 만들고 저장할때 추가하거나. 상관없음)













    --------------------------------------------------------------------------------------------------------
    컴파일에서부터 디버깅까지 옵션설정을 해줘야 한다.

    1. project > Option



    2. Device로 선택하여 사용하는 칩을 선택해준다



    3. 출력파일을 Hex로 설정



    4. 기본적으로 컴파일만 될수있게 작성한뒤 컴파일을 한다.
       에러가 없는것을 확인한다.



    5. 다운로드에 대한 설정들이다. 
       Linker탭에서 icf파일을 추가 해줘야한다. IAR디렉토리에있는 icf파일을 사용해도 되지만 OAK보드에 맞는 icf파일을 사용한다 



    6. Debugger탭에서 J-Link를 선택한다.
    'J-Link'는 SEGGER사의 디버깅 장비이다. 
    Supported CPUs: Any ARM7,9,11, Cortex-M0, M1, M3, M4, R4, Renesas RX 
    ARM계열 CPU를 지원한다.



    7. Debugger > Download탭에서 Flash Loader파일을 선택한다.



    8. '\IAR Systems\Embedded Workbench 5.4\arm\config\flashloader\ST' 경로에 해당칩의 .board 파일이 있을것이다.


    9. Project > Download and Debug


    10. 디버깅은 잘 된다. 



    11. F5 (GO) 를 누르면 실행도 잘된다.



    12. Download를 눌르면.. 



    13. 으잉. 느낌표가 뜬다.. 뭐라뭐라 번지가 잘못됐단다..



    14 옵션에서 Debug>Download 탭에서 .board파일을 수정한다.




    15. 아까 느낌표떳던 번지가 적혀있다. 
    STM32F10xxE NOR.flash 라는데.. 
    NOR플래쉬가 외부에 연결됐을때 적는건가..?? 
    우선 저부분에서 뭔가가 잘못된거같으므로 Delete를 눌러 삭제 해준다.




    16. 다시 다운로드를 눌르면..
    'Core is locked-up' 코어가 잠겼다? (뭔소리야 -_-;) 



    17. 코어.. 이리저리 해보다가 결국 찾아낸것이 Device를 선택하는것이 아니라, 코어를 선택하는것이었다.
    (아직 왜이런지 모름.. -_-;) Cortex-M3 코어로 선택 해준다.



    18. 다운로드 해본다.!! (자~알 된다 ㅎㅎ)


    -------------------------------------------------------------------------------------------------
    int main()
    {
     (*(volatile unsigned int*)0x40021018= (*(volatile unsigned int*)0x40021018)| (1<<2);    
     (*(volatile unsigned int*)0x40010800= (*(volatile unsigned int*)0x40010800)& ~(0xffffU << 16);
     (*(volatile unsigned int*)0x40010800= (*(volatile unsigned int*)0x40010800)| (0x3030 << 16);

     return 0;
    }

    위 코드를 넣고 다운로드후 재부팅한 이미지이다.
    정상동작 한다..



    중간중간 에러나는 'failed to load flash loader' 이런것들을 검색하다가 중국싸이트도 가보고, 이상한싸이트도 가보고, 하다가 해결한것이다.
    아직 icf파일이니, flash loader니 .. 뭐가뭐지 정확하게 잘 모르겠다. 그리고 저파일들을 수정하는 스킬또한 부족한 상태이다.. 


    일단 다운로드는 해야하니..  차차 좋아 지겠지.. ㅎ 

    댓글

Designed by Tistory.