- 主题:小新不懂就问:自己设计的开发板固件怎么搞定的?
这是大神啊!~
俺是自己刚开始起步搞,项目没几块钱请不起人,所以啥都是自己学,而且离开学校几十年都没搞过开发虽然学的是cs还是技校毕业。。。。后台服务,应用软件,驱动,画原理图画PCB等从前到后都现学先调。。。所以问题很多。每天14个小时左右,确实锻炼人。项目的东西能先work起来,让客户看得见,优化后面再说了。
而且还用不了chatGPT。。。
【 在 lvsoft 的大作中提到: 】
: 没深刻体会过rust开发的好处,是无法理解我前面说的“降维打击”这四个字的厚重的。
: 所谓的后期调试阶段之类的优劣,只有在同层次的情况下才好谈。而rust压根就不需要什么后期调试阶段。
: 举个例子,比如我这块的代码:
: ...................
--
修改:annodom FROM 112.32.38.*
FROM 112.32.38.*
多谢解惑。。。这种官方的底层驱动和自己做的开发板(最小系统)能完美锲合么?
【 在 howmoney 的大作中提到: 】
: ESP32有些是跑arduino的,不一定要写底层驱动。STM32官方都给你自动生成了。
--
修改:annodom FROM 112.32.38.*
FROM 112.32.38.*
所以的确,对于我这种用MCU都是要看完reference manual, programming manual的人来说,我的C其实就是当汇编用的,用C纯粹是因为易读易维护,降维打击不存在的,因为我都不会用到库函数,我都是寄存器操作,没啥不能编译通过的情况
【 在 lvsoft 的大作中提到: 】
: 没深刻体会过rust开发的好处,是无法理解我前面说的“降维打击”这四个字的厚重的。
: 所谓的后期调试阶段之类的优劣,只有在同层次的情况下才好谈。而rust压根就不需要什么后期调试阶段。
: 举个例子,比如我这块的代码:
: ...................
--
FROM 180.116.135.*
原来版上包括吕大都是不看手册直接开干的么?
我几乎是理解了一块芯片的内核,外设才会做项目,从来不用别人的example代码
【 在 lvsoft 的大作中提到: 】
: 没深刻体会过rust开发的好处,是无法理解我前面说的“降维打击”这四个字的厚重的。
: 所谓的后期调试阶段之类的优劣,只有在同层次的情况下才好谈。而rust压根就不需要什么后期调试阶段。
: 举个例子,比如我这块的代码:
: ...................
--
FROM 180.116.135.*
看reference manual,自己从操作寄存器开始封装,从来不用别人的代码,也是一种风格。
这个可以确保你不会犯我这种错误。
那么当我掏出zero cost hal,能各个硬件平台到处迁移,包括这个具备高时间精度的async/await异步框架直接拿来就用,你又如何应对呢?
工程问题几个要素都要兼顾的,不用别人的代码什么都自己干,这也是我很喜欢的风格。
事实上我最近这个项目连钣金都没让别人干,为了控制装配精度,钣金相关的问题我都是自己解决的。
但什么都自己搞,这是一种兜底能力,不能一直用的。就像打仗你出奇兵制胜,但你不能只靠奇兵打仗一样。
否则效率就是问题了,而rust的优势就是能让你不用仔细透彻的理解别人的东西,同时用起来还不容易出错,这是更先进的工具所带来的更高的生产力。
这就好比我们都为了某个高标准的目标,选择不用货架成熟产品而是自己手搓一个。
但你拿锉刀手搓,我开CNC手搓,这区别还是很大的...
【 在 dismoon 的大作中提到: 】
: 原来版上包括吕大都是不看手册直接开干的么?
: 我几乎是理解了一块芯片的内核,外设才会做项目,从来不用别人的example代码
:
--
修改:lvsoft FROM 121.225.189.*
FROM 121.225.189.*
这个就看各人看资料的能力了,
比如你前面几贴举得例子,因为不用rust,又不看资料,拉了个SPI库函数过来用,结果没有搞明白主从,浪费了半天调试时间
而我,花了半天看完资料,代码写完没有发生不工作的情况,没有浪费半天,但是我看资料用了半天,时间一样,但是我搞懂了很多东西,时间差不多,而我变强了
有的人,看资料要花一个礼拜,这个时候就宁愿用rust了
但是还要考虑学习周期
但是,说到底,当你项目做的足够多的时候,用不用HAL库,用不用寄存器,其实都一样了,什么功能都是CV工程师,一点小改动就能重新把以前的功能组合成一个新项目
【 在 lvsoft 的大作中提到: 】
: 看reference manual,自己从操作寄存器开始封装,从来不用别人的代码,也是一种风格。
: 这个可以确保你不会犯我这种错误。
: 那么当我掏出zero cost hal,能各个硬件平台到处迁移,包括这个具备高时间精度的async/await异步框架直接拿来就用,你又如何应对呢?
: ...................
--
FROM 180.116.135.*
其实这也是一种学CS和学EE的区别
学CS的,追求泛用性,觉得能各平台迁徙而且没有extra amount of work是优雅
学EE的,追求把硬件的性能压榨干是优雅,从来不考虑代码的泛用,最多就是考虑的能不能维护
【 在 lvsoft 的大作中提到: 】
: 看reference manual,自己从操作寄存器开始封装,从来不用别人的代码,也是一种风格。
: 这个可以确保你不会犯我这种错误。
: 那么当我掏出zero cost hal,能各个硬件平台到处迁移,包括这个具备高时间精度的async/await异步框架直接拿来就用,你又如何应对呢?
: ...................
--
FROM 180.116.135.*
不是...我没有花半天时间啊...
编译器都指出这个问题了,我跟进去一看spi.init的内部细节知道它初始化成master模式了,然后我一看init_slave就在旁边,那当然一下子就改好了。我一开始会这么写是因为stm32的hal下面spi就只有一个init入口,master还是slave是作为参数传进去的。我只是不熟悉rust版的rp2040_hal的spi的用法,并不是不知道spi的主从关系。我又不是我朋友...他不懂spi我怎么可能不懂嘛...
这里举这个例子是让大家体会到rust对严格约束追求到什么程度,以及这么做能带来什么潜在的好处。spi这里只是举一个容易理解的例子。但凡干工程的都能理解,很多时候修bug可能只要改一个字符,但找到这个字符在哪里才是最难的事情。而rust可以从源头就尽量规避掉这种问题。
【 在 dismoon 的大作中提到: 】
: 这个就看各人看资料的能力了,
: 比如你前面几贴举得例子,因为不用rust,又不看资料,拉了个SPI库函数过来用,结果没有搞明白主从,浪费了半天调试时间
: 而我,花了半天看完资料,代码写完没有发生不工作的情况,没有浪费半天,但是我看资料用了半天,时间一样,但是我搞懂了很多东西,时间差不多,而我变强了
: ...................
--
FROM 121.225.189.*
cs也不全是追求极致的抽象。有些学院派确实在抽象这方面搞的有点走火入魔。这种我也一样该反对就反对。
硬件领域追求成本,追求极致的挖掘性能,这些我也是同意的。
我在这些问题上比较实用主义。我的观点是追求任何方向的极致都是可以,但不能走火入魔。
不过追求极致和走火入魔往往也就在一线之间。就说rust开发者内部,也是存在两派的观点在斗争呢。
所以说具体的各种优劣细节我不是那么的关心,这一点自己冷暖自知,自己觉得舒服就行。
这个问题,更重要的是横向扩展和纵向扩展的差别。
除了极少数天才,大部分人都是普通人,大家天赋差不多,用时间来换技能点的效率也差不多。技能树横着点还是竖着点是个人的不同风格,反正技能点点下去都会变强,本也无所谓差别。
但纵向扩展很怕踩错坑,然后把技能点点在了会随时间贬值的技能上,并且因为巨大的沉没成本还不容易跳坑。
所以我是很不喜欢去做精通诸如某个器件的具体细节,把手册通读一遍之类的事情。这个就是练屠龙技,然后出山之后很容易找不到龙...尤其是现在还有ai辅助,量产型屠龙刀人手一把的时代...
我当年刚学硬件的时候就听说过一位大牛精通MSP430。他2000年前后就玩了10年msp430,寄存器就跟刻在dna上的一样,不看手册手撸汇编信手拈来。当年是很牛,然而现在这还有啥意义嘛。
所以要把技能点在拥有更多可能性,有更长期回报的事情上。而rust就是其中的一种。
【 在 dismoon 的大作中提到: 】
: 其实这也是一种学CS和学EE的区别
: 学CS的,追求泛用性,觉得能各平台迁徙而且没有extra amount of work是优雅
: 学EE的,追求把硬件的性能压榨干是优雅,从来不考虑代码的泛用,最多就是考虑的能不能维护
: ...................
--
修改:lvsoft FROM 121.225.189.*
FROM 121.225.189.*
脑子一般的普通人没法用你这招
【 在 lvsoft 的大作中提到: 】
: 不完全一样。
: 这个问题并不是单纯的追求泛用还是追求性能的区别,而是横向扩展和纵向扩展的差别。
: 除了极少数天才,大部分人都是普通人,大家天赋差不多,用时间来换技能点的效率也差不多。技能树横着点还是竖着点是个人的不同风格,反正都会变强本也无所谓差别。
: ...................
--
FROM 37.219.20.*