PICNIC

PICNIC固件的更新

■PICNIC固件的更新

0. 关于PIC16F877A版本的不匹配

1. 更新作业的概要

2. 安装MPLAB(含MPASM)

3. MPASM版固件的汇编 ←NEW

4. 用PIC烧写器写入

5. 更新后的固件的动作试验

6. 固件更新的例

 

→提问・讨论用的BBS

←返回目录

2006年4月5日 16:22 更新

 


●关于PIC16F877A版本的不匹配(2004/4/29追記)


关于IT技术实习的PIC编程的一连串的不匹配,其原因和回避方法已经解明。在这里向大家介绍。希望各位同学仔细确认自己的PIC单片机的种类后,再进行实习。

<写入不良的原因>
TriState有限公司出品的PICNIC组件中配备的PIC单片机,从某时期开始由PIC16F877-20/P变为了 PIC16F877A-1/P。而借出的PIC烧写器 ver.3 (烧写软件 ver.2.9.5)不对应这个877A。

<回避方法>
有两种方法
(1)不使用877A,而使用扩充组件中附属的PIC16F877-20/P进行实习。
(2)从秋月电子通商购买把烧写器的ROM升级到ver.4的组件。

<总结>
按以下的组合可以正常的写入。
・烧写软件ver2.9.5+烧写器ver.3+PIC16F877-20/P
・烧写软件ver2.9.21(最新)+烧写器ver.4版本升级ROM+PIC16F877/877A

●更新作业的概要

作业顺序更新时所需的环境和设备


4.1.1 作业顺序

PICNIC固件可以经过以下的作业顺序来对其修改或更新。

(1)编辑MPASM版的固件(用MPASM汇编器可以汇编的用汇编语言编写的汇编源代码文件。*.asm)
(2)用MPASM汇编,生成HEX格式的机器语言文件(*.hex)
(3)用PIC烧写器写入PIC16F877内藏的程序存储器。
(4)把PIC单片机安装到PICNIC上,并确认动作
(5)如果出现问题或有需要调整的地方再返回(1)

如果不是象这次的小规模更新作业,而是在实际规模的[开发环境]的时候,通常使用ICE(In-Circuit Emulator:在线仿真器)来省略上记作业中的(3),(4)。所谓ICE是指与用来开发的计算机可以连动的仿真CPU。即可以直接把它插到开发对象的CPU插座上,然后边开发边确认动作。

PIC单片机用的ICE也存在,但是对于个人来说价格比较昂贵。


4.1.2 更新时所需的环境和器材

以下为PICNIC固件更新时所需的环境与器材。这次是把在Windows下进行开发作为前提,不过好像在UNIX上运行的GNU样的(GNUPIC)也存在

[A] 程序的编辑,MPASM的执行环境

 现在可以动作的固件的汇编语言文件
 编辑程序用的编辑器(在Windows上可以使用记事本(notepad)。推荐使用秀丸文本编辑器
 Microchip社的 MPLAB PIC单片机集成开发环境(IDE,Integrated Development Environment)ver5.x 或 ver6.x
 包含在上记IDE中的MPASM(PIC单片机用的宏汇编器(MPASM for Windows))

[B] 写入PIC单片机(PIC16F877-20/P 确认IC表面的刻字)

 使用周边扩充组件附属的PIC16F877-20/P(确认IC表面的刻字)※新出货的PICNIC组件附属的 877A版本的IC(PIC16F877A-1/P)不能用ver.3的烧写器写入。
 秋月电子制 PIC单片机烧写器 ver.3 + 烧写器用电源适配器(DC12V DC15V)← (附属在PIC单片机组件,借出可) <图片1>
 单片机烧写器 ver.3 用的烧写软件(PIC programmer ver.2.9.5的下载 localcopy (picpgm_win_2.9.5.zip)
 PC ⇔ PIC烧写器間接続用 RS-232C D-Sub9pin 公⇔母 串口连接线 从秋月電子可以购买到它与电源适配器的配套商品
 配备RS-232C串口的计算机
 如果没有,购买USB连接的串口转换器(通常被分配为COM5等)
 PICNIC的插座用的DIP300mil 40pin零插拔力插座(TEXTOOL)(←附属在PICNIC周边扩充组件,和PIC烧写器上的是一样的。因为经常要插拔PIC单片机,如果安上它效率会大大提高) <图片2>


<图片1> PIC单片机烧写器 ver.3(ROM rev.B~D各种)

 

<图片2> DIP300mil 40pin零插拔力插座(TEXTOOL)


[C] 更新后的PICNIC动作确认

 与前章的PICNIC动作确认相同。

●安装MPLAB(含MPASM)

关于MPLAB(IDE)下载与安装MPASM的启动确认


4.2.1 关于MPLAB(IDE)

从以下可以下载Microchip社的 MPLAB PIC单片机集成开发环境(IDE)ver5.x 或 ver6.x。当前只释出有Windows版本。

Microchip(LINK)

MPLAB ver5.70 的下载 (mp57full.zip localcopy)

MPLAB IDE ver6.40 的下载 (mpl640full.zip localcopy)
 


4.2.2 下载与安装的顺序(2004年4月19日改)

以下向大家讲一下MPLAB ver5.70的安装过程。

(1)下载MPLAB ver5.70的完全安装版的ZIP文件(mp57full.zip : 13MByte)可以将它下载到比如说 C:\TMP 等地方。

(2)由于下载的安装文件是ZIP格式的压缩文件,要用WinZIP等软件解冻。

※从这里可以下载到WinZIP ver8.1试用版!

下载会自动开始。如果选择[打开],还会自动进行安装。

(3)如果解冻工具为WinZIP,把鼠标放到下载的MPLAB的ZIP文件(mp57full.zip)的图标上后,右单击→WinZip→extract here, 就会自动生成临时文件夹,其中存放着安装用的可执行文件(MP57000full.exe)。

(4)双击 MP57000full.exe文件开始安装。

(5)关于最初出现的几个提问全部选择default。途中会进入Component select 的界面,在这里,我们选前两个和最后一个,也就是说只选以下三项,其余都不选

■MPLAB IDE Files
■MPASM Assembler/MPLINK Linker/MPL
......
■Help Files

选择要安装的MPLAB的程序包

(6)安装完毕后重新启动计算机。请事先确认没有未保存的别的应用软件的文件。

(7)安装完毕后,[程序]→[Microchip MPLAB]中会被放置MPLAB IDE 的工具集。

(8)尽可能的把 MPASM for Windows的快捷图标设置在桌面上以便使用。(利用拖放(Drag & Drop)功能可简单的对*.asm文件进行汇编)。

 

※2004年4月19日修订:由于Microchip社的网站大幅度改变,因此在调整链接的同时设置了本地拷贝(local copy)。


4.2.3 MPASM的启动确认

启动包含在IDE中的MPASM(PIC单片机用的宏汇编器(MPASM for Windows))。

(方法1)如果按上述4.2.2 (5)在桌面上做了快捷图标,则双击图标启动它。

(方法2)选择[开始]→[程序]→[Microchip MPLAB]中的MPASM for Windows的图标启动它。

确认如下的MPASM的启动窗口(图1)是否被显示出来。


<图1> MPASM的启动窗口

●MPASM版固件的汇编

MPASM版固件(ver1.2)的下载使用MPASM汇编汇编后生成的文件群


4.3.1 MPASM版固件(ver1.2)的下载

PICNIC固件(ver1.2)的概要请参照前述的§1.2。

从下面下载PICNIC ver.2用的面向MPASM汇编器的固件(ver1.2)。

汇编源代码文件(v12.asm)
※2004/10/30 可以对应MacOSX用的GNUPIC(gpasm)了(删除2775行的MPASM的伪指令(directives))。

为了方便以后的开发作业,最好在PC上适当的地方做成PIC单片机开发专用的文件夹。(例:E:\Project\PICNIC 等)

※关于文件夹名字的注意事项:关于放置ASM/HEX文件的文件夹,如果文件夹名中含日文或中文的话,MPASM和后述的PIC烧写软件将有可能无法读取ASM/HEX文件,所以不要把文件放置在这样的文件夹下。(2005/4/29追記)

 

在开发途中,由于编辑上的错误造成程序不能正常运行的时候,如果想返回到原版(PICNIC组件购买时的)时,可以重新到上面的链接下载固件的汇编源代码文件,对其汇编后就会回到最初的状态。

在开发途中,随时保存各版本的源文件很重要。比如说4月27日的版本正常运行后,把它的汇编源代码文件名起作v12-0427.asm 等保存。这么一来在以后的更改中如果发生不正常运行的时候,可以返回到4月27日的状态,非常方便。


4.3.2 使用MPASM汇便

下面我们试着用MPASM汇编器对PICNIC固件进行汇编生成HEX格式文件。

最初,先试着对下载到的(v12.asm)进行汇编。

(1)启动MPASM。

(2)在[Source File Name:]的文本框中指定v12.asm文件,或是点击[Browse...]指定准备汇编的v12.asm的所在地(图2)。

<图2> 源代码文件的指定

(3)[Options:]的各项参数保持default值不变。如果需要再改变。

(4)点击[Assemble]按钮实行汇编。这时会出现一个显示MPASM正在汇编中的对话框,汇编的进度被逐次显示出来(由于最近的PC的速度很快所以瞬间就会完成汇编)。最后显示出

    Assenmby Successfull.
        V12.ASM

表示汇编结束。点击[OK]按钮,MPASM终了。

<图3> MPASM的汇编中的对话框

※Windowsのエクスプローラ(フォルダ)上のファイルアイコン(v12.asm)を、MPASMのショートカットアイコン上へドラッグ&ドロップすることで、アセンブルを実行させることも可能である。(ドラッグ&ドロップ可能なのはMPASMである。PICライタソフトウェアは、ドラッグ&ドロップには対応していないので注意。2005/4/29追記)



4.3.3 汇编后生成的文件群

上述的汇编正常完成后,就会生成如下的文件群。其中最重要的是,使用PIC烧写器写入PIC单片机的机器语言文件 v12.hex。

v12.hex : Intel-HEX格式的机器语言文件
v12.lst : 显示机器语言⇔汇编源代码的对应关系的listing file(推荐看一看)
v12.err : 汇编结果的错误文件。
Message[] 警告信息。汇编本身成功。
Error[] 错误信息。汇编未成功,程序需要修改。
v12.cod : 汇编时作业用的中间文件。用户不使用。

●用PIC烧写器写入

PIC单片机烧写器 ver.3烧写软件(PIC programmer ver.3)的安装PC ⇔ PIC烧写器间的连接 确认PC 与 PIC programmer间的通信状况向PIC16F877中写入v12.hex HEX格式文件


4.4.1 PIC单片机烧写器 ver.3

我们用秋月電子制的PIC单片机烧写器Ver.3把固件写入PIC单片机 PIC16F877。烧写器的电源使用电源适配器(DC12V DC15V)。

<图片3> PIC单片机烧写器 ver.3(JP2未短路)


4.4.2 烧写软件(PIC programmer ver.3)的安装

以下介绍的专用烧写软件PIC programmer ver.3,由于只发行日本版,故请对日本语不大熟悉的各位同学到网络上下载与PIC单片机 PIC16F877相对应的烧写软件(例如: DIY K149-BC v141204 等),以便大家使用。

把HEX格式的机器语言文件传送给PIC烧写器时,需要用专用的PC烧写软件。用Windows旧版(ver2.9.5)就可以很方便的通过串口连接线与带有端口转换器(Port replicator)或资料传送座(Docking Station)的笔记本电脑的串口,或通过USB⇔RS-232C转换器(COM5)与计算机连接来完成程序的写入。

以下的作业,是以PIC programmer Ver2.9.5为前提。

【注意点】秋月電子上的ver2.9.21的版本虽然可以下载,但由于它不对应PIC烧写器的固件,所以无法使用。因此请大家从以下的本地拷贝中下载ver2.9.5(2004年4月25日追加)。

(1)下载PIC programmer Ver2.9.5(PIC programmer ver.2.9.5的下载 localcopy (picpgm_win_2.9.5.zip) )的安装文件的zip文件。将下载的文件放到比如说 C:\TMP 等地方。

(2)由于下载的安装文件是ZIP格式的压缩文件,要用WinZIP等软件解冻。

(3)如果解冻工具为WinZIP,把鼠标放到下载的PIC烧写软件的ZIP文件(picpgm_win_2.9.5.zip)的图标上后,右单击→WinZip→extract here,就会自动生成临时文件夹,其中存放着安装用的可执行文件(setup.exe)等文件群。

(4)双击 setup.exe文件,开始安装。有关出现的几个提问,可全部选择default。

(5)安装结束后,[程序]→[Akizuki]中会生成PIC Programmer ver.3的工具。如果有时间最好把 PIC Programmer ver.3的快捷图标放到桌面上,以便使用。


4.4.3 PC ⇔ PIC烧写器间的连接

PC与PIC烧写器間需要用RS-232C D-Sub9pin 公⇔母 的串口连接线连接。

如果PC方面准备不了串口,请购买USB连接的串口转换器(通常被分配为COM5等)与PC连接。由不匹配引起的,USB连接的串口转换器不能正常地被识别为串口的情况也有,这种情况时请与教官商量。

<图片4> PC方面的串口连接

<图片5> PIC烧写器方面的串口连接


4.4.4 确认PC 与 PIC programmer间的通信状况

接下来我们确认一下PC 与 PIC programmer间是否正常通信,及PIC烧写软件是否能正常识别PIC烧写器等各种通信状况的确认。

(1)把PIC programmer通上电源。确认烧写器线路板上部的 Power(D1)LED是否点灯。

(2)在PC上启动PIC烧写软件。就会启动以下的画面(下面的例子是在COM4上识别出了烧写器)。

<图4> PIC烧写器的启动画面

(3)选择[オプション(O)]→[COMポート設定(C)],选择连接的串口号。标准配备的串口通常都是在COM1:或COM2:。经由USB连接的串口转换器与PC连接的时候,通常被识别为COM5:以后的串口号。

(4)PIC烧写器被正常识别时(例如COM2:),下部的信息框中就会显示,

    ライターを COM2 に検出しました。


    COM2:を選択しました。

的信息,右下端的黄色文本框中表示的是,现在连接中的串口号以及PIC烧写器上的控制固件的版本号。例如下面的例子。

    COM2: AKIPIC-PGM V3.00


<图5> PIC烧写软件识别失败的状态/b>

<图6> PIC烧写器识别成功的状态


4.4.5 往PIC16F877中写入v12.hex HEX格式文件(2004/9/9追加,2005/4/29修改)

(1)把PIC烧写软件窗口右上端的[デバイス設定]设定为PIC16F877(重要)

<图7> 写入的单片机设定为PIC16F877

 

(2)因为要选择PIC单片机格式,PIC烧写器线路板右上端的设定PIC单片机类型的JP2变为 1-2短路(重要)

<图片6> JP2变为 1-2

(3)在PIC烧写器的40pin插座中插入周边扩充组件中附属的PIC16F877-20/P ※不使用PICNIC线路板上的PIC16F877A-1/P!

IC有半圆缺口的一段朝上插入。如果方向弄错,PIC单片机会损坏。插入后,把零插拔力插座的把手按下固定IC。

<图片7> PIC16F877-20/P 的固定

 

(4)单击窗口左上端[Hexロード]按钮,指定HEX格式机器语言文件(v12.HEX)。按[開く]按钮后,プログラムメモリ(程序存储器),EEPROMメモリ(EEPROM存储器)中的内容会更新为装载的(v12.hex)。

※PICライタソフトウェアは、ドラッグ&ドロップには対応していないので注意。2005/4/29追記

(5)按下改变PIC烧写软件窗口右端[Config. Word設定]的设定(重要)
※在这里有关于这方面的记述

 FOSC=HS  WDTE=Disable  PWRTE=Enable  BODEN=Enable
 LVP=RB3:GPIO  WRT=Enable  DEBUG=Disable  CP=Disable

(6)按PIC烧写软件窗口右上端的[プログラム]按钮,开始写入程序(所需时间:约3分)。在写入作业开始之前,有可能会提示是否要覆盖现有的固件的提问 [上書きしますか?] ,请回答[はい]

(7)在写入中时线路板上的Busy(D2)LED点灯。写完后会自动效验写入的内容,并把结果汇报出来。

※書き込みエラーがおこる場合、書き込みソフトウェアと、ライタのバージョン、ならびにPICマイコンの種別の不一致が考えられる。書き込みが正常に行えるのは以下の組み合わせである。

・書き込みソフトver2.9.5+ライタver.3+PIC16F877-20/P
・書き込みソフトver2.9.21(最新)+ライタver.4バージョンアップROM+PIC16F877/877A

●更新后固件的动作试验

PICNIC方面的IC插座装上零插拔力插座更新后的PIC动作试验


4.5.1 PICNIC方面的IC插座装上零插拔力插座

※注意:PICNIC方面在插拔IC的时候,必须把PICNIC的电源切断!! 如果不切断电源(程序正在执行的状态),拔下IC的话,IC损坏的可能性很大。

PICNIC方面的PIC-IC插座不插任何IC。这时把零插拔力插座装上。

DIP300mil 40pin 零插拔力插座TEXTOOL)(←PICNIC周边扩充组件中附属。)

※重装時のポイント:PICNIC側ICソケットへゼロプレッシャーソケットを重装する際、PICNIC基板の左下端の、LCD輝度調整用VR1半固定抵抗が少々邪魔になる。そこで、予め、基板向かって左手方向へ、VR1をちょっと指で倒しておく。(VR1の足を折らない程度で止めて置こう。少し勇気が必要である。)

<图片8> 用手指轻轻的压倒LCD辉度调整用的VR1半固定电阻器

 

<图片9> 在PICNIC方面把零插拔力插座装上


4.5.2 更新后的PIC动作试验

把在前面的§4.4.5 中更新了固件的PIC单片机,用§3.4 §3.4 动作确认,及§3.5 经由浏览器的控制 确认是否和以前一样正常动作。(注意EEPROM的状态已被初始化)

<图片10> PICNIC侧的IC插座中插入更新后的PIC单片机IC

●固件更新的例

更新例1:版本号的改变更新例2:固件更新者的显示


4.6.1 更新例1:版本号的改变

固件v12.asmの47行及7272行,有固件版本号的定义的地方。这个数分别是,写入EEPROM的值与web控制时default读取的值,会保存到PIC单片机中。

<改变前>

47行目: DE 1,2,0,0 ; Farmware Version x,x,x,x

7272行目: DT 1,2,0,0 ; Farmware Version x,x,x,x

把第4个0改为 0→1 ,来试着改变版本号。

<改变后>

47行目: DE 1,2,0,1 ; Farmware Version x,x,x,x

7272行目: DT 1,2,0,1 ; Farmware Version x,x,x,x

※ヒント:この4つの組は最初の2つがメジャーバージョン番号、後ろの2つがマイナーバージョン番号という分け方になっている。従って、ver1.3というメジャーバージョンがリリースされる場合を想定し、ユーザは後ろの2つのバイトだけ変更するようにする。なお、各番号はバイト範囲で値の設定が可能なので、マイナーバージョン番号は 0.0 ~ 255.255 まで付けることができる。

把它以v12-0427.asm等文件名保存,用MPASM汇编后,再用PIC烧写器更新固件,把更新后的PIC单片机装在PICNIC线路板上,然后用web浏览器确认版本号是否改变。


<图8> 版本号改变后的PICNIC 远程控制I/O web浏览器页面的例


4.6.2 更新例2:固件更新者的显示

固件v12.asm的7255行,7256行中,有显示固件著作者权的地方。

<改变前>

7255行目: DA "<P><HR>Copyright (c) 2000-2001 by <A HREF=\"http://www.tristate.ne.jp\">TriState Co.,Ltd.</A> "
7256行目: DB 06,8A ;,13,10

※ヒント1:DB 06,8A を定義することで、HTMLメッセージ出力時に[CR]+[LF]のコードが生成され「改行」が行われる。webブラウザ側としてはHTMLにおける「改行」は表示上、意味がない。

※ヒント2:DA擬似命令にて文字列定義を行うためのダブルクオテーション "" の内部に、HTMLのアンカータグのためのダブルクオテーションを含める場合、\" としてquoteしておく。これが面倒な人の中では、シングルクオート ’ を用いることもある(基本ワザ)

参考7255行,在7255行与7256行之間,试着追加一行来显示固件更新者。例如,学号为 02TA699X Nagano TARO同学的情况下,需要进行以下的变更。

<改变后>
7255行目: DA "<P><HR>Copyright (c) 2000-2001 by <A HREF=\"http://www.tristate.ne.jp\">TriState Co.,Ltd.</A> "

7256行目: DA "<BR>Firmware Modified by <A HREF=\"http://sugsi.jp/\">Nagano TARO (02TA699X)</A> "

7257行目: DB 06,8A ;,13,10

把它以v12-0427.asm等文件名保存,用MPASM汇编后,用PIC烧写器更新固件,把更新后的PIC单片机
装在PICNIC线路板上,然后用web浏览器确认固件更新者是否会显示出来。


<图9> 固件更新者的显示

※ヒント3:この調子で、webブラウザへ送出するHTML形式の部分を増やしていくと、様々な表示が可能となるが、(1)PICマイコン上の使用可能メモリの制限、ならびに(2)TCP/IPの1メッセージ送出毎(ESTAB00~04の各ステップ)で送出可能なバイト数の制限、のために、無制限にメッセージ量を増やすわけにはいかない。

 

信州大学インターネット大学院

wasaki@cs.shinshu-u.ac.jp
Copyright(c) 2005 Katsumi Wasaki. All rights reserved.