RISCV 前置知识 ISA: 指令集架构,是底层硬件向上层软件提供的一层接口规范。ISA的出现使得软件开发者不必关心具体的硬件电路结构 ISA定义了如下方面 基本数据类型(byte,word,halfword) 寄存器 指令 寻址模式 异常和中断 …… 微架构:硬件对指令集架构的实现,注意功耗,发

阅读更多 »

Rust 前期准备 环境搭建 可选ide/插件式编辑器: rustrover(jet brains)/rust-analyzer(rust foundation)+vscode 访问rust官网来获取下载链接,windows采用msvc编译链,在使用msvc之前需要先下载Visual Studio

阅读更多 »

PLCT rtt_dts rtt的设备树通过online package(fdt)来支持,但已经2年没更新了 另有两年前的讨论指出当时的dts并不好用 fdt依赖于文件系统,编译可能不过 目前最全免得介绍位于

阅读更多 »

如果你看到了这一篇文章,那么证明你已经安装成功了,感谢使用 Halo 进行创作,希望能够使用愉快。

阅读更多 »

移植ESP32SPI驱动至RT-Thread 本文是博主移植驱动工作的总结,详细介绍了移植过程以及遇到的问题及其解决方案,希望对各位有帮助。同时,代码已进入RT-Thread主线。博文同时发表在个人博客wumingzi.top与RTT论坛 本文主要使用、查阅了以下资料: 参考书籍 RT-Thread

阅读更多 »

rtt技术分享 之前superthomas大佬曾移植rtt到esp32c3上github issues,并发布readme供参考。但是我在安装环境以及编译下载时还是出现了一些问题,因此我将这些问题汇总起来归纳为本篇博客 最终成果:完成rtt在esp32c3芯片上开发、调试工作所需要的环境搭建,使用w

阅读更多 »

本文较为详细地介绍了C++的语法和使用中需要注意的点,还介绍了STL库和Modern C++,甚至涉及C++20的部分新特性。在最后,我们大致的介绍了C++常用的设计模式 C++ 从C到C++ 对象与实例 什么是对象? 对象是类的具体化,类是对象的模板或蓝图。类定义了数据的结构(成员变量)和操作数据

阅读更多 »

本文从OSI网络模型出发介绍计算机网络,并涉及多种有关计算机网络的应用。需要注意的是本文有较为浓厚的学术界气息,对于具体的协议使用本文不阐述 计算机网络 分组交换与线路交换 线路交换:早期通信设备所采用的方式,这种方法通过时分,频分等手段将一条宽带分成若干个通讯链路从而使多个设备同时且独享的通信,这

阅读更多 »

RT-Thread 实验参照RTT官方文档以及RTT内核实验手册 RT-Thread简介 RT-Thread(下文简称rtt)是一款纯国产的RTOS,其特色在于组件非常丰富,适用于物联网行业。其基本组件包含RTOS内核,wifi协议栈,dfs文件系统,finsh控制台,USB协议栈,安全模块,低功耗

阅读更多 »

Linux内核基础 本文阐述系统为x86体系架构,idt,gdt,tss,系统启动引导过程均以x86架构为蓝本,arm可能不适用 Linux内核体系结构 nmi(not mask interrupt)不可屏蔽中断 系统启动时会读取RTC并赋值给jiffies 内核中定时器使用链表进行管理 每个进程都

阅读更多 »

title: Linux深入 date: 2024-02-21 00:21:54 tags: Linux驱动深入 Linux深入 内联汇编 为了保证效率或者使用特殊指令(如原子操作)时需要使用汇编,使用方法是:单独将汇编代码放在.S文件中,在C函数中使用extern声明之后就可以使用汇编文件里的函数

阅读更多 »

基础的Linux应用与驱动开发 Linux Linux基础 shell负责解析命令,当用户在shell中输入命令时,根据输入的结果,shell根据PATH环境变量的位置找到相应的程序执行,因此可以通过将.o文件复制到PATH来直接在任何目录下执行程序,否则只能使用绝对路径或相对路径的方式来执行 []

阅读更多 »

项目 FreeRTOS内核实现 参考书籍:《FreeRTOS 内核实现与应用开发实战指南》 一个工程如果没有 main 函数是编译不成功的,会出错。因为系统在开始执行的时候先执行启动文件里面的复位程序,复位程序里面会调用 C 库函数__main,__main 的作用是初始化好系统变量,如全局变量,只

阅读更多 »

杂项 硬件 SOC: system on chip 电机会有死区电压,表现为电压很低时电机不能启动,死区电压约占额定电压的10%,此时需要给一PWM占空比最小值从而避免死区电压 处于三相电PWM调功率中的开关器件(如IGBT),换相时为防止三相电任意上半桥和下半桥同时开启导致短路,我们要给死区时间,

阅读更多 »

Python Python基础 解释器与编译器 解释器输出运行的结果 编译器输出编译的文件 字面量:写在代码中的值,可以被分为整数,浮点数,字符串,元组,列表等 python的单引号和双引号意义相同,但是使用单引号可以打出双引号,但不能打出单引号。使用双引号则反之,如果想使用单引号打出单引号,则需要

阅读更多 »

本文介绍了Git,GDB,Makefile,CMake四种C/C++编程中常用的工具链,还涉及一点GCC制作库文件的内容 工具链 Git Git本地操作 版本控制系统分为2种 集中式版本控制系统 如SVN 分布式版本控制系统 如Git 相比SVN,Git可靠性高但操作复杂 git init [dir

阅读更多 »

FreeRTOS 使用静态创建任务函数的话,返回值就是句柄,因此,要想对静态函数创建出来的任务进行操作的话需要创建一个临时变量以记录其返回值 使用vTaskDelet函数要注意不要在自己的进程内部自杀,这样会导致空闲任务无法清理内存 TCB结构体内部包含函数指针,SP位置,优先级,函数名字,函数参数

阅读更多 »

vim的基本操作 Vim复健计划 命令模式 o 新建下一行并切换到编辑模式 O 新建上一行并切换到编辑模式 [n]x 包括光标的后n位剪切,若改为X,则是光标前n位但包括光标所在的字符 [n]yy 包括光标的后n行复制 [n]dd 包括光标的后n行剪切 [n]p 粘贴复制的内容n遍 D 包括光标的之

阅读更多 »

STM32 STM32 常用寄存器缩写: CR 控制寄存器 SR 状态寄存器 DR 数据寄存器 ST公司出品的Microcontroller(微控制器) Cortex-M内核 学习的是M3内核 供电电压 2.0V-3.6V(标准3.3V),USB输出电压是5V AHB 先进高性能总线 APB 外设总

阅读更多 »

C复健计划 printf函数无法打印多行字符串,若要打印多行字符串则需要在每行后加换行符\n \n代表换行,\n\代表下一行是上一行的延续,如果改为\n则会报错 变量名第一个字母不能是数字 ANSI C C99 C11 关键字数量分别是32 32+5 37+7 %11.2f代表输出11个占位符,其中

阅读更多 »