Germs

Germs – 一个针对AVR Mega系列单片机的SDK

我使用AVR单片机的次数虽然不多,但是历史却很久。

最早接触AVR大概是在2年前了,当时需要设计一款家用LED照明电路,那时候我只会51,但却早已听闻AVR的先进性了,所以最后我使用了ATMega16。之后,因为全国机器人竞赛的缘故,我接触到了ATmega128。对于当时的我来说,AVR太先进了,具有前所未有的外设与处理速度,几乎所有的东西对我来说都是新的,学习起来很费力。

之后,我接触了Arduino,这是一款受到业界好评的Simple IO控制器。但是,对我来说,Arduino太简陋、难用,所以之后我仍然自己完成所有的代码,从底层到应用层。

直到有一天我发现,我所做的工作开始出现大量的重复:很多程序我之前已经设计过,但是却需要重复去做。为什么?因为没有可移植性。同时,因为接触的频率不高,很多时候我在开始设计前都要花很多时间去回忆相关的知识。

我想,为何不把这些重复性高的工作以某种方式集成起来,一劳永逸,而可以专注于具体应用呢?

于是就有了Germs。

Germs是什么?Germs什么也不是,它只是一个硬件层的软件开发包,它只实现功能,不完成具体策略。从功能上看,它属于系统底层/驱动层,提供MCU与应用程序的接口,使开发者可以集中精力完成上层应用,同时为不同程序间提供了移植的可能。

Germs的基本设计哲学有:

1) 只提供方法,而不实现具体功能,从而保证良好的通用性;

2) 遵循良好的设计规范,使用Linux代码风格;

3) 遵循GPL协议,使用GCC编译器;

4) 设计时倾向于机器人控制领域;

5) 可配置、可剪裁;

6) 多种型号支持:ATmega 8 / ATmega 16 / ATmega 64 / ATmega128 / ATmega 1280,(抱歉我手上只有这些型号);

7) 80%的设计中不需要另外书写任何与MCU相关的代码,20%的情况下需要你翻阅一下Datasheet。

系统的结构如下:

Core包含ATmega单片机各种外设的驱动,而Addition Library中为一些常用外部设备的驱动代码。

在正式发布前,我还有很多工作要做,这包括完善相关代码、用几个实际工程进行测试、书写相关说明书等。

Leave a Reply

Be the First to Comment!

Leave a Reply

wpDiscuz