前言 遥想当年上大学的时候,想拥有一个自己的网站,当时采用内网穿透的方式,在网上嫖了一个 html 模板,似乎像那么回事,但事实上完全没法持续开发或者维护。 自上班以来从没有定居过,一直在搬家搬家搬家,再也没有一个固定的 IP,内网穿透是不可能了,看到阮一峰、痞子衡等等大佬的个人博客,非常心痒,一直寄居在各个论坛里面终究是不好的毕竟天天发水文。 最近看见一个非常非常漂亮的个人博客,也就是本站的模板工程,前后端分离,独立管理,后端写文章也非常方便,决定狠狠 fork 下来。 是这个...
写作前言 市面上基本上只有上位机如何控制仪器设备的介绍,基本都是透过 ni-visa 中间件或者某种已知库,这只能帮助上位机编写。 本文是将板子枚举为仪器设备并使得驱动识别的方法介绍,在我长久的检索下发现应该是全网首发。这是一个相对封闭而小众的行业,技术资料都在各个厂商自己手里捂着。 基本介绍 标准仪器设备接口是上位机和仪器通信使用的接口,如示波器、电源、信号发生器等。常用的标准仪器接口及对应的通信协议如下。 | 通信接口 | 通信协议 | | -------- | -------- | | LAN | VXI-11 | | USB | USB...
前言 最近希望将 ADC 性能跑到尽可能的极限,所以研究了一下相关的外设功能。 其中 cache 和 MPU 属性适配的部分我以前一直没搞太懂,这次总算弄得比较清楚了。在具有 cache 功能的 arm 芯片中,一定要配合 MPU 外设功能配置才可以使用 cache 功能。 cache:缓冲区主要是为了处理器内核可以更连续地操作内存,毕竟一些内存操作涉及到跨总线,cache 可以在读取时对命中的内存附近进行预取,以及写入时一定程度的延迟凑连续,最主要的是可以减少内部总线的冲突以加速数据的处理。 MPU(Memory Protection Unit):内存保护单...
旧玩具 这是一块两年前的小板子,因为 ESP32 足够便宜而且有方便的 wifi 功能,而且这一款甚至带有 CAN 收发器,所以购入。在 ESP 中 CAN 接口叫做 TWAI ,官方代码库(早期也叫 CAN,现在改掉了)、资料等都找不到 CAN 相关字样,应该是没交版权费,功能上是一模一样的。 两年前使用 Arduino IDE 做了一点点简单的功能-网络桥接啥的,然后因为 Arduino IDE 或者 ESP-IDF 过于简单或者过于复杂而劝退。当然也是没有什么实际需求懒得继续研究。 之前花 200 大洋咨询别人一些问题的时候,别人就力荐我全面使用 *Platf...
[!NOTE] 本文尚未进行深入学习和思考,未来仍可能大量修改。 复杂系统的异常 每次发生重大产品故障,人们的第一反应总是惊人地一致:找出那个犯错的人,或者那个出了故障的零件。我们急切地寻找一个清晰的“根本原因”,因为这能给我们一种虚幻的掌控感——似乎只要修复这个点,一切就能重回正轨。 <a href="https://www.zhihu.com/question/511951496/answer/1919735563189199060?share_code=naajb45ckYWY&utm_...
ThreadX 再介绍 一些此前的内容可见最全认证 RTOS——azure_threadX 移植教程 - 土星环的基地。 由于 threadX 捐赠给 eclipse 基金会,现在已经不叫 azure\_threadX 改为 eclipse\_threadX 。 最近我的新的 CMAKE 工程结构逐渐趋于稳定和完善,也是时候介绍一下相对现代的移植方式了。过去使用的 IDE(点名批评KEIL) 过于落后,通常只能手动指定所有的源码文件和 includPath,而 CM...
(未完成,暂时搁置) 回顾 py 调用 c(0) - 土星环的基地 里介绍了动态库的生成方式和ctypes 方法直接调用dll文件。 其中动态库的生成是必须的,任何一种合理的调用都是在使用动态库。==直接调用源码被我认为是不合理的==,所以这方面必须优先学习。 这里会提及另一种方法调用c语言动态库,在python里这种方法将更加合理——pybind11。使用这种方法将真正生成 pyd 文件,并像调用一个真正的软件包一样调用我们的 c 语言代码。 只不过相比**c...
众所周知 python 作为强大的胶水语言,调用各种其他流行的编程语言都非常方便。 我的记忆力差的离谱,学过的东西不稍微记录一下过两天就忘掉。 c 语言是最接近机器语言的编程语言(别杠汇编、FPGA脚本,那不是人写的) 打算彻底搞清楚 python 怎么胶 c,以便于我呆在舒适区编写 c 语言,这还是一件相对麻烦的事情,所以需要一个系列的文章来记录学习过程。 python 可以以源码或动态库形式调用 c 语言代码,我前期的学习使用动态库形式。相信使用 python 调用别人准备好的 so/dll 是没什么难度的,大多数教程或者别人准备好的文档都描述了这个简...
我的换机策略 我对手机完全没有性能要求,从来不会出现因为性能不足而换手机的问题。只要能听歌能开热点就好了。 不戴壳不贴膜,等到手机摔到我不能接受的地步才挑选下一台手机。这就是我的换机策略。 执迷的设计 大学时更换的 MIX2 是我第一款比较满意的手机,从此我就执迷于完美全面屏的设计,我甚至可以接受大额头或大下巴,但真的对挖孔或者刘海感到生理不适。 ::: gallery 小米 MIX2 前面板 ![小米 MIX2 后面板]...
前言 作者并不是软件科班,所以一直以来没有真正主动或被动学习过编程的设计,而是基于观察和实践的经验主义。 而板上嵌入式事实上也不关注这些,更多的是评估 RAM/ROM 用量、运行速度、业务逻辑是否满足需求,这也就导致一个严重的问题,在这样的岗位上的产出大多特别地为某个特定的产品定制。 这里有两个讨论, 在真正资源受限的 MCU 上真的无法使用可复用的代码吗?我想是否定的,这在后续再讨论原因。 这样定制的软件代码归档,极少注释几无说明,真的可以称之为软件资产吗?我个人认为是否定的,在我的认知里,无法让初学者在 8 小时内无人指导即可使用的软件模块都是不合格的。 最近...