你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在MCU上跑脚本?我需要多129Kbytes!(上)

[复制链接]
辛昕 发布时间:2017-4-27 00:59
Lua第一次出现在我面前的时候,我看到了脚本的魅力之处,并第一次感觉到单片机上也有可能使用!兴奋之余,当我尝试之后,我发现它要花掉100KBytes的程序存储器空间。
我认为它有点大,因此我持续寻找其他可能的 C脚本/解释器实现方案,最终我找到一个TCC编译器,它有着比Lua更自然的使用方式,而且体积真的超级小,然而,它也要使用129KBytes左右的程序空间。

因为我对被称之为 智能尘埃 微型传感/执行单元 非常感兴趣,因此我一度期待可以找到一个在10Kbytes级别的脚本实现方案。但是我翻来覆去地找,貌似100K这个量级已经是极限。

这时,我脑袋里萌生过改写这些开源方案的念头,但随即马上放弃。
原因在于:我对其中涉及的难度毫无把握,何况,我只想做一个使用者,而不太愿意贸然去做一个创造者。

在多次纠结要找一个更极端小的实现方案无果后(我其实真的曾经考虑过OTCC),我反过来思考一个问题:
130K怎么了?不就130K吗?



看STM32十年的FLASH/RAM怎么一路上涨(下)

评分

参与人数 1 ST金币 +5 收起 理由
MrJiu + 5 支持!!!!!!

查看全部评分

收藏 2 评论10 发布时间:2017-4-27 00:59

举报

10个回答
辛昕 回答时间:2017-4-27 01:00:07
我一直没有忘记入行时就听说的那个观点:“不值得为资源紧缺而花费太多努力。”
而六年职场,浸淫在这个行业里,所了解所经历,让我愈发坚信它是对的。

其中最明显的一个例子就是:
我入门学习单片机,是从经典的8051开始,当时的“大主流”(事实上的标准)是atmel的at89s52.它拥有8K bytes Flash,512Bytes RAM,主频最高可达40Mhz,当时它的零售价大致是 RMB 5块。我接触这款芯片是在2009年,但这款芯片最早推出的时候至少可以追溯到2004年之前。

其时(2009年),实际上32位ARM已经开始流行起来,当时就很受欢迎的STM32(2007年首次面世)还停留在F1 F2的时代(2009年),尽管资源丰富,但价格相对昂贵,开发也被认为比较困难,事实上当时是被认为一种“高级单片机”,大多数人还迟迟停留在51的世界里不太愿意尝试。

但随后,STM32开始在全球范围内大行其道(今年走过十年,它累积创下16亿片的销售记录)。但它的价格仍然相对较高,我当时虽然已经不再使用越来越缺乏性价比和性能竞争力的51系列芯片,但我仍然在使用STM8S等8位机。
直到2014年,stm32f030突然横空出世:
Flash高达64Kbytes,RAM更是达到了8K bytes,主频最高可达72Mhz,而它的价格却是 32美分(当时的美金停留在6字头,折合人民币,不超过2.5),当然这是1KU的官方价格,但零售大抵也就是 RMB 4到5块
这款产品的诞生,彻底颠覆了8位机的价格优势这最后一道防线,我由此决定全面拥有32位机,作为我个人选择的通用机型......(这里面其实还有很多其他原因,但这里只关注FLASH/RAM)

辛昕 回答时间:2017-4-27 01:00:47
当时因为我做的东西都是很简单的控制型程序,几十KBytes对我来说十分富余,但后来我开始做 GUI这类资源消耗的应用,而这次想引入TCC,更是要多消耗129KBytes。粗粗预计,如果留130K给TCC用,那再预留几十Kbytes做其他应用,最小的选择也要是256KBytes。
但是如前所述,我所关心的是,单元型的MCU。这类MCU通常功能有限,要求功耗尽可能低,成本尽可能低,故而资源也就尽可能紧凑就好。

  在我继续钻在“怎么把脚本变得更小”的牛角尖里钻了一段时间后,我突然豁朗开朗:
说白了,我们的需求只是尽可能便宜,至于它其实是2K 还是8K,抑或256Kbytes的flash,其实我们并不关心。甚至可以幸灾乐祸的说,如果256Kbytes flash的MCU比8K的还便宜,那我们会很愉快地选择它,哪怕有点浪费也无所谓。

  这种高射炮打蚊子的事情,其实在MCU选型里经常发生。
  比如相比价格高达 六七美金的 stm32f4 f7,假如不考虑开发资源和裸机驱动的丰富程度。
  前几年三星出了一款曾经十分火爆的A8内核处理器 S5PV210。它主频高达1G,尽管FLASH和RAM都是外扩,但是,淘宝上,一个外扩了 G级 FLASH 和 几百K RAM的 最小核心板,价格也不过 三五十块。尽管它的目标应用不是裸机MCU,而是嵌入式linux android等复杂应用,但当年包括我在内,都打过把它当一个MCU使的主意。
  但它和stm32f4 f7的配置相比,简直就是天差地别:
  ——这两个系列MCU的Flash通常在1M~2M左右,主频最高将近可达300Mhz。

辛昕 回答时间:2017-4-27 01:01:15
   想到这里,我突然很查证一件事情:MCU,抑或CPU等其他类型处理器,它们的FLASH RAM方面的资源,在这十几二十年里,到底以一种什么速率在增长。
  另一个近在眼前的问题则是:当前,配备256K flash的MCU,要多少钱?

  MCU不同于PC处理器,其品牌,种类,系列多如牛毛,我不可能统计所有情况,而我最熟悉的STM32也不见得是最具有性价比的,尤其是,在不同的订单量的情况下,价格可能大不相同。但是我只是想了解一个大致的情况,何况我并没有订单,不太可能找代理商问价格,因此我只打算以官方的1KU或者10KU报价作为参考,来做这件事情。
辛昕 回答时间:2017-4-27 01:04:31
未完待续......
      但这件事显然没有我想的那么简单实现,最后折腾了半天,我想起 ST每年都会举行的 全球峰会,每次峰会都会有很多资料,介绍自己已有和新增的产品线是必不可少的,因此从那里着手,我就可以得到我想要的STM32 十年来的 产品线演进情况。
      坑爹的是,这资料,我在ST官网上都找不到(英文版也无所谓的)。
      最后寻寻觅觅好不容易在 这里被我找到了,而且还专门放在首页,非常好找。

      于是我决定把接下来写的这些文字,首发这个网站~~~话说这论坛还是与非旗下的,天哪,我是有多久忙到没时间去与非发表神回复了........
奏奏奏 回答时间:2017-4-27 07:02:01
没有用过脚本,是不是对于PC上位机编程基础的工程师更容易上手的意思
qianfan 回答时间:2017-4-27 08:27:58
貌似tcc和lua差不了太多吧,我曾经做过lua的,不过具体多少忘记了。
辛昕 回答时间:2017-4-27 09:25:06
奏奏奏 发表于 2017-4-27 07:02
没有用过脚本,是不是对于PC上位机编程基础的工程师更容易上手的意思

主要是可以动态时修改程序行为,相当于ISP方案。
所以我觉得这玩意特别好玩
辛昕 回答时间:2017-4-27 09:25:49
QianFan 发表于 2017-4-27 08:27
貌似tcc和lua差不了太多吧,我曾经做过lua的,不过具体多少忘记了。

其实,TCC比LUA还要大。
但是LUA调用C需要经过一个特别的封装,而TCC可以直接运行C源码,其方便程度简直不可同日而语。
modu8888 回答时间:2017-4-28 15:41:42
学习~
wujique 回答时间:2018-5-30 22:08:10
很想知道楼主使用TCC的情况

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版