UCD3138 설정
easyDSP와 연결
먼저 사용자 보드 환경에 맞춰 easyDSP, MCU간 통신에 사용될 UART 채널 및 핀을 설정합니다. 채널 및 핀 사용에 제한사항은 없습니다.
만약 easyDSP 제공하는 부트로더를 사용하여 플래시 프로그래밍하지 않는 경우에는, -BOOT와 -RESET은 연결할 필요가 없습니다.
![]()
기타 주의 사항 :
- -RESET 핀은 MCU에 리셋을 줄 수 있도록 적절히 연결 (-RESET핀의 Low 상태 유지 기간은 약 500msec)
- easyDSP -RESET신호와 MCU /RESET 신호사이에 리셋 IC같은 회로가 삽입된다면, 삽입된 회로는 0.5초내에 신호를 전달해야 함.
- easyDSP 헤더 RX, TX 신호는 easyDSP 포드 내부에서 100k 오옴으로 풀업되어 있습니다.
easyDSP 통신 준비
easyDSP 통신용 파일 (easyUCD.h, easyUCD_comm.c, easyUCD_boot.c)을 사용자 프로젝트에 포함합니다. 해당 파일은 easyDSP 프로그램 설치 폴더에서 \source\UCD에서 찾을 수 있습니다.
먼저 easyUCD.h에서 사용 환경에 맞춰 각종 설정을 수행합니다.
아래 예제는 UCD3138소자의 UART0 채널의 22, 23번핀을 사용하고 보드레이트는 115200이며 easyDSP가 제공하는 부트로더를 사용하는 경우입니다.
특히 보드레이트는 easyDSP 프로젝트 설정에서의 보드레이트와 동일해야 합니다.![]()
먼저 main.c 상단에 easyUCD.h를 include하여 주시고,
main 함수 가장 먼저에 백도어를 적절히 구현하시기 바랍니다.
백도어는 일반적으로도 반드시 필요하며, 더군다나 easyDSP 부트로더를 사용할 경우 필수입니다.
easyDSP가 제공하는 부트로더로 플래시 프로그래밍을 수행할 경우, 백도어 바로 뒤에 easyDSP_boot()를 호출합니다.
이후 각종 초기화가 진행된 이후, 적절 부분에 easyDSP_init() 함수를 호출합니다.
그리고 무한 루프에서 easyDSP_handler()를 반복적으로 호출합니다. 만약 무한루프에서 많은 작업이 수행될 경우 중간에 easyDSP_handler()를 중복 호출하여 easyDSP 통신을 위한 시간을 확보하시기 바랍니다.
easyDSP 제공 부트로더 사용시 링커 커맨드 파일 수정
플래시 프로그래밍을 위해 TI가 권장하는 PMBUS 사용 개발환경은 기능도 다양하고 여러모로 유용합니다.
하지만 개발 과정에서 빈번한 프로그램 수정을 간편하게 플래시 프로그래밍할 수 있도록 easyDSP는 자체적인 부트로더를 지원합니다.
만약 easyDSP 제공 부트로더를 사용하지 않은다면 (즉, easyUCD.h에서 #define EZ_BOOTLOADER_USE 0으로 설정) 본 챕터는 생략하여 주세요.
본 부트로더는 사용자 프로젝트에서 다른 소스 파일들과 같이 컴파일되며 사용자 프로그램의 일부가 됩니다.
본 부트로더에 진입하면, 플래시 프로그래밍을 위해 필요한 함수를 램으로 카피해서 플래시 프로그래밍을 수행합니다. 램으로 카피하기 위해, 그리고 램 영역을 최소한 점유하기 위해 링커 커맨드 파일에 적절한 수정이 필요합니다. 아래 참조 부탁드립니다. 램으로 카피되는 부트로더 코드를 .bss 영역과 중첩하여 램 사용을 최소화하고 있습니다. 또한 .bss와 중첩해도 문제 없도록 부트로더가 사용하는 2개 파일의 .bss 부분을 별도 섹션으로 할당합니다.
easyDSP 제공 부트로더 사용시 주의 사항
1. 사용자 프로그램 안에 easyDSP가 제공하는 부트로더가 존재하는 구성이므로 MCU 플래시에 easyDSP 소스파일이 이미 프로그래밍되어 있어야 부트로더도 동작할 수 있습니다. 만약 플래시가 전부 지워져 있거나, easyDSP 소스파일이 플래시에 프로그래밍이 되어 있지 않다면, 플래시 프로그래밍이 지원되지 않으며 (즉, 부트로더 진입이 불가하며) 하기와 같은 메시지가 송출되며, 이 경우 디버거(PMBUS 또는 JTAG)를 사용하여 체크섬을 포함한 플래시 프로그래밍이 필요합니다. 따라서 처음 한번은 반드시 디버거를 이용해서 체크섬을 포함한 플래시 프로그래밍이 수행되야 합니다.
2. 만약 플래시 프로그래밍 중 오류가 발생하면 (예를 들어 먼저 플래시를 지운 후 라이팅시에 오류가 발생) 부트로더는 더 이상 플래시내 존재하지 않아 사용이 불가하게 됩니다. 이 경우 앞 서 주의사항 1번처럼 디버거로 플래시 프로그램을 수행해야 합니다.
3. 백도어가 반드시 구현되어야 합니다. easyDSP 부트로더가 제대로 동작하지 않는 경우에도 program flash lockup을 방지하기 위함입니다.
4. 부트로더가 수퍼바이저 모드에서 수행되기 위해 easyDSP_boot 함수내에서 software interrupt 10번을 사용합니다 (함수 swi_single_entry(0, 0, 0, 10) 호출). 즉, software_interrupt.c 파일에 해당 10번 기능이 이미 구현되어 있어야 합니다. TI 제공 예제 프로젝트에서는 모두 구현되어 있지만, 사용자 프로젝트에서도 해당 기능이 구현되어 있어야 함에 유의 부탁드립니다.
IDE 설정
1. 출력파일 형식은 legacy COFF로 설정합니다.
2. UCD3138 시리즈는 Big Endian만 지원하므로, 프로젝트 설정에서 Device endianess를 big으로 설정하세요.![]()
3. easyDSP로 모니터링을 수행하기 위해서는, 출력 파일 (예:*.out)에 debug information이 반드시 포함되어야 합니다.이를 위해 어셈블리/ 컴파일러/링커 옵션을 적절히 선택하시기 바랍니다.
4. easyDSP 제공 부트로더를 사용한다면, 매 컴파일마다 hex 파일 (인텔 형식) 이 생성되어 출력 파일과 동일한 폴더에 동일한 이름으로 위치하도록 IDE를 설정해주세요. Hex 파일은 플래시 프로그래밍할 때 사용됩니다.
하기 CCS 경우 참조하세요. fill value는 0xFFFFFFFF, rom width = 32, 인텔 hex 형식으로 설정해주세요.
![]()
![]()
qnote 지원
UCD3138 시리즈 예제 프로젝트에서 사용하는 고유의 부동소수점 실수 표현 방식인 qnote 형식의 읽기/쓰기를 지원합니다.
즉, qnote형 변수를 0.00001 ~ 999999 범위에서 마치 실수처럼 읽고 쓸 수 있습니다. 단, 배열의 경우는 제외합니다.