日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
STM32與Linux輕松搭配,設(shè)備載入無(wú)壓力 (stm32設(shè)備載入linux)

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

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出堯都免費(fèi)做網(wǎng)站回饋大家。

一、USB驅(qū)動(dòng)的安裝

在嵌入式開(kāi)發(fā)中,很多設(shè)備都采取了USB接口,作為設(shè)備的主要輸入輸出。然而,當(dāng)我們連接STM32設(shè)備時(shí),驅(qū)動(dòng)的安裝往往是一個(gè)讓人困擾的問(wèn)題。在Linux系統(tǒng)下,我們可以通過(guò)如下幾個(gè)步驟來(lái)完成STM32的驅(qū)動(dòng)安裝:

1.將STM32的設(shè)備連接到電腦上。使用命令lsu來(lái)查看設(shè)備的廠商ID和設(shè)備ID,例如:

$ lsu

Bus 002 Device 002: ID 2232:1024 Silicon Labs CP210x UART Bridge

這里的ID 2232:1024是指設(shè)備的廠商ID和設(shè)備ID,即VID和PID。

2.在此基礎(chǔ)上,下載相應(yīng)的驅(qū)動(dòng)程序。以Silicon Labs CP210x USB to UART Bridge為例,可以通過(guò)如下命令下載驅(qū)動(dòng):

$ sudo apt-get install linux-modules-extra-$(uname -r)

然后,重新插拔設(shè)備,即可完成驅(qū)動(dòng)的安裝。

二、通過(guò)OpenOCD實(shí)現(xiàn)STM32的編程

在完成USB驅(qū)動(dòng)程序的安裝之后,我們還需要一些工具將程序下載到STM32芯片中。OpenOCD是一個(gè)開(kāi)源的On-Chip Debugging、燒錄程序、調(diào)試工具。它基于GDB和JTAG接口,可以支持多種芯片的編程和調(diào)試。在使用OpenOCD時(shí),我們需要借助某個(gè)硬件設(shè)備,例如JTAG調(diào)試器,通過(guò)調(diào)試接口與芯片進(jìn)行連接。一般而言,硬件設(shè)備的連接和配置都是由硬件工程師完成,因此我們?cè)诖瞬辉儋樖?。接下?lái),我們重點(diǎn)講解如何在Linux系統(tǒng)中通過(guò)OpenOCD實(shí)現(xiàn)STM32芯片的編程。

1.我們需要安裝OpenOCD工具。在Ubuntu系統(tǒng)中,可以通過(guò)如下命令來(lái)進(jìn)行安裝:

$ sudo apt-get install openocd

2.在安裝完成之后,我們需要通過(guò)配置文件來(lái)設(shè)置OpenOCD的工作模式。例如,我們可以編寫(xiě)一個(gè)名為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作為接口,同時(shí)設(shè)置jtag_nsrst_delay和jtag_ntrst_delay為400微秒,以保證軟復(fù)位的穩(wěn)定性。transport select swd用于設(shè)置JTAG工作模式。set WORKAREASIZE用于設(shè)置堆??臻g的大小。set CHIPNAME用于設(shè)置芯片型號(hào)。我們調(diào)用interface/ftdi/olimex-arm-u-tiny.cfg和target/stm32f4x.cfg兩個(gè)配置文件,來(lái)啟動(dòng)OpenOCD。

3.確認(rèn)OpenOCD工具正確運(yùn)行之后,我們就可以通過(guò)OpenOCD實(shí)現(xiàn)STM32芯片的編程了。例如,我們可以通過(guò)如下命令將程序下載到芯片中:

$ openocd -f cfg -c init -c “reset init” -c “flash write_image erase output.bin 0x08000000” -c “reset run” -c shutdown

在這個(gè)命令中,-f cfg指定配置文件為cfg,-c init表示執(zhí)行初始化,-c “reset init”表示將芯片進(jìn)行軟復(fù)位。-c “flash write_image erase output.bin 0x08000000″表示將編寫(xiě)好的程序輸出到芯片的地址0x08000000處,并進(jìn)行擦除。-c “reset run”表示將芯片運(yùn)行。我們以shutdown為結(jié)尾,表示OpenOCD的任務(wù)已完成,并關(guān)閉OpenOCD。

在本文中,我們主要探討了如何將STM32和Linux操作系統(tǒng)兼容工作,在設(shè)備載入時(shí)零壓力。我們學(xué)習(xí)了如何通過(guò)USB驅(qū)動(dòng)的安裝,使STM32設(shè)備與Linux系統(tǒng)兼容工作。同時(shí),我們也介紹了OpenOCD作為一種燒錄程序和調(diào)試工具的使用方法。通過(guò)這些技術(shù)手段,我們可以在嵌入式開(kāi)發(fā)中,實(shí)現(xiàn)STM32的輕松搭配、設(shè)備載入無(wú)壓力的目標(biāo)。

相關(guān)問(wèn)題拓展閱讀:

  • STM32MP1運(yùn)行l(wèi)inux和其他SoC芯片相比優(yōu)勢(shì)在哪里?
  • linux 搭建stm32的makefile 怎么寫(xiě)

STM32MP1運(yùn)行l(wèi)inux和其他SoC芯片相比優(yōu)勢(shì)在哪里?

有下面幾個(gè)優(yōu)勢(shì)。

1.MP1中的M4可以掛載很多實(shí)時(shí)應(yīng)用需要的外設(shè),比如CAN, ADC,PWM。用A7來(lái)做的實(shí)時(shí)性無(wú)法保證。

2.MP1是面向中低端工業(yè)領(lǐng)域的MPU,工業(yè)領(lǐng)域的很多應(yīng)用對(duì)主頻的要求并散鋒豎沒(méi)有沖大很高,但是看重芯片的小封裝、性能穩(wěn)定、低功耗散熱、長(zhǎng)供貨周期。這些都是MP1的優(yōu)勢(shì)。

3.MP1的軟件包中附帶的OP-TEE (信息安全運(yùn)行環(huán)境)是免費(fèi)的哦,別的平臺(tái)都是需要第三方付費(fèi)支持。

4.MP1的生態(tài)延續(xù)了基斗MCU的容易上手,Cubemx工具對(duì)MP1的支持,讓開(kāi)發(fā)者上手很方便。

linux 搭建stm32的makefile 怎么寫(xiě)

一 STM 32 GCC 安裝

stm32 屬于arm cortex-m系列thumb指令集,所以給arm用的arm-none-eabi就可以了,首先是下載

下載地址:

下載其中的gcc-arm-none-eabi-version-linux.tar.bz2

解壓到你知道的檔晌目錄會(huì)產(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

因?yàn)槲抑坝刑砑舆^(guò)樹(shù)莓派的編譯器了,所以實(shí)際上是這樣的:

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

兩個(gè)編譯器環(huán)境中間用冒號(hào)隔開(kāi);

注銷(xiāo)后測(cè)試:

arm-none-eabi-gcc -v

可以查看到該編譯器的版本,就表示可以了.

二 工程環(huán)境的建立

新建個(gè)工程文件夾,及其目錄

mkdir stm_project

cd stm_project

mkdir libs

mkdir src

mkdir inc

下載,安裝官方庫(kù):

stm32的寄存器不像51 avr等單片機(jī),那么少,自己寫(xiě)寫(xiě)庫(kù),背背寄存器就可以了,所以ST公司提供了他們官方的庫(kù),為了避免重復(fù)造輪子,就直接采用他們的庫(kù),庫(kù)版本為STM32_USB-FS-Device_Lib_V4.0.0,這個(gè)庫(kù)多了u支持,下載的話到st官網(wǎng)搜索stm32f10x就有了.

下載鏈接:

stsw-stm32121.zip

解壓,把解壓好的文件夾復(fù)制到剛才新建的libs里面.

在工程根目錄下新建Makefile.common文件,這個(gè)為通咐蠢桐用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ù)你的庫(kù)不同,調(diào)整這個(gè)地方的庫(kù)目錄地址====================#

STMLIB=$(LIBDIR)/STM32_USB-FS-Device_Lib_V4.0.0/Libraries

#=========add by embbnux 根據(jù)你的stm32芯片型號(hào)容量不同,修改這個(gè)地方的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設(shè)備載入linux的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于stm32設(shè)備載入linux,STM32與Linux輕松搭配,設(shè)備載入無(wú)壓力,STM32MP1運(yùn)行l(wèi)inux和其他SoC芯片相比優(yōu)勢(shì)在哪里?,linux 搭建stm32的makefile 怎么寫(xiě)的信息別忘了在本站進(jìn)行查找喔。

成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營(yíng)銷(xiāo)公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營(yíng)銷(xiāo),SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽(yáng)、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。


網(wǎng)頁(yè)題目:STM32與Linux輕松搭配,設(shè)備載入無(wú)壓力 (stm32設(shè)備載入linux)
文章鏈接:http://m.5511xx.com/article/dphsisg.html