1328616904 发表于 2016-2-4 09:53:40

菜鸟教你Linux下开发51单片机

本人纯菜鸟一枚,以前在Windows下开发51单片机和其他MCU,自从经典的XP光荣的下岗后,换做win7,谁知这奇葩越用越慢,我得电脑Think-L440 刚做了系统用了两个月就卡的要死,用Keil编译一个大的工程,TMD玩命似的半天,Linux系统与Windows相比的优缺点就不多说了,请自己百度,呵呵。。。这事本菜鸟的第一篇的电子行业软件夸平台文章,以后还有有KICAD,以及Linux下开发STM32或ARM9内核+等教程。。。闲话少说切入正题,我用物理机加虚拟机的方式,集:Windows+wmware+Ubuntu12.04的组合,至于12.04版本以前的请自行修改软件更新源。。。。wmware和Ubuntu的安装请找“度娘”一搜数以堆计。。。。
Ubuntu安装成功后我们安装几个辅助工具:
        1.交叉编译器(就是Windows下的Keil啦)SDCC
        2.文本编辑工具 vi vim等等很多,个人比较喜欢用vim
第一步:安装交叉编译工具
        打开终端(Ctrl+Alt+T)输入:sudo apt-get install sdcc 回车(图SDCC1),提示输入管理员密码,SDCC回自动安装(图SDCC2),傻瓜吧,因为我已经安装完成所以提示(图SDCC3)安装完成后在终端输入“sdcc -v”如果看到(图SDCC4)的提示信息,恭喜您已经成功的走出第一步啦。
第二步:安装编辑器
        打开终端输入“sudo apt-get install vim”安装跟上面基本一样
第三步:编写一个流水灯程序测试
#include "8051.h"

#define uint unsigned int
#define uchar unsigned char
uchar tab = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void Delay(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
        for(j=110;j>0;j--);
}

void main()
{
        uchar i;
        while(1)
        {
                for(i=0;i<8;i++)
                {
                        P1 = tab;
                        Delay(100);
                }
        }
}

编写Makefile 文件
led.hex : main.c
        sdcc main.c
        packihx main.ihx > led.hex
clean:
        rm -rf *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map

编写完成后保存,在命令行输入“make”可以看到(图:编译)应经生成hex文件了,赶紧下载验证一下吧!

li3p 发表于 2016-2-4 10:03:22

后面的烧写环节少侠是怎么完成的呀?

mangocity 发表于 2016-2-4 10:04:09

li3p 发表于 2016-2-4 10:03
后面的烧写环节少侠是怎么完成的呀?

哈哈,问得好。

bailao99 发表于 2016-2-4 10:06:24

谢谢共享,电工只有不断探索才不会回农村

1328616904 发表于 2016-2-4 10:07:37

li3p 发表于 2016-2-4 10:03
后面的烧写环节少侠是怎么完成的呀?

临时还没做,烧写就简单多了吧,可以用传统的Windows烧写方式,Linux下的烧写正在研究

1328616904 发表于 2016-2-4 10:23:46

mangocity 发表于 2016-2-4 10:04
哈哈,问得好。

http://blog.csdn.net/muyiziye/article/details/43032979烧写软件及用法这位大神已经写得很清楚了

li3p 发表于 2016-2-4 10:38:33

1328616904 发表于 2016-2-4 10:23
http://blog.csdn.net/muyiziye/article/details/43032979烧写软件及用法这位大神已经写得很清楚了 ...

好的,希望多交流,用开源的工具还是挺有意思的。
stcflash我用过,目前只支持到stc12,stc15还不支持。

1328616904 发表于 2016-2-4 10:43:05

li3p 发表于 2016-2-4 10:38
好的,希望多交流,用开源的工具还是挺有意思的。
stcflash我用过,目前只支持到stc12,stc15还不支持。 ...

下载可以在Windows下用STC-ISP软件,大不了建一个共享目录或者用Samba,就像当初2440 一样,Linux下编译,Windows下载

Nexus 发表于 2016-2-4 11:02:19

烧写有点麻烦,其他的完美!

1328616904 发表于 2016-2-4 11:13:24

Nexus 发表于 2016-2-4 11:02
烧写有点麻烦,其他的完美!

如果linux 下编译,Windows下烧写,给Ubuntu做一个samba然后用STC官方的烧写软件跟 Keil开发的没什么区别的,您可以试一下

xwkm 发表于 2016-2-4 11:20:43

我原来写过kstcisp...现在扔在github上懒得管了

1328616904 发表于 2016-2-4 11:29:22

xwkm 发表于 2016-2-4 11:20
我原来写过kstcisp...现在扔在github上懒得管了

膜拜啊,让我这菜鸟无地自容

1328616904 发表于 2016-2-4 11:31:37

xiaoyigechaos 发表于 2016-2-4 11:29
既然没区别,还是就用windows好了,整那么麻烦

前面说了,一般的工程没事,大点的工程死慢,另外不知道哪位大神用过win10 + Keil,我曾经一次教训:相同的源码,在win7下编译可用,然win10下编译直接不行,我不知道啥原因,但我知道编译出来不行多么痛的领悟啊

feer曼 发表于 2016-2-4 11:41:58

STC的烧些确实很麻烦,没有官方支持的linux版本的在线烧写呀!

rpi 发表于 2016-2-4 12:07:43

烧写确实是个问题

higeo 发表于 2016-2-4 13:22:08

1328616904 发表于 2016-2-4 11:31
前面说了,一般的工程没事,大点的工程死慢,另外不知道哪位大神用过win10 + Keil,我曾经一次教训:相同 ...

win10没有问题,不知道你用的什么版本的Keil

sokou 发表于 2016-2-4 13:54:07

是在虚拟机是里跑ubuntu吗?

1328616904 发表于 2016-2-4 13:54:21

feer曼 发表于 2016-2-4 11:41
STC的烧些确实很麻烦,没有官方支持的linux版本的在线烧写呀!

没有,貌似有高手自己做的

1328616904 发表于 2016-2-4 13:54:56

sokou 发表于 2016-2-4 13:54
是在虚拟机是里跑ubuntu吗?

对的,虚拟机里面跑Ubuntu12.04

sokou 发表于 2016-2-4 13:57:59

1328616904 发表于 2016-2-4 13:54
对的,虚拟机里面跑Ubuntu12.04

虚拟机里跑,电脑的整体运行速度也慢吧。我一台老电脑XP系统加个虚拟机跑XP。速度好慢。

1328616904 发表于 2016-2-4 14:01:33

sokou 发表于 2016-2-4 13:57
虚拟机里跑,电脑的整体运行速度也慢吧。我一台老电脑XP系统加个虚拟机跑XP。速度好慢。 ...

看你怎么灵活运行了{:lol:}

higeo 发表于 2016-2-4 14:07:30

楼主说好的stm32的教程呢?

feer曼 发表于 2016-2-4 14:21:34

1328616904 发表于 2016-2-4 13:54
对的,虚拟机里面跑Ubuntu12.04

尝试过,没成功,最后就放着了........
最后还是滚到winodws上老实用STC烧写的,哎......

1328616904 发表于 2016-2-4 14:41:53

feer曼 发表于 2016-2-4 14:21
尝试过,没成功,最后就放着了........
最后还是滚到winodws上老实用STC烧写的,哎...... ...

没有试一下CSDN哪位大神的教程

1328616904 发表于 2016-2-4 14:42:25

higeo 发表于 2016-2-4 14:07
楼主说好的stm32的教程呢?

那么着急干嘛 ,正在研究

feer曼 发表于 2016-2-4 14:46:20

1328616904 发表于 2016-2-4 14:41
没有试一下CSDN哪位大神的教程

可以试试在ubuntu中文论坛找这方面的资料http://forum.ubuntu.org.cn/

1328616904 发表于 2016-2-4 14:48:51

feer曼 发表于 2016-2-4 14:46
可以试试在ubuntu中文论坛找这方面的资料http://forum.ubuntu.org.cn/

也是Linux爱好者?

li3p 发表于 2016-2-4 14:53:43

xwkm 发表于 2016-2-4 11:20
我原来写过kstcisp...现在扔在github上懒得管了

支持stc15吗?

alphax64 发表于 2016-2-4 15:00:32

个人感觉初学者本身经验小,遇到问题后在WINDOWS环境中应用KEIL求助查找资料什么的会方便些,如再加上LINUX折腾,会难上加难吧。当然如果是LINUX高手另当别论

1328616904 发表于 2016-2-4 15:08:23

alphax64 发表于 2016-2-4 15:00
个人感觉初学者本身经验小,遇到问题后在WINDOWS环境中应用KEIL求助查找资料什么的会方便些,如再加上LINUX ...

萝卜白菜各有所爱

feer曼 发表于 2016-2-4 15:22:33

1328616904 发表于 2016-2-4 14:48
也是Linux爱好者?

算是吧!我从去前年开始用ubuntu当主系统,尽量用它来完成日常工作,实在完成不了的就在虚拟机中用windows完成

node720 发表于 2016-2-4 15:53:52

feer曼 发表于 2016-2-4 15:22
算是吧!我从去前年开始用ubuntu当主系统,尽量用它来完成日常工作,实在完成不了的就在虚拟机中用window ...

为什么大家都爱用ubuntu,不爱用RHEL?

AllEle 发表于 2016-2-4 15:56:39

先MK,以后用时再慢慢看

1328616904 发表于 2016-2-4 16:00:29

node720 发表于 2016-2-4 15:53
为什么大家都爱用ubuntu,不爱用RHEL?

我觉着Ubuntu比好帽子用着爽

feer曼 发表于 2016-2-4 16:36:56

node720 发表于 2016-2-4 15:53
为什么大家都爱用ubuntu,不爱用RHEL?

这个吗?
我的感觉是ubuntu版本更新稳定,按时半年一更2年一个稳定版本,并且跨版本升级要好一些,还有就是窗口操作很方便,并且要比其它linux发行版本窗口设计漂亮!

xwkm 发表于 2016-2-4 21:45:56

node720 发表于 2016-2-4 15:53
为什么大家都爱用ubuntu,不爱用RHEL?

RHEL要钱啊

xwkm 发表于 2016-2-4 21:46:27

li3p 发表于 2016-2-4 14:53
支持stc15吗?

早懒得管了。。。5年没用过51了

makesoft 发表于 2016-2-4 22:03:47

大一点工程死慢?51还能有多大工程啊,我万行的程序量也就是10秒编译时间(keil win7 64 i5 12g)。估计楼主就是像换个口味玩玩,和系统无关^_^

fengyunyu 发表于 2016-2-4 22:58:15

多大的工程,这么慢

偶爱自由 发表于 2016-4-10 06:13:20

正是要用的东西,mark一下

287504461 发表于 2016-4-10 07:01:24

mark一下,电工用linux做开发总觉得是件蛋疼的事,之前试着yonglinux开发stm32也失败了

fengyunyu 发表于 2016-4-10 07:20:42

虚拟机装上容易,卸载难

zhw950 发表于 2016-4-10 07:37:18

虚拟机跑实在太慢了,装双系统。

wxws 发表于 2016-4-10 10:33:43

现在流行docker了

1328616904 发表于 2016-4-11 11:02:46

wxws 发表于 2016-4-10 10:33
现在流行docker了

在线开发的?

wazhiyi 发表于 2016-4-11 11:11:28

一般人玩不转啊

wxws 发表于 2016-4-11 12:18:26

本帖最后由 wxws 于 2016-4-11 12:22 编辑

1328616904 发表于 2016-4-11 11:02
在线开发的?

比虚拟机更好的虚拟技术。

非常合适将开发环境、程序,一起部署出去。给人家,就是一个文件了。
不然linux在别人的环境下部署真的是累人的。


我就在黑群晖上,简单玩玩docker



比如第1个,是老外的智能家居的网关
第3个是MQTT服务器
第4个是自己用Python写的 花生壳 客户端,当然也能用 路由器带的。自己用,还是多用几个动态域名。
最后一个,是带vnc功能的ub虚拟机,用网页就直接vnc操作这个了。


你可以将你的开发环境,一起做成一个docker镜像,让人直接就能用了。

1328616904 发表于 2016-4-11 12:54:56

wxws 发表于 2016-4-11 12:18
比虚拟机更好的虚拟技术。

非常合适将开发环境、程序,一起部署出去。给人家,就是一个文件了。


改天试试{:lol:}

sbk100 发表于 2016-4-11 12:58:46

不错呦 不过得学习makefile

308594151 发表于 2016-4-11 13:00:02

mark一下

1328616904 发表于 2016-4-11 13:00:33

sbk100 发表于 2016-4-11 12:58
不错呦 不过得学习makefile

高嵌入式这一行这个Makefile恐怕是必须的了{:titter:}

一号纵队 发表于 2016-4-11 13:01:48

真佩服你的勇气啦,Linux够复杂的了,还要实现51编程,佩服。

1328616904 发表于 2016-4-11 16:16:53

一号纵队 发表于 2016-4-11 13:01
真佩服你的勇气啦,Linux够复杂的了,还要实现51编程,佩服。

我也是闲的没事折腾

Moriarty_li 发表于 2016-4-11 16:25:12

期待楼主的烧录详解,一直不会的就是如何通过linux烧录程序到单片机

hsbkyh 发表于 2016-4-11 22:55:37

学习了,呵呵{:loveliness:}

xwkm 发表于 2016-4-12 07:30:01

下载用我的软件解决←_←

笑笑我笑了 发表于 2016-4-12 08:25:18

当初用 avrdude 给 AT89S51 烧过程序,STC的那个下载协议研究过,没什么结果。

bbs2009 发表于 2016-4-12 12:59:57

bbs2009 发表于 2016-4-12 13:05:12

1328616904 发表于 2016-4-12 13:05:49

bbs2009 发表于 2016-4-12 12:59
SDCC不是有 winddows 版的吗? 为何一定要 在 linux 下编译 ,在 windows 下烧写?

sdcc.sourceforge.ne ...

要在windows下用Keil多好,搞电子的就得折腾

bbs2009 发表于 2016-4-12 13:18:47

bbs2009 发表于 2016-4-12 13:37:20

max 发表于 2016-4-12 13:54:13

我已经在LINUX下开发51程序几年了,如果是STC的51,可以使用stcflash, https://github.com/laborer/stcflash

1328616904 发表于 2016-4-12 14:20:08

max 发表于 2016-4-12 13:54
我已经在LINUX下开发51程序几年了,如果是STC的51,可以使用stcflash, https://github.com/laborer/stcfla ...

高手在民间啊{:lol:}

max 发表于 2016-4-12 15:38:52

只是换系统而已,相比写ARM,FPGA,DSP跟LINUX驱动的人来说,我只是个渣渣
在linux我习惯vim+makefile+wine+keil c51+stcflash, 在windows上是vim+makefile+keil c51+stc-isp,所以两个平台上的开发环境几乎一样的

李程宏 发表于 2016-4-12 15:46:38

人生在于折腾,但表示还是windows下做开发比较方便。

孤独的猫 发表于 2016-4-12 15:52:19

直接 看成51开发LINUX了      

bbs2009 发表于 2016-4-12 19:51:26

max 发表于 2016-4-13 16:05:01

bbs2009 发表于 2016-4-12 19:51
请教一下 , 在linux 是否可运行 wine+keil c51+ stc-isp?

可以,要把USB口连接到WINE, 不过STC-ISP不太稳定,到了后面就老下载出错

bbs2009 发表于 2016-4-14 11:57:03

jianbo513 发表于 2016-4-14 12:03:25

楼主加油!!!

xiaowenshao 发表于 2016-4-15 14:13:29

用Keil编译一个大的工程,TMD玩命似的半天,
在Linux下编译速度飞起来了哇,快了多少倍呀

xiaowenshao 发表于 2016-4-15 14:14:23

请问一下,那些搞嵌入式Linux开发的也是这样Windows+虚拟机的方式进行开发么?

1328616904 发表于 2016-4-15 17:11:57

xiaowenshao 发表于 2016-4-15 14:14
请问一下,那些搞嵌入式Linux开发的也是这样Windows+虚拟机的方式进行开发么? ...

是的,至少我们公司是这样

javabean 发表于 2016-4-15 17:43:32

说用windows慢,在windows里套虚拟机用linux还是图形界面,岂不是更慢吗?不能理解,直接全套linux不就好了

1328616904 发表于 2016-4-16 21:00:48

javabean 发表于 2016-4-15 17:43
说用windows慢,在windows里套虚拟机用linux还是图形界面,岂不是更慢吗?不能理解,直接全套linux不就好了 ...

全套不是有些软件用不了么
页: [1]
查看完整版本: 菜鸟教你Linux下开发51单片机