본문으로 바로가기
728x90
반응형

 오랜만에 Atmega8을 사용하여 프로그램을 하였다. 이게 자주가 아니고 가끔 MCU를 다른 것을 사용할 때가 있기 때문에 간만에 하려니 뭐가 뭐였는지 햇갈린다.

 특히 Atmega나 PIC 같은 경우는 Fuse라는 개념이 있기 때문에 더욱이 그렇다. 퓨즈는 다른 프로그램에서는 IDE에서 따로 GUI로 초기화 한다거나 (STMCubeIDE) 또는 코드서 정의하는 경우가 있는데 Atmega나 PIC도 IDE에서 Memory에 다운로드 전 혹은 후에 정의해줘야 한다.

 그런데 이게 프로그래머 입장에서는 여간 귀찮은 일이 아니다. 하드웨어와 연관이 있는 설정인지라 뭔가 이상하게 귀찮다. 뭐 귀찮은거야 한번 Fuse 설정을 해 놓으면 비휘발성이라 Chip 내에 기억이 되긴 하지만 이게 오랜만에 프로젝트를 다시 하게 되었을 경우 기존 코드를 다운로드 하려고 하면 기록을 따로 해 두지 않으면 난감해진다. 또한 생산 이관시에도 이 퓨즈를 설정하는 과정을 하나 더 거처야 하기 때문에 이걸 한번에 하는 방법을 찾아보았다. 

 원래 PIC에서도 이 Fuse 설정을 코드에 삽입해 놓으면 따로 Fuse를 신경쓰지 않고 다운로드 하면 되었었는데 AVR도 원래 넣는 방법이 있었던거 같긴한데 잘 모르겠다. 다만 찾아보니 AVR Studio 몇 버전인지 모르겠지만 이 후 elf 파일이란게 컴파일 후 생성이 되게 바뀐거 같다. 당연히 Microchip Studio는 elf 파일이 생긴다. 이 elf 파일에 Memory 정보와 Fuses 정보 Lock bit 정보가 다 포함되어 있다. 

 즉, 개발이 완료되면 elf 파일을 이관하여 프로그램하면 간단히 해결되는 문제였다. 다만, Fuse나 Lock 정보는 차후 프로그램만 봐서는 설정을 뭘로 했었는지 모르기 때문에 elf파일이 있더라도 기록 보관이 필요한 것 같다. 개인적인 생각으로는 소스코드에 주석으로 포함해 놓는게 정신건강에 좋을 것으로 판단된다. 아래 코드는 주석은 아니지만 예전에 퓨즈를 넣을 수 있는 구문이 있었어서 에러로 표기가 안되는 것 같다. 여튼 주석이든 코드든 기록은 필수....

ㅜㄹ

 물론 elf파일에 모든 정보가 있는 이상 elf 파일만 있으면 로드가 가능할 거 같긴한데 시도를 안해봐서 모르겠다.

 파일을 컴파일 하고 메이크 되면 output 파일이 생기는 데 elf는 자동으로 생기는 것 같고 몇가지 포맷은 설정하여 생성이 가능하다. 생성 방법은 프로젝트에서 Properties를 선택 후 Toolchain 탭에서 Output Files에서 설정 가능하다.

 만약 hex 파일이 안만들어지면 여기에서 체크가 안된 것이다. 여튼 만들어진 elf 파일을 다운로드하면 되는데 어디서 하냐면... Device Programming에서 Production file이다. 여기서 설정된 항목을 체크하고 하면 된다.

                                                       

                                                    

728x90
반응형