안녕하세요.
RTOS , ARM 관련 교육 수강시 ST사에서 나온 STM32F Serise 마이크로콘트롤러를 사용하는데,
해당 마이크로콘트롤러 내부의 Flash에 Image가 프로그램되어 동작하는 것으로 알고 있습니다. SRAM과 Flash가 들어 있는 것으로 보이는데 해당 Flash는 Nor-Flash인가요 아니면 Nand-Flash 인가요?
안녕하세요.
RTOS , ARM 관련 교육 수강시 ST사에서 나온 STM32F Serise 마이크로콘트롤러를 사용하는데,
해당 마이크로콘트롤러 내부의 Flash에 Image가 프로그램되어 동작하는 것으로 알고 있습니다. SRAM과 Flash가 들어 있는 것으로 보이는데 해당 Flash는 Nor-Flash인가요 아니면 Nand-Flash 인가요?
안녕하세요. chucky2님!
질문하신 STM32 MCU 에는 3가지 종류의 메모리가 탑재되어 있습니다
(1)NOR FLASH : 사용자가 이용하는 플래시 메모리입니다
(2)SRAM : 사용자가 이용하는 RAM 메모리입니다
(3)SYSTEM MEMORY : MCU 제조사가 칩 부팅을 위해 프로그램을 넣어놓은 부팅용 메모리입니다. 소자는 NOR FLASH 를 이용하였을 것으로 추정됩니다.
답글
chucky2
2023.02.04강사님 안녕하세요. 답변 감사합니다.
nor flash가 탑재되었군요.
아래 플로우를 좀 세부적으로 알고싶습니다.
pc(cubeide에서 생성한 axf 파일)에서 생성한 이미지 파일이 어떤 절차를 거쳐서 보드의 플래시에 download되고 수행되는 건가요?
회로도 상으로는 pc와 usb i/f를 통해 bd의 st-link로 연결되고, st-link는 uart i/f를 통해서 stm32 controller와 연결된 듯 보입니다.
st-link의 fw 및 stm32 system memory의 fw 가 연동해서 nor flash에 프로그램한 후, 재 부팅하는 것으로 추정되는데... 세부적인 내용을 알고 싶습니다.
플래쉬에는 axf가 아닌 bin파일로 프로그램 할 것 같고, st-link에는 tarce32 같은 jtag 디버거 기능도 있는 것 같고, ... 모든게 모호한 데 정확한 절차 좀 알려주세요.
홍영기
2023.02.04질문하신 부분에 대하여는 죄송하게도 제가 깊이있는 학습이 되어있지는 않습니다.
그래서, 약간의 검색과 고민을 통해 정보를 전달합니다. 설명에 오류가 있을 수도 있는 점을 고려하시어 제 글은 참고로만 이용해 주시길 바랍니다.
여기서부터는 STLINK 에 대한 설명입니다.
ST-LINK/V2-1(STLINK)은 STM32 Nucleo 보드용 회로 내 디버거 및 프로그래머입니다.
STMicroelectronics STM32F103 마이크로컨트롤러 장치(MCU)를 기반으로 합니다.
직렬 와이어 디버그(SWD) 인터페이스를 통해 STM32 Nucleo 보드와 통신하고 Nucleo의 MCU에 디버깅 및 프로그래밍 기능을 제공합니다.
Nucleo 보드와 PC 사이에 브리지를 제공하여 개발자가 Nucleo에서 애플리케이션을 프로그래밍, 디버그 및 테스트할 수 있도록 합니다.
실행 중 펌웨어의 실시간 디버깅은 물론 Nucleo의 MCU에 대한 펌웨어 로딩을 지원합니다. 또한 대량 생산 환경에서 사용되는 것과 같은 맞춤형 회로 내 프로그래밍 솔루션 생성을 지원합니다.
STM32 Nucleo 보드 사용자를 위한 저렴하고 사용하기 쉬운 솔루션을 제공하여 컴팩트하고 다양한 디버깅 및 프로그래밍 솔루션을 제공합니다.
STLINK의 펌웨어는 업그레이드가 가능하여 사용자가 새로운 기능과 버그 수정을 이용할 수 있습니다.
뉴클레오 보드 매뉴얼 10페이지 중간 보시면 다음과 같이 설명하고 있습니다.
위 데이터북들의 정보를 종합해보면 다음과 같이 동작하는 것으로 추정됩니다.
STLINK 인터페이스는 디버깅과 플래시 프로그래밍 이 두 가지 핵심기능을 갖는다
보드내 TARGET 메인 MCU 내의 플래시 메모리는 STLINK 로 FLASHING 된다.
사용자가 원한다면 STLINK 을 통하지 않고 MCU 내장 부트로더 작동에 의하여도 프로그래밍 할 수 있다.
FLASH MEMORY 에 기록하는데 사용되는 파일은 AXF 파일을 이용할 가능성이 높긴 하지만 이는 확정적이진 않습니다.(둘다 다 가능하기 때문입니다)
STLINK 내부 STM32F103 과 메인 MCU 와의 UART 통신은 컴퓨터와의 Virtual COM 포트 구현을 위해 사용한다.
도움이 되셨길 바랍니다.
chucky2
2023.02.04감사합니다.
stlink가 trace32같은 jtag debugger 였군요.
swd 방식으로 mcu와 연결되어, 디버깅 및 mcu내부의 플래시 프로그램이 가능했던거네요.
stlink도 stm32f103을 사용하는군요. stm32f103의 fw가 usb host인 pc와 데이터 통신을 위한 usb device 및 debugger 기능을 수행하나봅니다.
저도 좀 찾아보고 추가로 알게되면 공유드리죠.