기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요.
TI CPU 를 사용해서 제품 기획 중에 있는 일인 입니다.^^ 오랜만에 사이트 방문하네요.
현재 제품에 CPU와 마이컴이 하나하나 들어가게 되어있습니다.
마이컴이 전원 관리 때문에 들어가 있는데 개발 중간에도 소스가 수정되어야 하는 경우도 많고
제품이 나가서도 마이컴 쪽 업데이트가 발생하면 문제가 많았습니다.
그래서 차라리 라이팅 할때 인터페이스인 SPI 를 CPU 쪽에 연결하고 SD 업데이트 처럼 SD 만을 이용해서 CPU 와 마이컴 모두 업데이트를 할수 있지 않을까 합니다. 아니 되었으면 좋겠습니다.
정리하자면
1. CPU 가 마이컴을 굽는게 가능한가요?
2. 가능하다면 난이도는?
저는 하드웨어 개발자라 막연히 될것 같기는 한데 확신이 안서네요. 그리고 난이도도 감이 안오고요.
어떻게들 생각하시는지 궁금하네요^^ 참고로 리눅스 기반입니다.
고맙습니다.
호스트에서 디바이스의 마이컴을 퓨징하는 것은 가능합니다.
마이컴에 따라서 방법이 다르지만 대부분의 마이컴에서 이러한 매카니즘을 제공합니다.
간혹 저가의 마이컴의 경우 지원하지 않는 경우는 있습니다. 마이컴 선정시 이러한 스펙이 고려되어야합니다.
예를 들어 폰에 터치 디바이스가 붙어 있는 경우 터치 디바이스 펌웨어가 업데이트 되는 경우
폰을 뜯어서 해당 디바이스의 마이컴의 바이너리를 퓨징하지는 않습니다. 대부분 호스트에서
I2C 등을 이용하여 퓨징하게 됩니다.
ISP(In-System Programming) 또는 비슷한 용어로 정리되어 있을 겁니다.
간단하게 설명드리면 마이컴은 전원이 들어오게 되면 바로 코드가 수행됩니다. 마이컴을 퓨징하려면
일단 플래시 프로그램 모드로 전환이 되어야 하는데
1. 마이컴의 부트로더에서 커맨드를 받아 퓨징하는 루틴으로 점프하는 방법과
2. 호스트가 마이컴의 Reset이나 Power 시퀀스를 이용하여
마이컴을 플래시 프로그램 모드로 진입시킵니다.
그 다음 호스트에서 정해진 프로토콜에 따라 바이너리를 전송하여 플래시에 차례로 쓰게됩니다.
이 때 마이컴은 메모리가 작기 때문에 바이너리 모두를 전송 받아 쓰는게 아니라
특정 크기(예 64 바이트) 단위로 전송 받아 쓰기 때문에 호스트와 Hand-shaking 을 하여 작업을 하게 됩니다.
자세한 사항은 해당 마이컴의 데이터시트를 참조하시거나 FAE에 문의를 하시면 자세히 알려줄겁니다.
저도 모든 마이컴을 해본게 아니라 터치디바이스 개발하면서 폰에 올라가는 코드를 ARM에서 짜서 업체에 지원한 적이 있었습니다.
두서없이 설명드려 죄송합니다.
사용 MCU에 따라 다르지만 대부분 됩니다.
해당 MCU 데이타쉬트를 보시면 Flash Programming에 대한 섹션이 있으니 참고 하시면 될듯 하고요.
난이도는.. 글쎄요.. 리눅스 올린 cpu 사용능력치와 mcu 사용능력에 따라 달라질테지만
어느한쪽이라도 이해가 부족하면 삽질 예상됩니다.
MCU 메모리가 충분하면 부트로더 사용하는 방법도 좋을듯 합니다.