统一编程和调试接口(UPDI)是用于对新的8位Atmel微控制器进行编程/调试的单线接口,代替了用于对AVR XMEGA微控制器进行编程的两线PDI接口。
因此,Atmelovsk协议的组成部分出现了-ISP,JTAG,debugWIRE,TPI,aWire,PDI,现在是UPDI。 同时,AVR的生态系统状况仍然非常令人绝望,因此我们将完全放弃使用它们,但是最新趋势使我们有些满意,因此撰写了这篇文章。
只有Atmel ICE程序员的幸运所有者才能使用UPDI协议,由于连接器的选择非常奇怪,因此使用起来不太方便,而且以工业规模购买时价格也不便宜。 此外,它需要安装Atmel Studio,该软件会定期拒绝使用它,因为根据我们公司的政策,大多数计算机都无法访问Internet,并且Studio会定期爬网以获取驱动程序或某些库,因此存在当程序员在系统中可见时(即,驱动程序已正确安装),但直到工作室可以访问网络且未强制更新,工作室本身才注意到他。
因此,在我们的开发中开始使用新的且相当方便的新型ATTiny1616微控制器之后(稍后将介绍其优势),就需要一种可用于在生产中写入主引导加载程序控制器的工具。 当然,无需
短信和注册即可访问互联网。
经过一番搜索,我在
Github (https://github.com/mraardvark/pyupdi)上发现了pyupdi项目-Python中UPDI协议的一种实现,该实现基于普通的UART协议,除了没有级别转换器,事实上,该转换器没有更加方便,因为它允许您使用标准的FTDI转换器芯片或与之对应的中文CH340 / 341。
该项目已下载并经过测试,事情进展顺利。 但是几天后,很明显他仍然不太适合我们。 原因:
- 必须安装Python和一整套软件包(我想提醒您,我们所谈论的是无法访问Internet的计算机),我必须下载并手动安装将近十二种相互依赖的软件包。 是的,原则上,您可以使用Python脚本在另一台计算机上创建可执行文件,这样就可以解决问题,但是问题列表并没有到此为止。
- 脚本中几乎没有错误检查,任何错误都以中断结束,该中断指示一堆文件相互链接,对于普通员工而言,这看起来不太清楚
- 无法读取控制器的内容
- 无法读取保险丝
- 脚本的速度非常不理想,几乎一分钟就写入了16 kb,这是由于传输过程中没有进行任何优化,所有操作都基于紧迫的时机
- 缺乏记录过程的指示
- 该项目不支持许多可能支持的处理器
- 该项目半死了,没有回应要求
这些问题在Python框架内已经解决了一段时间,但是在进行任何修复之后,我不得不重新构建项目,进行测试,以便希望用更熟悉,更快的东西(即C语言)重写脚本。 毕竟我们是嵌入者!
现在简要介绍新的tinyAVR 1-Series的优点:
- 外围设备和地址空间的真正统一,范围在2 kb至32 kb之间
- 方便的引导程序配置(在内存的开头!)
- ISP(系统内编程)算法的显着简化
- 过渡到冯·诺依曼建筑
- 带有24针的小封装(3x3毫米)中最多32 kb闪存,其中最多22个(!)可用作IO
- 内部振荡器存在于16/20 MHz
- 性能对保险丝配置的依赖性降低(永久性头痛AVR)
- 小型控制器的出色模拟部分(ADC / DAC /比较器,可以对输入/输出进行内部和外部切换)
- 单线编程和调试
- 极低的零售价(0.6欧元起16 kb)
作为程序员的主要部分,我们采用了基于中文CH340芯片的可用USB-UART TTL转换器,如下所示:

对于编程,只需连接两个输出RX和TX就足够了,因为它们已经配备了1.5k的输出电阻,如果您的转换器型号中没有电阻,则需要添加它。 组合输出连接到可编程芯片上的UPDI引脚;转换器接地也必须连接到控制器接地。 如果使用外部电源,则只需注意它是否与转换器使用的电源(3.3V或5V)相对应。 如果需要,则可以使用控制器或转换器本身为电路供电,这对于初始编程非常方便。
注意! 电阻是可选的,仅当转换器的输出端没有任何保护电阻时才需要焊接。
与CH340芯片相关的唯一问题是,它在我的Linux版本程序中不起作用,因为在编程协议中使用了奇偶校验位,而在我的内核版本中,CH340驱动程序无法正确使用此位。 也许这个问题将在不久的将来解决,但到目前为止,我还没有足够的耐心。
经过工作和实验,在IDE Code :: Blocks中编写并调试了
updiprog程序,其
源代码发布在Github上 。
在此版本的程序中实现了什么:
- 添加了将控制器闪存的内容读取到十六进制文件的功能
- 增加了读取所有控制器保险丝状态的功能
- 只要有可能,就添加带有相应消息的错误处理
- 增加了书写/阅读过程的指示
- 速度显着提高(读取16 kb大约需要6秒)
- 增加了对所有1系列微控制器的支持
该程序的初始大小约为25 kb,而已编译的源Python脚本则为5戈比。
我希望所完成的工作对某人有用。 我很乐意评论和建议。