|
|
PICNIC固件的更新 |
| ■PICNIC固件的更新 3. MPASM版固件的汇编 ←NEW
2006年4月5日 16:22 更新
|
●关于PIC16F877A版本的不匹配(2004/4/29追記)
<写入不良的原因> <回避方法> <总结> ●更新作业的概要4.1.1 作业顺序PICNIC固件可以经过以下的作业顺序来对其修改或更新。 (1)编辑MPASM版的固件(用MPASM汇编器可以汇编的用汇编语言编写的汇编源代码文件。*.asm) 如果不是象这次的小规模更新作业,而是在实际规模的[开发环境]的时候,通常使用ICE(In-Circuit Emulator:在线仿真器)来省略上记作业中的(3),(4)。所谓ICE是指与用来开发的计算机可以连动的仿真CPU。即可以直接把它插到开发对象的CPU插座上,然后边开发边确认动作。 PIC单片机用的ICE也存在,但是对于个人来说价格比较昂贵。 4.1.2 更新时所需的环境和器材 以下为PICNIC固件更新时所需的环境与器材。这次是把在Windows下进行开发作为前提,不过好像在UNIX上运行的GNU样的(GNUPIC)也存在。 [A] 程序的编辑,MPASM的执行环境 现在可以动作的固件的汇编语言文件 [B] 写入PIC单片机(PIC16F877-20/P 确认IC表面的刻字) 使用周边扩充组件附属的PIC16F877-20/P(确认IC表面的刻字)※新出货的PICNIC组件附属的 877A版本的IC(PIC16F877A-1/P)不能用ver.3的烧写器写入。
<图片1> PIC单片机烧写器 ver.3(ROM rev.B~D各种)
<图片2> DIP300mil 40pin零插拔力插座(TEXTOOL)
●安装MPLAB(含MPASM)4.2.1 关于MPLAB(IDE) 从以下可以下载Microchip社的 MPLAB PIC单片机集成开发环境(IDE)ver5.x 或 ver6.x。当前只释出有Windows版本。 MPLAB
ver5.70 的下载 (mp57full.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的程序包 (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) 为了方便以后的开发作业,最好在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. 表示汇编结束。点击[OK]按钮,MPASM终了。
<图3> MPASM的汇编中的对话框 ※Windowsのエクスプローラ(フォルダ)上のファイルアイコン(v12.asm)を、MPASMのショートカットアイコン上へドラッグ&ドロップすることで、アセンブルを実行させることも可能である。(ドラッグ&ドロップ可能なのはMPASMである。PICライタソフトウェアは、ドラッグ&ドロップには対応していないので注意。2005/4/29追記)
4.3.3 汇编后生成的文件群 上述的汇编正常完成后,就会生成如下的文件群。其中最重要的是,使用PIC烧写器写入PIC单片机的机器语言文件 v12.hex。 v12.hex : Intel-HEX格式的机器语言文件 ●用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。烧写器的电源使用电源适配器(
<图片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設定]的设定(重要)。
(6)按PIC烧写软件窗口右上端的[プログラム]按钮,开始写入程序(所需时间:约3分)。在写入作业开始之前,有可能会提示是否要覆盖现有的固件的提问 [上書きしますか?] ,请回答[はい]。 (7)在写入中时线路板上的Busy(D2)LED点灯。写完后会自动效验写入的内容,并把结果汇报出来。 ※書き込みエラーがおこる場合、書き込みソフトウェアと、ライタのバージョン、ならびにPICマイコンの種別の不一致が考えられる。書き込みが正常に行えるのは以下の組み合わせである。 ・書き込みソフトver2.9.5+ライタver.3+PIC16F877-20/P ●更新后固件的动作试验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 ●固件更新的例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>
" ※ヒント1:DB 06,8A を定義することで、HTMLメッセージ出力時に[CR]+[LF]のコードが生成され「改行」が行われる。webブラウザ側としてはHTMLにおける「改行」は表示上、意味がない。 ※ヒント2:DA擬似命令にて文字列定義を行うためのダブルクオテーション "" の内部に、HTMLのアンカータグのためのダブルクオテーションを含める場合、\" としてquoteしておく。これが面倒な人の中では、シングルクオート ’ を用いることもある(基本ワザ) 参考7255行,在7255行与7256行之間,试着追加一行来显示固件更新者。例如,学号为 02TA699X Nagano TARO同学的情况下,需要进行以下的变更。 <改变后> 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单片机
<图9> 固件更新者的显示 ※ヒント3:この調子で、webブラウザへ送出するHTML形式の部分を増やしていくと、様々な表示が可能となるが、(1)PICマイコン上の使用可能メモリの制限、ならびに(2)TCP/IPの1メッセージ送出毎(ESTAB00~04の各ステップ)で送出可能なバイト数の制限、のために、無制限にメッセージ量を増やすわけにはいかない。
|
|
wasaki@cs.shinshu-u.ac.jp |