ฉันจะพัฒนาสำหรับการค้นพบ STM32 บน Linux ได้อย่างไร [ปิด]


26

ฉันมีบอร์ดค้นพบ STM32 และต้องการให้สามารถเขียนโปรแกรมลงบน Linux

วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?


ฉันติดตั้ง Codesourcery บน LinuxhUbuntu และวางซ้อนกันเล็กน้อย: PATH ใช้ได้ แต่โปรแกรมไม่ปรากฏบน dasboard หรือศูนย์ซอฟต์แวร์ อาจจะเป็นอูบุนตูที่ฉันต้องการเปลี่ยน แต่ก็ไม่รู้เหมือนกัน หากคุณมีความคิดโปรดเขียน ขอขอบคุณ. Tom
Tom Rert

1
@TomRitzmann PeterJ ถูกต้องโปรดอย่าใช้คำตอบในการถามคำถาม ยิ่งไปกว่านั้นปัญหาซอฟต์แวร์ไม่ได้อยู่ที่นี่ SuperUser เป็นสถานที่ที่เหมาะสม
clabacchio

คำตอบ:


12

วิธีที่ง่ายในการตั้งโปรแกรมและดีบักบอร์ด STM32 Discovery (หรือ STM32 ใด ๆ ที่ใช้โปรแกรมเมอร์ ST-Link) คือการใช้โครงการ 'stlink' https://github.com/texane/stlink (แต่ OpenOCD ก็เป็นที่นิยมเช่นกัน)

บอร์ด ST Nucleo ยังปรากฏเป็นอุปกรณ์แฟลช USB ดังนั้นไม่จำเป็นต้องแม้แต่stlink- เพียงคัดลอกไฟล์ไปยังพวกเขา

มีหน้าเว็บที่ดีเกี่ยวกับวิธีการพัฒนาสำหรับการค้นพบ STM32 บน Linux เช่นhttp://gpio.kaltpost.de/?page_id=131และ http://torrentula.to.funpic.de/2012/03/22/ การตั้งค่า -stm32f4-arm-development-toolchain /และhttp://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

อย่างไรก็ตามฉันพบลิงค์ล่าสุดมีประโยชน์มากที่สุด มันแสดงให้เห็นถึงวิธีการสร้างโครงการ STM32 ของ ST ตามที่เป็น - การเปลี่ยนแปลงเพียงอย่างเดียวคือการเพิ่ม Makefile ของเขาซึ่งดูเหมือนเป็นโซลูชันที่สมบูรณ์แบบ

ใน Ubuntu รุ่นล่าสุดมีแพคเกจที่คุณสามารถติดตั้งซึ่งมีคอมไพเลอร์ ARM:

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

โปรดทราบว่าโปรเซสเซอร์นั้นแตกต่างกันเล็กน้อย STM32F0..4 ทั้งหมดจะต้องมีค่าสถานะคอมไพเลอร์ที่แตกต่างกันและตัวเชื่อมโยงสคริปต์จะแตกต่างกันเล็กน้อยสำหรับแต่ละ (แม้ว่าจะเป็นเพียงเพราะขนาด RAM และแฟลชที่เปลี่ยนแปลง)

แก้ไข: ถ้าคุณต้องการที่จะเริ่มต้นอย่างรวดเร็วจริงๆคุณยังสามารถดูhttp://www.espruino.com มันเป็นล่าม JavaScript ที่ทำงานบน STM32 ดังนั้นเมื่อคุณติดตั้ง 'stlink' เพื่อให้คุณสามารถแฟลชไปยังบอร์ดคุณสามารถดาวน์โหลดภาพจากไซต์นั้นแฟลชบนแล้วเชื่อมต่อกับแอปพลิเคชั่นเทอร์มินัลและ เริ่มการเขียนโปรแกรม


นี่คือรายการของบอร์ด STM32x Discovery ที่สนับสนุนโดย OpenOCD: github.com/openrisc/openOCD/tree/master/tcl/board (ค้นหา "ค้นพบ" โดยใช้เบราว์เซอร์ของคุณ)
rbaleksandar

8

หากคุณเป็นนักแก้ไขข้อความและ Makefiles มากกว่าที่จะใช้ GUI คุณสามารถทำได้:

  • ติดตั้ง Toolchain ที่ให้บริการ 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 (ซึ่งสามารถพบได้ใน Archlinux 'AUR เป็น gcc-arm-none-eabi-bin)
  • ตัดสินใจว่าคุณต้องการใช้ไลบรารีใดและเพื่อเข้าถึงฮาร์ดแวร์ใด จากด้านบนของหัวของฉันมีสามตัวเลือกทั่วไป:
    1. ไม่มี. คุณเขียนทุกอย่างตั้งแต่เริ่มต้น ไม่แนะนำสำหรับผู้เริ่มต้น
    2. STM32Cube : AC lib จัดทำโดย ST เอง
    3. Libopencm3 : lib โอเพ่นซอร์สที่รองรับคอร์เท็กซ์นอกหลายคอร์โดยผู้ค้าต่างกัน
    4. STM32PLUS : A C ++ lib อย่างไรก็ตามฉันไม่สามารถพูดอะไรได้มากกว่านี้เพราะฉันยังไม่ได้ทดสอบ
  • สร้างหรือคัดลอกโครงการแรกของคุณ
    1. หากไม่มี lib ให้เขียน makefile สคริปต์ linker ของคุณเองรหัสเริ่มต้นและเรียกใช้ makefile อย่างง่าย ๆ โชคดี ;)
    2. ด้วย STM32Cube: ดาวน์โหลดและติดตั้งSTM32CubeMX เมื่อทำการคลายซิปไฟล์ * .exe นั้นเป็นเพียงไฟล์ java และคุณสามารถเรียกใช้ได้โดยใช้ "java -jar filename.exe" การติดตั้งต้องใช้ sudo เมื่อเสร็จแล้วให้สร้างโครงการและสร้างรหัสสำหรับ "Truestudio" ที่ควรให้คุณเริ่มต้นด้วย linker script, รหัสเริ่มต้น, ฟังก์ชั่นหลักเล็กน้อย (และ makefile ถ้าฉันจำได้อย่างถูกต้อง) ที่จริงแล้วแม้ว่าคุณจะไม่ได้ใช้ STM32Cube lib แต่ STM32CubeMX นั้นยอดเยี่ยมสำหรับการคำนวณค่าสำหรับทรีนาฬิกาและตรวจสอบว่าคุณสามารถกำหนดค่าชิปตามที่คุณคิด
    3. ด้วย libopencm3: รับตัวอย่าง libopencm3ค้นหาตัวอย่างที่ตรงกับบอร์ดของคุณและใช้เป็นจุดเริ่มต้น ตัวอย่างควรพร้อมที่จะทำงาน เพียงพิมพ์ "ทำ" จากนั้นใช้ตัวอย่างนั้นเป็นจุดเริ่มต้นสำหรับการพัฒนาของคุณเอง
    4. ด้วย STM32Plus: ฉันไม่รู้ ขอโทษ
  • นำโปรเจคของคุณไปสู่บอร์ด ทั้งใช้

    1. bootloader อนุกรม: stm32flash ใช้งานได้ดี
    2. พอร์ตดีบัก: คุณสามารถใช้openocdเพื่อพูดคุยกับอะแดปเตอร์ตรวจแก้จุดบกพร่องที่มีให้ในกระดาน Openocd นั้นยอดเยี่ยม แต่เอกสารไม่ได้ดีที่สุดเสมอไป หากมีข้อสงสัยให้เข้าร่วมช่องสัญญาณ openocd irc ผู้คนที่นั่นดีจริงๆ
  • รหัสในโปรแกรมแก้ไขข้อความและใช้เครื่องมือบรรทัดคำสั่ง บทช่วยสอนนี้จะให้คำแนะนำมากมาย

สนุก


5

Eclipse , GCCและOpenOCDเป็นหนึ่ง toolchain ก็ขอแนะนำโดยEMCU-ITและมีข้อมูลเพิ่มเติมที่นี่ หน้าเหล่านั้นยังแนะนำให้ใช้ RTOS เช่นFreeRTOS.orgแต่ขึ้นอยู่กับคุณ

และความช่วยเหลือเกี่ยวกับการรวบรวมตัวอย่าง 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 เป็นเทมเพลต Eclipse สำหรับการพัฒนาด้วย Cortex M series โดยเฉพาะ STM32 ใน C ++ ที่ไม่มีระบบปฏิบัติการ มีการกำหนดค่าให้ใช้ openocd, gcc และมีสคริปต์ในการแฟลชและดีบักไปยังเป้าหมายหลายรายการรวมถึงบอร์ดการค้นพบบางส่วน โดยทำตามคำแนะนำและติดตั้งปลั๊กอิน Eclipse ที่แนะนำฉันสามารถใช้ STM32VLDISCOVERY ของฉันบน Ubuntu

ตามที่แนะนำฉันได้รวมเทมเพลต eclipse กับไลบรารีเทมเพลต libstm32pp C ++ ของผู้เขียนคนเดียวกันสำหรับฮาร์ดแวร์ STM32 libstm32pp มอบการแทนที่ที่สมบูรณ์แบบอย่างน่าประหลาดใจสำหรับ CMSIS และไดรเวอร์ STM32 ที่ถูกวิพากษ์วิจารณ์บ่อยครั้งด้วยรูปแบบการเขียนโปรแกรมที่ช่วยให้คุณพูดสิ่งต่าง ๆ เช่นPB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)และPINB::setLow()หรือPINB::setHigh()ส่วนใหญ่ที่รวบรวมมาแบบอินไลน์เนื่องจากเทมเพลต C ++ การตั้งค่าดีมาก


ฉันไม่แนะนำ bareCortexM ที่ไม่มีการจัดการอีกต่อไป ตรวจสอบ stm32plus ที่andybrown.me.uk/wk
joeforker

ปัญหากับไดรเวอร์อุปกรณ์ดังกล่าวคือพวกเขาไม่มีประสิทธิภาพ สำหรับไดรเวอร์อุปกรณ์ความเร็วสูงที่เหมาะสมซึ่งไม่ทำให้ cpu รอบสิ้นเปลืองคุณต้องมี rtos ด้านล่างเพื่อให้คุณสามารถตั้งเวลาได้อย่างเหมาะสม
มาร์ติน

0

บางทีมันอาจจะเป็นประโยชน์สำหรับคนที่: my บทความสั้น ๆ (รัสเซีย) และโครงการที่เรียบง่าย ทั้งหมดใน linux และไม่มีสิ่งที่ไม่จำเป็นเช่น eclipse

ไลบรารี่ถูกนำมาจากเว็บไซต์ ST, makefile - จากหนึ่งในตัวอย่าง GPL มากมายในอินเทอร์เน็ต


0

นี่คือโปรเจ็กต์เทมเพลตขนาดเล็ก แต่มีนวัตกรรมสำหรับการเริ่มต้นใช้บอร์ด STM32F0 Discovery อย่างรวดเร็วภายใต้ Linux หรือระบบปฏิบัติการอื่น

https://github.com/dobromyslov/stm32f0-chibios-template

โปรดทราบว่าโครงการนี้ใช้ ChibiOS ซึ่งเป็นระบบปฏิบัติการแบบเรียลไทม์ฟรีและโอเพ่นซอร์สดังนั้นจึงไม่ใช่การดำเนินการของกระดูกเปล่าตั้งแต่ต้น


0

ฉันใช้เสียงเรียกเข้าและ arm-none-eabi-gcc พร้อมกับเครื่องมือ dev linux ปกติทั้งหมด Linux อยู่ในความคิดของฉันสภาพแวดล้อม dev ที่เหนือกว่าสำหรับงานฝังตัวโดยไกล สำหรับการดีบักฉันใช้ stlink และ arm-none-eabi-gdb


0

พิจารณาplatformio หากคุณพอใจกับบรรทัดคำสั่งคุณจะพบว่า platformio ทำให้กระบวนการพัฒนาง่ายขึ้นมาก pio initสามารถใช้ในการตั้งค่าโครงการ pio runยกระดับ toolchain เพื่อรวบรวม pio run --target uploadส่งรหัสไปยังอุปกรณ์ Platformio ดูแลการดาวน์โหลดส่วนประกอบ toolchain, ไลบรารีและอื่น ๆ ตามต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.