IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 在 Linux 下开发和下载8051单片机程序 -> 正文阅读

[嵌入式]在 Linux 下开发和下载8051单片机程序

在 Linux 下需要用 sdcc 开发8051单片机程序,用 stcgal 这个 python 程序将编译好的8051单片机程序下载到裸机上。

sdcc 是可重定位目标,优化标准 C(ANSI C89,ISO C99,ISO C11)编译器套件。针对的是基于 Intel MCS51 微处理器(8031、8032、8051、8052等),还有 Maxim(以前为 Dallas)、DS80C390、
飞思卡尔(以前基于 Motorola )基于 HC08(hc08,s08)、基于 Zilog Z80 的 MCU(z80,z180,gbz80,Rabbit 2000/3000,Rabbit 3000A,TLCS-90),Padauk(pdk14,pdk15)和 STMicroelectronics STM8。
支持 Padauk(pdk13),Microchip PIC16 和 PIC18 目标的工作正在进行中 。可以将其重新定位为其它微处理器。

sdcc 套件是从具有不同 FOSS 许可证的不同来源派生的几个组件的集合,编译器套件包括:
??? sdas 和 sdld,一个 retargettable 汇编程序和连接,基于 ASXXXX,由 Alan 鲍德温编写;
??? sdcpp 预处理器,基于 GCC cpp 开发;
??? ucsim 模拟器,最初由 Daniel Drotos 编写;
??? sdcdb 源代码级调试器,最初由 Sandeep Dutta 编写;
??? sdbinutils 库归档实用程序,包括从 GNU Binutils 派生的 sdar,sdranlib 和 sdnm;
??? sdcc 运行时库,Pic 设备库和头文件来自 Microchip 头文件(.inc)和链接程序脚本(.lkr)文件。Microchip 要求“头文件应声明它们仅可与可靠的 Microchip 设备一起使用”,这使它们与 GPL 不兼容;
??? gcc-test 回归测试,源自 gcc-testsuite(未明确指定许可,但由于它是 GCC 的一部分,因此可能是 GPL 许可);
??? packihx(公共区域);
??? makebin(zlib/libpng 许可证)。

sdcc c 编译器,最初由 Sandeep Dutta 编写,一些功能包括:
??? 广泛的 MCU 特定语言扩展,可有效利用基础硬件;
??? 一系列标准优化,例如全局子表达式消除,循环优化(循环不变式,归纳变量的强度降低和循环反转),恒定折叠和传播,复制传播,死代码消除以及“ switch”语句的跳转表;
??? MCU 特定的优化,包括全局寄存器分配器;
??? 适用于 MCU 的自适应后端,应该非常适合其他8位 MCU;
??? 基于独立规则的窥视孔优化器;
??? 完整的数据类型范围:char(8位1字节)、short(16位2字节)、int(16位2字节)、long(32位4字节)、long long(64位8字节),浮点数(IEEE 4字节)和 _Bool/bool;
??? 在函数中任何地方添加内联汇编代码的能力;
??? 报告功能复杂性的能力,以帮助确定应在汇编器中重写的内容;
??? 很好的自动回归测试选择。

安装 sdcc
??? 大多数 Linux 发行版都有安装包,如果你的 Linux 版本没有,就到 http://sdcc.sourceforge.net/ 上下载源码自己编译。

??? 在 Kubuntu 下,如果你是 root 用户,在终端执行这个命令:apt install sdcc;如果你是非 root 用户,在终端执行这个命令:sudo apt install sdcc。

用 sdcc 编译8051程序
??? 在终端执行这个命令:sdcc -mmcs51 Your.c;-mmcs51 指示编译器编译8051单片机的机器码。编译后还有一堆文件我就不一一列出了。

??? 单片机是 STC89C51,样例程序如下:
??? #include <8051.h>

??? void main()
??? {
??????? unsigned int uiCount;

??????? while(1)
??????? {
??????????? P0_0 = 0;

??????????? uiCount = 50000;

??????????? while(--uiCount);

??????????? P0_0 = 1;

??????????? uiCount = 50000;

??????????? while(--uiCount);
??????? }
??? }

??? 这是一个隔0.5秒闪烁 LED 的程序。

stcgal STC MCU ISP 闪存工具
??? stcgal 是用于 STC MCU ISP 的命令行闪存编程工具,兼容8051微控制器。STC 微控制器具有基于 UART/USB 的引导加载程序(BSL)。它利用基于数据包的协议通过串行链路刷新代码存储器和 IAP 存储器。
这称为系统内编程(ISP)。BSL 还用于配置各种(类似保险丝的)设备选项。不幸的是,该协议没有公开记录,STC 仅提供(粗略的)Windows GUI 应用程序进行编程。

??? stcgal 是 STC 的 Windows 软件的功能全面的开源替代品,它支持多种 MCU,非常便携,适合自动化。特征有:
??????? 支持 STC89/90/10/11/12/15/8 系列
??????? UART 和 USB 的 BSL 支持
??????? 显示零件信息
??????? 确定工作频率
??????? 程序闪存
??????? 程式 IAP/EEPROM
??????? 设置设备选项
??????? 读取唯一的设备 ID(STC10/11/12/15/8)
??????? 修整 RC 振荡器频率(STC15/8)
??????? 使用 DTR 切换键或自定义 Shell 命令自动重启电源
??????? 自动 UART 协议检测

安装 stcgal
??? 首先你要确定安装了 python3 程序,如果没有安装 python3,请到 www.python.org 下载对应的程序安装。
??? 如果没有安装 pip3 工具,请到 https://pypi.org/project/pip/#files 下载对应的程序安装。
??? 在 Kubuntu 下,如果你是 root 用户,在终端执行这个命令:pip3 install stcgal;如果你是非 root 用户,在终端执行这个命令:sudo pip3 install stcgal。

stcgal 用法:
??? 在 Kubuntu 下,如果你是 root 用户,在终端执行这个命令:stcgal -P stc89 -p /dev/ttyUSB0 Your.ihx;如果你是非 root 用户,在终端执行这个命令:sudo stcgal -P stc89 -p /dev/ttyUSB0 Your.ihx。
??? 其中 -P 指出 STC 单片机的型号;-p 指出串口设备,我这里是 USB 转串口设备 /dev/ttyUSB0;.ihx 文件就是你用 sdcc 编译出来的 hex 文件(等同于 keil 编译出来是 .hex 文件),上传这个 .ihx 文件就行了。

??? 注意在提示“Waiting for MCU, please cycle power:”的时候关掉电源再打开就可以了。如有不明白,用“stcgal -h”来了解详细用法。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 00:00:59  更:2021-09-11 00:01:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 1:01:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码