我的2012

2012年马上就要结束了,该到年终总结的时候,好吧,那就瞎总结一下。 感情 为啥要把感情生活放第一个讲,除了可以吸引眼球以外,更重要的是今年的感情生活确实出奇的丰富。年初的乱花渐欲迷人眼,年中的经历就类似于《幻夜》中男主角的感觉,当然我没去犯罪。年底则是受尽了打击和无奈。今年最傻逼的事就是不该喜欢一个完全不符合我要求的人,然后还要强迫自己接受,那种感觉啊简直是吃屎! 虽然今年与2008年那感觉差不多,但是更甚,主要的是今年有些许悔恨迷茫的心情产生,对以前的这些女生,珍惜眼前人啊! 工作 动荡的一年!可以说这是去年年底的各种事情最终的结果,动荡是唯一关键词,从一个工作跳到自由职业再到另一个不靠谱的活,最后到年底的DFrobot,可以说这一年伴随的动荡和乱实在是前所未有的,可以说这是大学毕业四年来惟一一次感觉工作不好找的一年。如果此时再和上面感情纠葛在一起就更加说不清了,完全是一派乱象! 开源 从2010年开始,开源也成为年底总结的一大部分了,今年可以说在开源事业上进步比较大,虽然开源培训事业没有进行下去,但是就着开源硬件这股风可劲的大玩了一把。首先是再GNOME上参加了今年的GNOME Asia 2012的活动,又去了一趟香港,认识了一帮香港、台湾的朋友,非常开心。第二个就是在今年的主要开源社区地位有所提升,虽然缓慢,但是依然很难得。最后就是现在不如一年前那么迷茫于开源的大潮中了,现在看问题比较理性,相对不那么傻逼了,虽然有些言论还是很傻逼。。。 最近在开源硬件上玩的比较多,从4月份参加创客嘉年华,再到年底最后入DFrobot,很多都和开源硬件有关。另外DFrobot不知道现在是怎么做的,感觉商业气息过于浓,外人看到的是技术风味,而内部的经济利益还是很大的,毕竟是卖板子的嘛,现在需要慢慢改变这个局面。 展望2013 没有希望。不知道为啥最近这种抑郁的情绪越来越严重,是的,没有希望了。2013爱谁谁吧~无所谓了!

Read More 我的2012

难孚众望的 Arduino Due

(本文已经发表在2013年第1期《无线电》杂志,未经原作者授权不得转载) 半年前Arduino官方放出消息表示正在开发基于ARM Cortex-M3的32位微控制器板Due,笔者及与笔者一样的很多Geek(极客)和创客们都摩拳擦掌跃跃欲试,急迫的想亲自动手玩玩这款新微控制器板。直到10月22日,Arduino官方终于发布了这款期待已久的创新产品,笔者也终于在第一时间幸运的得到一块,并且利用几乎全部时间投入到新板子的试玩中。 Arduino Due选用了基于ARM Cortex-M3架构的Atmel SAM3X8E微控制器,这是Arduino第一次使用32位微控制器,与其他8位微控制器有很大区别。这块Due主频可达84MHz,引出了54个数字引脚(芯片总共有100个IO引脚),其中12个可以用来连接PWM,另有12个模拟输入/输出引脚,4个串行接口UART,2个 DAC(数模转换)引脚,2个TWI(双线接口)引脚,1个SPI插针,1个JTAG兼容调试引脚。 新的变化 与其他Arduino控制板的区别最主要有如下几点: 3.3V供电取代5V供电,内部电路也都是3.3V。虽然如此,但是Arduino官方的Shield都是兼容的。其他制造商的产品可就不敢保证了,如果输入大于3.3V的电压,可能会损坏芯片! 32位84MHz主频远超原先的8位16MHz主频,且ARM Cortex-M3内核使用Thumb-2指令集和NVIC(嵌套向量中断控制器),使得任务响应速度大幅提高,已经达到硬实时标准。 片内RTC实时时钟,这样就不需要外部再添加RTC模块了,但是这块板没提供RTC时钟所用的纽扣电池槽,甚是遗憾。 CAN总线支持,这是芯片支持的,也在板子上引出了相应的引脚,但是Arduino的API不支持,如果想用CAN总线,只能直接读写寄存器了。 DMA(直接存储器访问)支持,这样可以在使用如网络、外部FLASH读写等操作时进一步节省CPU时间,只是Arduino官方API亦不支持。 多通道ADC(模数转换)和DAC(数模转换),这是Due的一个亮点,因此官方新版的Arduino IDE 1.5版中特意增加了一个播放SD卡中音乐的示例程序。 硬件随机数发生器(TRNG)也是一个亮点。这样系统就可以直接使用硬件随机数,而不用API仿真出了。 Due的最大亮点在支持USB Host以及Google ADK(Android Develop Kit)支持,板子上有两个USB插口,一个是编程用(Programming),而另一个就是作为USB Host(Native USB)使用的。这样就可以不用另购ADK接插件和相应的设备了,极大的方便了基于智能手机的控制,外加32位支持,对Geek群体是一个利好消息! 快了,也慢了! 主频增加到了84Mhz,速度大幅提高,笔者通过分析Arduino IDE的源代码发现其内部使用了一种由Leaflabs开发的ARM交叉编译工具链,这款交叉编译工具链是基于Codesourcey的4.4版改造开源而成的,对大多数Cortex-M3有很好的支持,包括NXP的LPC系列和ST的STM32系列。这款编译器符合EABI(嵌入式应用二进制接口)标准以及ARM官方的针对Cortex M系列内核制定的CMSIS代码封装,可以从Github上找到并直接使用。 开源编译器加速了编译速度,但是依然不能与AVR编译器的快速编译相媲美,笔者平时使用Linux系统来编程和开源硬件开发,图片也取自Linux系统下。向片内Flash上传程序的时候需要先将FLASH按页擦除,然后再按页写入,这变得相当缓慢,即使最小的程序也需要至少20页左右。我想这个速度会让很多心急的人难以忍受吧。 慢了的不仅有上传速度,还有官方文档的更新很慢,且示例程序错漏百出,实在让笔者甚是恼火。 独树一帜的兼容性 基于如此多的变化,特别是相较于以前Arduino控制板的巨大差别,我们不禁要对其兼容性提出一些疑问,我们以前的那些模块和Shield还能正常使用么?为此笔者使用了一个酒精检测传感器MQ3和几个最常用的Shield搭建了一个酒精检测超量报警装置。首先从引脚上说,Due与Arduino Mega 1280/2560的引脚基本一致,由于是ARM架构,所以去掉了ICSP引脚,取而代之的是SPI引出插针,另外还有JTAG引脚支持。 在Shield的兼容性方面,大多数的Shield支持还是非常好的,我试了由DFrobot出品的按键和LCD Shield、L298电机驱动板以及传感器扩展板,大部分可以完美支持,代码可以几乎无修改直接移植使用。但是由于SPI接口的改变以及引入了32位特性,这使得很多与SPI相关的Shield和代码要做大规模修改,比如网卡接口板、WIFI接口板和SD卡接口板等等。引入的32位特性会极大影响整型数值的精度,众所周知在Arduino其他控制板里普通的int类型是2个字节16位的,而在Due中由于使用了32位ARM架构,普通的int类型则变为了4个字节32位,在这种情况下很多传感器相关的程序可能会出现读数错误。为了避免这种情况建议所有Arduino相关的程序在使用int类型时采用类似int16_t这样的方式定义变量,避免跨平台多架构移植的时候出现问题。 另一个兼容性问题来自于电压的改变,即从5V降为3.3V,按照官方文档的说法,若此时在IO 接口上接入3.3V电压有损坏Due。同时输出电压变小使得很多外接设备或者传感器工作异常。 因此电压的改变对电路设计提出了更加严苛的要求,众多模块设计者需要进一步针对Due的电压改变来修改甚至是重新设计产品,可以说这次Due的横空出世,带来的惊喜远小于它所带来的麻烦! 仓促起步,后期乏力 笔者一直追踪Due的开发,可以说Due是在很多社区如Leaflabs推出基于STM32F103的Maple板以后,迫于市场上日益增长的竞争压力以及对ARM微控制器的需求而仓促开发的,另外也有人猜测,Due是Atmel公司为了推广其在市场上缺乏性价比优势的SAM3X系列微控制器而邀请Arduino推出的。不管流言和猜测如何,从错漏百出的示例程序和更新缓慢的官方文档上可以看出,显然Arduino还没有做好准备迎接32位ARM Cortex-M3微控制器的到来,这样的仓促上马,对很多下级分销商以及模块设计机构提出了兼容性的巨大挑战,更为产品的进一步推广造成困难。 实际上,笔者很期待Arduino官方能够支持开源的RTOS(实时操作系统),比如Leaflabs开发的Maple板已经支持了FreeRTOS,而且Atmel官方也支持在SAM3X上移植BeRTOS,可是Arduino的API对此却没有足够的支持和实现,没有发挥出32位ARM高速微控制器的性能优势。 因此对Arduino来说,以Due为代表的32位ARM Cortex-M3微控制器未来的发展可能颇为艰难,从性价比上说SAM3X不如STM32系列有优势,远远不如Leaflabs的Maple系列控制板(基于STM32F103),而从API和用户体验和兼容性角度看,短时间内又不能与其他Arudino控制板完成兼容修改。不过也要看到毕竟这是Arduino第一次大规模突破,推出32位ARM微控制器板,第一次将高端控制器需求引入到产品中,因此未来还有非常长的路要走,希望“乘风破浪会有时,直挂云帆济沧海”!

Read More 难孚众望的 Arduino Due

北京落选2013 Gnome Asia的思考

今年11月中旬,经过一个多月的GNOME基金会亚洲区投票,2013年Gnome Asia(Gnome亚洲峰会)花落韩国首尔,此前被人看好的大热门北京最终落选。作为北京GNOME用户组的一名成员,虽然有些许失望,在得到消息的当晚就愤怒的发表微博怪罪给“墙”,毕竟当时还是十八大期间,同时也是情理之中的。后来与GNOME亚洲区的负责人Max聊天以后,了解了最终北京落选的原因。 华人城市举办比较多 从2008年第一届开始在北京举办,然后分别又去过台北、香港等城市,除了班加罗尔以外都是华人地区。目前在东南亚地区的自由软件推广已经很多了,而目前自由软件/开源软件的主要贡献却在东北亚地区,也就是日韩等国。在日韩进一步推广自由软件、开源软件也是非常有必要的,所以基于这些考虑,最终决定将明年的亚洲峰会选址在韩国也是情理之中的。 强大的赞助 韩国这次赢得明年的举办权,很大一部分原因来自于其强大的赞助队伍,这里包括了LG、SAMSUNG在内的世界著名3C企业和国际大财阀,更是倾力支持此次GNOME Asia峰会的举办。而相比较北京,则只有SUSE和中科院研究生院等高校支持,难免陷入了一种学院气,而GNOME正希望通过扩大在企业中的影响力,推广自由软件在企业中的使用范围。可以说赞助商的缺位成为北京落选最主要的原因。 中国开源软件推广陷入瓶颈 中国目前在开源软件方面的推广主要限于高校,而高校又由于多种原因设置了重重关卡不容易进入,因此在如此情况下中国的开源软件推广进入了一条死胡同,原先可以有上百人参加的自由软件日现在只有十几人,原先风风火火的Linux论坛也纷纷关张或偃旗息鼓,渐渐没人维护和解答问题,很多老手的离开促成了这种局面的扩大化。当然这背后确实有如GNOME在内的一些开源软件不顾用户感受,仓促改变功能,开发者大量离开等等客观问题,同时也有社区建设缺乏后劲,现在很多在08年时建立起来的社区正是强人退却,而再无来者的尴尬情况。考虑到这些因素,GNOME没有选择北京也是对中国开源软件推广的一次激励。 其他不得不考虑的因素——“墙” “墙”是一个不得不考虑的因素,如果在中国举办的和话,毕竟这么多外国人的上网问题很是麻烦,而在承办计划中也没有涉及如何解决这个问题,更麻烦的是一旦被封,很可能整个活动都无法正常举办。投票时正是十八大举行期间,未来中国的政局依然不稳定,谁知道会发生什么情况,在这种情况下盲目选择北京确实很不明智。当然还有其他因素,比如环境污染、饮食安全等等,这些问题都制约并影响了最后的结果。 不管如何,明年我都会积极准备GNOME Asia的峰会,也会献上自己的新演讲,虽然在韩国举办出行和语言都是个问题,但是只要能够选中,依然是一次非常好的交流机会!

Read More 北京落选2013 Gnome Asia的思考

黑客、极客和创客

首先声明:以下本文所述的所谓“黑客”并不是以黑别人的电脑,做破坏网络事情的人。下面引用维基百科的解释: 为了避免误解,公众需要明确的区分开Hacker(黑客)与cracker(骇客)的概念:“黑客”和“骇客”当中的中文音译“黑”或“駭”字总使人对黑客有所误解,真实的黑客所指主要指的是高级程序员,如Linux创始人林纳斯·托瓦兹,而不是为人所误解专指对电脑系统及程序进行恶意攻击及破坏的人。除了精通编程,精通操作系统如Unix的人可以被视作黑客外,现在精通网络入侵的人也被看作是“黑客”,但一般被称为骇客,对硬件设备创新的工程师通常也被认为是黑客。主流社会一般把黑客看作为计算机罪犯,在媒体的推波助澜下,Hacker这一词早已被污名化。 对本文所述的三种人,分别做个名词解释: 黑客Hacker:最早是指那些在美国MIT大学中热衷计算机编程,热衷改造和升级计算机硬件,并最终发明UNIX和制造了自由/开源软件运动的人们。概括来说就是热衷编程,信仰自由,无拘无束。 极客Geek:原先特指那些研究计算机和网络技术到痴迷的“宅男”,因此颇有些神秘气息。而近年来随着“宅男”文化的普及,也可以指代一种为了好玩而仿技术流的个性化特别的时尚现象。 创客Maker:新生概念,由《MAKE》杂志引出来,主要是指那些热衷于DIY硬件的人。 这样的三种人在现在社会都存在,无论是黑客、极客还是创客,这三者的共通之处可以归纳为: 不落窠臼,推崇个性 崇尚技术,当然是计算机软硬件技术和网络技术 倡导开放、共享,鄙视固步自封 通过自己的努力为人类造福,使生活更加方便,推动时代进步 而同时拥有这三种认知特性的人在人群中的比例其实并不高,也正因为如此,不太容易能够分清这三种人;同时,三种人还会经常转换角色,一个人平时也许绝大多数时间是个黑客,但是在面临和硬件DIY相关的事情上,又转变为了创客,或者极客。事实上,只要抓住三种人的本质特性,是很容易区分出来的,而一个人在绝大多数时间可能符合其中一种,在某些场合才会转换角色,下面的叙述,也可以算是一个自我定位的方法: 黑客——推动时代进步的人 早期的黑客们创造了现在人们生活依赖的事情,包括互联网、电子邮件、互联网文化以及与之相关的一切。后来又发起了自由软件运动和开源软件运动,为极客和创客的产生提供了理论依据和构成伦理。现在社会的黑客往往有如下的特征: 热衷编程,信仰自由和分权的黑客文化,积极投身开源文化和开源软件开发。往往遵从黑客伦理和严格的自由/开源软件原则。 为了自己的需求,而改变软件的某些功能,或者添加更加人性化的设计(所谓“挠自己的痒处”——Linux Torvalds) 用技术解决生活中实际的需求,往往简单易行 极客——时尚界的弄潮儿 前几天购买了一本杂志《Geek》,本以为是一个和技术相关的,没想到竟然是一本时尚杂志!因此从此就可以看出现在社会的极客群体和时尚的关系非常密切。比如制造非常酷的电子设备,为普通的时装增加非常酷的LED灯装饰,制作一个真实版的变形金刚等等。。。极客群体拥有很多特性,摘录最有特点的如下: 酷是最本质的属性,一切都是为了酷这个目标 有时可以为了技术而技术,也就是为了“秀” 技术未必很高超,但效果往往特别吸引眼球 创客——DIY的领跑者 创客作为新兴的概念,很关键的一点就是为DIY服务,在某些方面与极客颇为相似,甚至经常和极客发生角色转换,有的人甚至也是极客+创客的双重身份。但是创客的特点还是比较明显的: 更加突出创意和对生活的态度 一般比较”懒“,这个”懒“的意思是为了简化生活的某些方面而用机器人或者其他开源硬件来替代 技术往往看起来不高,但其实因为技术宽泛而适应性强(大多是电子和开源硬件方面) 一句话来总结:黑客、极客和创客的最本质区别在开发时的需求不同,黑客的需求来自于自己,来自于解决生活中的实际需求;极客的需求来自于”酷“的需求,一切为了”酷“;创客的需求来自于大脑中的创意,创意越个性越好,同时也有技术的自我完善需求。 分割线之后的更新: 这里将这三种人分别列出和比较,主要目的是为了解释朋友的一个疑问,同时有些公司不用单纯面向某一类人,可以尝试扩大受众群体,进而有更多的渠道。实际上我觉得极客和创客是很容易互相转化的,也很容易放在一起,而黑客就不一样了,对技术需求比较多,往往又有黑客伦理和黑客文化背景,有时还有点装逼,但是这类人却是很容易被打动的群体,如果瞄准这类人进行独特的宣传和推广,是个很容易完成的工作。 这篇文章的主要基于我个人的理解,除了黑客以外,其他词汇都比较新潮,还没有一个大众普遍接收的解释,所以如果有偏颇的地方请多多包涵。毕竟是以交流为目的嘛,欢迎讨论!

Read More 黑客、极客和创客