ฉันมีบอร์ดค้นพบ STM32 และต้องการให้สามารถเขียนโปรแกรมลงบน Linux
วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?
ฉันมีบอร์ดค้นพบ STM32 และต้องการให้สามารถเขียนโปรแกรมลงบน Linux
วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?
คำตอบ:
วิธีที่ง่ายในการตั้งโปรแกรมและดีบักบอร์ด 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' เพื่อให้คุณสามารถแฟลชไปยังบอร์ดคุณสามารถดาวน์โหลดภาพจากไซต์นั้นแฟลชบนแล้วเชื่อมต่อกับแอปพลิเคชั่นเทอร์มินัลและ เริ่มการเขียนโปรแกรม
หากคุณเป็นนักแก้ไขข้อความและ Makefiles มากกว่าที่จะใช้ GUI คุณสามารถทำได้:
นำโปรเจคของคุณไปสู่บอร์ด ทั้งใช้
รหัสในโปรแกรมแก้ไขข้อความและใช้เครื่องมือบรรทัดคำสั่ง บทช่วยสอนนี้จะให้คำแนะนำมากมาย
สนุก
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-
ฉันประสบความสำเร็จกับ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 ++ การตั้งค่าดีมาก
บางทีมันอาจจะเป็นประโยชน์สำหรับคนที่: my บทความสั้น ๆ (รัสเซีย) และโครงการที่เรียบง่าย ทั้งหมดใน linux และไม่มีสิ่งที่ไม่จำเป็นเช่น eclipse
ไลบรารี่ถูกนำมาจากเว็บไซต์ ST, makefile - จากหนึ่งในตัวอย่าง GPL มากมายในอินเทอร์เน็ต
นี่คือโปรเจ็กต์เทมเพลตขนาดเล็ก แต่มีนวัตกรรมสำหรับการเริ่มต้นใช้บอร์ด STM32F0 Discovery อย่างรวดเร็วภายใต้ Linux หรือระบบปฏิบัติการอื่น
https://github.com/dobromyslov/stm32f0-chibios-template
โปรดทราบว่าโครงการนี้ใช้ ChibiOS ซึ่งเป็นระบบปฏิบัติการแบบเรียลไทม์ฟรีและโอเพ่นซอร์สดังนั้นจึงไม่ใช่การดำเนินการของกระดูกเปล่าตั้งแต่ต้น
ฉันใช้เสียงเรียกเข้าและ arm-none-eabi-gcc พร้อมกับเครื่องมือ dev linux ปกติทั้งหมด Linux อยู่ในความคิดของฉันสภาพแวดล้อม dev ที่เหนือกว่าสำหรับงานฝังตัวโดยไกล สำหรับการดีบักฉันใช้ stlink และ arm-none-eabi-gdb