||
基本装备:带USB及JTAG电缆的IAR J-Link仿真器,IAR EWARM安装文件和DK-STR712F for ST STR712F评估板。
----------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------
评估板上的芯片是STR712FR2T6,通过datasheet了解到它具有多达272K(256+16K)字节的FLASH程序存储器,擦写寿命不低于十万次(足够玩上一阵子了),数据保存不少于20年。还有64K字节的RAM。另外片上还集成了众多资源。TQFP64封装。
我第一时间就把datasheet里的STR712F Package Pin out图打印出来。先从名字去了解712F的各个脚。
注意到DK板上的32个多功能双向I/O大都被引了出来,分别连接到八个座子上,扫眼过去分别标着ADC,Cop/Comp,I2C0,I2C1,HDLC,SPI0,SPI1,Smartcard,还有三个DB9:一个CAN和两个UART。
JTAG接口为20脚。
除此之外,板子上还有RS232电平转换器,CAN收发器,两级稳压将可能的外接电源稳压至5V和3.3V工作电压(STR712F芯片内置1.8V稳压器)。可以用跳线选择由外接电源(9V/300mA)或者由仿真器(若仿真器能够向外馈电)向目标板供电。
STR712F的主时钟由一个四脚的16MHz有源晶振提供,实时时钟由32768Hz的晶振提供。
待目标板上的电源指示灯点亮后,我开始安装软件。
ARM开发软件是我到IAR的网站下载的—Embedded Workbench for ARM(EWARM),它分好几个版本。我选择的是Kickstart edition(我老老实实地填IAR网站上的表,不久就收到一个麦××公司李小姐的电子邮件,不过我没回复,呵呵)。现在万利的主页已经提供了一个32K的EWARM公开下载,不用填表了。
软件安装完毕,我马上冲到软件的安装目录东翻翻西翻翻,找到…\arm\src\example\ST目录,打开STR71x子目录,从readme.txt文件知道这些example都是STMicroelectronics针对STR71x微控制器写给IAR EWARM环境的。如GettingStarted下的Led_Dimmer项目是有关ADC和I/O使用的例子等等。我心想,头一个要试的就是你了—GettingStarted!
IAR的J-Link黑乎乎的(好象Keil的ULink是灰灰的),一头是USB的方口,另一头则是JTAG的扁口。拿在手上很轻,适合带着到处溜达。花了不到五分钟的时间,我给J-Link安装了USB驱动。
双击…\arm\src\example\ST\STR71x\Led_Dimmer.eww文件启动EWARM环境。EW集成开发环境长着一副大众化的Windows应用软件脸,上边为菜单和快捷图标,左边为Workspace栏,右边为源程序窗口。浏览了一下Led_Dimmer项目的main.c文件,知道它主要演示AD转换和I/O。不及多想,我选择Project菜单下的Rebuild All,这时EWARM IDE的下边出现了一个Build窗口。
3 860 bytes of CODE memory
2 330 bytes of DATA memory
12 bytes of CONST memory
Errors: none
Warnings: none
Total number of errors: 0
Total number of warnings: 0
嗯,程序没什么语法错误,那就仿真look一look。
选择Project菜单下的Debug,几个窗口接连刷过(传说中的刷屏?)。EWARM IDE的右边出现了Disassembly窗口,下边则在Build旁边多了一个Debug Log页。
J-Link firmware: V1.20 (J-Link compiled Jul 25 2005 17:16:33 -- Update --)
JTAG speed is initially set to: 4000 kHz
Resetting Target using RESET pin
Initial reset was performed
J-Link found 1 JTAG device. ARM core Id: 3F0F0F0F(ARM7)
Device at TAP0 selected
**** Warning: Chip has already been halted.
Auto JTAG speed: 2666 kHz
4545 bytes downloaded (10.32 Kbytes/sec)
Loaded debugee: D:\Program Files\IAR Systems\Embedded Workbench 4.0 Kickstart\arm\config\flashloader\ST\FlashSTR71xF.d79
Target reset
Program exit reached.
3872 bytes downloaded into FLASH (1.96 Kbytes/sec)
Loaded debugee: D:\Program Files\IAR Systems\Embedded Workbench 4.0 Kickstart\arm\src\examples\ST\STR71x\GettingStarted\
Debug\Exe\Led_Dimmer.d79
Target reset
Driver does not support code coverage.
源程序窗口中文件main.c有一个箭头停留在int main(void)行,Disassembly窗口也有一个箭头停留在标号main下的第一条指令STR LR, [SP, #-4]。选择Debug菜单下的Go。
这时,目标板上接在P1.8 I/O上的发光二极管被点亮了,程序跑起来了!
-----------------------------------------------------------------------
-----------------------------------------------------------------------
我伸手去按目标板上的BUTTON。奇怪了,发光二极管有时闪烁,有时则稍稍变暗。是有点纳闷,不过看到板子在眨眼睛,我已经乐开了。
我回过头来看源程序,掰了手指头算一下,而后把if (!GPIO_BitRead(GPIO1,9))语句中的感叹号去掉。重新编译连接调试运行。还好,这次每当我按下板上的BUTTON按钮,发光二极管都闪烁了。
可是当我动手去转电位器时,二极管的亮度没有任何变化。又怎么了(我为什么说又)?
这次,我观察了一下电位器。哦,旁边有两个跳线位。翻出一个跳线接到CH0位置,再次转动电位器,发光二极管的亮度终于跟着变化了。
到这里为止,我第一次体验了EWARM + J-LINK + DK-STR712F,也是第一次感受ARM。