为什么不用 MicroLib 和 printf —— Arm 的 Semihosting
结论 结论写在前面 1. 首先不使用 microLib 是为了源码行为可控,不会由于厂商的胡作非为改源 lib ,同时也使得源码具备了跨平台的能力,不会因 C 标准库不同产生行为差异。 2. 由此推演,如果不使用 microLib ,那么会引入原版 libc ,那么 C 源库里的诸多交互函数,会产生 Semihosting 代码,导致 debug 下会卡卡地运行,脱离 debug 根本无法运行。 3. 总之,如果不使用 microLib ,其中的 C 标准库函数的使用要非常谨慎,避免是系统交互函数产生 Semihosting 代码 祖宗之法不可变 自我初入行...
规则还是原则
当一个系统草创时,会有几个简单的目标被提出,如果顺利,这个系统就开始发展壮大。然后不断有新的目标或意外出现,这个系统被打上越来越多的规则补丁,以便其他的新进人员可以在不了解整体的情况下参与建设。 那么这些规则真的都是不可违背的吗?这个系统的最终目的是什么?这个系统短期的目标是什么? 博闻 老虎环球基金的财务总监(前 Controller?)Gregory Kogan 提出这样的思想——"Wabl"。 当你回顾一些工作时——比如代码、策略、架构、设计、草稿.....时,好好想想这个问题: 当某项东西背移除或忽略时,是否有任何价值被丢失了? 在我的职业生涯中,我已经[多...
网站状态监控
监控入口 在网站下方有一个监控入口,可以看见网站各个技术服务的状态 现在已经删掉了 使用这个开源软件实现 uptime-kuma (github.com) 官方文档还算详尽,一定要细看 [uptime-kuma Wiki (github.com)](https://github.com/louislam/uptime-...
关于局部变量的栈行为——由循环语句内定义循环变量引申
结论 结论写在前面 1. 在 for 循环语句内定义局部循环变量,使用 AC6 编译器或者 GCC 编译器,都不会因此产生多次栈操作,而是会使用相同的两个堆栈偏址。如果开优化,当二者逻辑功能没有实际差异时,汇编将完全一样。 2. 事实上在 for 循环的同时定义循环变量是一个优秀的操作。对于将所有局部变量的定义全部提前到函数头部,会产生事实上的负优化或无优化(依据优化等级和编译器不同)。 3. 由此引申,如果追求极致的性能,应当仅在使用到局部变量的分支中声明该局部变量。 以下测试均以 stm32H7为目标编译 用如下的写法讨论局部变量的栈操作...
一台美丽的废物!LG gram style 16
这台笔记本大约发售于2023年6月,在8月网上就有一些评测了。所以我心心念念了一年,依然舍不得买。他真的太贵了,1.4W 的售价简直是在抢钱。 最近把我的 steamDeck 送人了,在想要不要弄一台轻游戏、便携、同时拿出来不会过分丑陋的设备,在地铁或高铁上拿来打打牌不会违和。最初选择的是ARM 版的田牌,但挑来挑去逐渐加预算,最后都加到这个地步了不如弄一台梦中情机。 官网介绍在这里[LG gram...
关于 C语言 指针的推进量
关于 为了避免误会,我很少使用类似这样的语句 uint32_t *p; p++; p+=4; 而是仅使用这样的形式 uint32_t *p; uint32_t d; d = p[4]; uint32_t *pt; pt = &p[4]; 但是在遍历推演时,后一个形式一定需要一个新变量进行遍历。 而前一个形式则可以在函数传参指针的基础上进行,O0 下一定会比后一个形式节省堆栈。 最近为了提升我的库性能,决定牺牲一些可读性,改为不直观的写法,所以有后续的测试进行。 结论放在前面,**当指针 + 这个动作发生时,被 + 处理的指针类型决定了实际推...
modbus 协议介绍
参考资料 各博客网站都是缺章少句,排版混乱,偶有错误,不建议参考。 这里有 modbus 中文网的资料 MODBUS 协议中文版/英文版预览及下载 | Modbus 物联网云平台 更权威的是官方文档 MODBUS Application Protocol 1 1 b 以及官方其他文档,在这里寻找 [Modbus 规格和实施指南](https:/...
绝对映射——最小完美哈希表
特性简介 哈希表系列数据结构主打键值对关系的建立,我非常喜欢把一切逻辑都抽象为键值关系,所以哈希表数据结构也是我很喜欢的。 - 哈希表的特性:哈希表是一种通过哈希函数将键(key)映射到表中一个位置来访问记录的方法,以支持快速插入和搜索。哈希表不保证键或值的连续性。 - 完美哈希表的特性:完美哈希表是一种哈希表,它可以在没有任何冲突的情况下将键映射到值。这意味着每个键都有一个唯一的哈希值,并且哈希函数能够直接定位到键对应的值,提供了更高效的查找性能。 - 最小完美哈希表的特性:最小完美哈希表是特别设计的完美哈希表,它能够在保证没有任何冲突的前提下,使用最小的空间来存储键到值...
好看的 pyqt 组件库——PyQt-Fluent
库介绍 QT 战略上的失败不代表 QT 不是好的框架 我认为 QT 至少是一个方便的框架,特别是与 python 结合。 众所周知,”人生苦短,我用 python“,主打垃圾代码但能用,pyqt 能在极短时间构建一个足够实用的桌面软件工具。 当然在我的信条里,能用并不足够,起码界面设计不能辣眼。 此时我们的主角堂堂登场,来自zhiyiYo (之一)大佬的组件库。 PyQt-Fluent-Widgets 大佬也开源了...
好的接口定义手册
一本免费英文电子书,收集了130种电子产品常见组件(比如 USB 口)的引脚定义。 Pinouts.org 例如Type-c接口定义,共两页,非常直观。 比起网上满天飞的混乱消息,或者标准书里几百页的严谨定义,我更喜欢这样的 ![img](https://cloudflare-imgbed-6qt.pages.dev/file/1733227891742_xfrtl...