数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 4409|回复: 11

[C51] Linux下Stc15 开发环境搭建,其他C51应该也可用

[复制链接]
发表于 2019-9-4 16:23:39 | 显示全部楼层 |阅读模式
本帖最后由 spirndai 于 2019-9-6 10:14 编辑

在windows下可能很多人开发C51程序在用keil,不过网上一堆破解/网盘下载之类的让人有点担心,谁知道里面是不是塞了私货。

有一个放心的选择,就是全部在linux下开发,全面的开源软件,这样总可以放心了吧。

前提,要有一个linux环境,里面支持docker。为什么要docker呢?这样装得比较干净,不想用的时候docker rm就直接干掉了,对于正在跑的linux毫无影响。怎么安装docker这里就不说了,不懂的建议先上网自学一些docker的基本操作指令。

首先,我们先做一个docker镜像:
  1. cat > Dockerfile
复制代码

  1. from debian:buster-slim
  2. RUN echo "deb http://mirrors.163.com/debian/ buster main" > /etc/apt/sources.list
  3. RUN apt update  && apt install -y apt-transport-https ca-certificates vim procps net-tools python3-pip sdcc git minicom
  4. RUN apt install -y codeblocks
  5. COPY stc15w.h /usr/share/sdcc/include/
  6. RUN pip3 install stcgal
复制代码
把附件里面的stc15w.zip解压放在同一个目录下,现在可以开始构建docker镜像了,要等一阵子
  1. docker build . -t stc15:v0.9
复制代码
假设你的stc15 usb设备插入电脑被linux认为是 /dev/ttyUSB0,接下来
  1. docker run -it --device /dev/ttyUSB0:/dev/ttyUSB0 -v /tmp:/tmp -v /opt:/opt --rm  --network host -e DISPLAY=$DISPLAY -v ~/.Xauthority:/root/.Xauthority stc15:v0.9  /bin/bash
复制代码
如果不是/dev/ttyUSB0,要改变上面的相关参数,现在可以运行开发环境了。
  1. codeblocks
复制代码
首次运行会问缺省是哪个编译器,选Small Device C Compiler,点Set as default, OK


接着新建一个mcs51项目,一定要选择在/opt下,否则会丢失。


codeblocks缺省的后缀名是.o,和sdcc的.rel冲突,要改


改变后关掉codeblocks,再启动,打开刚才的项目,用build 菜单选build 就可以编译成功。


关掉codeblocks,回到命令行界面看,可以看到test.ihx已经生成
  1. ls -l /opt/test/bin/Debug/
  2. total 80
  3. -rw-r--r-- 1 root root 12380 Sep  4 07:54 test.cdb
  4. -rw-r--r-- 1 root root   378 Sep  4 07:54 test.hex
  5. -rw-r--r-- 1 root root   354 Sep  4 07:54 test.ihx
  6. -rw-r--r-- 1 root root   306 Sep  4 07:54 test.lk
  7. -rw-r--r-- 1 root root 44540 Sep  4 07:54 test.map
  8. -rw-r--r-- 1 root root  1163 Sep  4 07:54 test.mem
  9. -rw-r--r-- 1 root root  2833 Sep  4 07:54 test.omf
复制代码
生成bin文件
  1. cd /opt/test/bin/Debug/
复制代码
烧录进单片机,stcgal只用于烧录stc系列文件,慢速情况下烧录成功率会高一些,这里用1200波特率。
  1. stcgal -b 1200 -l 1200 test.bin
复制代码
当然也可以把bin文件拷贝到windows下烧录,速度会快一些。

自此大功告成!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 2家元 +100 收起 理由
家睦 + 80
wenxueroom + 20 高手 高手 高手

查看全部打赏

 楼主| 发表于 2019-9-4 16:33:57 | 显示全部楼层
里面还附带了一个keil2sdcc工具,stc15w.h就是这样转换出来,需要的人会知道有用的 :lol:
源码在这里,https://github.com/ywaby/keil2sdcc 用法也简单,不多说了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-4 17:01:16 | 显示全部楼层
其实我自己是不用codeblocks的,直接vim+sdcc+makefile,从过程来说更简单,但对于很多人来说可能门槛更高,有需要的话再补充。
回复 支持 反对

使用道具 举报

发表于 2019-9-4 18:39:27 来自手机浏览器 | 显示全部楼层
没深入研究,知道intrins.h没有这个文件,nop用不了。。。另外端口写法不一样,后者倒是没啥特别影响。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 13:42:43 | 显示全部楼层
guoditangmd 发表于 2019-9-4 18:39
没深入研究,知道intrins.h没有这个文件,nop用不了。。。另外端口写法不一样,后者倒是没啥特别影响。 ...

附件里面那个.h已经加入nop了,也就是几行代码。
回复 支持 反对

使用道具 举报

发表于 2019-9-5 17:11:14 | 显示全部楼层
请问stcgal支持所有stc芯片吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-5 17:42:39 | 显示全部楼层
william9527 发表于 2019-9-5 17:11
请问stcgal支持所有stc芯片吗?

Support for STC 89/90/10/11/12/15/8 series

https://github.com/grigorig/stcgal
回复 支持 反对

使用道具 举报

发表于 2019-9-6 02:06:47 | 显示全部楼层

谢谢,我这里打不开github(在离海洋最远的城市),看到支持15系列就心安了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-6 10:11:08 | 显示全部楼层
william9527 发表于 2019-9-6 02:06
谢谢,我这里打不开github(在离海洋最远的城市),看到支持15系列就心安了。 ...

可以用pip直接安装,只是github上说明完整一点
回复 支持 反对

使用道具 举报

发表于 2019-9-8 02:34:01 | 显示全部楼层
已经用pip安装上了stcgal,试了试15F204EA成功,这样终于可以不用windows了。
回复 支持 反对

使用道具 举报

发表于 2023-4-29 20:08:39 | 显示全部楼层
STC8H8K64U的烧录协议已公开,想咋玩都可以了



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2023-5-1 23:01:20 | 显示全部楼层
钟山风雨起苍黄 发表于 2023-4-29 20:08
STC8H8K64U的烧录协议已公开,想咋玩都可以了

真是太难得了,也不知道以前为啥藏着掖着
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-22 05:26 , Processed in 0.218401 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表