ubuntu18.04安装keil5并迁移stm32项目(踩坑)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、安装wine
    • wine的总结
  • 二、安装Keil5
  • 总结


前言

切记看完再享用,别直接上手,不然安装的时候会和我一样踩坑的(走了很多弯路,建议直接看wine的总结)。

学习了ubuntu的一些指令之后,准备用ubuntu来写单片机,所以需要安装keil5(版本较新),起初我以为会像其他软件一样下载个安装包然后解压啥的安装,后面百度的思路都是使用wine,wine是啥呢?

官方说法Wine(Wine Is Not an Emulator的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。
大致意思应该就是在liunx系统下可以运行windows的exe吧
具体的思路如下:在虚拟机中安装wine,再安装keil5.exe,有机会再把CubeMX也安装上。


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装wine

教程是说 先准备好mdk.exe和和谐文件。
然后就是如下的命令,因为他装的wine版本比较低。我试着改一下版本

# 添加i386架构
sudo dpkg --add-architecture i386
# 安装64位wine
sudo apt install wine64
# 添加wineHQ签名密钥
wget -qO- https://dl.winehq.org/wine-builds/Release.key | sudo apt-key add -
# 添加存储库
sudo apt-add-repository 'deb http://dl.winehq.org/wine-builds/ubuntu/ artful main'

期间出现了一些问题,比如使用nano编辑器的保存问题,我以为是Alt+它的提示指令,实际上是Ctrl才行。
安装64位的时候就给我报错Unable to locate package
然后我就去换源,换成aliyun的,然后就突然让我更新了,我人都傻了,秉承这来都来了的理念,我还是走了下去。然后等着等着就宕机了,只能强制重启,跳过这一步(很庆幸,重启后好像是更新成功了)。

在这里插入图片描述
更新好了就可以安装了,我百度过很多wine安装方法和版本,有点蒙。所以就随便试了一个,因为有的还是winehq啥的,这些介绍都在http://baike.baidu.com/link?url=8tjgR-t30E9pQ-h4MoY_55bl__W8hDLNIkYPZd9M8g7wYFtIjl-S3S4ligGBa_mj

keyi
到现在,所有命令运行完了,我去百度下如何验证是否安装成功
在这里插入图片描述
(⊙o⊙)…
反正就是出现问题了,查不到wine版本,然后就参考了下面的博客:
https://blog.csdn.net/u011139163/article/details/96336994
前面的步骤差不多,少了一步wine64,因为我也不知道wine64具体作用,所以干脆省略这一步(根据字面意思猜应该是wine兼容windows64位的意思吧),毕竟wine的版本是x.x.x的个位数,如下安装的是3.0.4。
在这里插入图片描述
在这里插入图片描述
经过漫长的等待,然后我还是和wine -version这条命令死磕,按道理安装成功后应该可以打印版本号的
在这里插入图片描述
然后就莫名其妙又开始非命令行式的自动安装了。
安装完毕用winetricks配置下wine(不知道咋配置,但是安装了)
在这里插入图片描述

wine的总结

走了很多弯路,这应该是最简单的一套了,反正我用这些命令之后出现了各种bug。

# 如果您使用的是 64 位系统,请开启 32 bit 架构支持(如果您之前没有开启的话):
sudo dpkg --add-architecture i386 # 下载添加仓库密钥:
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key# 并添加仓库: 
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'# 更新安装包: 
sudo apt-get update# 安装稳定分支:
sudo apt-get install --install-recommends winehq-stable# 验证安装情况:
wine --version

在这里插入图片描述

二、安装Keil5

先用本地共享,将windows里面的exe分享到liunx的文件夹下。
ubuntu本地共享打开(选择要共享的文件夹右击->Local Network Share,然后将该勾选的勾选就行,再去命令行用ifconfig查ip,在windows中的网络,在地址栏输入\ip )
在这里插入图片描述

在这里插入图片描述
打开share文件夹后,将需要的文件拖进去,这边就能实时共享到。

在这里插入图片描述
然后跟着windows下的教程该怎么安装,该怎么下一步下去就好了。
其中遇到的问题,比如双击安装mdk5时发现安装不了,原来是文件夹中文,换个名字就可以了
在这里插入图片描述
然后根据教程破解并安装F1和F4的pack
至于STLink,我走了弯路,我先百度到一个stlink_develop.zip然后解压啥的,一通命令行操作安装成功,后面发现检测不到,然后参考了:
stlink驱动安装
不过比较遗憾的是不能直接在keil5中使用download,只能生成一个bin文件,然后用命令运行。

在User选项卡修改的命令有点长有点乱,我的项目叫demo,这是我的路径和命令

C:\users\along\Desktop\softwareInstall\program file\keil5\ARM\ARMCC\bin\fromelf.exe  --bin --output ./output/demo.bin ./output/demo.axf
分别是【axf转bin的文件路径】 【两个执行命令】 【输出文件路径】【输入文件路径】

在这里插入图片描述
重新编译成功生成bin文件
st-flash write demo.bin 0x8000000
明明已经插上接口并且连接到虚拟机了,出现bug(原因应该是设备松动了,我多试了几次命令就可以烧入了)

2023-08-21T21:35:58 WARN usb.c: Couldn't find any ST-Link devices

在找不到的情况下会出现这种
在这里插入图片描述

然后就莫名其妙可以了,我是跳到了bin所在的文件夹里再用的
在这里插入图片描述

完成,烧写成功,程序能正常运行,成功将stm32项目迁移


总结

就第一次嘛,很多东西都不太懂,比如ubuntu16.04版本兼容的问题导致更新了很久(就当时并不知道换个源要更新,然后等了很久),wine安装以及修改一些参数,遇到一些bug都比较棘手,花了半天时间搞定了,下次如果需要配置,也能有一定的经验了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/103447.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七夕特辑(一)浪漫表白方式 用神经网络生成一首情诗

目录 一、准备工作二、用神经网络生成一首诗,代码说明 牛郎织女相会,七夕祝福要送来。祝福天下有情人,终成眷属永相伴。 七夕是中国传统的情人节,也是恋人们表达爱意的好时机。在这个特别的日子里,送上温馨的祝福&…

社科院与美国杜兰大学金融管理硕士项目——畅游于金融世界

随着社会经济的不断发展,职场竞争愈发激烈,很多同学都打算通过报考研究生来实现深造,提升自己的综合能力和竞争优势,获得优质的证书。而对于金融专业的学生和在职人员来说,社科院与美国杜兰大学金融管理硕士项目是一个…

12.串,串的存储结构与模式匹配算法

目录 一. 一些术语 二. 串的类型定义 (1)串的顺序存储结构 (2)串的链式存储结构 三. 串的模式匹配算法 (1)BF算法 (2)KMP算法 四. 案例实现 串(String)---零个或多个任意字符…

函数式编程-Stream流学习第一节

1 为什么学习 1.现在很多公司在编程中大量使用函数式编程-Stream流格式代码,所以为了能够看懂公司的代码 2.大量数据下处理集合效率高--因为有并行流 3.代码可读性高 4.消灭嵌套地狱 2 函数式编程思想 2.1 概念 面向对象编程是关注于用对象完成什么事情。而函数式…

pm4py使用指南(非机翻)

目录 1. 日志数据读取及预处理(1)查看case和event数量(2)查看起始事件和结束事件(3)时间戳格式的问题 2. 日志数据过滤3. 流程发现4. 模型转化5. 模型可视化 1. 日志数据读取及预处理 通过 pandas库 读取c…

数据结构-Java逆天操作

本文章会对Java线性表的相关知识进行讲解,也会以Java代码示例来进行解释 对线性表的讲解分析 定义 线性表是一种数据结构,它是由一系列具有相同类型的元素组成的有序集合。线性表中的元素按照线性的顺序 排列,每个元素只有一个前驱元素和一…

对于pycharm 运行的时候不在cmd中运行,而是在python控制台运行的情况,如何处理?

对于pycharm 运行的时候不在cmd中运行,而是在python控制台运行的情况,如何处理? 比如,你在运行你的代码的时候 它总在python控制台运行,十分难受 解决方法 在pycharm中设置下即可,很简单 选择运行点击…

python爬虫10:selenium库

python爬虫10:selenium库 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产…

LeetCode--HOT100题(34)

目录 题目描述:94. 二叉树的中序遍历(简单)题目接口解题思路1代码解题思路2代码 PS: 题目描述:94. 二叉树的中序遍历(简单) 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 LeetCode做…

爆火「视频版ControlNet」开源了!靠提示词精准换画风,全华人团队出品

“视频版ControlNet”来了! 让蓝衣战神秒变迪士尼公举: 视频处理前后,除了画风以外,其他都不更改。 女孩说话的口型都保持一致。 正在插剑的姜文,也能“下一秒”变猩球崛起了。 这就是由全华人团队打造的最新视频处理…

性能调优篇 二、Jvm监控及诊断工具-命令行篇

目录 一、概述1、简单命令行工具 二、jps:查看正在运行的Java程序(掌握)1、是什么?2、测试3、基本语法 三、jstat:查看jvm统计信息(掌握)1、是什么?2、基本语法3、补充 四、jinfo&am…

记录Taro大坑2丢失api无法启动

现象 解决方案 看了很多。很多说要改成一致的版本号。其实没什么用。 正确方案 再新建一个模板跑起来对比config的配置,以及package.json发现关闭预编译即可。预编译导致api丢失

javaWeb差缺补漏(一)【针对于自身知识点掌握情况】

前端三大件部分 1、a标签的target属性iframe标签的name属性 2、textarea标签:表示多行文本输入。起始标签和结束标签中的内容是默认值。 rows:属性设置可以显示多少行。 cols:属性设置每行显示多少列。 3、form表单的action提交的时候&a…

使用proxman对iOS真机进行抓包

1 打开手机的safari 输入地址 http://proxy.man/ssl 2 下载证书代开设置页面,安装证书 设置信任证书 打开手机设置 ,点击通用 点击关于本机、 点击证书信任设置 打开信任设置开关 4 设置手机代理 查看需要设置的代理地址 打开界面 在手机中按…

Redis过期数据的删除策略

1 介绍 Redis 是一个kv型数据库,我们所有的数据都是存放在内存中的,但是内存是有大小限制的,不可能无限制的增量。 想要把不需要的数据清理掉,一种办法是直接删除,这个咱们前面章节有详细说过;另外一种就是…

React基础入门之虚拟Dom

React官方文档:https://react.docschina.org/ 说明 重要提示:本系列文章基础篇总结自尚硅谷课程,且采用类式写法!!最新的函数式组件写法见高级篇。 本系列文档旨在帮助vue同学更快速的学习react,如果你很…

【SpringCloud技术专题】「Gateway网关系列」(2)微服务网关服务的Gateway功能配置指南分析

Spring Cloud Gateway简介 Spring Cloud Gateway是Spring Cloud体系的第二代网关组件,基于Spring 5.0的新特性WebFlux进行开发,底层网络通信框架使用的是Netty,所以其吞吐量高、性能强劲,未来将会取代第一代的网关组件Zuul。Spri…

【分享】小型园区组网场景

小型园区组网图 在小型园区中,S2700&S3700通常部署在网络的接入层,S5700&S6700通常部署在网络的核心,出口路由器一般选用AR系列路由器。 接入交换机与核心交换机通过Eth-Trunk组网保证可靠性。 每个部门业务划分到一个VLAN中&#…

Verilog语法学习——边沿检测

边沿检测 代码 module edge_detection(input sys_clk,input sys_rst_n,input signal_in,output edge_rise,output edge_down );//存储上一个时钟周期的输入信号reg signal_in_prev;always (posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n)signal_in_pre…

【ARM】Day9 cortex-A7核I2C实验(采集温湿度)

1. 2、编写IIC协议,采集温湿度值 iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "led.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_S…