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

news2024/12/27 15:56:07

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

文章目录

  • 前言
  • 一、安装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.coloradmin.cn/o/914416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring】Spring循环依赖的处理

循环依赖是指两个或多个组件之间相互依赖,形成一个闭环,从而导致这些组件无法正确地被初始化或加载。这种情况可能会在软件开发中引起问题,因为循环依赖会导致初始化顺序混乱,组件之间的关系变得复杂,甚至可能引发死锁…

数学建模(四)整数规划—匈牙利算法

一、0-1型整数规划问题 1.1 案例 投资问题: 有600万元投资5个项目,收益如表,求利润最大的方案? 设置决策变量: 模型: 指派问题: 甲乙丙丁四个人,ABCD四项工作,要求每人只能做一项…

Linux系统安全——NAT(SNAT、DNAT)

目录 NAT SNAT SNAT实际操作 DNAT DNAT实际操作 NAT NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 请求报文:修改源/目标IP, 响应报文:修改源/目标…

【jvm】双亲委派机制

目录 一、说明二、工作原理三、图示 一、说明 1.java虚拟机对class文件采用的是按需加载的方式,当需要使用该类时才会将它的class文件加载到内存生成class对象 2.加载某个类的class文件时,java虚拟机采用双亲委派模式,即把请求交给由父类处理…

2023年计算机设计大赛国三 数据可视化 (源码可分享)

2023年暑假参加了全国大学生计算机设计大赛,并获得了国家三等奖(国赛答辩出了点小插曲)。在此分享和记录本次比赛的经验。 目录 一、作品简介二、作品效果图三、设计思路四、项目特色 一、作品简介 本项目实现对农产品近期发展、电商销售、灾…

【QT5-自我学习-线程qThread练习-两种使用方式-1:通过继承线程类来使用-基础样例】

【QT5-自我学习-线程qThread练习-两种使用方式-1:通过继承线程类来使用-基础样例】 1、前言2、实验环境3-1、学习链接-参考文章3-2、先前了解-自我总结(1)线程处理逻辑事件,不能带有主窗口的事件(2)一般考虑…

Debootstrap 教程

文章目录 Debootstrap 教程安装 debootstrap使用 debootstrap运行 debootstrap进入新的系统结束语 Debootstrap 教程 debootstrap 是一个用于在 Debian-based 系统上创建一个基本的 Debian 系统的工具。它可以用于创建 chroot 环境、容器或者为新的系统安装做准备。 安装 deb…

数学建模-模型详解(2)

微分模型 当谈到微分模型时,通常指的是使用微分方程来描述某个系统的动态行为。微分方程是描述变量之间变化率的数学方程。微分模型可以用于解决各种实际问题,例如物理学、工程学、生物学等领域。 微分模型可以分为两类:常微分方程和偏微分…

基于Linux操作系统中的shell脚本

目录 前言 一、概述 1、什么是shell? 2、shell脚本的用途有哪些? 3、常见的shell有哪些? 4、学习shell应该从哪几个方面入手? 4.1、表达式 1)变量 2)运算符 4.2、语句 1)条件语句&am…

【LeetCode-中等题】3. 无重复字符的最长子串

题目 题解一:单指针,滑动窗口 思路: 设置一个左指针,来判断下一个元素是否在set集合中,如果不在,就加入集合,right继续,如果在,就剔除重复的元素,计算串的长度…

C++笔记之设计模式:setter函数、依赖注入

C笔记之设计模式:setter函数、依赖注入 code review! 文章目录 C笔记之设计模式:setter函数、依赖注入1.概念2.基本示例3.setter函数4.基本示例setter函数构成依赖注入5.概念——ChatGpt6.构造函数注入示例7.接口注入示例8. 构造函数注入的使用场景和用…

【C++】早绑定、析构与多态 | 一道关于多态的选择题记录

今天在和群友聊天的时候看到了一道很坑的题目&#xff0c;分享给大家 1.看题&#xff01; 先来看看题目 struct Dad { public:Dad(){ echo();}~Dad(){ echo();}virtual void echo() {cout << "DAD ";} };struct Son:Dad { public:void echo() const override…

ARM,(cortex-A7核中断实验)

1.实验目的&#xff1a;实现KEY1/LEY2/KE3三个按键&#xff0c;中断触发打印一句话&#xff0c;并且灯的状态取反&#xff1b; key1 ----> LED3灯状态取反&#xff1b; key2 ----> LED2灯状态取反&#xff1b; key3 ----> LED1灯状态取反&#xff1b; 2.分析框图: …

<深度学习基础> 激活函数

为什么需要激活函数&#xff1f;激活函数的作用&#xff1f; 激活函数可以引入非线性因素&#xff0c;可以学习到复杂的任务或函数。如果不使用激活函数&#xff0c;则输出信号仅是一个简单的线性函数。线性函数一个一级多项式&#xff0c;线性方程的复杂度有限&#xff0c;从…

vue3 01-setup函数

1.setup函数的作用: 1.是组合式api的入口2.比beforeCreate 执行更早3.没有this组件实例一开始创建vue3页面的时候是这样的 <template></template> <script> export default{setup(){return{ }} } </script>给容器传参在页面中显示 数据给模板使用,以…

【C语言】位段,枚举和联合体详解

目录 1.位段 1.1 什么是位段 1.2 位段的内存分配 1.3 位段的跨平台问题 2.枚举 2.1 枚举类型的定义 2.2 枚举的优点 3. 联合&#xff08;共用体&#xff09; 3.1 联合类型的定义 3.2 联合的特点 3.3 联合大小的计算 1.位段 1.1 什么是位段 位段的声明和结构体是类…

基于ECharts+flask的爬虫可视化

项目效果。 本案例基于python的flask框架&#xff0c;通过爬虫程序将数据存储在csv文件中&#xff0c;在项目运行时会通过render_template映射出对应的页面&#xff0c;并且触发一个函数&#xff0c;该函数会读取csv文件的数据将之交给echarts渲染 &#xff0c;echarts将之渲染…

线性代数的学习和整理---番外1:EXCEL里角度,弧度,三角函数

目录 1 角的度量&#xff1a;角度和弧度 1.1 角度 angle 1.1.1 定义 1.1.2 公式 1.1.2 角度取值范围 1.2 弧长和弦长 1.3 弧度 rad 1.3.1 弧长和弧度定义的原理 1.3.2 定义 1.3.3 取值范围 1.3.4 取值范围 1.4 角度&#xff0c;弧度的换算 1.5 EXCEL里进行角度和…

Red Hat Enterprise Linux (RHEL) 6.4 安装、redhat6.4安装

1、下载地址 Red Hat Enterprise Linux (RHEL) 6.4 DVD ISO 迅雷下载地址http://rhel.ieesee.net/uingei/rhel-server-6.4-x86_64-dvd.iso 2、创建虚拟机 3、redhat安装 选择第一个安装 Skip跳过检查 语言选择简体中文 键盘选择默认 选择基本存储设备 忽略所有数据 设置root密…

Ribbon:listOfServers

解释&#xff1a; 配置了address的地址,请求会走address&#xff0c;也就是http://127.0.0.1:8081&#xff0c;通常用户与别的后端服务进行联调设置为其本地服务的ip。 如果将address:注释掉。 会走后面的XXX.feign.default-server地址&#xff0c;这个地址通常可以配一个网关…