MacOS 如何使用SDCC编译烧录51程序(完整版)
<h1>MacOS 如何使用SDCC编译烧录51程序(完整版)</h1><p>(以下内容均运行在MacOS原生系统,未使用vm虚拟机。)</p>
<p>设备为2022air,m2芯片。</p>
<hr />
<h3>安装homebrew:</h3>
<p>这里使用的是gitee镜像源。</p>
<p>打开终端输入:</p>
<pre><code>/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
</code></pre>
<p>如果终端输入后,显示的是乱码,则说明终端编码没有使用unicode(utf-8)格式,按住【command+,】 打开终端设置,点击描述文件,将下方的文本编码选择utf-8格式即可。</p>
<p>按照提示依次操作。</p>
<h3>用brew安装sdcc:</h3>
<p>安装好homebrew后,在终端使用brew安装sdcc。</p>
<pre><code>brew install sdcc
</code></pre>
<p>安装完成后查看sdcc版本信息</p>
<pre><code>sdcc -v
</code></pre>
<p>出现以下内容说明安装成功。</p>
<pre><code>SDCC : mcs51/z80/z180/r2k/r2ka/r3ka/sm83/tlcs90/ez80_z80/z80n/r800/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8/pdk13/pdk14/pdk15/mos6502/mos65c02 TD- 4.4.0 #14620 (Mac OS X ppc)
published under GNU General Public License (GPL)
</code></pre>
<h3>安装CH34x驱动:</h3>
<p>点击CH34x下载进入官网下载mac os版本驱动。</p>
<p>CH341下载链接: <code>https://www.wch.cn/download/CH341SER_MAC_ZIP.html</code></p>
<p>打开zip后,先点dmg,再点pkg。</p>
<p>窗口弹出<em><strong>succeed</strong></em>就成功了。<br />
安装完成后,打开终端,输入:</p>
<pre><code>ls /dev/tty.wchusbser*
</code></pre>
<p>查看端口,出现以下内容,代表端口正常<br />
<code>/dev/tty.wchusbserial1110</code> 1110是串口号。</p>
<p><strong>如果出现</strong> <code>zsh: no matches found: /dev/tty.wchusbser*</code></p>
<p>不要慌,是因为你没有插上ch34x数据线,插上后再次输入 <code>ls /dev/tty.wchusbser* </code>查看端口信息即可。</p>
<h3>安装stcgal闪存烧录</h3>
<p>提前下载好python3系列,推荐3.11万金油版本,当然也可以使用3.13最新版,不重要。</p>
<p>拥有python3后,使用终端下载stcgal</p>
<p><code>stcgal pip3 install stcgal</code></p>
<p>如果终端下载失败,那么就手动下载</p>
<p>点击stcgal下载前往github下载zip文件,打开后把文件拖动至桌面。</p>
<p><code>stcgal下载链接:https://github.com/grigorig/stcgal</code></p>
<p>打开终端输入</p>
<pre><code>cd desktop
cd stcgal-master
</code></pre>
<p>让终端选择到<em><strong>解压好后</strong></em>的文件夹。<br />
然后用终端运行其中的python文件。</p>
<pre><code>/setup.py build
sudo ./setup.py install
</code></pre>
<p>就安装好stcgal了。</p>
<p>输入 <code>stcgal -v</code>可以查看版本信息。</p>
<p>这时候环境就搭建完成了,用vs code写入代码(默认普中A2开发板)</p>
<pre><code class="language-c">#include <8051.h>
void main()
{
P2 = 0x00; //led全部点亮
}
</code></pre>
<p>保存为main.c文件</p>
<p>然后打开终端(可以直接在vscode终端操作)输入</p>
<pre><code>sdcc main.c
</code></pre>
<p>开始编译.c文件为.ihx文件。<br />
可以选择使用<em><strong>cat</strong></em>命令在终端查看各个文件信息,例如 <code>cat main.mem </code>或 <code>cat main.asm</code>。这里插一嘴,如果查看.asm或.c文件内容发现注释乱码,那就将unicode(utf-8)格式换成<em><strong>GB2312</strong></em> 即可。</p>
<p>然后输入</p>
<pre><code>stcgal -P stc89 -p /dev/tty.usbserial-刚才的串口号 main.ihx
</code></pre>
<p><em><strong>串口号</strong></em>每个人可能不一样,例如我的是<em><strong>1110</strong></em>,那么我终端输入的指令就是:</p>
<p><code>stcgal -P stc89 -p /dev/tty.usbserial-1110 main.ihx</code></p>
<p>如果提示</p>
<pre><code> A new release of pip is available: 24.0 -> 24.3.1
To update, run: pip3 install --upgrade pip
</code></pre>
<p>说明缺少upgrade库,那就在终端输入</p>
<pre><code>pip3 install --upgrade pip
</code></pre>
<p>安装好upgrade库后,再次输入</p>
<pre><code>stcgal -P stc89 -p /dev/tty.usbserial-串口号 main.ihx
</code></pre>
<p>即可开始烧录.ihx文件。</p>
<p>(第一部分-p是选择mcu型号,第二部分-p是选择串口,第三部分是选择烧录的文件。)</p>
<p>出现</p>
<pre><code>Waiting for MCU, please cycle power:
</code></pre>
<p>则需要重新上电,进行冷启动烧录。</p>
<p>如此就结束了我们整个流程,理工科除非是纯软,否则我还是不推荐MacOS。</p>
<hr />
<h3>附</h3>
<p>在此再插一嘴,如果你的团队需要使用STC-ISP.exe烧录,但出现ihx文件打不开,报错之类的现象。可以使用SDCC自带的 <code>packihx</code>或者 <code>makebin</code>指令进行格式转换。</p>
<p><code>packihx main.ihx > main.hex</code>不覆盖的前提下,新成成hex文件。<br />
<code>makebin main.hex > main.bin</code>不覆盖的前提下,新生成bin文件。</p>
<p>综上所述,如有错误还请指正。</p>
<p>(ps:配置环境配置的我好辛苦啊??,没有一个包容度深的教程,纯靠自己踩坑得出的经验值 XP+1 HP-1,因为很少人用mac开发,就算有也是用 vs code中的Platform IO扩展开发,故此出文帮助部分少数比较喜欢SDCC这种简洁爱好的强迫症人群。)</p>
页:
[1]