สารบัญ:

เริ่มพัฒนา STM32 บน Linux: 4 ขั้นตอน
เริ่มพัฒนา STM32 บน Linux: 4 ขั้นตอน

วีดีโอ: เริ่มพัฒนา STM32 บน Linux: 4 ขั้นตอน

วีดีโอ: เริ่มพัฒนา STM32 บน Linux: 4 ขั้นตอน
วีดีโอ: stm32 development on Linux - installing stlink 2024, พฤศจิกายน
Anonim
Image
Image
ดาวน์โหลดทุกสิ่งที่คุณต้องการ
ดาวน์โหลดทุกสิ่งที่คุณต้องการ

ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าการเริ่มต้นพัฒนาโปรแกรม STM32 บน Linux นั้นง่ายเพียงใด ฉันเริ่มใช้ Linux เป็นเครื่องหลักเมื่อ 2 ปีที่แล้วและไม่เคยผิดหวัง ทุกอย่างทำงานได้เร็วกว่าและดีกว่า windows แน่นอนว่าไม่สะดวกในบางครั้ง แต่มันบังคับให้คุณเรียนรู้สิ่งต่าง ๆ อย่างลึกซึ้งยิ่งขึ้นเพื่อให้คุณสามารถใช้งานได้

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

ในชุดนี้ ผมจะแสดงให้คุณเห็นถึงวิธีการพัฒนาโดยใช้เฉพาะโปรแกรมแก้ไขข้อความ เช่น notepad, SublimeText หรือ Atom ดังนั้นคุณไม่จำเป็นต้องใช้ซอฟต์แวร์ที่เป็นกรรมสิทธิ์หรือ IDE นี่เป็นกระดูกที่เปลือยเปล่าตามที่ได้รับและเป็นเรื่องง่ายอย่างน่าประหลาดใจ

ขั้นตอนที่ 1: ดาวน์โหลดทุกสิ่งที่คุณต้องการ

คุณต้องดาวน์โหลดสามส่วนเพื่อให้ทุกอย่างทำงานได้:

  • คอมไพเลอร์ GCC สำหรับ ARM
  • ไฟล์เฟิร์มแวร์ STM32
  • ยูทิลิตี้ St-link
  • โครงการตัวอย่าง

คอมไพเลอร์เป็นซอฟต์แวร์หลักที่คอมไพล์โค้ด C ของเรากับไฟล์ไลบรารีอื่นๆ ทั้งหมดเป็นภาษาเครื่องที่คอนโทรลเลอร์ stm32 ของเราสามารถเข้าใจได้ ดาวน์โหลดเวอร์ชันที่คอมไพล์ล่วงหน้าล่าสุดของคอมไพเลอร์นี้

โฟลเดอร์ที่มีเฟิร์มแวร์ STM32 เป็นโฟลเดอร์ที่เก็บไฟล์เริ่มต้นและไฟล์หลักทั้งหมดที่จำเป็นสำหรับการทำงานของโปรเซสเซอร์หลัก เราจะใช้ Standard Peripheral Library ที่เหนือกว่า HAL ฉันชอบ StPeriphLibrary มากกว่า เนื่องจากบริษัทต่างๆ ที่ทำงานบนโปรเซสเซอร์นี้ใช้งานมัน เพราะมันแข็งแกร่งและเก่ากว่าและได้รับการสนับสนุน มันยังทนทานกว่าอีกด้วย มันไม่ได้ตัดงานที่คุณต้องทำเพื่อเริ่มต้นอุปกรณ์ต่อพ่วงหรือเปิดไฟ LED แต่ดังนั้นจึงบังคับให้คุณเรียนรู้วิธีการทำงานของโปรเซสเซอร์เหล่านี้ โดยที่คุณมีความรู้มากขึ้นเกี่ยวกับการทำงานภายในจึงทำให้สามารถเขียนโปรแกรมงานใดๆ ได้

ซอฟต์แวร์ชิ้นสุดท้ายที่จะดาวน์โหลดคือยูทิลิตี้ st-link ได้รับการดูแลบน GitHub และใช้ในการถ่ายโอนไฟล์ไบนารีที่คอมไพล์แล้วไปยังโปรเซสเซอร์โดยใช้ stlink IC บนบอร์ดซึ่งทำหน้าที่เป็นโปรแกรมเมอร์/ดีบักเกอร์ SWD / JTAG

นอกจากนี้ ฉันได้จัดเตรียมโฟลเดอร์โปรเจ็กต์ตัวอย่างที่ฉันพูดถึงในภายหลัง และคุณสามารถดาวน์โหลดได้ อยู่ในโฟลเดอร์ VIDEO1 แรก

ขั้นตอนที่ 2: การติดตั้งซอฟต์แวร์

การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์

หลังจากที่คุณดาวน์โหลดไฟล์ทั้งหมดแล้ว ฉันแนะนำให้คุณใส่ไว้ในโฟลเดอร์ทั่วไป เนื่องจากไฟล์ทั้งหมดถูกใช้ร่วมกันเพื่อจุดประสงค์เดียวกัน ฉันใส่โฟลเดอร์ทั้งหมดไว้ในโฟลเดอร์ชื่อ "Embedded" ในไดเร็กทอรี HOME ของฉัน

เราจะเริ่มต้นด้วยไลบรารี STM32 ที่ง่ายที่สุด โฟลเดอร์ที่คุณดาวน์โหลดสามารถทิ้งไว้ที่นั่นได้ เพียงตรวจสอบให้แน่ใจว่าได้ขุดไปรอบๆ เพื่อดูว่าจัดเก็บไฟล์ที่เหมาะสมไว้ที่ใด ดังนั้นคุณสามารถเปลี่ยนและแก้ไข MakeFile หลักเพื่อให้ทำงานกับแพลตฟอร์มของคุณได้

ง่ายเป็นอันดับสองคือคอมไพเลอร์ คุณไม่จำเป็นต้องทำอะไรกับมัน แต่เราจะทำให้คอมไพเลอร์เป็นฟังก์ชันที่สามารถเข้าถึงได้ทั่วโลก เพื่อให้คุณสามารถเรียกคอมไพเลอร์จากโฟลเดอร์ใดก็ได้โดยไม่คำนึงถึงเส้นทาง ขั้นตอนทั้งหมดสามารถทำได้ในเทอร์มินัลหรือใน gui แต่ฉันชอบใช้เทอร์มินัล เนื่องจากเมื่อคุณมีประสบการณ์ มันจะเร็วขึ้นและง่ายขึ้น และฉันขอแนะนำให้คุณใช้เทอร์มินัลมากขึ้น หากคุณกลัว นี่คือขั้นตอน:

  1. ไปที่โฟลเดอร์บ้านของคุณ "/home/YOURUSERNAME/" หรือ "~/" หรือพิมพ์ cd ลงในเทอร์มินัล
  2. เปิดไฟล์ ".bashrc" โดยพิมพ์: nano.bashrc
  3. เลื่อนลงไปที่ท้ายไฟล์และเพิ่มบรรทัดนี้: export PATH=$PATH:~/Embedded/gcc-arm-none-eabi-8-2018-q4/bin
  4. ออกโดยบันทึก: CTRL+X คลิก Y, ENTER
  5. รันคำสั่ง: source.bashrc เพื่อรีเฟรชแหล่งเทอร์มินัล
  6. ตรวจสอบว่าทุกอย่างใช้งานได้โดยพิมพ์: arm-none-eabi-gcc --version ควรแสดงคอมไพเลอร์เวอร์ชันล่าสุด

ในการติดตั้ง st-link ให้แตกไฟล์เก็บถาวรที่คุณดาวน์โหลดลงในโฟลเดอร์ Embedded จากนั้นทำตามขั้นตอนเหล่านี้:

  1. วิ่ง: ทำ
  2. ไปที่โฟลเดอร์ "build/Release": cd build/Release
  3. พิมพ์ ls แล้วคุณจะเห็นไฟล์เรียกทำงานสองไฟล์ชื่อ "st-flash" และ "st-util"
  4. ย้ายทั้งสองไปยังไดเรกทอรีหลัก stlink: mv st-flash st-util../../
  5. คุณสามารถทำได้ หากคุณต้องการใช้สองฟังก์ชันนี้ในการแก้ไขไฟล์ ".bashrc" ทั่วโลกอีกครั้งโดยเพิ่ม:

    export PATH=$PATH:~/Embedded/stlink/

นั่นคือทั้งหมด! คุณมีทุกสิ่งที่คุณต้องการ ตอนนี้ไปคว้าตัวแก้ไขข้อความที่คุณชื่นชอบ ใช้แค่อันมาตรฐาน อันที่ฉลาดกว่าอย่าง SublimeText หรือ Atom นี่แหละคือสิ่งที่ผมใช้

ขั้นตอนที่ 3: การตั้งค่าโครงการตัวอย่าง

การจัดทำโครงการตัวอย่าง
การจัดทำโครงการตัวอย่าง

ตอนนี้เราจะสร้างโครงการตัวอย่างที่คุณสามารถใช้เพื่อเริ่มต้นทุกโครงการ มันเหมือนกับเทมเพลตที่มีการจัดการการตั้งค่าหลักทั้งหมดแล้ว

คุณสามารถดาวน์โหลดได้บน MEGA ของฉัน ลิงก์อยู่ในขั้นตอนแรกของคำแนะนำนี้และภายใต้วิดีโอ youtube ของฉันทุกรายการ ข้างในเป็นไฟล์ main.c ที่ว่างเปล่าพร้อมกับไฟล์เริ่มต้นสำหรับโปรเซสเซอร์นี้และ Makefile Makefile เป็นโปรแกรมที่บอกคอมไพเลอร์ C ว่าจะหาคอมไพเลอร์ arm ได้ที่ไหน วิธีคอมไพล์ และไลบรารีทั้งหมดอยู่ที่ไหน ในการรับไฟล์ที่เหมาะสมสำหรับโปรเจ็กต์ของคุณ คุณสามารถไปที่โฟลเดอร์ไลบรารี STM32 และตรวจสอบโฟลเดอร์ "โปรเจ็กต์" หรือ "ตัวอย่าง" ภายในคุณจะเห็นและคัดลอกไฟล์เหล่านี้: main.c, Makefile และ XXX_conf.h, system_XXX.c.นอกจากนี้ คุณจะต้องมีไฟล์ตัวเชื่อมโยง stm32_flash.ld ที่สามารถพบได้ในโฟลเดอร์:

"/FLASH_Program/TrueSTUDIO/FLASH_Program/" ที่อยู่ในโฟลเดอร์ตัวอย่างหรือเพียงแค่ค้นหาไฟล์

Makefile สามารถพบได้ทางออนไลน์หรือคัดลอกจากโฟลเดอร์ของฉัน แต่คุณจะต้องเปลี่ยนแปลงบางสิ่ง มาดูไฟล์ make ของฉันและสิ่งที่คุณสามารถเปลี่ยนแปลงได้

# เส้นทางไปยังโฟลเดอร์ stlink สำหรับอัปโหลดรหัสไปยังบอร์ด

STLINK=~/Embedded/stlink # ใส่ไฟล์ต้นฉบับของคุณที่นี่ (*.c) SRCS=main.c system_stm32f4xx.c # ไฟล์ต้นฉบับของไลบรารี #SRCS += stm32f4xx_rcc.c #SRCS += stm32f4xx_gpio.c # ไบนารีจะถูกสร้างขึ้นด้วย ชื่อนี้ (.elf,.bin,.hex) PROJ_NAME=test # ใส่ไดเร็กทอรีรหัสไลบรารี STM32F4 ของคุณที่นี่ เปลี่ยน YOURUSERNAME เป็นของคุณ STM_COMMON=/home/matej/Embedded/STM32F4-Discovery_FW_V1.1.0 # การตั้งค่าคอมไพเลอร์ แก้ไข CFLAGS เพื่อรวมไฟล์ส่วนหัวอื่นๆ เท่านั้น CC=arm-none-eabi-gcc OBJCOPY=arm-none-eabi-objcopy # แฟล็กคอมไพเลอร์ CFLAGS = -g -O2 -Wall -Tstm32_flash.ld CFLAGS += -DUSE_STDPERIPH_DRIVER CFLAGS += -mlittle-endian -mthumb -mcpu= cortex-m4 -mthumb-interwork CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 CFLAGS += -I # รวมไฟล์จากไลบรารี STM CFLAGS += -I$(STM_COMMON)/Libraries/CMSIS/Include CFLAGS += -I$(STM_COMMON)/Libraries/CMSIS/ST/STM32F4xx/Include CFLAGS += -I$(STM_COMMON)/ Libraries/STM32F4xx_StdPeriph_Driver/inc CFLAGS += -I$(STM_COMMON)/Utilities/STM32F4-Discovery # เพิ่มไฟล์เริ่มต้นเพื่อสร้าง SRCS += $(STM_COMMON)/Libraries/CMSIS/ST/STM32F4xx/Source/Templates/start32 s OBJS = $(SRCS:.c=.o) vpath %.c $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src \. PHONY: proj all: proj proj: $(PROJ_NAME).elf $(PROJ_NAME).elf: $(SRCS) $(CC) $(CFLAGS) $^ -o $@ $(OBJCOPY) -O ihex $(PROJ_NAME).elf $(PROJ_NAME).hex $(OBJCOPY) -O binary $(PROJ_NAME).elf $(PROJ_NAME).bin สะอาด: rm -f *.o $(PROJ_NAME).elf $(PROJ_NAME).hex $(PROJ_NAME).bin # แฟลชการเบิร์น STM32F4: proj $(STLINK)/st-flash write $(PROJ_NAME).bin 0x80000000

  • คุณสามารถแก้ไขบรรทัดแรกเพื่อเปลี่ยนเส้นทางไปยังโฟลเดอร์ยูทิลิตี้ stlink ของคุณ
  • คุณสามารถเปลี่ยนบรรทัดไปยังปลายทางของโฟลเดอร์ของคุณด้วยไลบรารีและ YOURUSERNAME

    STM_COMMON=/home/YOURUSERNAME/Embedded/STM32F4-Discovery_FW_V1.1.0

  • ตรวจสอบส่วนที่เชื่อมโยงไลบรารีทั้งหมดด้วย สิ่งนี้สามารถเปลี่ยนแปลงได้ขึ้นอยู่กับแพลตฟอร์มที่คุณใช้ ดังนั้นโปรดตรวจสอบการเปลี่ยนแปลงในโครงสร้างไฟล์ ทุกอย่างอื่นที่มีพาธไปยังไฟล์บางไฟล์ เช่น บรรทัดถัดไปที่มีไฟล์เริ่มต้นสามารถเปลี่ยนแปลงได้

หลังจากที่คุณแก้ไขสิ่งเหล่านี้ภายใน Makefile แล้ว คุณสามารถตรวจสอบว่ามันใช้งานได้หรือไม่โดยเปิดเทอร์มินัลภายในไดเร็กทอรีของคุณและพิมพ์: make ถ้ามันคอมไพล์ทุกอย่างโดยไม่มีปัญหา แสดงว่าคุณพร้อมแล้ว ถ้าไม่ ให้ดูข้อผิดพลาดของคอมไพเลอร์และแก้ไข Makefile

นอกจากนี้ เมื่อฉันใช้ Atom ฉันจะวางโค้ดสองชิ้นไว้เคียงข้างกัน โดยปกติ main.c และ Makefile จะอยู่ทางซ้าย เนื่องจากคุณจำเป็นต้องแก้ไข Makefile เพียงครั้งเดียวและไลบรารีทางด้านขวา คุณสามารถเห็นบนรูปภาพที่ฉันเปิดโฟลเดอร์ที่มีไฟล์.c และ.h สำหรับแต่ละไลบรารี คุณสามารถดูทั้งหมดนี้ได้ในวิดีโอ

ขั้นตอนที่ 4: เสร็จแล้ว

ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!

เมื่อคุณกำหนดค่า Makefile และคอมไพเลอร์ทำงานแล้ว คุณสามารถใช้โฟลเดอร์นี้สำหรับโครงการทั้งหมดเป็นเทมเพลต ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้บันทึกสำเนาของโฟลเดอร์นี้

นอกจากนี้ คุณสามารถทดสอบโปรแกรม st-flash และ st-info โดยเสียบบอร์ดพัฒนาของคุณและพิมพ์ลงในเทอร์มินัล:

st-info --probe

คุณสามารถดูแพลตฟอร์มที่ซอฟต์แวร์ stlink รู้จักและตระกูล IC พร้อมกับแคชและสิ่งอื่น ๆ คุณสามารถพิมพ์ใน:

st-info

เพื่อดูพารามิเตอร์ที่มีอยู่ทั้งหมด

ตอนนี้คุณสามารถเริ่มการเขียนโปรแกรม ในคำแนะนำและวิดีโอถัดไป ฉันจะแสดงให้คุณเห็นพื้นฐานของ GPIO และนาฬิกา ทั้งสองสิ่งนี้เป็นพื้นฐานสำหรับทุกสิ่งทุกอย่าง เนื่องจากเกือบทุกอย่างที่บอร์ดโต้ตอบด้วยนั้นอยู่เหนือ GPIO และทุกอย่างทำงานบนนาฬิกา และคุณจะเห็นรูปแบบในการเขียนโปรแกรมโปรเซสเซอร์เหล่านี้

จนกว่าจะถึงตอนนั้น ขอขอบคุณสำหรับการดูวิดีโอคำแนะนำและวิดีโอ YouTube ของฉัน หากคุณยังไม่ได้ดำเนินการ

แนะนำ: