搜索
bottom↓
回复: 69

AVRminiProg开发工具详细制作资料

[复制链接]

出0入0汤圆

发表于 2007-11-8 22:17:08 | 显示全部楼层 |阅读模式
作者: chengyingavr

【介绍】

  AVRminiProg开发工具其实就是我以前做的AVRminiISP,AVRminiJTAG,AVRminiDragon的整和.这些工具使用同一个硬件,通过写入不同的固件来模拟不同的Atmel官方开发工具.并且都使用了AVRUSB,包括AVRUSBBoot(当然也可以不用),通过USB接口与PC通信,在PC端使用的驱动是Atmel官方的AVRStudio自带的驱动,不用安装第三放下载程序和驱动.其中AVRminiISP模拟的是Atmel官方的AVRISP mkII开发工具;AVRminiJTAG模拟的是Atmel官方的JTAGICE mkII开发工具,但JTAG接口只能下载程序,不能调试;AVRminiDragon自然就是模拟Atmel官方的AVRDragon开发工具了,JTAG接口同样不能用与调试,并且由于芯片IO口和程序容量的限制,只支持ISP和JTAG接口,没有做HVPP和HVSP的支持.




  注意:虽然上位机使用AVRStudio,但不能使用AVRStudio更新.
  注意:由于Atmel没有提供JTAG接口用于调试时的4个关键JTAG命令的详细资料,所有AVRminiProg开发工具即使有JTAG接口,但只支持JTAG程序下载,不支持JTAG调试.


当然,要做的小也是可以的(Clearance 9mil,width 10mil)




【重要说明】
1.所有资料免费公开,并会不定期更新(取决于自己的空余时间的多少)
2.所有资料不得用于商业目的
3.AVRUSB,AVRUSBBoot以及bootloaderHID参考其各自的License
4.Atmel官方开发工具的USB协议均从Atmel网站下载,AVRDragon的协议使用和JTAGICE mkII一样的协议,只是修改了USB描述符和握手报文
5.使用者自行承担所有风险
6.如果有什么意见和建议欢迎mail我:simon_qian#126.com(把#换成@)

【特色说明】
USB接口的AVR开发工具也有不少了,下列是AVRminiProg的一些特色:
1.模拟Atmel官方的开发工具,上位机使用AVRStudio,无须第三放软件支持
2.具有离线编程功能,而且和模拟的Atmel官方的开发工具兼容,上位机仍旧使用AVRStudio(未完成)
3.配置功能,可以方便制作自己定义的硬件,基本只需做接口定义上的修改

【AVR_DEVICE_AVRPHENIX离线编程器使用(未完成)】
  AVR_DEVICE_AVRPHENIX离线编程器是在所模拟的Atmel官方开发工具里再加入一个离线编程功能,上位机仍旧使用AVRStudio(PC上仍旧使用Atmel官方开发工具的驱动,而且是兼容的).上电时,AVRmini会根据编程按钮是否被按下来进入离线编程模式还是模拟Atmel官方开发工具模式.如果按钮被按下并且离线编程数据有效的话,则进入离线编程模式(无USB接口);否则,进入模拟Atmel官方开发工具模式.在模拟Atmel官方开发工具模式下,当使用AVRStudio操作时,如果编程按钮被按下,则AVRStudio的操作会被记录到离线编程的数据(包括编程参数和编程数据),AVRStudio做读取校验时,则是从记录的数据里直接读取,之后,按钮放开,确认操作(写下离线编程数据的有效位).

【资料】
SCH&PCB:
SCH(PDF)(2007.10.31):点击此处下载ourdev_180325.rar(文件大小:16K)
PCB(Protel99SE)(2007.10.31):点击此处下载ourdev_180326.rar(文件大小:14K)

Source:
AVRUSBBoot:
AVRUSBBoot(2007.11.4):点击此处下载ourdev_180327.rar(文件大小:97K)
AVRUSBBoot Software&Driver(2007.10.31):点击此处下载ourdev_180328.rar(文件大小:178K)

bootloaderHID(无需驱动):
bootloaderHID(2007.11.4):点击此处下载ourdev_180329.rar(文件大小:97K)
bootloaderHID Software原版(2007.11.4):点击此处下载ourdev_180330.rar(文件大小:18K)

AVRminiProg(2007.11.8):点击此处下载ourdev_180331.rar(文件大小:105K)

【制作说明】
参考原理图,PCB左上脚的跳线用于AVRUSBBootloader,编程接口为JTAG接口,使用ISP时,需要类似JTAGICE mkII的JTAG2ISP转换头.

【已测试芯片】
ATmega48,ATmega88,ATmega8,ATmega169,AT90CAN32,Mega128



原文出处: http://blog.21ic.com/user1/3743/archives/2007/43117.html 澄滢工作室
头像被屏蔽

出0入0汤圆

发表于 2007-11-9 11:23:57 | 显示全部楼层
谢谢。

出0入0汤圆

发表于 2007-11-9 13:03:11 | 显示全部楼层
感谢。

出0入104汤圆

发表于 2007-11-9 18:51:55 | 显示全部楼层
很简单就可将<USBASP>硬件电路,变成USB AVRISP MKII 编程器 将AVRminiProg原码作简单的修改,超简单!!!
使用AVRStudio(PC上仍旧使用Atmel官方开发工具的USB驱动,而且是兼容的)非常稳定。


AVRminiProg原码写得结构非常好,优化率很高,非常出色。

出0入0汤圆

发表于 2007-11-9 20:13:36 | 显示全部楼层
不用修改源代码,去下载最新版本,我重写的app_cfg.h文件,基本在这个文件里更具硬件配置就可以了
准备增加S51/52的支持,正在等待Demo板
另外,AVRminiProg的主页将移到www.SimonQian.com\en\AVRminiProg,21ic的blog最近不太稳定

AVRminiProg只发布了一个多礼拜,所以还有很多的问题,如果发现请mail我:simon_qian#126.com
能否将配置好的app_cfg.h文件发给我?我没有USBasp测试

出0入104汤圆

发表于 2007-11-9 22:27:03 | 显示全部楼层
S51/52可读FLASH、可读芯片ID码、可加密,现时不能对S51/52写入FLASH。


/* Name: app_cfg.h
* Project: AVRmini
* Author: Simon Qian
* License: will add soon
* Last Update: 2007-11-7 0:40:52
*/
#define AVR_DEVICE_AVRISP_MKII                0x01
#define AVR_DEVICE_JTAGICE_MKII                0x02
#define AVR_DEVICE_AVRDRAGON                0x03
#define AVR_DEVICE_AVRPHENIX                0x80

#define  AVRmini                                        0x10
#define  USBASP                                         0x20
#define  HARDWARE_SELECTION                        AVRmini

#define AVR_DEVICE                                        (AVR_DEVICE_AVRISP_MKII)
#define AVR_DEVICE_ATMEL                        (AVR_DEVICE & 0x0F)
#define AVR_DEVICE_OFFLINE_EN                (AVR_DEVICE & AVR_DEVICE_AVRPHENIX)

/*************************** ADC *****************************/
// devices like USBasp has no AD connected to target VCC,just define AD_En to 0
#define AD_En                                                0

#define AD_VCC_MUX                                        (ADC_VREF_BANDGAP | ADC_CHANNEL_ADC0)
#define ADVref                                                11
#define AD_VCC_RATE                                        5

/*************************** LED *****************************/
#if HARDWARE_SELECTION == USBASP

#define LED_Green                                        (1 << 1)
#define LED_Red                                                (1 << 3)

#define LED_Init()                                        do{PortD_SetPin(LED_Green | LED_Red);PortD_SetOutput(LED_Green | LED_Red);}while(0)
#define LED_On(led)                                        PortD_ClrPin(led)
#define LED_Off(led)                                PortD_SetPin(led)

#else

#define LED_Green                                        (1 << 0)
#define LED_Red                                                (1 << 1)

#define LED_Init()                                        do{PortC_SetPin(LED_Green | LED_Red);PortC_SetOutput(LED_Green | LED_Red);}while(0)
#define LED_On(led)                                        PortC_ClrPin(led)
#define LED_Off(led)                                PortC_SetPin(led)

#endif
/*************************** JTAG *****************************/
#define JTAG_TAP_TMS                                P(6)
#define JTAG_TAP_TCK                                P(5)                // MUST be the same PIN as SPI_SCK
#define JTAG_TAP_TDI                                P(3)                // MUST be the same PIN as SPI_MOSI
#define JTAG_TAP_TDO                                P(4)                // MUST be the same PIN as SPI_MISO

#define JTAG_TAP_TMS_SETOUTPUT()        PortD_SetOutput(JTAG_TAP_TMS)
#define JTAG_TAP_TMS_SETINPUT()                PortD_SetInput(JTAG_TAP_TMS)
#define JTAG_TAP_TMS_SET()                        PortD_SetPin(JTAG_TAP_TMS)
#define JTAG_TAP_TMS_CLR()                        PortD_ClrPin(JTAG_TAP_TMS)

#define JTAG_TAP_TCK_SETOUTPUT()        PortB_SetOutput(JTAG_TAP_TCK)
#define JTAG_TAP_TCK_SETINPUT()                PortB_SetInput(JTAG_TAP_TCK)
#define JTAG_TAP_TCK_SET()                        PortB_SetPin(JTAG_TAP_TCK)
#define JTAG_TAP_TCK_CLR()                        PortB_ClrPin(JTAG_TAP_TCK)

#define JTAG_TAP_TDI_SETOUTPUT()        PortB_SetOutput(JTAG_TAP_TDI)
#define JTAG_TAP_TDI_SETINPUT()                PortB_SetInput(JTAG_TAP_TDI)
#define JTAG_TAP_TDI_SET()                        PortB_SetPin(JTAG_TAP_TDI)
#define JTAG_TAP_TDI_CLR()                        PortB_ClrPin(JTAG_TAP_TDI)

#define JTAG_TAP_TDO_SETINPUT()                PortB_SetInput(JTAG_TAP_TDO)
#define JTAG_TAP_TDO_GET()                        PortB_GetPin(JTAG_TAP_TDO)
#define JTAG_TAP_TDO_SET()                        PortB_SetPin(JTAG_TAP_TDO)
#define JTAG_TAP_TDO_CLR()                        PortB_ClrPin(JTAG_TAP_TDO)

/*************************** ISP *****************************/
// SPI Port for ISP(SPI0 Must be used)

#define SPI_MISO                                        P(4)
#define SPI_MOSI                                        P(3)
#define SPI_SCK                                                P(5)

#define SPI_SetMOSIOutput()                        PortB_SetOutput(SPI_MOSI)
#define SPI_SetMOSIInput()                        PortB_SetInput(SPI_MOSI)
#define SPI_SetMOSI()                                PortB_SetPin(SPI_MOSI)
#define SPI_ClrMOSI()                                PortB_ClrPin(SPI_MOSI)

#define SPI_SetMISOInput()                        PortB_SetInput(SPI_MISO)
#define SPI_GetMISO()                                PortB_GetPin(SPI_MISO)

#define SPI_SetSCKOutput()                        PortB_SetOutput(SPI_SCK)
#define SPI_SetSCKInput()                        PortB_SetInput(SPI_SCK)
#define SPI_SetSCK()                                PortB_SetPin(SPI_SCK)
#define SPI_ClrSCK()                                PortB_ClrPin(SPI_SCK)

#if HARDWARE_SELECTION == USBASP

#define ISP_RST                                                P(7)
#define ISP_SetRST()                                PortD_SetPin(ISP_RST)
#define ISP_ClrRST()                                PortD_ClrPin(ISP_RST)
#define ISP_SetRSTOutput()                        PortD_SetOutput(ISP_RST)
#define ISP_SetRSTInput()                        PortD_SetInput(ISP_RST)

#else

#define ISP_RST                                                P(2)
#define ISP_SetRST()                                PortB_SetPin(ISP_RST)
#define ISP_ClrRST()                                PortB_ClrPin(ISP_RST)
#define ISP_SetRSTOutput()                        PortB_SetOutput(ISP_RST)
#define ISP_SetRSTInput()                        PortB_SetInput(ISP_RST)

#endif
/*************************** AVRUSB *****************************/
/* ---------------------------- Hardware Config ---------------------------- */
#if HARDWARE_SELECTION == USBASP

#define USB_CFG_IOPORTNAME      D
/* This is the port where the USB bus is connected. When you configure it to
* "B", the registers PORTB, PINB and DDRB will be used.
*/
#define USB_CFG_DMINUS_BIT      4
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
* This may be any bit in the port.
*/
#define USB_CFG_DPLUS_BIT       2
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
* This may be any bit in the port. Please note that D+ must also be connected
* to interrupt pin INT0!
*/

#else

#define USB_CFG_IOPORTNAME      B
/* This is the port where the USB bus is connected. When you configure it to
* "B", the registers PORTB, PINB and DDRB will be used.
*/
#define USB_CFG_DMINUS_BIT      0
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
* This may be any bit in the port.
*/
#define USB_CFG_DPLUS_BIT       1
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
* This may be any bit in the port. Please note that D+ must also be connected
* to interrupt pin INT0!
*/
#endif

#define USB_CFG_CLOCK_KHZ       (F_CPU/1000)
/* Clock rate of the AVR in MHz. Legal values are 12000, 15000, 16000 or 16500.
* The 16.5 MHz version of the code requires no crystal, it tolerates +/- 1%
* deviation from the nominal frequency. All other rates require a precision
* of 2000 ppm and thus a crystal!
* Default if not specified: 12 MHz
*/

/* ----------------------- Optional Hardware Config ------------------------ */

/* #define USB_CFG_PULLUP_IOPORTNAME   D */
/* If you connect the 1.5k pullup resistor from D- to a port pin instead of
* V+, you can connect and disconnect the device from firmware by calling
* the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).
* This constant defines the port on which the pullup resistor is connected.
*/
/* #define USB_CFG_PULLUP_BIT          4 */
/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined
* above) where the 1.5k pullup resistor is connected. See description
* above for details.
*/

/*************************** KEY *****************************/
#if AVR_DEVICE_USBASP

#define PROGKEY_Pin                                        (1 << 2)
#define PROGKEY_Init()                                do{PortD_SetPin(PROGKEY_Pin);PortD_SetInput(PROGKEY_Pin);}while(0)
#define PROGKEY_IsDown()                        PortD_GetPin(PROGKEY_Pin)

#else

#define PROGKEY_Pin                                        (1 << 2)
#define PROGKEY_Init()                                do{PortC_SetPin(PROGKEY_Pin);PortC_SetInput(PROGKEY_Pin);}while(0)
#define PROGKEY_IsDown()                        PortC_GetPin(PROGKEY_Pin)
#endif
/*************************** Dataflash *****************************/

出0入0汤圆

发表于 2007-11-9 22:50:57 | 显示全部楼层
酷毙了!

出0入0汤圆

发表于 2007-11-10 00:58:07 | 显示全部楼层
好东西

出0入0汤圆

发表于 2007-11-10 06:25:45 | 显示全部楼层
重写了底层spi接口代码,现在程序空间使用超过4K了,可以使用速度优化(之后程序空间为5K多,Mega168),性能提升很大,CAN32测试的过大速度超过7KB/s
手头没有S51/52的芯片(代理那里也没有样片),实在没办法调试,等以后有样片了,再提供支持吧

多谢红日,PROGKEY是用在离线编程上的,暂时没有用,USBasp也有这个按键?
头像被屏蔽

出0入0汤圆

发表于 2007-11-10 07:01:15 | 显示全部楼层
chengyingavr, 我们有S51/S52 芯片现货。型号请参考:

点击进入  其它的AVR型号,你也可以到我们的邮购部上查。能点击“购买”的均是我们有实时库存的,都能送给你。

请将需要的型号与数量告诉我,我会发快递免费送给你。你的地址是上海市*****603单元 ?电话 133**66 ? 如果是的话,我会安排工作人员立即发货给你,第二天你就能收到。

能将红日引出来,并且叫好的的作品,我们当然会全力支持 :)

出0入0汤圆

发表于 2007-11-10 09:04:43 | 显示全部楼层
AVR JTAG OCD (Private) Commands
Document Date 05 April 2003

JTAG Instruction 0x08 - Force Break

JTAG Instruction 0x09 - Run

JTAG Instruction 0x0A - Execute AVR Instruction (2 Words!)

use 0x0A, SDR 0xFFFF0000 to read PC (actually returns PC+2 or PC+4)

JTAG Instruction 0x0B - Access OCD Registers

there are total 16 Addressable Registers
after IR next DRSHIFT is RW Flag (1=Write) + 4 Bits Address
those Data in Instruction is 21 (5 + 16) bits
note for read operation OCD Address need to be pre latched!

Register 0 PSB0

Register 1 PSB1

Register 2 PDMSB

Register 3 PDSB

Register 8 Break Control Register (BCR)

Bit   rw   Description  
D15   rw   1=Enable Timers to Run during Break  
D14   rw   1=PC is read as +4 not +2 after break ?  
D13   rw   1=Break on change Flow ?!  
D12   rw   1=Enable PSB0  
D11   rw   1=Enable PSB1  
D10   rw   1=Enable PDMSB as single break  
D9   rw   1=Enable Mask in Break Comparison  
D8   rw   1=  
D7   rw   1=*  
D6   rw   1=  
D5   rw   1=  
D4   rw   1=*  
D3   rw   1=*  
D2   rw   1=  
D1-0   r   (read as 0)  

* note when D7, D4, D3 are all set then PDSB is enabled s Program Break

Register 9 - Break Status Register (BSR)

Bit   rw   Description  
D15-D8   r     
D7   r   1=Break on change flow  
D6   r   1=Break on PSB0 (Reg0)  
D5   r   1=Break on PSB1 (Reg1)  
D4   r   1=Break on PDMSB (Reg2 as single break)  
D3   r   1=Break on PDSB (Reg3)  
D2   r   1=Break on ? (has been seen)  
D1   r   1=Break forced by OCD (Instr 8)  
D0   r   1=Break by AVR Break Instruction (0x9598)  

Register C - OCDR Readback

Bit   rw   Description  
D15-8   rw   OCDR 7..0  
D7-0   r   unused (read as 0)  

Register D - Control and Status Register

Bit   rw   Description  
D15   rw   1=Enable OCDR  
D14   rw   1=?  
D13-D5   r     
D4   r   1=OCDR written by AVR and not read by OCD  
D3   r   1=Reset not active  
D2   r   1=Reset not active  
D1-0   r

出0入0汤圆

发表于 2007-11-10 09:46:50 | 显示全部楼层
谢谢支持,那个地址应该是原来公司的,是一家Atmel代理
我现在正在联系S51的Demo板,如果真的有需要的话再联系Armok吧
AVRminiProg由于不限制硬件(有一个限制是要使用AVR),所以测试工作量很大,不是我能完成的,至少有如下变量:
使用的OSC频率,代码优化级别,目标芯片的频率和型号,AVRStudio上设置的操作频率。。。。

LS的是好多年前国外破解的JTAG调试命令,我也测试过,但还有很多信息不清楚,何况虽然Atmel公开的JTAGICE mkII的协议,但还有很多和调试命令有关的内容没有公开。

出0入0汤圆

发表于 2007-11-10 10:02:56 | 显示全部楼层
好东东,谢了

出0入104汤圆

发表于 2007-11-10 10:18:29 | 显示全部楼层
提供AVRminiProg.hex兼容<USBASP硬件 Mega8 12MHz>作测试。

点击此处下载ourdev_180419.rar(文件大小:6K)

出0入0汤圆

发表于 2007-11-10 12:41:08 | 显示全部楼层
好东西,   谢谢

出0入0汤圆

发表于 2007-11-10 12:41:44 | 显示全部楼层
晨辉   换头像了?

出0入0汤圆

发表于 2007-11-10 17:54:53 | 显示全部楼层
经过一个多礼拜的几乎一天一个版本的更新,现在的版本已经具备了一定的稳定性和可配置型,性能也非常不错
请去http://blog.21ic.com/user1/3743/archives/2007/43117.html下载最新版本测试
More user and more suggestion will make AVRminiProg more stable and more capable.

出0入50汤圆

发表于 2007-11-11 08:50:46 | 显示全部楼层
钱工的东东一定要顶下的,呵呵。

出0入0汤圆

发表于 2007-11-11 22:26:52 | 显示全部楼层
现在还在做电子秤?我已经失业很久了,哈哈
www.SimonQian.com构架已经完成,可以去那里看看,资料更加全

出0入0汤圆

发表于 2007-11-12 09:33:20 | 显示全部楼层
to 【15楼】 chengjia535
我头像的却换了,觉得这个图片 醒目 搞笑,所以就换了,呵呵

出0入0汤圆

发表于 2007-11-14 07:10:44 | 显示全部楼层
http://blog.21ic.com/user1/3743/archives/2007/43117.html
这里进不去啊?
头像被屏蔽

出0入0汤圆

发表于 2007-11-14 07:11:27 | 显示全部楼层
是的,经常进不去,所以最好将资料都上传到我们这里。

出0入0汤圆

发表于 2007-11-14 07:14:56 | 显示全部楼层
感谢 阿莫的及时回复

出0入0汤圆

发表于 2007-11-14 10:47:16 | 显示全部楼层
酷毕

出0入0汤圆

发表于 2007-11-14 12:17:32 | 显示全部楼层
太帅了

出0入0汤圆

发表于 2007-11-14 12:46:54 | 显示全部楼层
我用m88做的,avrasp ,usb-232都可以发现硬件,这个就是不行,说是一个无法识别的硬件,熔丝位与做其他的usb应用一样

出0入0汤圆

发表于 2007-11-14 21:53:51 | 显示全部楼层
21ic的blog最近总有些不稳定,所有资料已经上传到www.SimonQian.com,里面并有更加详细的介绍。

根据LS上的情况,测试了一下Mega88,我这里测试可以使用,也同时测试了一下最大速度,90CAN32擦除+31K下载+校验,总用时11.5s左右,也算正常。

由于没有AVRUSP,所以没法测试,不过需要注意的是app_cfg的资源配置都正确,并且AVRStudio选择正确的芯片和OSC频率(只支持12000000,16000000,15000000,16500000)。如果显示为无法识别的硬件的话,也有可能是AVRUSB的问题,AVRminiProg上使用的AVRUSB是测试版,不过我这里测试没有什么问题。

出0入50汤圆

发表于 2007-11-14 22:27:49 | 显示全部楼层
其实我和楼主一样的,呵呵,干的是老本行,但是现在说好听点是自由职业者,难听点就是...................失业啦,^_^
头像被屏蔽

出0入0汤圆

发表于 2007-11-15 07:32:32 | 显示全部楼层
谢谢【26楼】 chengyingavr ,

允许我将你的 blog 的文章转过来吗?都是很有份量的作品啊。我会注明你的名字与blog的地址的。谢谢。

出0入0汤圆

发表于 2007-11-15 08:53:58 | 显示全部楼层
是非常好的东西,如果是2年以前我会好不犹豫的去做。现在期待一款完全兼容AVR ISP2 USB的开发工具。包括稳定性与可自动升级。建议楼主把精力放在开发AVR ISP2 USB工具上。ISPJTAG、龙,从我用的感受来说,是没有价值,我只用STK500、STK200。
AVR仿真器没有必要使用,开发MEGA系列可用串口调试;开发TINY系列没有串口,但是程序区很小,用一个LED调试,就够了。上次用HT的MCU,用仿真器很不习惯,最终只使用了"全运行按纽“,用MOTO的也只用"全运行按纽“,其他都没有用到。
所有MCU仿真太不方便了,还不如ISP好。

出0入22汤圆

发表于 2007-11-15 08:59:46 | 显示全部楼层
谢谢楼主,精品哦。

出0入0汤圆

发表于 2007-11-15 14:51:34 | 显示全部楼层
to 28楼:没问题,最好在注明www.SimonQian.com,里面有AVRminiProg的更加详细的资料
to 29楼:现在也确实只在弄AVR ISP2,JTAGICE和AVRDragon我也觉得不是很必要,没花一点时间。我也从来不用调试,开发AVRminiProg的时候也完全没有用调试,对我来说调试还不如直接ISP快。不过自动升级可能就不行了,自动升级是使用官方的固件,就需要硬件行也兼容,AVRminiProg甚至可以自己定义硬件,所以不太可能做成自动升级的。另外,如果有USBasp的话,只需要修改一下app_cfg.h中的定义,就能使用了。

明天可以收到S51的Demo板,有望下周支持S51/52。

现在正在做个调查,是否有必要加上离线编程功能。
说明如下:
上位机使用AVRStudio,当AVRStudio操作AVRminiProg时,如果Prog_Key按下,则认为是发送的离线编程数据,把数据和编程参数放在Dataflash里,Prog_Key放开后确认,写下数据有效。下次上电时如果Prog_Key按下,则进入离线编程模式。
由于离线编程器也同时可以在线编程,所以占用的空间比较大,可能需要Mega168,并且暂时只会支持ISP。

先期的一些开发成本,以后会通过其他方式收回,代码还是会免费提供,但在我的网站上会加上购买硬件的内容,当然也可以自己制作,不会收取费用,如果方便支持一下的话可以购买我的硬件。

出0入0汤圆

发表于 2007-11-15 16:24:45 | 显示全部楼层
佩服楼主的精神。

出0入0汤圆

发表于 2007-11-16 01:53:47 | 显示全部楼层
离线编程功能代码完成,等有了Dataflash后,写一下Dataflash驱动,并整体调试一下,就基本没问题了
不过AVRminiProg发布没多久,还是先等AVRminiProg稳定,离线编程就暂时不发布了
头像被屏蔽

出0入0汤圆

发表于 2007-11-16 01:54:51 | 显示全部楼层
谢谢。这么晚仍在工作?

出0入0汤圆

发表于 2007-11-16 15:21:43 | 显示全部楼层
下周就要忙了,所以要抓紧时间在这个礼拜弄好,刚刚收到了S51Demo板,趁周末至少把S51/52的支持完成

To:ilikemcu 我爱单片机:你现在主要做哪些方面啊?我已经推掉了几个项目了,手头上的另一个项目也没时间做。费用一般由我估计完成项目花的时间,按照一天1000RMB(国外的按照一天250美金或者欧元)算,诶廉价劳动力啊。

出0入0汤圆

发表于 2007-11-16 15:39:45 | 显示全部楼层
不错,顶!
         我认为做脱机编程器最好上位机也要做,使用avrstudiuo操作起来麻烦。如果你认为可行可以采用usbasp的协议通讯,我可以为你修改个progisp版本,在联接编程器时,发送一个指令用来切换在线模式与脱机模式

出0入0汤圆

发表于 2007-11-16 20:33:40 | 显示全部楼层
谢谢zhifeng,不过AVRminiProg的目的就是和Atmel官方的开发工具兼容,可以参考www.SimonQian.com和AVRUSB主页中的介绍,不然就不是AVRminiProg了,呵呵。

离线编程功能虽然代码麻烦了一下,不过操作起来还是挺简单的,只是在当作AVRISP mkII使用时,接上一个跳线(绿LED会灭,等待初始化,主要时删除Dataflash中的内容,时间有几秒到10秒,然后灯亮,可以继续操作),然后的操作就时针对离线编程的数据了,操作完成后,吧跳线拔掉确认就可以了。 之后上电时,如果编程按键按下,则时能离线编程功能,否则还是和AVRISP mkII一样。

今天完成了S52的支持(S52的下载速度明显慢于AVR芯片,原因在于没有使用page模式,AVRISP mkII也不能支持S52的page模式编程),不过没有S51芯片,没办法测试。
有人能帮忙测试一下吗?如果OK就要发布最新代码了。

出0入50汤圆

发表于 2007-11-18 10:22:56 | 显示全部楼层
我还是老本行啊,衡器研发,最近在自己做个用M64做的仪表,还在编程序中,很麻烦的,还好比51速度快了N倍,资源也多,做好硬件驱动,其它的代码就比较容易了。

以后低端的还是要用51的,基本是STC的,成本的考虑,衡器已经做烂了,没办法的。

如果成本能够承受10¥以上的加价,我会首选AVR,暂时还没找到比AVR更好的能接替51的8位机。

有时候来不及了,是要推掉点生意,特别是做烂货产品研发的东西,我现在坚决不接了,哪怕闲着也不想做,对技术没提高,对行业前途也没帮助,就是为钱而做,有点划不来。这种工作已经推掉几个了。


还有那个编程器支持S52,我个人感觉没有太大的必要花这个时间了,呵呵。

出0入0汤圆

发表于 2007-11-19 08:29:19 | 显示全部楼层
支持!!!

出0入0汤圆

发表于 2007-11-19 14:45:51 | 显示全部楼层
TO ilikemcu:诶,我是什么项目都做,硬件,固件,Win上的软件包括驱动;单片机什么都用;汽车电子的,电动车的,工业应用的。我是因为没忙不过来才推掉一些项目的,看来要学学老兄你了,而且现在电动车的弄好了要去推广了,更加没有时间弄其他项目了。

S51/52其实属于敌人站一排,一枪干掉了几个,还有一个正好位于弹道上,顺便,o(∩_∩)o...哈哈。

出0入0汤圆

发表于 2007-11-20 06:41:41 | 显示全部楼层
关注

出0入0汤圆

发表于 2007-11-25 15:10:22 | 显示全部楼层
谢谢 楼主的分享
!!

出0入0汤圆

发表于 2007-11-26 08:33:52 | 显示全部楼层
关注LZ的AVR 4in1!

出0入0汤圆

发表于 2007-11-26 11:22:41 | 显示全部楼层
AVR 4in1我是用于自己的方案加密的,只sell过几套,目的是为了测试加密的可靠性,客户反应没有被破解过。以后AVR 4in1应该是我专用的编程器了,sell的可能性不大,AVR P&D(只有USB接口的并且只支持JTAG和ISP的AVR 4in1)也是

出0入0汤圆

发表于 2008-1-11 11:16:25 | 显示全部楼层
www.SimonQian.com,里面有AVRminiProg固件在用AVR STUDIO编译时
gcc plug-in: Error: Object file not found on expected location F:\avr_case\AVRminiProg\default\AVRminiProg.elf
这是怎么回事?

出0入0汤圆

发表于 2008-1-11 11:25:59 | 显示全部楼层
我也出现过,请参考:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=849048&bbs_page_no=1&search_mode=3&search_text=chengjia535&bbs_id=9999

出0入0汤圆

发表于 2008-1-11 11:43:40 | 显示全部楼层
大家都在顶
我也顶一个
就是现在还看不懂呢

出0入147汤圆

发表于 2008-1-11 23:01:39 | 显示全部楼层
留个记号

出0入0汤圆

发表于 2008-1-28 18:55:48 | 显示全部楼层
LZ在吗?能否修改一下,AVRminiProg已经跟新了几个版本了,现在可以支持HVPP和HVSP了,希望能把LZ把最新的连接加入
LZ位的代码是很老的版本了,建议使用最新的程序
详细资料可以看一下(21ic的blog坏了):http://blog.ednchina.com/SimonQian/82303/Message.aspx

出0入0汤圆

发表于 2008-1-28 20:02:02 | 显示全部楼层
哪位大哥有AVR入门的资料,我学完51单片机, AVR一点也不懂    我看了前面的原理图(ATmega16功能小板)看到
ISP  JTAG   就不懂了这2个是起什么作用的,怎么没看到  RXD和TXD啊 AVR和电脑怎么连接的??谢谢!!!!!

出0入0汤圆

发表于 2008-1-29 11:50:42 | 显示全部楼层
hi

出0入0汤圆

发表于 2008-3-16 22:45:24 | 显示全部楼层
不错,楼主厉害啊

出0入46汤圆

发表于 2008-3-17 18:35:46 | 显示全部楼层
记号!~

出0入0汤圆

发表于 2008-3-17 19:24:30 | 显示全部楼层
好东西mark

出0入0汤圆

发表于 2008-3-17 20:09:24 | 显示全部楼层
ding

出0入0汤圆

发表于 2008-4-3 12:46:17 | 显示全部楼层
那么哪里才能买得到呢?
头像被屏蔽

出0入0汤圆

发表于 2008-4-3 12:47:26 | 显示全部楼层
尝试找一下作者:chengyingavr  买吧。

建议chengyingavr  可以自制一批,供应给网友啊 :)

出0入0汤圆

发表于 2008-4-3 15:41:28 | 显示全部楼层
做个记号,继续关注

出0入0汤圆

发表于 2008-4-3 15:45:26 | 显示全部楼层
MARK

出0入46汤圆

发表于 2008-4-3 18:56:13 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-4-3 20:10:01 | 显示全部楼层
本来确实想做一些的,但发现自己毕竟不是在工厂里,家里做的话比较麻烦
尤其是AVRminiProg_Full的高压编程的方式和AVR Dragon一样,需要20芯的跳线,我做了3个,就再也不高兴做了。
而且,由于接口的pin脚数比较多,测试也非常麻烦。(原来打算一个编程器配3个这种20芯的跳线,其中2个专用Mega16和Megax8的)
所以,现在只是用这个来做批量编程,或者提供给客户编程使用(实现了一个“嵌入式”的脱机编程器)。

本来也考虑sylt的不用跳线的实现方式,但毕竟AVRminiProg_Full使用的协议和AVR Dragon一样,这个协议下不太容易实现成不用跳线的(该协议下,编程器甚至不需要知道高压编程的各个接口是怎么定义的)。
如果大家感兴趣的话,我再发一贴(本贴不是我发的,所以不能编辑),把最新的图片资料等发上来。
如果大家自制有困难,我再做一些。

出0入0汤圆

发表于 2008-4-3 22:32:28 | 显示全部楼层
做个记号,继续关注

出0入0汤圆

发表于 2008-4-4 15:48:17 | 显示全部楼层
mark and study

出0入0汤圆

发表于 2009-4-12 11:56:15 | 显示全部楼层
顶一下强贴。

出0入0汤圆

发表于 2009-4-15 16:57:52 | 显示全部楼层
good
mark

出0入0汤圆

发表于 2009-12-15 23:05:34 | 显示全部楼层
thank you!

出0入0汤圆

发表于 2010-3-24 20:43:30 | 显示全部楼层
原来 chengyingavr 就是 simonqian ?

出0入0汤圆

发表于 2010-12-25 10:42:51 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-30 21:50:31 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 15:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表