MOMENTS Blog

Thinking will not overcome fear but action will.

有趣的嵌入式

真正从零开始了解嵌入式

前言 memfault有这么一篇文章: From Zero to main(): Bare metal C 这个文章的措辞本身就很有意思,bare metal,裸露金属,表示原生的C。 文章开头还用了莎翁式的古英语: The entry point of thy program shall be named “main”. 你的程序的入口点应命名为“ma...

WDFK IS DMA?

RT-Thread贡献记录

前言 做WS2812的时候要用到SPI6,然后发现SPI6驱动缺失,补完后被路过的程序员发现SPI6没有DMA,仔细一查只有BDMA(D3域),因此开始研究BDMA和相关的东西,着手写BDMA驱动。 DMA是怎么开起来的? RT-Thread使用Kconfig配置,然后通过Sconscript和env工具生成宏到rtconfig.h,这些我们已经知道了。DMA这类驱动也绕不开这套逻辑,需要开...

OPUS:龙脉常歌的故事

剧情佳作

前言 这个博客一向是写技术的。但是我没想到有一天一部作品会吸引我到特此为其写一篇感想的地步….这个游戏可写东西很多,然而受制于文笔与思绪,我难以全数表达,只能将浮上心头的几点草草写就作罢。 本作的故事围绕着李莫和艾妲,以及艾妲收养的妹妹拉米亚三人展开。在人物塑造上,龙脉常歌是非常醇熟的,前期的白牙和大魁的人物弧光做的很完整,充满个性的女主也是第一眼就吸引了我。起承转合,矛盾与冲突,始终围绕...

Git稀疏检出

依旧Git整理

前言 折腾的时候发现稀疏检出都没个很好的方案,AI自己都搞不明白。最终选了一套最可靠的:这里以Pigweed为例子 1. 创建目录并初始化 git 仓库 mkdir pw_tokenizer cd pw_tokenizer git init 2. 添加远端 git remote add origin https://github.com/pigweed-project/pigweed.g...

看看代码01

看看你的码

前言 又来挖新坑了。作为学习rtos的一个娱乐部分,我最近发现了个很有意思的log库,是出自谷歌的pigweed。所以今天又来看看码。 项目结构 这个结构乱的很。pigweed下有pw_log_tokenized,还有它的Zephyr变体。我先看看原版是怎么实现的吧。这个底下还有两个override文件夹,这个英文意思是覆写,应该就是比较上层的文件了。然后还有public,下有主文件夹。再就...

LinkScript相关

捣鼓记录

前言 在移植tinyusb的时候我灵机一动想使用RT-Thread式的静态注册机制,因此大概写了一个库出来。 但是这个机制是依赖于lds等脚本的,因此我打算专门学习一下怎么编写链接脚本。 链接脚本的类型 链接脚本是MCU官方提供的,一般有具体的设备寄存器地址和内存之类的信息。对于 GCC编译器来说,一般是ld文件。对于keil等来说一般是sct。 典型的LD文件布局如下: ENTRY(Re...

Zephyr杂谈

捣鼓记录

屎?! zpehyr的D:\CODES\Zephyr\zephyr\drivers\clock_control\clock_stm32_ll_h7.c 有个自动配置VOS(电源配置)等级的函数,但是它没完全实现,默认拉起就是VOS0(最高级电源) 烧录过程中遇到过的问题: 比较懒,就用AI总结了 目前遇到的问题 west 初始不可用:当前终端一开始找不到 west,后来确认是用 Ac...

Zephyr设备树详解

捣鼓记录

前言 博客里有讲过Zephyr的安装和后续的工作区搭建等等。但是设备树的内容由于篇幅缘故一笔带过了。因此这里重新开了一个帖子,专门用于记录Zephyr的设备树语法。 基本语法 Zephyr的写法基本与linux的一致,设备树由根节点开始: /{ }; 接下来的所有内容都是节点,节点又有子节点,同时又有自身的属性。他们的关系就和结构体一样,通过花括号包含: /{ leds: led...

RM之后?

反思;感悟

我怎么又回来了? 大抵是不擅长拒绝…亦或者只是一时冲动。 我还是选择了重新回来担任哨兵电控。 失败,悔恨,汗与泪水 管理层依旧是那个管理层,并没有什么向好的变化————因此失败的结果基本上是必定的。 只不过没想到会输给福建师范

一个有趣的编程技巧

学习笔记

前言 原本这篇帖子只是为了记录一个尤达表达式。没想到后面这些小技巧越堆越多,已经要改为“一些编程技巧”了。 这里需要注意的是,大部分这些技巧都是过时的或者不必要的,因为现代编译器已经替你完成了大部分工作,只不过了解一下还是很有启发性的 “尤达表达式” 这个出自星球大战的尤达,他喜欢倒装句。然后c语言中,很常见的一个错误就是使用类似’c==’/n’ ‘这种情况时,经常会忘记打多一个=导致被编译...