claudecode
ClaudeCode避免权限请求使用ClaudeCode时,会发现它总是请求各种命令的权限,非常烦人。可以通过以下方式让他获取所有工具的权限 1claude --allow-dangerously-skip-permissions skill定义skill本质上是给AI可复用的功能插件,类似于我们写代码时的一些第三方库(比如OpenCV让C++直接具有了图像处理的能力,而不必手动从底层实现这个功能)。它本质上是把“prompt + 规则/最佳实践 + 脚本 + RAG这样一整个工作流打包给AI,这样就不必每次都重新教给他。此外,通过给一些脚本,让AI从只会聊天变得能操作你的电脑,靠拢真正的Agent 12345skill: - system prompt(角色 + 总规则) - RAG(公司文档 / 代码规范 / API说明) - tools(git / 编译 / 测试) - workflow(流程控制) system prompt、RAG、workdflow我觉得本质上都是一些文字,有什么区别呢? system...
26 PCIE
PCIE硬件接口PCIE每个方向的数据由2根差分串行信号传输,发送/接收2个方向一共就有4根线:TX+、TX-、RX+、RX-,一对发送/接收信号线 被称为一个Lane: 一个PCIE设备可能有多个Lane: Lane越多,数据带宽越大 2个PCIE的链接成为一个Link 一个Link最多32条Lane 如何理解PCIE是串行的? PCIE桥和PCIE设备通信时,数据都是一位一位发送的,一组数据(addr+data+校验位)会组成一个数据帧,PCIE设备接收完一个数据帧后,进行解析和校验,最后才获取数据。这和串口非常像啊!! 数据帧
autoconf
Autoconf定义Autoconf是一个自动化构建的CLI工具,用于生成可移植的configure脚本。configure脚本会完成以下事情: 根据configure.ac文件定义的规则,运行时自动检查系统环境:操作系统、编译器、库、函数、头文件、字节序、路径等 根据检测结果及用户输入生成Makefile (通常需要一个Makefile.in 模板,由automake工具提供) 123456789源码目录 ├── configure.ac ├── Makefile.am │ ├─> automake 生成 Makefile.in ├─> autoconf 生成 configure │ ./configure 生成 Makefile(结合 Makefile.in + 系统检测结果) └─> make 编译安装 AutoConf有以下特性: 跨平台性强:自动适配不同 Unix/Linux 系统 减少手动维护:不需要为每个平台写单独...
git
git使用笔记1.用户初始化12git config --global user.name "Li-Ruiqi"git config --global user.email "1009962019@qq.com" 提交代码时会显示这里配置的user的信息 不加--global也行,就是配置当前仓库 2.提交一个PR12345git checkout -b feature/xxx # 创建新分支并切换# 进行代码修改git add.git commit -m "提交信息"git push origin feature/xxx 3.切换到某个提交(commit) 如果check out到当前最新节点之前的某个节点,修改代码并提交,再切换回最新节点,会发现刚才的commit消失了,并没在该分支中 12345678910# 列出提交历史来找git graph中消失的commitgit log# 或者git reflog#切换git checkout...
25 IIO子系统
IIO子系统IIO(Industrial I/O)子系统是Linux中对于类ADC传感器(温湿度、电压、电流、IMU…)数据采集所提供的一个框架 总览在Linux内核中,IIO同样遵循着“驱动”分层的理念,一个完整的IIO设备的驱动可以分为以下几层 iio-core: 提供统一的用户空间接口(/sys/bus/iio/iio:deviceX/和字符设备) 管理IIO子系统的初始化和退出 实现IIO设备的注册与注销机制 定义标准的IIO操作数据结构(iio_info, iio_dev等) iio device driver:这一层直接与硬件交互,是驱动开发者的工作重点 实现iio_info结构体中的回调函数(read_raw, write_raw,...
05 Kbuild
KbuildKbuild(Kernel Build...
07 pinctrl子系统
pinctrl子系统pinctrl子系统的作用 获取设备树中 pin 的信息 设置 pin 的复用功能(在6ULL由IOUMXC寄存器控制) 设置 pin 的电气特性,比如上/下拉、速度、驱动能力等 (在6ULL由PAD寄存器控制) 相关寄存器对于引脚的配置,不同平台通常不一样: IMX6ULL使用IOMUXC(Input/Output Muliplexing Controller),和IOMUXC-SNVS寄存器实现引脚复用功能的设置、使用每个GPIO的PAD寄存器进行引脚电气属性的设置 IOMUXC和IOMUXC-SNVS的区别主要在于配置的引脚所属的电源域,前者控制主电源域的引脚,而后者控制SNVS这个独立的电源域的引脚(该电源域用于在系统休眠时维持部分功能) 同一个引脚只能由一个引脚配置模块来配置 使用方法pinctrl子系统的使用通常遵循以下步骤: 1.定义引脚控制组:节点的名字一般以grp结尾 1234567&iomuxc { // LED的引脚控制组 pinctrl_led: ledgrp { //...
18 SPI子系统
...
00 Linux内核模块
Linux内核模块Linux内核本身非常庞大,包含了很多东西,这带了一些问题: 许多功能我们可能并不需要,如果每次都把所有东西一起编译了,十分耗时且编译出来的镜像会很大 因此,Linux内核引入了“模块”机制,对于一些功能,它本身不直接编译进内核,而是以模块(.ko)的形式存在内核之外,一旦需要这些功能,可以动态将其加载进内核。一旦被加载,他们就和内核中其他部分没有区别 所以Linux的开发有2种方式: 1.将新功能直接编译进内核,这样当Linux内核启动时将自动运行设备驱动程序 2.将新功能编译成内核模块.ko文件,在Linux内核启动后使用相应命令加载驱动模块 通常在调试的时候使用第2种方式,这样在修改驱动时只需要修改驱动的代码,而不用重新编译整个内核并重启 内核模块程序结构12345678910111213141516#include <linux/module.h>#include <linux/fs.h>static int __init mydriver_init(void) { printk(KERN_INFO...
Makefile
Makefile总览定义:Makefile是一个自动化编译工具,用于定义文件依赖关系与构建规则 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释 显示规则显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出:要生成的目标,目标的依赖文件,生成的命令。其格式如下: 12目标: 依赖文件 命令 # 必须用Tab缩进 make 会检查目标文件的时间戳,若依赖文件比目标新,则重新执行命令 若目标文件已存在且依赖无变化,跳过构建(增量编译) 1.伪目标:用于执行非文件生成的操作(如清理、安装等),需通过 .PHONY 显式声明 12345.PHONY: clean installclean: rm -f *.o appinstall: cp app /usr/local/bin/ 2.默认目标:一个Makefile中可以定义多个目标,当我们使用make命令但不指定具体的目标时,默认生成第一个目标 3.中间文件目标:临时生成的文件(如 .o 文件),可通过 .INTERMEDIATE...






