自己做的一个编程器(使用Mega16模拟AVR Dragon)已经可以支持AVR的所有编程接口了,现在准备在这个上面实现一个离线编程器,想咨询一下离线编程器的操作方式。硬件上多余的IO口除了编程按键外,还有最后一个。
目前我自己设想如下(希望能多提写意见和建议):
实现方式: 通过扩展AVRP(AVRISP mkII,JTAGICE mkII,AVR Dragon都支持)来支持离线编程。AVRP的第0页为通用命令,第1页为ISP命令,第2页为HVPP命令,第3页为HVSP命令,第10页扩展为离线编程相关的命令。 上位机使用Lazaurs完成(使用自己熟悉的Pascal语言,可以在多平台上使用(Win,Linux,Mac)),并且同时也是avrdude的图形界面前端(avrdude提供了各个编程接口所需要的参数)。
操作方式: 1.Bootloader:上电时,如果检测编程按钮按下,则进入Bootlaoder。 2.Atmel工具:上电后,正常的USB接口上的操作都是模拟的Atmel工具。并且通过扩展AVRP来支持上位机下载数据到离线编程器。 3.离线编程器:上电后,按下编程按钮,如果这时USB接口已经分配了地址,则还没有想好干什么;如果USB没有分配地址(USB接口只是供电)并且Dataflash里有有效的离线编程数据,则等待按钮释放,然后以默认编程方式编程(2个LED提示编程方式,如果都不亮则为"设置编程方式"模式)。如果要设置编程方式的话,则长按编程按钮(进入设置模式后,LED都灭),然后短按编程按钮来选择编程方式(对应的LED会亮),设置完后再一次长按结束操作。
这种操作方式的好处就是可以只使用一个IO来支持所有操作,但不确实是否会方便使用? |