正在做 ESP32 , STM32 , 树莓派 RaspberryPi 的创客工具-程序员宅基地

技术标签: c#  硬件开发  嵌入式  

先随便写写一些思路, 以后再整理. 

这段时间笔者做了一些硬件开发, 领悟了一些事情. 

1 - 在常规创客的角度上, 硬件开发所需的知识面比较广, 非常广, 但不算太深. 

2 - 发现硬件开发由于其特殊环境的原因, 开发难度很大, 难度绝大部分来源于很麻烦, 效率很低. 

一般的开发者, 如果他们入门就直接学硬件, 他们是感觉不到这问题的.  没有对比就没有伤害. 

但对于一个写惯C#,Java的程序员来说, 会明显感觉到写硬件的那种无力感. 

由奢入俭难啊! 无论心理上作出多低的预期, 在实际编程阶段, 心理想的是

1 - 为什么这么多工具链安装都那么的麻烦? 而且还有那么多收费的.

2 - 为什么要花时间去等待编译, 烧录, 启动, 不行再重复再重复, 青春就这样浪费了.

3 - 为什么要花那么多时间去寻找指针出错原因, 为什么写一个小时代码要调试5个小时?

 

嗯.  这些不是别人的想法, 是我自己的想法.  

于是笔者就去找各种脚本方案, JS,Lua,Python,... 但发现,

这些方案不多不少都有各种问题. 不太感到满意. 

 

所以, 笔者当时就计划着自己去实现一个脚本语言. 

这并不是随便就去重复做一个轮子, 而是一个有目标的计划:

1 - 要极简单, 简单到, 让笔者不到9岁的儿子都能轻松地学习和测试代码, 感受到代码与硬件的交互关系. 

2 - 要极方便, 方便到, 任何用户不需要输入任何命令行, 就能搭配好开发测试环境

3 - 要满足Java,JavaScript,C#开发人员的需要, 垃圾回收, 强类型弱类型, 函数式编程, closure这些都要有. 

4 - 要满足C/C++开发人员的需要, 可以随意地实现自己期待的高效率函数或硬件驱动. 

5 - 要非常高效, 用极短的代码就能完成创客的想法, 有错误能快速定位, 重新运行代码要在3秒内完成. 

 

所以, 要满足这种目标, 就只能是实现一个脚本解析器, 和配套的开发工具了. 

其缺点也是明显的 

1 - 内存占用问题,  导致这需要对单片机有一定的要求.  可用内存最少要32K或更高.  

2 - 成熟度问题 , 这需要一个过程.  不过也没差, 因为硬件开发者懂的, 说起奇怪的bug各种方案都是半斤八两. 

 

优点和缺点分析了,  针对这种情况, 决定了这种方案只适合以下情况 

1 - 教育用途, 这是首要的目的.  尤其对于小学生, 他们理解力很有限, 那么就需要把硬件开发中的各种细节屏蔽掉.

2 - 非专业创客, 如果有一些人, 他们有一些好玩的想法, 那么这个工具就能节省他们非常多的时间和精力. 

3 - 快速原型,  传统的用C和用C++做产品原型是相对花很多时间的.  使用此方案则原本需要5天做的原型, 现在只需要1天. (以上为是模糊的经验统计,仅作参考) 这样就可以随时改需求, 随时评估项目可行性. 

4 - 小规模生产.  在快速原型的基础上, 如果没发现太大的问题, 对硬件的成本的敏感度不高的情况下, 甚至可以直接把原型当产品做小规模生产了.  

 

不适合的情况: 

1 - 对成本苛刻的中等规模或大规模生产 , 生产几千件以上, 选用廉价低内存芯片, 每一件硬件省个10块钱就能覆盖让程序员日日夜夜调试的开销的情况.

2 - 用于关键场合的硬件开发 ,  这种场合开发人员的成本已经完全不是问题了, 找一大堆人才去做C/C++开发和极限测试吧. 

 

要支持的硬件优先级

1 - ESP32 , 特点, 成本低, 内存足够, 拿上手就直接可用. 

2 - 树莓派 , 特点, 内存超大, 性能更强. 能做USB开发, 

3 - STM32 , 特点, 接口超多而全面, 适合做超多部件的场合. 

 

当前进度 , 脚本解释器已能使用, ESP32上GPIO/PWM已实现, 树莓派GPIO已实现,  正在实现TCP部分,HTTP部分

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33982670/article/details/89686803

智能推荐

《剑指offer》——二叉树的下一个结点-程序员宅基地

文章浏览阅读401次。题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路: 分析二叉树的下一个节点,一共有以下情况: 1.二叉树为空,则返回空; 2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点; 3.节点不是根节点。如果该节点是其父节点的左孩子,则返

数字反转的列表实现方法(python)_python在函数内,将数字num转换为其相反顺序的数字列表。-程序员宅基地

文章浏览阅读1.3k次。做题心得_python在函数内,将数字num转换为其相反顺序的数字列表。

Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区-程序员宅基地

文章浏览阅读57次。ava.io下面有两个抽象类:InputStream和ReaderInputStream是表示字节输入流的所有类的超类Reader是用于读取字符流的抽象类InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。即用Reader读取出来的是char数组或者String,使用InputStream读取出来的是byte数组。弄清了两个超类的根本区别,再来看他们底下..._java bufferreader inputstream

linux 安装语言模型工具KenLm_kenlm依赖有哪些-程序员宅基地

文章浏览阅读450次。1、安装相关依赖包cmake、boost和bzip2,其中后两个需要root权限2、安装kenlmwget http://kheafield.com/code/kenlm.tar.gztar -zxvf kenlm.tar.gzcd kenlmmkdir buildcd buildcmake …make注:到make这一步时报错,需要修改C++编译器。在CMakeLists.txt头部添加以下命令:SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} _kenlm依赖有哪些

react native搭建私有热更新服务器_react native 热更新 私有-程序员宅基地

文章浏览阅读2.8k次。公司要求要有自己的私有热更新服务器,本人表示不擅长后台,只好去网上找相关的文章,与技术博客:本文简历在已经成功运行 微软 codepush热更新,并且了解codepush 相关指令的基础上。 参考文章-iOS参考文章-android简介code-push-server是一个开源项目,基于 nodejs + mysql 搭建自己的热更新服务器环境macOS Sierr_react native 热更新 私有

UML类图及其关系_uml类图的关系-程序员宅基地

文章浏览阅读1.6k次。在UML类图中, 常见的关系有一下几种: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency).示例类图请看下面的类图车的类图结构为abstract,表示车是一个抽象类;它有两个继承类:汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;通常用来表示接口的实现;汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空_uml类图的关系

随便推点

webstorm nodejs ESLint 简单配置-程序员宅基地

文章浏览阅读179次。ESLint 简介 官网http://eslint.org/ 在团队协作中,为避免低级 Bug、产出风格统一的代码,会预先制定编码规范。使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量。 在以前的项目中,我们选择 JSHint 和 JSCS 结合使用,W..._webstorm 开启js-lint

linux下运行python与windows速度差别,Linux和Windows之间的numpy性能差异-程序员宅基地

文章浏览阅读663次。I am trying to run sklearn.decomposition.TruncatedSVD() on 2 different computers and understand the performance differences.computer 1 (Windows 7, physical computer)OS Name Microsoft Windows 7 Profess..._python 并行linux比windows慢

手机游戏里用什么方法寻路-程序员宅基地

文章浏览阅读1.3k次。作者:许伟东 文章来源:本站原创 点击数: 98 更新时间:2005-9-22寻路算法在游戏中大量应用,在PC游戏里,更是随处可见。就比如星际争霸,红警这些超爽游戏中,用鼠标随便点一个地方,部队就会绕过一些障碍,并以最短的路径到达目的地。那么在手机游戏中怎样达到这种效果呢?这正是本文要讨论的问题。这篇文章将首先讨论应该怎样实现,而不会给出具体代码。当然,在稍后的文章里,我

职业教育计算机专业宣传,对中等职业教育中计算机专业教育的思考-程序员宅基地

文章浏览阅读153次。王粟雨【摘要】现如今,社会经济、科学技术的发现越来越快,计算机技术也越来越普遍的被应用于生活的各个方面。人们的生活越来越依赖于计算机带来的便利,由此可见计算机技术已经成为了人们生活中必不可少的一部分。中职教育是专门进行职业技能教育的学校,开设的计算机专业,以提升学生初步应用计算机的水平,现阶段,应用计算机已成为新入职员工必须掌握的技能。本文主要论述了计算机专业在中职学校的教学现状,针对相关问题提出..._中职教育 博客

mybatis中if判断的坑_mybaties中if-程序员宅基地

文章浏览阅读3.1k次。最近在项目使用mybatis中碰到个问题Xml代码 if test="type=='y'"> and status = 0 if> 当传入的type的值为y的时候,if判断内的sql也不会执行,抱着这个疑问就去看了mybatis是怎么解析sql的。下面我们一起来看一下mybatis 的执行过程。DefaultSqlSession.c_mybaties中if

Java 基础系列(十六) --- Java中模板引擎的使用_java模板引擎-程序员宅基地

文章浏览阅读6.4k次,点赞4次,收藏6次。Java 中的模板引擎的使用_java模板引擎