기존에 사용하던 ST-LINK가 있었고, 새로 구매한 ST-LINK를 연결해서 테스트를 하려고 했는데, 다음과 같은 에러 메시지가 보인다. ST-LINK의 펌웨어도 업데이트를 해보았으나 동일한 메시지가 계속 발생.
디버그 설정에서 보니 ST-LINK S/N 에서 Scan을 하면 자동으로 리스트가 업데이트가 되는 것이 아니라, 리스트 중에 하나를 수동으로 선택 해야하는 것.
Stm32Cube와 Eclipse의 조합으로 개발을 할때 연결된 보드를 디버깅시 다음과 같은 에러 메시지가 뜰 경우가 있다.
이럴때는 프로젝트의 설정의 Run/Debug Setings의 Startup 탭에서 다음 그림에 보이는 2가지 항목의 설정을 해제하면 된다.
임베디드 보드에서의 Hello World인 blink 테스트를 끝나면 printf를 찍기위해 UART를 연결하고 테스트를 한다. Nucleo 보드에서도 마찬가지로 작업을 하는데, 회로도를 보면 아두이노 핀 호환 컨넥터의 TX, RX핀에 연결이 되어있다. 하지만 자세히 회로도를 보면 default 연결은 이 핀들이 아니라 ST-Link칩에 연결이 되어 있다. 즉 UART2의 경우 ST-Link를 통해서 USB 컨넥터에 연결이되고 virtual COM port로 잡힌다. 매뉴얼에 보면 다음과 같이 나온다.
The USART2 interface available on PA2 and PA3 of the STM32 microcontroller can be connected to ST-LINK MCU, ST morpho connector or to Arduino connector. The choice can be changed by setting the related solder bridges. By default the USART2 communication between the target STM32 and ST-LINK MCU is enabled, in order to support virtual COM port for MbedTM (SB13 and SB14 ON, SB62 and SB63 OFF). If the communication between the target STM32 PA2 (D1) or PA3 (D0) and shield or extension board is required, SB62 and SB63 should be ON, SB13 and SB14 should be OFF. In such case it is possible to connect another USART to ST-LINK MCU using flying wires between ST morpho connector and CN3.
따라서 아두이노 핀 호환핀에 연결을 하려면 점퍼 설정을 다시해야 하는데, printf를 위해서라면 virtual COM port를 사용하면 되니 그럴 필요는 없다.
System Workbench for STM32를 설치하는 방법은 2가지이다. 인스톨 프로그램으로 설치하는 방법과 기존에 설치되어 있는 이클립스에 설치하는 방법이 있다.
chmod 755 install_sw4stm32.run then ./install_sw4stm32.run
문제는 이렇게 설치를 하다가 다음과 같은 에러메시지가 나오고 더 이상 진행이 되지 않는다.
#To disable
sudo spctl –master-disable
#To enable
sudo spctl –master-enable
지난번 포스팅 “SD 메모리 SPI로 제어하기“의 내용만으로는 부족하여 추가적으로 정리한다.
SD 메모리 카드는 기본적으로 전원이 들어오면 SDIO로 동작을 한다. 따라서 대부분의 칩벤더에서는 SDIO인터페이스를 사용하는 예제를 제공하는데, SDIO가 없는 작은 MCU에서는 SPI를 사용해야 한다. 따라서 다음 그림과 같은 초기화 루틴이 필요하다.
위 표에서 CMD0은 0, CMD8은 8을 전송하는 형태이고, ACMD41은 CMD55를 전송후 CMD41를 전송하는 것이며, argument로 30번째 비트가 세트된 32비트를 전송한다.
커맨드의 응답은 다음과 같다. R1은 1바이트이고, R3, R7은 R1+ 32비트이니 5바이트이다.
관련 코드: STM32F429IDiscovery보드에서 테스트한 코드가 github에 업로드되어 있으니 코드를 보면서 참고 문서를 보면 이해가 될 듯.. SD memory control with SPI
잘 정리된 STM32, STM8의 s/w solution 가이드
위 그림에 있는 모든 내용들의 솔루션이 정리되어 있다.
최근의 MCU vendor들은 너나 할 것 없이 ARM사의 Cortex 코아를 내장한 칩을 출시하고 있다.
Cortex M3를 필두로 M4, M0까지…
기존의 NXP, Nuvoton등 많은 MCU 벤더들이 이미 M0기반의 칩을 출시했듯이, 이번에 ST도 M3, M4에 이어 M0기반의 칩을 출시했다.
ST의 Press release 기사: http://www.st.com/internet/com/press_release/p3275.jsp
CortexM0와 M3, ARM7 과의 비교자료는 이전 포스트 “Cortex M0 비교 자료“참고..
ST에서 발간하는 STM32 Journal 첫호입니다.
cfile24.uf.190D3B4B4EEAEA973742D8.pdf
주로 새로 출시한 STM32 F4에 대한 설명이 있습니다.
Connectivity쪽 자료를 보면 아래 그림과 같은 테이블이 나옵니다.
아래 테이블을 보면 MCU에서 초당 처리해야할 패킷의 수가 수치적으로 나와 있습니다. 당연히 한 패킷당 바이트수가 작을 수록 처리해야할 패킷의 수가 많습니다. 100Mbps의 경우는 10Mbps의 경우의 10배이고…
그리고 괄호안의 수치는 각 Bandwidth를 만족하기위한 1 패킷을 처리하기 위해 걸리는 시간입니다.
즉 MCU가 최소한 이정도 성능이 있어야 10M, 100Mbps를 만족한다는 것인데…
uC/TCP-IP 스텍을 사용시 zero copy 아키텍쳐를 사용하여 dedicated memory에 비해 장점이 있다고 설명을 합니다.
모든 MCU 벤더들은 자신들이 출시하는 반도체 칩 이외에 사용자가 이 칩을 잘 사용하도록reference board 또는 evaluation board 라고 칭하는 개발 키드를 제공을 한다. 전통적으로 이것은 아주 오랜 기간 동안 칩의 모든 기능을 테스트해 볼 수 있도록 구성이 되어 있어서 칩의 기능이 많을수록 상당히 복잡한 형태를 가지고 있다. 하지만 최근의 경우 MCU 벤더들이 출시하는 칩의 종류는 메모리 용량 및 주변 장치에 따라 수십에서 수백 종에 이르므로 이 모든 칩을 위한 개발키트를 출시한다는 것은 거의 불가능하다.
<복잡한 형태의 개발 키드>
따라서 요즘 대부분의 MCU 벤더들은 기본이 되는 형태의 개발키트가 하나 있고 여기에 부가적으로 daughter board를 연결할 수 있도록 하여 사용자가 선택적으로 연결을 할 수 있도록 하고 있다. 이렇게 함으로써 기본 개발 키트의 가격은 사용자가 쉽게 살 수 있을 정도로 매우 싸게 공급을 하며, 사용자가 이 보드에 추가적으로 자신의 모듈이나 보드를 연결할 수 있도록 모든 I/O 인터페이스를 제공을 한다. 여기서 더 나아가 예전에는 ICE 장비나 디버거가 따로 필요했지만 개발 키드 자체에 디버깅을 할 수 있는 기능까지 제공하는 보드들도 있다.
< ST마이크로의 Discovery 시리즈 >
사진의 상단부분이 디버거를 위한 보드이고 하단 부분이 실제 칩이다, 테스트를 위한 모든 I/O 인터페이스가 나와 있으며, 사용자가 쉽게 회로를 연결할 수 있는 홀들이 나와있는 영역을 제공한다.
< TI사의 Launchpad >
TI사의 Launchpad의 경우 보드 가격이 4.3불 밖에 되지 않는다. 실제 칩은 가운데 있으며, 메모리 용량이 다른 칩으로 교환이 가능하며 보드 상단에 디버깅을 위한 칩이 따로 달려 있다. 물론 다음 그림과 같이 BoosterPack 이라고 하여 옵션보드를 장착이 가능하다.
정리하면