Linux에서 STM32 감지를 위해 어떻게 개발합니까? [닫은]


26

STM32 디스커버리 보드가 있으며 Linux에서 프로그래밍 할 수 있기를 원합니다.

가장 쉬운 방법은 무엇입니까?


LinuxhUbuntu에 Codesourcery를 설치하고 약간 쌓았습니다. PATH는 정상이지만 프로그램이 dasboard 또는 소프트웨어 센터에 나타나지 않습니다. 어쩌면 그것은 어떻게 든 변경 될지 모르지만 우분투 일 것입니다. 아이디어가 있으시면 작성하십시오. 고맙습니다. 톰
톰 레트

1
@TomRitzmann PeterJ가 맞습니다. 질문에 답을 사용하지 마십시오. 또한 소프트웨어 문제는 여기서 다루지 않습니다. SuperUser가 올바른 장소입니다.
clabacchio

답변:


12

STM32 Discovery 보드 (또는 ST-Link 프로그래머를 사용하는 STM32)를 프로그래밍하고 디버깅하는 쉬운 방법은 'stlink'프로젝트 https://github.com/texane/stlink 를 사용하는 것입니다 (그러나 OpenOCD도 인기가있는 것으로 보입니다)

ST Nucleo 보드는 USB 플래시 장치로도 표시되므로 stlink파일을 복사하기 만하면됩니다.

http://gpio.kaltpost.de/?page_id=131http://torrentula.to.funpic.de/2012/03/22/ 와 같이 Linux에서 STM32 발견을위한 개발 방법에 대한 좋은 페이지가 있습니다. setting-up-the-stm32f4-arm-development-toolchain /http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

그러나 마지막 링크가 가장 유용하다는 것을 알았습니다. ST의 STM32 프로젝트를있는 그대로 빌드하는 방법을 보여줍니다. 유일한 변경 사항은 완벽한 솔루션 인 것처럼 보이는 Makefile을 추가하는 것입니다.

최신 버전의 Ubuntu에는 ARM 컴파일러를 포함하는 패키지를 설치할 수 있습니다.

sudo apt-get install gcc-arm-none-eabi

프로세서는 모두 약간 다릅니다. STM32F0..4는 모두 다른 컴파일러 플래그가 필요하며 링커 스크립트는 각각 약간 씩 다릅니다 (실제로는 RAM 및 플래시 크기가 변경 되었음에도 불구하고).

편집 : 정말 빨리 시작 하려면 http://www.espruino.com참조하십시오 . STM32 자체에서 실행되는 JavaScript 인터프리터이므로 일단 'stlink'가 설치되면 보드에 플래시 할 수 있으므로 해당 사이트에서 이미지를 다운로드하여 플래시 한 다음 터미널 응용 프로그램과 연결하고 프로그래밍을 시작하십시오.


다음은 OpenOCD가 지원하는 STM32x 디스커버리 보드 목록입니다 : github.com/openrisc/openOCD/tree/master/tcl/board (브라우저를 사용한 "발견"검색)
rbaleksandar

8

GUI를 사용하는 대신 텍스트 편집기 및 Makefile에 더 익숙하다면 다음을 수행 할 수 있습니다.

  • arm-none-eabi-gcc를 제공하는 툴체인을 설치하십시오. Archlinux에서는 커뮤니티에서 커뮤니티 / arm-none-eabi-binutils, arm-none-eabi-gcc 및 arm-none-eabi-newlib (및 디버그하려는 경우 arm-none-eabi-gdb)가 필요합니다. repo 또는 https://launchpad.net/gcc-arm-embedded (아키 리눅스의 AUR에서 gcc-arm-none-eabi-bin으로 찾을 수 있음).
  • 하드웨어에 액세스하기 위해 사용할 라이브러리를 결정하십시오. 내 머리 꼭대기에는 세 가지 일반적인 옵션이 있습니다.
    1. 없음 당신은 처음부터 모든 것을 씁니다. 초보자에게는 권장되지 않습니다.
    2. STM32Cube : ST 자체에서 제공하는 AC 라이브러리
    3. Libopencm3 : 다른 공급 업체가 제공하는 많은 cortex-m 코어를 지원하는 오픈 소스 lib입니다.
    4. STM32PLUS : C ++ 라이브러리 그러나 테스트하지 않았기 때문에 그것에 대해 더 많이 말할 수는 없습니다.
  • 첫 번째 프로젝트를 작성하거나 복사하십시오.
    1. lib가 없으면 자신의 makefile, 링커 스크립트, 시작 코드를 작성하고 간단한 makefile을 실행하십시오. 행운을 빕니다 ;)
    2. STM32Cube 사용 : STM32CubeMX를 다운로드하여 설치 하십시오 . 압축이 풀리면 * .exe 파일은 실제로는 Java 파일이며 "java -jar filename.exe"를 사용하여 실행할 수 있습니다. 설치에는 sudo가 필요합니다. 완료되면 프로젝트를 작성하고 "Truestudio"에 대한 코드를 생성하십시오. 링커 스크립트, 시작 코드, 사소한 주요 기능 (그리고 내가 올바르게 기억하면 makefile)으로 시작점을 제공해야합니다. 실제로 STM32Cube 라이브러리를 사용하지 않더라도 STM32CubeMX는 클럭 트리의 값을 계산하고 생각한대로 칩을 구성 할 수 있는지 확인하는 데 유용합니다.
    3. libopencm3 사용 : libopencm3 예제를 가져와 보드와 일치하는 예제 를 찾아이를 시작점으로 사용하십시오. 예제를 실행할 준비가되었습니다. "make"를 입력하십시오. 그런 다음이 예제를 자체 개발의 시작점으로 사용하십시오.
    4. STM32Plus 사용시 : 잘 모르겠습니다. 죄송합니다.
  • 프로젝트를 보드로 가져옵니다. 어느 쪽이든 사용

    1. 시리얼 부트 로더 : stm32flash훌륭하게 작동합니다.
    2. 디버그 포트 : openocd 를 사용 하여 보드에 제공된 디버깅 어댑터와 통신 할 수 있습니다 . Openocd는 훌륭하지만 문서가 항상 최고는 아닙니다. 의심스러운 경우 openocd irc 채널에 가입하십시오. 거기 사람들은 정말 좋습니다.
  • 텍스트 편집기로 코드를 작성하고 명령 행 도구를 사용하십시오. 이 튜토리얼 은 많은 팁을 제공합니다.

즐겨


5

Eclipse , GCCOpenOCD 는 하나의 툴체인입니다. EMCU-IT 에서 권장하며 여기에 추가 정보가 있습니다 . 이 페이지는 FreeRTOS.org 와 같은 RTOS를 사용하는 것이 좋습니다 . 그러나 그것은 당신에게 달려 있습니다.

Linux에서 STM32 예제를 컴파일하는 데 도움이 필요하면 여기로 이동하십시오 . 이 링크는 호출 할 수있는 예제의 makefile을 가리 킵니다.

git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip

몇 가지 사소한 코드 수정 사항도 문서화되어 있지만 대부분의 프로젝트는

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-

1
감사! 나는 전에 그 링크를 보지 못했다. 다른 디스커버리 보드에는 미묘하게 다른 빌드 플래그가 있지만 어딘가에 더 확실한 가이드가 없다는 것에 놀랐습니다.
Gordon Williams

예, ST는 매우 저렴한 보드를 만들어 수천 개를 버렸습니다. STM32 자체는 F4까지 멋진 칩이지만 프로그래밍은 엉덩이에 큰 고통입니다. 이들의 드라이버는 문서화가 잘되어 있지 않으며 이름이 잘 지정되어 있지 않으며 무료로 잘 어울리는 IDE와 툴 체인을 찾는 것이 쉽지 않습니다.
hak8or

1

https://github.com/JorgeAparicio/bareCortexM에서 성공했습니다 (링크 된 블로그 게시물 참조). 필자는 코드에 디버깅 문을 삽입하거나 칩 내부에서 무슨 일이 일어나고 있는지 추측하는 대신 코드를 한 단계 씩 실행하거나 장치 메모리를 탐색 할 수 있다는 것을 알고 있습니다.

bareCortexM 프로젝트는 OS가없는 C ++에서 Cortex M 시리즈, 특히 STM32로 개발하기위한 Eclipse 템플릿입니다. openocd, gcc를 사용하도록 구성되었으며 일부 디스커버리 보드를 포함하여 여러 대상으로 플래시 및 디버깅하는 스크립트가 있습니다. 지침을 따르고 권장되는 Eclipse 플러그인을 설치함으로써 우분투에서 STM32VLDISCOVERY를 사용할 수있었습니다.

권장대로 Eclipse 템플릿을 STM32 하드웨어 용 동일한 작성자의 libstm32pp C ++ 템플릿 라이브러리와 결합했습니다. libstm32pp는 CMSIS에 대한 놀라 울 정도로 완전히 교체하고 같은 것을 말할 수있는 프로그래밍 모델로 자주 비판 STM32 드라이버를 제공 PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)하고 PINB::setLow()PINB::setHigh()때문에 C ++ 템플릿에 대한 모든 대부분의 컴파일 된 인라인. 설정이 매우 좋습니다.


더 이상 유지되지 않는 bareCortexM을 권장하지 않습니다. andybrown.me.uk/wk에서 stm32plus를
joeforker

이러한 장치 드라이버의 문제점은 비효율적이라는 것입니다. CPU 사이클을 낭비하지 않는 적절한 고속 장치 드라이버의 경우 적절한 스케줄링을 수행 할 수 있도록 아래에 rtos가 필요합니다.
Martin

0

어쩌면 그것은 누군가에게 유용 할 것입니다 : 내 짧은 기사 (러시아어)와 간단한 프로젝트 . 모두 리눅스에서 일식과 같은 불필요한 것들이 없습니다.

라이브러리는 ST 웹 사이트 인 makefile (인터넷의 여러 GPL 예제 중 하나)에서 가져 왔습니다.



0

나는 일반적인 리눅스 개발 도구와 함께 vim과 arm-none-eabi-gcc를 사용한다. 리눅스는 임베디드 작업을위한 뛰어난 개발 환경이라고 생각합니다. 디버깅을 위해 stlink와 arm-none-eabi-gdb를 사용합니다.


0

platformio을 고려하십시오 . 명령 줄에 익숙하다면 platformio가 개발 프로세스를 상당히 쉽게 해줍니다. pio init프로젝트를 설정하는 데 사용할 수 있습니다. pio run컴파일하기 위해 툴체인을 활용합니다. pio run --target upload장치에 코드를 보냅니다. Platformio는 필요에 따라 툴체인 구성 요소, 라이브러리 등을 다운로드합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.