vsprog里,熔丝位、锁定位、甚至校准位数据都是用同样的方式配置,现以AVR的ATMega128作为示例,说明一下增加一块芯片的方法。
1.通用设置:
vsprog里,一个芯片系列的设置(比如avr8.xml)中的数据都是放在<series name="avr8"></series>之间。而单个型号的芯片的数据则是放在<chip name="atmega128"></chip>之间。通用设置包括芯片的编程模式(program_mode)、芯片ID(chip_id)、应用程序页大小(app_page_size)、应用程序页数量(app_page_num)、EE页大小(ee_page_size)、EE页数量(ee_page_num)、以及各种参数(对于不同芯片的意义不同,比如param0对于AVR8表示JTAG是否可以连续输入一页数据)。
<program_mode>ijp</program_mode>
<chip_id>0x001E9702</chip_id>
<app_page_size>256</app_page_size>
<app_page_num>512</app_page_num>
<ee_page_size>8</ee_page_size>
<ee_page_num>512</ee_page_num>
<param0>1</param0>
2.熔丝位、锁定位、校准位的设置方法
分别位于<fuse></fuse>、<lock></lock>和<calibration></calibration>之间。都针对于一个最长32位的数据,并且分成多个设置(<setting></setting>定义设置),每个设置可有多个选项(<choice></choice>之间)。下面来一个一个说明(以fuse为例子)。
fuse的属性有init和bytesize,init是初始值(和总的mask值一样),bytesize是字节大小,最大为4(mega128里,熔丝位是3字节数据):
<fuse init="0xFFFFFF" bytesize="3">
之后定义一些警告信息(<warning></warning>之间、每个警告信息在<w></w>之间):
<warning>
<w mask="0x004000" value="0x004000" msg="WARNING! These fuse settings will disable the JTAG interface!" />
<w mask="0x002000" value="0x002000" msg="WARNING! These fuse settings will disable the ISP interface!" />
</warning>
警告信息有mask、value、msg 3个属性,当实际数据和mask求于后的值等于value时,会显示警告信息。<warning>和<setting>是同一层次的数据,只是<warning>要定义在<setting>前,并且只能有一个<warning>(可以具有多个<w>)。按下OK后,会进行警告的检测,如果符合警告的设置,则会显示:
设置信息:
<setting name="M103C" mask="0x020000" info="ATmega103 Compatibility Mode" checked="0" />
<setting name="WDTON" mask="0x010000" info="Watchdog Timer always on" checked="0" />
设置信息一定要定义name、mask,用于指定设置的名字和mask,info可选,用于指定提示信息。以上这种是check类型的设置,可以有checked和unchecked属性,用于定于勾选和非勾选状态下的数值,如果只定义一个的话,程序会自动根据这个数据和mask求异或得到另一个。GUI中,如下显示:
<setting name="BOOTSZ" mask="0x000600" info="Select Boot Size">
<choice value="0x000600" text="Boot Flash size="512" words start address=$FE00" />
<choice value="0x000400" text="Boot Flash size="1024" words start address=$FC00" />
<choice value="0x000200" text="Boot Flash size="2048" words start address=$F800" />
<choice value="0x000000" text="Boot Flash size="4096" words start address=$F000" />
</setting>
以上这个设置,定义了几个选项,系统会自动使用combobox来显示,每个选项只需要定义value和text属性,表示选中该选项时候对应的数值和显示的内容。
<setting name="EXTENDED" mask="0xFF0000" info="EXTENDED" radix="16" shift="16" bytelen="1" />
<setting name="HIGH" mask="0x00FF00" info="HIGH" radix="16" shift="8" bytelen="1" />
<setting name="LOW" mask="0x0000FF" info="LOW" radix="16" shift="0" bytelen="1" />
以上选项指定了radix和shift,表示进制和数据偏移,系统会使用Edit组件来表示。由于以上定义其实和之前的某些定义在位上有冲突,系统会自动空开一行显示:
另外,setting还可以有一个ban属性,用于禁用在某个program_mode下的使能,比如:
<setting name="SPIEN" mask="0x002000" ban="i" info="Serial program downloading (SPI) enabled" checked="0" />
ban="i"表示在i模式下(ISP),ISP使能位是不可写的。
<setting name="1.0 MHz" mask="0x000000FF" info="OSCCAL at 1.0 MHz" ban="*" radix="16" shift="0" />
<setting name="2.0 MHz" mask="0x0000FF00" info="OSCCAL at 2.0 MHz" ban="*" radix="16" shift="8" />
<setting name="4.0 MHz" mask="0x00FF0000" info="OSCCAL at 4.0 MHz" ban="*" radix="16" shift="16" />
<setting name="8.0 MHz" mask="0xFF000000" info="OSCCAL at 8.0 MHz" ban="*" radix="16" shift="24" />
ban="*"表示在所有模式下都不可写,也就是只读属性。
系统会自动根据xml中的设置,来自动生成界面,开发中的界面是空的。用于可以自己修改属性来得到不同的界面。比如,如果系统上面的校准数据以2进制的方式显示的话,仅仅需要把对应的radix设置为2即可:
文章评论(0条评论)
登录后参与讨论