[ SDCC For 8051 ] 01-VScode and SDCC Environment

Morgan Ting
閱益如美
Published in
11 min readMay 28, 2023
Photo by Jonas Svidras on Unsplash

Visual Studio Code 簡稱為VS code 是由微軟 ( Microsoft ) 所開發的免費文字編輯器,支援多種程式語言開發其功能強大配合外掛 ( plug-in ) 套件更是如虎添翼。Small Device C Compiler, SDCC 是一款免費編譯器支援 8051 、STM8 等 MCU ,本文章介紹建立以 VScode 為基礎搭配 Embedded IDE套件的 8051 的開發環境。

8051 簡介

8051 是由 INTEL 在 80 年代發表的微處理器,屬於 MCS-51 系列。隨著時間更迭其功能也日益增強。早先推出的 80C51 其中的 C 表示使用 CMOS 技術為此系列產品奠定基礎,後續衍生出各種型號的微處理器如AT89C2051,AT89C51,AT89S51,AT89S52… 等相容晶片,核心不變內部記憶體增加且支援更多周邊協定。時至今日仍然有許多廠商持續生產類似的產品,例如

新唐提供多款 MCS-51 核心的晶片,支援多種周邊協定。對於學生族群而言則是常見到宏晶科技所生產的晶片,其晶片上面印有 STC 字樣。

回到目錄

SDCC

Small Device C Compiler, SDCC 是一款免費的編譯器支援多款 8 位元微處理器,並且持續更新也支援 STM 與 PIC 等公司的 8 位元晶片。SDCC 支援 Linux 與 Windows 以及 Mac OS X平台使用相當方便,Windows 版本的安裝只需無腦一鍵到底即可。關於詳細說明以及軟體下載可瀏覽官方網站

為何要使用 SDCC ? 相信大多數 C51 開發者當年在學校學習 8051 時都是使用 Keil C 作為開發環境,當時在學校使用的都是受封印的評估版本,只能編譯 2 K Byte大小的檔案因此想做大一點的專案只能雙手一攤。SDCC 免費且不限制檔案大小因此成為另一項選擇。

回到目錄

VScode + Embedded IDE

Visual Studio Code 是一款功能強大的文字編輯器,藉由套件的更新以及其他外掛套件可以支援多種程式語言開發與文字編輯,關於 VScode 常用套件可在網路上搜尋相關文章可以得到眾多說明,在此不贅述 ( 就是懶 ~ )。

Embedded IDE 簡稱 EIDE 是一款 VScode 套件提供了開發微處理器的整合環境,藉由內部套件的安裝可以擴展多款處理器編譯,例如 MCS-51 系列、STM8、RISC-V 等相當強大,尤其提供模板Template 可以讓開發人員不用從空白文件開始埋首耕耘。

光說不練假把式,言出必行真功夫。

接下來一步步建立開發環境。

回到目錄

安裝 Embedded IDE

Visual Studio Code 可在官方網站上找到下載連結,這裡不詳細介紹安裝過程。

Visual Studio Code

打開 VScode 後看到左方欄位點最下方的方格圖案來搜尋與安裝擴展套件 Extensions。

若是剛安裝好 VScode 且尚未使用過,可先搜尋 C/C++ 套件並按下 Install 按鈕安裝。

這裡我們的目標是安裝 Embedded IDE 套件,在搜尋列上輸入 EIDE 便可找到 Embedded IDE 套件,點擊 Install 按鈕進行安裝。

Embedded IDE

過程中畫面右下角有一下載進度指示,過程中可瀏覽說明稍待一下等安裝完成。

Embedded IDE Install

安裝完成後畫面左方欄位下方會多出一個晶片圖示,此即 Embedded IDE 。

回到目錄

安裝 SDCC

滑鼠點擊一下晶片圖示後首先點一下 SETUP Utility Tools 此時會出現一個列表寫著各種套件,注意到每個套件名稱後方出現 X 叉叉符號表示尚未安裝,點擊 Small Device C Compiler SDCC ( latest version ) 安裝 SDCC 。

SDCC Install

SDCC 可由官方網站下載後自行安裝後並在 Embedded IDE 中指定為編譯器,但是直接安裝 SDCC 套件的方式較為方便且操作有連貫性,因此在 Embedded IDE 中進行即可。

安裝完成後右下角會提示需要重新整理才可以讓套件生效,點擊 OK 讓 VScode 重整一下,緊接著在 Emedded IDE 環境下點擊 Configure Toolchain ,在列表可以看到 SDCC 已經安裝且設定好路徑了。到此,已經把環境建立完成了。

Tool chain
回到目錄

建立新專案

接下來小試身手,在 Embedded IDE 環境下點擊 New Project 建立新專案。

New Project

接著選擇 Internal Template 利用模板先行建立相關檔案。

Internal Template

這裡有兩種做法,選擇第一個 Universal 8051 quickstart project 之後再指定 SDCC為 Compiler ,若是選擇 89C52 SDCC Quickstart ,此選項下方有寫到 with SDCC compiler 會自動指定 SDCC 為 Compiler,選哪一個都可以,稍後會介紹如何指定 Compiler。

SDCC compiler

輸入專案名稱並選擇儲存路徑後專案邊建立完成了,此時右下角有提示是否要轉換 workplace 到新專案上,點擊 Yes 。若沒有自動開啟專案資料夾可以點擊左方欄位最上方的文件圖示找到專案資料夾選擇開啟。

project name
switch to workplace

開啟專案資料夾後可以看到自動產生了一些檔案,其中 src 資料夾裏頭放著 main.c 主程式,這就是我們要撰寫程式碼的檔案。

project folder

如何指定 Compiler ?

點擊左方欄晶片圖示進入 Embedded IDE 環境,看到專案名稱左邊有個 > 符號,點一下可以開啟內容,其中 Build Configurations 後方會寫著目前的 Compiler 名稱,滑鼠稍微往右會出現一個圖示,點擊後便會出現列表提供 Compiler 可以選擇,因為到目前為止我們只安裝 SDCC 因此若選擇 Keil C 會出現無法編譯的提示。

Build Configurations

耕耘程式碼,回到專案文件點擊 src 資料夾的 main.c 檔案,開啟後發現自動產生一段程式碼其標頭寫著 #include <reg52.h> 有沒有很熟悉的感覺,這不是 Keil C 嗎 ?

source code

在 < reg52.h > 按滑鼠右鍵,選擇 Go To Definition 會自動開啟 reg52.h 檔案。

reg52.h definition
reg52.h content

啥? 還沒逃離 Keil C ?

我們還有另一種選擇,使用 SDCC 的 Header File 在語法上會稍稍不同於 Keil C 但不是什麼大問題,畢竟 C51 的功能就那麼幾個,語法不會太複雜。接下來我們來改寫一下。

回到目錄

8051 標頭檔

回到 main.c 主程式稍作修改,首先將標頭檔案替換如下

#include <lint.h>

#include <8051.h>

這兩個標頭檔裏頭宣告關於 8051 暫存器的資料,如果手上的晶片是 8052 便引用 < 8052.h >。滑鼠移動到標頭檔上按下右鍵選擇 Go To Definition 來瞧瞧裏頭寫些什麼。

<lint.h> head file
<8051.h> head file

可以了解到兩個檔案都是關於晶片內部暫存器設定,其中 < 8051.h > 定義了各個暫存器的位址與標籤,在 I/O 腳位指定上可以看到相關標籤。假設我們在 Port1 的 0 腳連接一個 LED 燈,那麼控制 LED 燈的亮滅可以寫成 P1_0 = 0 ,P1_0 = 1 。這是屬於 SDCC 的操作語法,有別於Keil C 的 P1 ^ 0 語法。

將原本自動產生的範例程式改寫如下,對 Port1 的 0 腳做開關的動作。

code
回到目錄

編譯與燒錄

撰寫完程式就要進行編譯的動作,在左方欄位點擊晶片圖示進入 Embedded IDE 介面,上頭有專案名稱點一下左邊的箭頭打開所有內容注意到編譯器是否為 SDCC ,專案名稱右方有四個按鈕分別是:

  • Build 進行編譯。
  • Clean 清除編譯後的相關檔案。
  • Program Flash 進行燒錄。
  • Rebuild 再次編譯。

按下第一個按鈕後便會進行編譯,畫面下方會顯示編譯相關訊息並在完成後提示按下任意鍵離開。

build
finished

編譯結束後回到專案文件夾,打開 Build 文件夾可以看到編譯後相關檔案其中後綴為 .hex 便是可以進行燒錄的 16 進位檔,它是由後綴為 .ihx 檔案轉換而來的,會自動幫忙處理因此不需要自己打指令。程式撰寫與編譯到此完成,接下來是將 hex 檔案燒錄到晶片上。

hex file

關於燒錄我們需要一個硬體燒錄工具以及對應的燒錄軟體,對於 8051 開發而言燒錄工具是百百款並且對應專屬燒錄軟體,Embedded IDE 有提供一個 STC 系列的燒錄軟體只需要在 Embedded IDE 進行安裝,相關設定可以在 Embedded IDE 環境裡找到 Flash Configuration,更多訊息可以到官方網站瀏覽。

由於筆者手邊只有名為 SP200SE 燒錄器及其控制軟體以及 89C51 晶片因此不用 Embedded IDE 提供的 STC 燒錄軟體,若讀者手邊有相容於 STC 的燒錄器不妨嘗試是否可行。

Flash Configurations
回到目錄

總結

VScode 憑藉著強大的專案管理與延伸套件因此受到軟體開發使用者青睞,建立以 VScode 為主的開發環境搭配 Embedded IDE 套件為微處理器開發帶來另一種風貌,文章總結如下。

  • 在 VScode 搜尋 Embedded IDE 延伸套件即可安裝。
  • Embedded IDE 支援8051,AVR,STM8,Cortex-M,RISC-V 等微處理器開發。
  • SDCC 是一款免費開源支援 8051,AVR,STM8…等 8 位元微處理器編譯軟體。
  • SDCC 開發 8051 引入 < lint.h > 與 < 8051.h > 兩個標頭檔,其內容指出設置暫存器語法。
  • Embedded IDE 支援 STC 晶片燒錄 Hex 檔案,使用者可依晶片型號與燒錄工具調整燒錄方式。
回到目錄

參考資源

  1. Visual Studio Code 維基百科 [連結]
  2. Visual Studio Code 官網 [連結]
  3. SDCC 官方網站 [連結]
  4. Embedded IDE 官方網站 [連結]
回到目錄

感謝讀者

感謝讀者閱讀文章若有任何意見與想法歡迎留言指導讓知識擴大加深, 若文章有幫助到您可以拍手給我鼓勵,或是免費加入 Like Coin 帳戶並點擊拍手按鈕 5 下,免費支持我。

免費註冊,按讚支持

--

--

Morgan Ting
閱益如美

用好奇心探索世界。喜愛學習樂於分享。