首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
subset
bit
frameworks
php8
vba
eval
email
match
cPlusPlus
c语言
node.js
cpython
php5
random
export
runtime
python2
iostream
bitmap
web
tree
hash
nodejs
dockerfile
bytecode
object
process
sum
typescript
ascii
join
list
split
hashtable
function
js
int
schema
regex
php7
dagger
audio
yaml
byte
golang
string
get
heap
perl
python
callback
config
jsp
controller
python3
jar
const
search
java
cmd
timezone
lua
timestamp
emoji
request
netty
cookie
fetch
expression
web3
uml
plugins
future
utf-8
tags
import
grid
filter
metadata
当前位置:
开发笔记
>
编程语言
> 正文
完整且超简化的linux下stm32开发环境(编译,下载)---测试中
作者:mobiledu2502852915 | 来源:互联网 | 2023-09-07 10:12
完整且超简化的linux下stm32开发环境(编译,下载)最近要用stm32开发产品,考虑到以前作高端arm,or32开发以及低端的avr开发都用gcc,因此为了降低学习难度和省钱,决定继续使用gcc
完整且超简化的linux下stm32开发环境(编译,下载)
最近要用stm32开发产品,考虑到以前作高端arm,or32开发以及低端的avr开发都用gcc,因此为了降低学习难度和省钱,决定继续使用gcc。
经过搜索网络查阅资料,发现stm32的gcc支持虽然没有问题,但是对普通开发者而言,实在过于复杂,至少比avr-gcc复杂太多,
开发者在编写makefile之外,不得不自己搞定启动初始化代码,甚至自己要写ld文件,这实在不是件舒服的事。
因此,在参考网络诸多国内外的大侠提供的资料,综合自己的开发经验,经过一段时间完善,有了这个开发环境(并非集成开发环境IDE),
实现了普通开发人员无须关心启动初始化代码和ld文件,简化makefile编写,大大降低stm32 gcc入门难度的目的。
详细功能包括:
1>无须为自己的程序编写启动代码和ld描述文件,只需要写一个高度简化的makefile(提供了编写范例)
2>支持最小改动源码情况下,生成可用IAP程序下载的带ROM OFFSET程序(通过makefile控制),方便用户升级
3>命令行方式下载程序到stm32电路板
4>GUI方式使用IAP下载
注意:所有用到的程序均是开源且可免费获得,这里只是将它们综合起来使用
另:因为本人主要使用Linux环境开发,因此未对win32下进行测试,但是理论上应该是完全和cygwin环境兼容,没有问题。
首先用户自行下载stm32 gcc环境
http://www.codesourcery.com/gnu_toolchains/arm/download.html
注意下载EABI版本
SDK环境压缩文件
SDK.rar
(1.21 MB)
完整的开发环境设置,包括启动文件,ld文件,makefile模板,st官方fwlib及模板,详细看里面的readme.txt
由于目前手里只有stm32F103,ld文件模板只有这个的ROM(FLASH)方式,其他芯片模板可参考建立(已经进行了简化,很简单),或者等以后俺添加
IAP示例
IAP_AN_gcc.rar
(231.29 KB)
针对万利EK-STM32(STM3210B-LK1)的ST官方IAP实例移植及LED测试程序,注意,使用的按键是KEY2,当IAP已装入板子后,启动系统时
如果检测到KEY2为已经按下状态,则进入IAP模式,否则加载0x8002000起的应用程序
其中IAP部分makefile包含了如何使用wine调用win32下的stm32boot下载工具来下载iap.bin到目标板
由于IAP使用了ymodem协议,我使用了linux下可以和这个IAP协同工作的GUI程序cutecom,另还要安装lrzsz,cutecom会自动调用lrzsz,
cutecom设置示意图如下:
cutecom设置画面
注意IAP要求输入命令1时,移到input区输入键盘按键"1"即可
adc及lcd测试示例
adc1_lcd.rar
(19.64 KB)
同上,为修改的adc测试程序,额外添加了TIM测试,休眠测试,按键测试及浮点数计算等,默认编译需要使用IAP来下载它。
编程注意事项:
1>makefile中,是通过添加OBJS += xxx.o来添加用户文件的,注意后缀不是.c
2>makefile第一行指定SDK目录位置,自己按自己路径修改
3>为了使同一个程序代码无须修改即可运行于rom offset模式(使用IAP加载)
NVIC_Configuration中对应代码需要修改为如下
#ifdef VECT_TAB_RAM
/* Set the Vector Table base location at 0x20000000 */
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else /* VECT_TAB_FLASH */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, ROM_OFFSET_SIZE);
#endif
再补贴个makefile,大家看是否简洁
STM32_SDK_DIR = /src/work/stm32/SDK
TARGET = iap
PCB_BOARD = EK_STM32F
#RUN_MODE = ROM_RUN
APP_BASE = ..
APP_SRC_DIR = $(APP_BASE)/source
CFLAGS += -I$(APP_BASE)/include
OBJS += stm32f10x_it.o
OBJS += stm32f10x_lib.o
OBJS += stm32f10x_gpio.o
OBJS += stm32f10x_rcc.o
OBJS += stm32f10x_flash.o
OBJS += stm32f10x_usart.o
OBJS += stm32f10x_wwdg.o
OBJS += common.o
OBJS += download.o
OBJS += ymodem.o
OBJS += main.o
##########################################################################
include $(STM32_SDK_DIR)/pub/config.mk
#########################################################################
upload: $(TARGET).bin
wine ./stm32boot -e -c com3 $(TARGET).bin
#########################################################################
linux
gcc
makefile
编译
arm
搜索
开发者
文件
ide
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
sum
深入解析Gradle中的Project核心组件
在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ...
[详细]
蜡笔小新 2024-10-31 09:53:03
sum
POJ 1696: 空间蚂蚁算法优化与分析
针对 POJ 1696 的空间蚂蚁算法进行了深入的优化与分析。本研究通过改进算法的时间复杂度和空间复杂度,显著提升了算法的效率。实验结果表明,优化后的算法在处理大规模数据时表现优异,能够有效减少计算时间和内存消耗。此外,我们还对算法的收敛性和稳定性进行了详细探讨,为实际应用提供了可靠的理论支持。 ...
[详细]
蜡笔小新 2024-10-30 00:41:12
sum
PHP中元素的计量单位是什么?
PHP中元素的计量单位是什么? ...
[详细]
蜡笔小新 2024-11-01 15:06:51
hash
池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析
池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析 ...
[详细]
蜡笔小新 2024-11-01 13:03:17
bit
BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ...
[详细]
蜡笔小新 2024-11-01 09:27:15
bit
如何将PHP文件上传至服务器及正确配置服务器地址
如何将PHP文件上传至服务器及正确配置服务器地址 ...
[详细]
蜡笔小新 2024-10-31 15:32:47
c语言
C++ 进阶:类的内存布局与虚函数类的实现细节
C++ 进阶:类的内存布局与虚函数类的实现细节 ...
[详细]
蜡笔小新 2024-10-31 15:14:28
c语言
Python学习:环境配置与安装指南
Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ...
[详细]
蜡笔小新 2024-10-31 12:18:21
tree
表面缺陷检测数据集综述及GitHub开源项目推荐
本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ...
[详细]
蜡笔小新 2024-10-29 08:22:46
tree
如何在Spark数据排序过程中有效避免内存溢出(OOM)问题
本文深入探讨了在使用Spark进行数据排序时如何有效预防内存溢出(OOM)问题。通过具体的代码示例,详细阐述了优化策略和技术手段,为读者在实际工作中遇到类似问题提供了宝贵的参考和指导。 ...
[详细]
蜡笔小新 2024-11-01 16:55:53
object
深入解析Spring框架:简易版AOP实现方法探讨
本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-10-31 19:58:14
process
结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ...
[详细]
蜡笔小新 2024-10-31 18:43:36
c语言
使用C语言在命令行中操作MySQL数据库的方法与技巧
在Ubuntu系统中,由于预装了MySQL,因此无需额外安装。通过命令行登录MySQL时,可使用 `mysql -u root -p` 命令,并按提示输入密码。常见问题包括:1. 错误 1045 (28000):访问被拒绝,这通常是由于用户名或密码错误导致。为确保顺利连接,建议检查MySQL服务是否已启动,并确认用户名和密码的正确性。此外,还可以通过配置文件调整权限设置,以增强安全性。 ...
[详细]
蜡笔小新 2024-10-31 17:57:01
c语言
BZOJ1034 详细解析与算法优化
本文深入解析了BZOJ1034问题,并提出了优化算法。通过借鉴广义田忌赛马的贪心策略,当己方当前最弱的马优于对方最弱的马时进行匹配;同样地,若己方当前最强的马优于对方最强的马,也进行匹配。此方法在保证胜率的同时,有效提升了算法效率。 ...
[详细]
蜡笔小新 2024-10-31 14:51:49
sum
稀疏直接法视觉里程计中的特征点优化:基于光度误差最小化的灰度图像线性插值技术
在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ...
[详细]
蜡笔小新 2024-10-31 13:24:59
mobiledu2502852915
这个家伙很懒,什么也没留下!
Tags | 热门标签
subset
bit
frameworks
php8
vba
eval
email
match
cPlusPlus
c语言
node.js
cpython
php5
random
export
runtime
python2
iostream
bitmap
web
tree
hash
nodejs
dockerfile
bytecode
object
process
sum
typescript
ascii
RankList | 热门文章
1
【VMCloud云平台】数据库搭建
2
SQL server 导入数据内存过大
3
Ubuntu如何查看是否开启了FTP服务
4
11月22日内容总结——存取数据的历史和数据库的介绍、MySQL介绍、下载和相关操作
5
无他相机闪退打不开什么原因 无他相机相机闪退原因介绍
6
XAMPP apache已启动但是无法打开localhost【已解决】
7
yy直播频道内所应用加载失败
8
MySQL——基础入门
9
DataScience:风控场景之金融评分卡模型构建—将逻辑回归LoR模型结果转为评分卡之详细攻略
10
杭州蚂蚁内推,需要有能力的你
11
数据太大,记事本打不开怎么办?
12
本来我不想换地方
13
实例恢复
14
编辑须谨慎 一字差亿倍(图)
15
arxiv文献:事件溯源系统及其图式演变的经验表征行业经验教训
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有