这东西不错,不用学硬件知识,直接像正常写代码一样来开发硬件

2016-01-20 15:34:46 +08:00
 jerkzhang

最近做了个小玩意儿,纯属玩玩儿……
暂时只做好了 python 和 ruby 的 api 接口,欢迎内测。

http://adamsolo.com
http://evepi.cc

复杂而苦力的连线与焊接,令人头疼的电路知识,对于想要涉足硬件开发的码农来说,这些都是噩梦。 纵使有 arduino 让抽象层次变得更高,但依然还是具有硬件色彩的复杂繁琐。 这个时代,也许需要一个更高的抽象层次,需要一种新的硬件开发思想。
那就是夏娃派(下文称之为 Evepi )—— “硬件即对象, PC 即 MCU ,提高开发的抽象层以让硬件开发变得更加人性与高效”。
利用 Evepi ,硬件即对象,硬件被抽象成程序中的一个个对象或函数, 开发者不需要学习任何电子硬件的知识、不需要管硬件层面的任何事情, 所有硬件的事情全都是一个黑箱子,开发者不需要知道; 开发者只需要利用任何自己所熟悉的编程语言,就像正常写程序一样写程序,来调用该硬件的 api 接口即可。
“硬件即对象”是直观的开发思想,而实质的架构核心是“ PC as MCU ”(电脑即微控制器)。 以往的硬件里,广义上的 MCU 是大脑,而未来, MCU 只是抽象高层到抽象底层的中间的承上启下的一个工人,以及处理有限的必要的逻辑。 而复杂的逻辑层则是放在 PC 层面去解决, PC 层具有完善且亲和大众的操作系统,不管是 windows 还是 linux 发行版本,或是 Mac OS , 对于大众来说,都是亲和与人性化的,以及更加适合处理复杂的逻辑。 随着抽象层的提高,虽然性能与成本会受到影响,但开发效率倍增; 而在众多实际情况中,前者并非瓶颈,后者却意义重大。

4400 次点击
所在节点    分享创造
35 条回复
k9982874
2016-01-20 15:55:28 +08:00
没看懂如何让工程师不用动烙铁就能研发硬件的。学习套件开发板么?
stupil
2016-01-20 16:46:30 +08:00
没看懂如何让工程师不用动烙铁就能研发硬件的。
jerkzhang
2016-01-20 16:56:38 +08:00
@k9982874
@stupil
对于软件开发者来说为的是使用它做一些事情,比如通过超声波测得距离,比如让液晶屏幕上显示“ fuckGFW ”这几个字符,我就是把电路板层面的事情都做完了打包成模块了,以后软件工程师,就不需要管硬件层面的事情,直接插上 usb 接口到电脑上或者 miniPC 上,然后启动一个服务进程后,在正常的程序里插入某个包,像普通调用函数或者对象一样,只管写代码即可。 不同于硬件开发的思路最大的点是从硬件开发的角度往往是要追求的把东西做到一个板子上,做到符合需求的大小;而其实很多情况下,并不追求这样,分散型控制系统也一样 ok ,在相当一些情况下,开发效率远比性能、成本更重要。
hardware
2016-01-20 17:01:03 +08:00
还以为要说 Verilog-A 呢。。。
sennes
2016-01-20 17:14:52 +08:00
说白了,就还是写软件嘛。
qhxin
2016-01-20 17:20:49 +08:00
开发效率远比性能、成本更重要。。。就硬件开发来说,我表示不赞同这句话
stupil
2016-01-20 17:25:53 +08:00
懂了。
mlhorizon
2016-01-20 17:43:22 +08:00
软件工程师玩硬件,不仅仅是有焊接这样的硬门槛,更多是思想上的转变。
例如软件开发的代码里面死循环的不可接受的,硬件开发的代码里面,一般的执行代码都在一个死循环 wihile 1 do ... 里面。
DingSoung
2016-01-20 18:41:34 +08:00
这东西只能拿来玩玩吧


@mlhorizon 一个大的循环, 复杂的状态机, 中断系统等等.
kokutou
2016-01-20 18:44:52 +08:00
@mlhorizon 233 ,看到 Arduino IDE 打开默认就是一个 setup 和 loop 当时就震惊了。。。久久不能平静。。
jerkzhang
2016-01-20 18:45:56 +08:00
@qhxin 你说的很对,很多硬件开发的场景性能、成本更重要一些,像冰箱、手环、手机等都是像你说的这样,不过除去这种类型,依然是有一部分场景下开发效率比性能、成本更重要,比如快速的原型开发而实现某个作用、比如对于交互型建筑工程级别,多出几块板的价钱跟整个工程款项(百万人民币为单位)来说并不在意,假如逻辑层面更加复杂多变,那么利用 PC 或者 miniPC 作为核心控制的大脑会更加合适,整个过程的开发效率会呈现指数级别的增长。硬件的发展逐步已经呈现两种趋势,一项的发展是从机器的角度来考虑,向抽象层次更低的层面发展,换言之是专注于硬件本身而成为职业的硬件工程师,这样的硬件工程师未来是非常厉害与稀缺的,以及人数上的需求不会具有太大的增幅,可谓少而精。(吐槽:现在太多的硬件工程师都不做本行而变成软件工程师,这是对其所学专业的玷污,硬件是非常值得深入学习的);另外一种发展趋势是向抽象层次高的方向发展,也就是越来越应用化,核心的控制层的逻辑实现不会是停留在 arm 、 fpga 的层面,更多的应用者寻求的是实现作用,而会诉诸于相对来说更高的一个抽象层次, miniPC 层面等其他,讲白了 miniPC 就是基于 arm 而对逻辑的封装,讲白了,就是要对底层的逻辑封装,不管是 miniPC 层,还是基于声学、光学的抽象层次更高的逻辑实现的层次。两种层面侧重的东西不同而已。(就好比做用 ruby 开发网站和用 C 做系统开发两者侧重点不同而已,仅此而已,并不会出现相互的争论,不过这种争论也是存在过的,在 20 实际 90 年代,我还记得,当年在脚本语言 python 、 ruby 也包括 perl 刚诞生的时刻,那个年代之前主流的都是 C 和 java ,后来新型的语言刚出现, python 和 ruby 等都被嘲笑成玩具儿,这只是因为那个年代的软件开发思维依然是从机器的角度考虑编程语言,而 python 和 ruby 这些则是从人使用的角度来考虑这些问题,牺牲性能而提高开发效率,当性能不是瓶颈的时刻,何必花 7 天时间来用 C 写一个程序来实现结果,何不 15 分钟内用抽象层次更高的语言来达到目的。随着时间,大家的开发思想受到了启发与改变,而发展到当前的这个时代。题外话: python 和 ruby 已经很实用了,但是在高性能追求的时候依然无法取代 C++,不过更新的一些编程语言相对来说也考虑了人性的角度的同时也在试图兼顾性能取代 C++, go 语言和 rust 就是这样的语言)所以,硬件开发的发展也是历史的重演, evepi 只是我的游戏之作,之后应该不会继续更新丰富,但是咱们硬件学科的思想上应该开放、变化与发展。
xmoiduts
2016-01-20 18:48:21 +08:00
@kokutou +1 ,直到我闲的无聊,翻看了 arduino 的某个 c 文件,才恍然大悟。

内容大抵就是
main()
Setup();
for(;;)
loop();

大括号太难翻,不打了。
jerkzhang
2016-01-20 18:49:18 +08:00
@dingsoung 对,就是玩玩儿
gdtv
2016-01-20 18:51:56 +08:00
@mlhorizon 说得很对啊,想当年玩单片机,代码就是 loop ,如果不 loop 就是死循环了
jerkzhang
2016-01-20 18:54:30 +08:00
@kokutou + @xmoiduts +1

有很多东西我发现出奇的异曲同工
从 arduino 到 processsing (对 opengl 等图形库的封装) 到 cocos2d 等很多做游戏的框架的核心内在框架 等,内在的结构出奇的一致 啧啧啧……
jerkzhang
2016-01-20 19:01:48 +08:00
一个大的循环, 复杂的状态机, 中断系统等等 //更加适合把逻辑放在完整的操作系统里,用更加高效的开发语言来实现功能,完全不受到“循环”的限制,更加复杂的多线程程序、更加复杂的功能应用的嵌入都可以,不过对于高度协同化的场景并不适合。
Cu635
2016-01-20 19:02:35 +08:00
硬件性能很敏感的

甚至一个电容的成本都得能省就省
jerkzhang
2016-01-20 19:04:42 +08:00
@Cu635 你说的很对,不过也有些场景对性能和成本不敏感,对于快速的原型迭代,以及逻辑更加复杂而可变性强的一次性工程。对于做硬件产品,确实性能和成本很重要。
wadahana
2016-01-20 19:05:53 +08:00
楼主的目的难道是为了卖传感器模组?
jerkzhang
2016-01-20 19:13:00 +08:00
@wadahana 我不想卖传感器模组,以后全都免费开源给其他人去卖,不打算指望这赚钱。你想想,如果一切的硬件都有类似软件包一样的 tutorial 和 reference ,只要插入电脑,就可以轻松在正常程序中调用那该多方便,比如一个机械手,我不用写底层的程序,我直接在脚本语言层面上就能轻松调用他去做一些事情,那该多方便,我再也不需要重新用 arm 来做个机械手,然后还要花好长时间来调试等,多方便啊,其实现在也是有这一类的硬件,只是没有标准化,以及在嵌入到正常程序的这个过程做的不完美,以及缺乏各个语言的 sdk 。只为兴趣、不为盈利。我目前就烧了 10 套。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252122

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX