CH552Gの開発環境構築ととLチカ

前回紹介したCH552Gの開発環境を整備したので、その方法を覚書として残しておきます。CH551/552について書かれた日本語の記事というと、前に紹介したはくら様のブログ以外にはCerevo TechBlog様ぐらいしか見当たりません。いずれもメーカー推奨のKeil C51を前提として書かれていますが、Keilの無料試用版はコードサイズが2KBに制限されている(正式版は20万円超です…)とのことで、CH552Gのプログラムメモリ(ブートローダを除いて14KB)をいっぱいに使うようなものは作れません。メーカーのサンプルプログラムがこちらで公開されており、こちらはKeil用に書かれているのでまずはKeilで試すのがお手軽だとは思いますが、今回はあえてフリーのCコンパイラSDCC(Small Device C Compiler)を用いることにしました。

まず、SDCCの公式サイトから最新版をダウンロード、インストールします。インストールの終盤でコンパイラのパスを環境変数PATHに追加するかどうか尋ねられすので、追加(チェックを入れる)しておきます。

SDCCは統合開発環境(IDE)ではなく、コマンドラインコンパイラなので、別途エディタを用意します。フリーのものだとおススメはやはりVisual Studio Code(VS Code)でしょうか。ダウンロード後、インストールしてください。その後、C/C++の拡張機能をインストールしておきます。
C/C++拡張機能

8051アセンブラやIntel Hexの拡張機能も入れておいてもよいかもしれません。
8051拡張機能

Intel HEX拡張機能

基本的にはVS Codeで書いて保存→コマンドラインから sdcc ソースファイル名 でよいのですが、使い勝手を良くするためにいくつか追加の設定を行っておきます。もっとスマートな方法もあるかもしれませんが、初心者ということでご容赦ください。まず、コンパイル用のバッチファイルを作ります。ファイル名は_sdcc.batとし、パスの通ったフォルダ(C:\Program Files\SDCC\bin など)にコピーしておきます。このバッチはSDCCが吐き出した.ihx形式のHexファイルを.hex形式に自動的に変換するために作成しました。
(3, 4行目は、それぞれCH552, 551のメモリサイズを指定して使用量をチェックする場合の記述方法です。)

次に、プロジェクトファイルを保存するフォルダを新規作成します。
プロジェクトのフォルダ(空)

VS Codeの「フォルダーを開く」で、作成したフォルダを選択します。
フォルダを開く

次に、Cコンパイラの起動指定を行います。「ターミナル」-「タスクの構成」-「テンプレートからtasks.jsonを生成」-「Others」を選択します。
「ターミナル」メニュー

「タスクの構成」メニュー

「テンプレートから tasks.json を生成」メニュー

すると設定ファイルの編集画面が開くので、下記のように変更、保存してください。これで、[CTRL]+[SHIFT]+[B]でmain.c をメインプログラムとしたビルドタスクが走るようになります。main.c をほかのファイル名に変更したい場合には、"args" のところの "main" をほかの名前に変えてください。
tasks.json

下記のコードをコピペしてもOKです。

次に、エディタの使い勝手を向上させるため、インクルードファイルのパスの指定を行います。左下の設定アイコンから「コマンドパレット」-「C/C++:Edit Configurations (UI)」を選択して設定画面を開き、以下のように設定を行います。
・Compiler Path をsdcc.exeのパスに変更
・IntelliSense Mode をデフォルトに変更
・Include Path にSDCCのインクルードファイルが保存されているパスを追加
C/C++ Edit Configurations

Configuration設定画面

.vscodeフォルダ内にこのような c_cpp_properties.json ファイルが生成されておればOKです。以上の設定により、#include マクロで<>でかこったファイル名を指定しても警告表示が出なくなります。

以上の操作で.vscodeフォルダ内に2つのファイルが生成されましたが、これらのファイルはPC内のコンパイラのパスが変わらなければ使いまわしができますので、新たにプロジェクトを作成した際には.vscodeフォルダごとコピーしておけばこれまでの設定を省略できて便利です。

では試しにLチカのプログラムを入力してみましょう。以下のプログラムを入力し、main.c として保存してください。CH552特有のレジスタを使用しない限りは、8052用の定義ファイル(8052.h)が使用できます。また、stdint.h をインクルードしておくと、AVRGCCなどでもおなじみの uint8_t などの表現が使用できるようになるのでAVRからの移植にも便利かと思います。

入力後、[CTRL]+[SHIFT]+[B]でコンパイラが走り、main.hex が生成されているはずです。
プロジェクトのフォルダ

生成されたバイナリファイルの書き込みにはWCH社提供のWCHISPToolを使用します。ダウンロードページからダウンロード、インストールしてください。

準備ができたら、前回の記事で紹介したマイコンボードのPGM(プログラム)ボタンを押しながらPCのUSBポートに接続します。PGMボタンは1-2秒で離してください。これでブートローダが起動して、書き込めるようになります。起動に成功すればデバイスマネージャに"USB Module"というデバイスが現れているはずですが、うまくいかなければいったん接続を外してやり直してみてください。
デバイスマネージャ

この状態でWCHISPToolを起動し、「8 Bit CH55X series」タブを選択、「Chip model」で「CH552」を選択すると、画面下方のデバイスリストに接続したマイコンが認識されているはずです。ここで「User File」でコンパイラの出力したhexファイルを選択し、「Download」ボタンをクリックすれば書き込みが完了します。
WCHISPTool

この状態でリセットボタンを押せばP1.1に接続したLEDが点滅するはずです。

SDCCでの開発はあまり資料がないので難しいかと思いましたが、一度環境構築してしまうとさほど大変ではありませんでした。今後の予定としては、メーカー提供のCH552用のライブラリやインクルードファイルなどをSDCCで利用できるように移植作業などを進めていきたいと思います。

最後に、参考資料へのリンクを載せておきます。
技術者見習いのメモ書き-USB機能付き格安マイコンCH552Tの入手方法と回路について
Cerevo TechBlog-[21日目]激安中華USBマイコンは使えるのか
GitHub CH554 software development kit for SDCC:SDCC用のサンプル
ElectroDragon-WCH Wiki
Bitbucket-Electrodragon WCH:Keil C51用のサンプル
新世代8051系マイコン入門ハンドブック【PDF版】
関連記事
スポンサーサイト



テーマ : 電子工作
ジャンル : 趣味・実用

tag : マイコン MCS51 WCH CH552G USB 電子工作 Visual Studio Code SDCC

コメント

非公開コメント

アクセスカウンタ
カレンダー
09 | 2020/10 | 11
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
最新記事
最新コメント
リンク
カテゴリ
楽天お勧め商品
検索フォーム
Kyoroのつぶやき
FC2掲示板
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示