单片机上运行linux程序代码,在Linux下烧录51单片机

原标题:在Linux下烧录51单片机

*本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载。

背景

我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux下给51单片机烧录程序那是非常必要的。

之前在windows上使用keil十分方便,但是转移到Linux上去没有专门给单片机烧写程序的IDE了。无奈只能自己一步一步地配置咯!

看了网上一些博客发现他们写的很模糊,像我这种Linux小白真的是一头雾水,在自己捣鼓了两天之后,把自己的心得发出来,像我那些即将或者正在为此事烦恼的人能够稍微轻松一点!

正文

首先得使用USB转TTL模块给51单片机接线。

接完线之后,我们得在Linux下配置我们的开发编译环境。

首先我们得配置SDCC编译器,像我使用了Ubuntu,我直接使用包管理器安装。当然了你也可以去下载文件自己下来编译!

这里我贴上sdcc的网站链接文字

sudo apt install sdcc

29eb528fcbfb9ca846f45e0e746e0f32.png

当然了我们有了编译器还不行。我们还需要可以给51单片机烧录程序的软件啊。哈哈。它就是stcflash,大家可以直接使用git命令去克隆到本地

解压之后会有一个名为stcflash 的可执行脚本。

56938378380a7329cc5a6e1ca23ad1b2.png

我把她重新命名了一下,为了方便我直接把他重新命名为1。之后为1添加可执行权限。

chmod +x 1

这样的话,就算没有后缀名的花也可以运行,因为在脚本第一行就已经申明了运行。同样的我贴上stcflash的github的地址。

之后我们得把它添加到环境变量里面去。

mv 1/usr/local/bin/

这时候我们得安装一个依赖,因为51单片机是使用串口下载程序的,安装一个python serial。

05d389de7ebb117cff85e565cb6bf19f.png

apt install python serial

这时候我们可以执行1(stcflash.py)这个脚本了,这时候切换到工作目录中,写一个51单片机的程序。在Linux下写的和Windows下写程序会有一些不同的地方。

比如说在Windows下引用reg51.h这个头文件就好了而在linux下我们得引用msc51/8051.h这个头文件。

8b1eb0c1631e1311cf2781863b5e66f7.png

当然了我们在Windows下写定义端口的的时候是使用^符号,而在Linux下要使用_符号来表示。

我在这里只是简单介绍一下如何在Linux下烧录单片机,不是来告诉你在Linux和Windows下编写程序的时候有哪些不同的,这些要注意的是我们自己要去摸索的。

编写之后我们就可以使用SDCC 编译我们的.c代码了。

1cc882b7f28460598a4bc123e30cebea.png

sdcc main.c

但是sdcc编译出来的是.ihx文件。但是烧录51单片机是要使用.hex文件。不要怕,其实我们在安装sdcc的时候我们就已经安装了一个packihx软件 。这个软件的功能就是将.ihx文件转化成.hex文件的。

6578783e850aba149ad955353840f104.png

packihx mian.ihx>main.hex

使用命令packihx之后,现在我们就有了可以烧写的了.hex文件了。

我们之前就已经把1(stcflash.py) 放到了我们的环境变量了,对就是那个我重名命为1的软件。我们在使用1这个软件的时候我们要使用root权限。当然了stcflash会自动识别我们插入的端口,但是你电脑上有多个串口的话,你可能要指定一下串口号。我这里只有这一个串口号,所以他就会自动识别,目前来看她自动识别还是听准确的。目前没啥问题!

stcflsh main.hex --port /dev/ttyusb0

我的串口号是USB0。

51 单片机是要断电重启才能烧录的,所以我们断电重启一下。

eb759c23739ac37cffe737dfa26ed389.png

OK

完美。万事开头难,解决了第一步,大家都可以开始奔放了。

总结

在最后我得感谢一下B站了,说真的B站是个学习的好地方!大家不要总是追番啦。里面有很多有用的东西!!!!

第一次写稿子,希望今后发布更多的稿子!!!这个文档写的很详细大家跟着做基本都可以解决问题。

*本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载。返回搜狐,查看更多

责任编辑:

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

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

相关文章

linux运行core控制台程序,VisualStudioCode创建的asp.net core控制台程序部署到linux

1、asp.net core控制台程序static void Main(string[] args){int times10;while(times>0){Console.WriteLine("Hello World!");times--;Thread.Sleep(1000);}}2、发布发布前,修改test2.csproj文件(项目名称为test2)Exenetcoreapp2.1centos.7-x64主要添…

StringTokenizer(字符串分隔解析类型)

java.util.StringTokenizer 功效:将字符串以定界符为界,分析为一个个的token(可理解为单词),定界符可以自己指定。 1、构造函数。1. StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对…

linux 秒数转时间格式,通过delphi将秒数转换成日期格式

摘要将秒数转换成日期格式,是经常用到的一个算法,下面有几个方法,可以借鉴具体代码1:转换成HH:MM:SS格式的字符串格式:function SecondToTime(a:integer):string;beginresult:timetostr(a/86400);end;或者function Sec…

Watch online

1.youku 在优酷看视视频时可登录m.youku.com/wap,在IE上都不需wap,但在chrome上不加会自动跳转成www.youku.com。那上面的视频是一个整体,可以用迅雷下也可在浏览器上直接看。 随便搜了下,发现可直接利用www.youku.com上的视频ID找到上述可直接播放下载的…

java开机自启动 Linux,java项目jar包开机自启(WINDOWS,Linux)

WINDOWS:1.新建一个text文件,将 java -jar D:\eclipse-workspace\attendance\target\mybatis-generator.jar写入,修改文件为.bat文件。2.编写run.vbs文件,新建一个run.text文件,将下面代码写入,然后将文件后缀改为.vbsSet ws Cre…

PHP中,json汉字编码

当用json与js或者其它客户端交互时,如果有中文,则会变成unicode。虽然能使用,但是影响观看。不好调试呀。从网上找到了几个方法 一,用下面这个函数,需要编码时,直接调用这个函数就成 function jsonEnco…

[收藏] Opera鼠标手势命令

Opera的Presto内核版本已经不复存在了!!惋惜!痛惜! 现在我的电脑硬盘里还保存着两个版本,一个是第三方优化版的v11.00 1156,另一个是Presto的最终官方版:v12.16,现在看起来都有一种莫…

收到有关RabbitMQ集群分区的通知

如果您在集群中运行RabbitMQ,则集群不太可能会被分区 (集群的一部分失去与其余部分的连接)。 上面的链接页面介绍了显示状态和配置行为的基本命令。 当发生分区时,您首先希望得到通知,然后进行解决。 RabbitMQ实际上使…

wps linux版本支持vba,Wps vba安装包

wps vba是款专用于wps办公软件的宏插件,可以利用VBA制作Excel登录系统,实现一些VB无法实现的功能,操作界面人性化,方便用户的操作,还可以利用VBA来Excel内轻松开发出功能强大的自动化程序。软件简介:wps vb…

九度 1474:矩阵幂(二分法)

题目描述: 给定一个n*n的矩阵,求该矩阵的k次幂,即P^k 思路 1. 和求解整数幂的思路相同, 使用分治策略, 代码的框架是 int pow(a, b) { c pow(a, b/2) c* c; if(b 为奇数) c * a; return c } 2. 这道题求的是矩阵, 上面的框架不太好用, 毕竟返…

我的Dojo中有一个Mojo(如何编写Maven插件)

我一直忙于在工作中使用Maven的腋窝。 对于很多开发人员,我会听到:“那又怎样。” 不同之处在于,我通常在无法直接访问Internet的环境中工作。 因此,当我说我经常使用Maven时,这意味着某些事情。 依赖地狱 公平地说&a…

linux安装程序过程,linux 应用程序安装过程

四.GRUB安装方式:(1)tar zxvf grub-0.5.96.1.tar.gz(2)cd grub-0.5.96.1(3)./configure(4)make(5)make check(6)make install(7)cp r /usr/local/share/grub/i386-pc/ /boot/grub/(8)vi /boot/menu.lst (内容参考grub-0.5.96.1/docs/menu.lst)例参考如:## /boot/grub/menu.lst …

在linux下安装mongo数据库,Linux系统下安装MongoDB

MongoDB提供了Linux系统上32位和64位的安装包,你可以在官网下载安装包。下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) 。curl-O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下载tar-zxvf mongodb-linux-x86_64-…

Neo4j:使用Cypher生成实时建议

Neo4j的最常见用途之一是构建实时推荐引擎,一个共同的主题是它们利用大量不同的数据来提出有趣的推荐。 例如, 在此视频中, 阿曼达(Amanda)展示了约会网站如何通过社交联系开始,然后介绍热情,位…

Windows 8.1 新增控件之 Hyperlink

Windows 8.1 新增控件之 Hyperlink 原文:Windows 8.1 新增控件之 HyperlinkHyperlink 控件应该不用过多介绍大家肯定十分清楚其作用&#xff0c;它的功能就像HTML中的<a href””>标签一样&#xff0c;只不过是在XAML中实现。 使用Hyperlink 标记的文字在应用中会以特殊颜…

Linux的slab和nginx的区别,Nginx核心知识100讲》nginx Slab管理器

极客专栏《Nginx核心知识100讲》38小节的笔记nginx 不同的worker之间需要共享信息的时候&#xff0c;只能通过共享内存。共享内存会使用链表&#xff0c;红黑树这样的数据结构。但是每个红黑树上有很多节点&#xff0c;每个节点上都需要分配内存去存放。怎样把一整块共享内存切…

睡觉时:新增的Java 8新增功能

自Java 8推出以来&#xff0c;最有趣的功能是什么&#xff1f; Java 8最近庆祝了它的第一个生日&#xff0c;而主要版本刚刚一年多前发布。 这当然值得庆祝。 自从最初的Java 8版本问世以来&#xff0c;已经发布了六个更新。 这些更新中的一些元素是次要的&#xff0c;但是如…

Gridview中实现求和统计功能

GridView加入自动求和求平均值小计效果图&#xff1a;解决方案&#xff1a; private double sum 0; //取指定列的数据和&#xff0c;你要根据具体情况对待可能你要处理的是int protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.R…

树莓派安装win10arm linux,在树莓派3B 上安装 Windows 10 ARM 版的方法

早先关注我们的朋友可能对《国外开发者尝试在树莓派3上运行Windows 10桌面版》有印象。本文转自 amatfan.com&#xff0c;文末视频来自 daveb778(感谢柠栀和刺分享)&#xff0c;给出了如何在树莓派3B上安装Windows10 ARM版&#xff0c;是的&#xff0c;这次并非IoT版&#xff0…

MVC中跳转到其他页面,并传参数

return RedirectToAction("MemberManager", "Shop", new { id Session["shopid"] }); MemberManager&#xff1a;页面的Action&#xff1b;Shop&#xff1a;Controller名称&#xff1b;id&#xff1a;要传的参数名&#xff1b;Session["…