新聞中心
作為一個追求高效的工程師,我們在設計嵌入式系統(tǒng)時常常需要采用一些先進的芯片和開發(fā)工具。而在這些芯片和工具中,STM32是一個備受推崇的選擇。它是STMicroelectronics公司推出的,具有高性能、低功耗、多功能的單片機。然而,在設備的開發(fā)過程中,如何將STM32和Linux操作系統(tǒng)兼容工作是一個重點考慮的問題。本文將向大家介紹一些關于STM32和Linux的搭配使用技巧,實現(xiàn)設備載入時零壓力。

公司主營業(yè)務:網(wǎng)站設計、成都網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出堯都免費做網(wǎng)站回饋大家。
一、USB驅(qū)動的安裝
在嵌入式開發(fā)中,很多設備都采取了USB接口,作為設備的主要輸入輸出。然而,當我們連接STM32設備時,驅(qū)動的安裝往往是一個讓人困擾的問題。在Linux系統(tǒng)下,我們可以通過如下幾個步驟來完成STM32的驅(qū)動安裝:
1.將STM32的設備連接到電腦上。使用命令lsu來查看設備的廠商ID和設備ID,例如:
$ lsu
Bus 002 Device 002: ID 2232:1024 Silicon Labs CP210x UART Bridge
這里的ID 2232:1024是指設備的廠商ID和設備ID,即VID和PID。
2.在此基礎上,下載相應的驅(qū)動程序。以Silicon Labs CP210x USB to UART Bridge為例,可以通過如下命令下載驅(qū)動:
$ sudo apt-get install linux-modules-extra-$(uname -r)
然后,重新插拔設備,即可完成驅(qū)動的安裝。
二、通過OpenOCD實現(xiàn)STM32的編程
在完成USB驅(qū)動程序的安裝之后,我們還需要一些工具將程序下載到STM32芯片中。OpenOCD是一個開源的On-Chip Debugging、燒錄程序、調(diào)試工具。它基于GDB和JTAG接口,可以支持多種芯片的編程和調(diào)試。在使用OpenOCD時,我們需要借助某個硬件設備,例如JTAG調(diào)試器,通過調(diào)試接口與芯片進行連接。一般而言,硬件設備的連接和配置都是由硬件工程師完成,因此我們在此不再贅述。接下來,我們重點講解如何在Linux系統(tǒng)中通過OpenOCD實現(xiàn)STM32芯片的編程。
1.我們需要安裝OpenOCD工具。在Ubuntu系統(tǒng)中,可以通過如下命令來進行安裝:
$ sudo apt-get install openocd
2.在安裝完成之后,我們需要通過配置文件來設置OpenOCD的工作模式。例如,我們可以編寫一個名為cfg的配置文件,其中包含如下內(nèi)容:
interface u
#jtag_speed 1MHz
jtag_nsrst_delay 400
jtag_ntrst_delay 400
transport select swd
set WORKAREASIZE 0x8000
#stm32L432
set CHIPNAME stm32f407VG
swd_device_desc “STM32F40x Flash/EEPROM programmer”
source [find interface/ftdi/olimex-arm-u-tiny.cfg]
source [find target/stm32f4x.cfg]
在此,我們使用USB作為接口,同時設置jtag_nsrst_delay和jtag_ntrst_delay為400微秒,以保證軟復位的穩(wěn)定性。transport select swd用于設置JTAG工作模式。set WORKAREASIZE用于設置堆??臻g的大小。set CHIPNAME用于設置芯片型號。我們調(diào)用interface/ftdi/olimex-arm-u-tiny.cfg和target/stm32f4x.cfg兩個配置文件,來啟動OpenOCD。
3.確認OpenOCD工具正確運行之后,我們就可以通過OpenOCD實現(xiàn)STM32芯片的編程了。例如,我們可以通過如下命令將程序下載到芯片中:
$ openocd -f cfg -c init -c “reset init” -c “flash write_image erase output.bin 0x08000000” -c “reset run” -c shutdown
在這個命令中,-f cfg指定配置文件為cfg,-c init表示執(zhí)行初始化,-c “reset init”表示將芯片進行軟復位。-c “flash write_image erase output.bin 0x08000000″表示將編寫好的程序輸出到芯片的地址0x08000000處,并進行擦除。-c “reset run”表示將芯片運行。我們以shutdown為結(jié)尾,表示OpenOCD的任務已完成,并關閉OpenOCD。
在本文中,我們主要探討了如何將STM32和Linux操作系統(tǒng)兼容工作,在設備載入時零壓力。我們學習了如何通過USB驅(qū)動的安裝,使STM32設備與Linux系統(tǒng)兼容工作。同時,我們也介紹了OpenOCD作為一種燒錄程序和調(diào)試工具的使用方法。通過這些技術(shù)手段,我們可以在嵌入式開發(fā)中,實現(xiàn)STM32的輕松搭配、設備載入無壓力的目標。
相關問題拓展閱讀:
- STM32MP1運行l(wèi)inux和其他SoC芯片相比優(yōu)勢在哪里?
- linux 搭建stm32的makefile 怎么寫
STM32MP1運行l(wèi)inux和其他SoC芯片相比優(yōu)勢在哪里?
有下面幾個優(yōu)勢。
1.MP1中的M4可以掛載很多實時應用需要的外設,比如CAN, ADC,PWM。用A7來做的實時性無法保證。
2.MP1是面向中低端工業(yè)領域的MPU,工業(yè)領域的很多應用對主頻的要求并散鋒豎沒有沖大很高,但是看重芯片的小封裝、性能穩(wěn)定、低功耗散熱、長供貨周期。這些都是MP1的優(yōu)勢。
3.MP1的軟件包中附帶的OP-TEE (信息安全運行環(huán)境)是免費的哦,別的平臺都是需要第三方付費支持。
4.MP1的生態(tài)延續(xù)了基斗MCU的容易上手,Cubemx工具對MP1的支持,讓開發(fā)者上手很方便。
linux 搭建stm32的makefile 怎么寫
一 STM 32 GCC 安裝
stm32 屬于arm cortex-m系列thumb指令集,所以給arm用的arm-none-eabi就可以了,首先是下載
下載地址:
下載其中的gcc-arm-none-eabi-version-linux.tar.bz2
解壓到你知道的檔晌目錄會產(chǎn)生
gcc-arm-none-eabi的文件夾
把該編譯器添加到你的衡坦環(huán)境中:
sudo gedit ~/.bashrc
在最后一行添加:
export PATH=$PATH:/your_stm_gcc_dir/gcc-arm-none-eabi-4_8-2023q4/bin
因為我之前有添加過樹莓派的編譯器了,所以實際上是這樣的:
export PATH=$PATH:/your_pi_gcc_dir/tools-master/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/:/your_stm_gcc_dir/gcc-arm-none-eabi-4_8-2023q4/bin
兩個編譯器環(huán)境中間用冒號隔開;
注銷后測試:
arm-none-eabi-gcc -v
可以查看到該編譯器的版本,就表示可以了.
二 工程環(huán)境的建立
新建個工程文件夾,及其目錄
mkdir stm_project
cd stm_project
mkdir libs
mkdir src
mkdir inc
下載,安裝官方庫:
stm32的寄存器不像51 avr等單片機,那么少,自己寫寫庫,背背寄存器就可以了,所以ST公司提供了他們官方的庫,為了避免重復造輪子,就直接采用他們的庫,庫版本為STM32_USB-FS-Device_Lib_V4.0.0,這個庫多了u支持,下載的話到st官網(wǎng)搜索stm32f10x就有了.
下載鏈接:
stsw-stm32121.zip
解壓,把解壓好的文件夾復制到剛才新建的libs里面.
在工程根目錄下新建Makefile.common文件,這個為通咐蠢桐用makefile
# include Makefile
#This file is included in the general Makefile, the libs Makefile and the src Makefile
#Different optimize settings for library and source files can be realized by using arguments
#Compiler optimize settings:
# -O0 no optimize, reduce compilation time and make debugging produce the expected results (default).
# -O1 optimize, reduce code size and execution time, without much increase of compilation time.
# -O2 optimize, reduce code execution time compared to ‘O1’, increase of compilation time.
# -O3 optimize, turns on all optimizations, further increase of compilation time.
# -Os optimize for size, enables all ‘-O2’ optimizations that do not typically increase code size and other code size optimizations.
#Recommended optimize settings for release version: -O3
#Recommended optimize settings for debug version: -O0
#Valid parameters :
# OptLIB=0 –> optimize library files using the -O0 setting
# OptLIB=1 –> optimize library files using the -O1 setting
# OptLIB=2 –> optimize library files using the -O2 setting
# OptLIB=3 –> optimize library files using the -O3 setting
# OptLIB=s –> optimize library files using the -Os setting
# OptSRC=0 –> optimize source files using the -O0 setting
# OptSRC=1 –> optimize source files using the -O1 setting
# OptSRC=2 –> optimize source files using the -O2 setting
# OptSRC=3 –> optimize source files using the -O3 setting
# OptSRC=s –> optimize source files using the -Os setting
# all –> build all
# libs –> build libs only
# src –> build src only
# clean –> clean project
# tshow –> show optimize settings
#Example:
# make OptLIB=3 OptSRC=0 all tshow
TOP=$(shell readlink -f “$(dir $(lastword $(MAKEFILE_LIST)))”)
PROGRAM=main
LIBDIR=$(TOP)/libs
#Adust the following line to the library in use
#=========add by embbnux 根據(jù)你的庫不同,調(diào)整這個地方的庫目錄地址====================#
STMLIB=$(LIBDIR)/STM32_USB-FS-Device_Lib_V4.0.0/Libraries
#=========add by embbnux 根據(jù)你的stm32芯片型號容量不同,修改這個地方的TypeOfMCU=======#
#Adjust TypeOfMCU in use, see CMSIS file “stm32f10x.h”#STM32F103R (128KB FLASH, 20KB RAM) –> STM32F10X_MD#TypeOfMCU=STM32F10X_MD#STM32F103RET (512KB FLASH, 64KB RAM) –> STM32F10X_HD#STM32F103ZET (512KB FLASH, 64KB RAM) –> STM32F10X_HD
#============================================================================#
TypeOfMCU=STM32F10X_HD
#============================================================================#
TC=arm-none-eabi
CC=$(TC)-gcc
LD=$(TC)-ld -v
OBJCOPY=$(TC)-objcopy
AR=$(TC)-ar
GDB=$(TC)-gdb
INCLUDE=-I$(TOP)/inc
INCLUDE+=-I$(STMLIB)/CMSIS/Include
INCLUDE+=-I$(STMLIB)/CMSIS/Device/ST/STM32F10x/Include
INCLUDE+=-I$(STMLIB)/CMSIS/Device/ST/STM32F10x/Source/Templates
INCLUDE+=-I$(STMLIB)/STM32F10x_StdPeriph_Driver/inc
INCLUDE+=-I$(STMLIB)/STM32_USB-FS-Device_Driver/inc
COMMONFLAGS=-g -mcpu=cortex-m3 -mthumb
COMMONFLAGSlib=$(COMMONFLAGS)
#Commands for general Makefile and src Makefile
ifeq ($(OptSRC),0)
COMMONFLAGS+=-O0
InfoTextSrc=src (no optimize, -O0)
else ifeq ($(OptSRC),1)
COMMONFLAGS+=-O1
InfoTextSrc=src (optimize time+ size+, -O1)
else ifeq ($(OptSRC),2)
COMMONFLAGS+=-O2
InfoTextSrc=src (optimize time++ size+, -O2)
else ifeq ($(OptSRC),s)
COMMONFLAGS+=-Os
InfoTextSrc=src (optimize size++, -Os)
else
COMMONFLAGS+=-O3
InfoTextSrc=src (full optimize, -O3)
endif
CFLAGS+=$(COMMONFLAGS) -Wall -Werror $(INCLUDE)
CFLAGS+=-D $(TypeOfMCU)
CFLAGS+=-D VECT_TAB_FLASH
#Commands for libs Makefile
ifeq ($(OptLIB),0)
COMMONFLAGSlib+=-O0
InfoTextLib=libs (no optimize, -O0)
else ifeq ($(OptLIB),1)
COMMONFLAGSlib+=-O1
InfoTextLib=libs (optimize time+ size+, -O1)
else ifeq ($(OptLIB),2)
COMMONFLAGSlib+=-O2
InfoTextLib=libs (optimize time++ size+, -O2)
else ifeq ($(OptLIB),s)
COMMONFLAGSlib+=-Os
InfoTextLib=libs (optimize size++, -Os)
else
COMMONFLAGSlib+=-O3
InfoTextLib=libs (full optimize, -O3)
endif
CFLAGSlib+=$(COMMONFLAGSlib) -Wall -Werror $(INCLUDE)
CFLAGSlib+=-D $(TypeOfMCU)
CFLAGSlib+=-D VECT_TAB_FLASH
stm32設備載入linux的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于stm32設備載入linux,STM32與Linux輕松搭配,設備載入無壓力,STM32MP1運行l(wèi)inux和其他SoC芯片相比優(yōu)勢在哪里?,linux 搭建stm32的makefile 怎么寫的信息別忘了在本站進行查找喔。
成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營銷公司
成都網(wǎng)站建設公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設,網(wǎng)頁設計制作,網(wǎng)站維護,網(wǎng)絡營銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務。IDC基礎服務:云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗、服務器租用、服務器托管提供四川、成都、綿陽、雅安、重慶、貴州、昆明、鄭州、湖北十堰機房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務。
網(wǎng)頁題目:STM32與Linux輕松搭配,設備載入無壓力 (stm32設備載入linux)
瀏覽地址:http://www.5511xx.com/article/dphsisg.html


咨詢
建站咨詢
