嵌入式linux疑难问题记录
cfg80211: failed to load regulatory.db描述和现象
问题描述:内核加载无线电监管数据库报错
问题现象:CONFIG_CFG80211=y报错,CONFIG_CFG80211=m,insmod cfg80211.ko不会报错
打印日志:[ 1.715156] cfg80211: Loading compiled-in X.509 certificates for regulatory database[ 1.725021] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'[ 1.728882] platform regulatory.0: Direct firmware load for regula[ 1.737806] RAMDISK: squashfs filesystem found at block 0[ 1.737857] RAMDISK: Loading 2908KiB [1 disk] into ram disk... ...
claude-code使用说明
以下操作均在Ubunut 22.04
安装 Claude Code 文档
curl -fsSL https://claude.ai/install.sh | bash
使用设置AIP KEY(推荐)# 设置环境变量export ANTHROPIC_AUTH_TOKEN="sk-ant-xxxxxxxxxx" export ANTHROPIC_BASE_URL="https://api.anthropic.com" # 可选,默认就是这个
初次使用(设置主题、登录、信任文件夹)cd project_pathclaude
设置API KEY可以免登录,如下图,建议使用推荐值即可
Enter = 执行命令
Shift+Enter = 插入换行(方便输入多行命令)未设置API KEY,会提示登录,如下图:
主界面
操作快捷键
快捷键
功能描述
使用方法
双击 ctrl + c 或 /exit
退出claude
ctrl + c需连续按
?
显示快捷键
在输入框中输入?会显示所有快捷键列表,再次输入?或点击外部可关闭 ...
嵌入式Linux支持NFS挂载
Linux内核开启nfs配置menuconfig配置如下:
nfs驱动挂载(如果是编译成驱动,参考此处)手动加载驱动需要按照下面的驱动加载顺序,否则可能因为依赖关系导致异常
insmod sunrpc.koinsmod nfs_ssc.koinsmod grace.koinsmod lockd.koinsmod nfs.koinsmod nfsv3.ko
NFS挂载脚本#!/bin/shinsmod /mnt/sdcard/nfs_debug/sunrpc.ko insmod /mnt/sdcard/nfs_debug/nfs_ssc.koinsmod /mnt/sdcard/nfs_debug/grace.koinsmod /mnt/sdcard/nfs_debug/lockd.koinsmod /mnt/sdcard/nfs_debug/nfs.koinsmod /mnt/sdcard/nfs_debug/nfsv3.ko# 设备名称device="wlan0"# 循环直到设备存在while ! ip link show "$device" ...
MakerWorld模型收藏
拓竹A1 及A1mini原厂工具盒(高精度、超细节、无五金)
vscode常用快捷键速查表
操作系统为WINDOWS
功能
快捷键
显示隐藏终端
Ctrl + `
快速打开文件
Ctrl + P
打开侧边栏搜索
Ctrl + Shift + F
跳转行
Ctrl + P 输入 :linenum
打开资源管理器
Ctrl + Shift +E
跳转定义
F12
探究jffs2垃圾回收机制
核心概念:为什么需要垃圾回收?在 JFFS2 中,当数据需要修改或文件被删除时,它并不会在原来的位置覆盖写入。而是:
写入新数据:在闪存的空闲区域写入新的数据节点。
标记旧数据无效:之前存储旧数据的数据节点会被标记为“过时”或“脏”。随着文件系统的运行,闪存上会积累大量的“过时”节点,它们占据着空间但却无法再被使用。为了回收这些空间以供新的写入操作使用,JFFS2 必须有一个机制来清理这些“垃圾”区块,这个机制就是垃圾回收。
JFFS2垃圾回收触发机制内核代码打开相关日志垃圾回收相关代码路径kernel/fs/jffs2/gc.c,垃圾回收相关的打印由jffs2_dbg打印,相关代码路径kernel/fs/jffs2/debug.h我这边通过修改源码的方式将相关打印放开:
原代码,
#define jffs2_dbg(level, fmt, ...) \do { \ if (CONFIG_JFFS2_FS_DEBUG >= level) \ pr_debug(fmt, ##__VA_ARGS__); \} while (0)
修改后,直接将p ...
GCC二进制文件构成
GCC编译二进制产物一般有静态库、动态库和可执行程序。本篇文章的目的是为了探寻可能存在的减小二进制程序体积的方法。
查询文件格式file查看是否是ELF格式格式:file [file path]
10:31:34 ELF $file *json_example: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, with debug_info, not strippedlibcjson.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not strippedlibjson-c.a: current ar archive
readelf详细查看ELF文件信息格式:readelf <option(s)> elf-file(s)
10:46:14 ELF $readelf -h json_exa ...
cjson使用
参考资料:cJson数组的生成与解析
JSON规则键值对 “key”:”value”
json是一个键值对集合
以”{“开始,以”}”结束,允许嵌套使用
每个名称和值成对出现,名称和值之间使用”:”分隔
键值对之间用”,”分隔
value取值
可以是一个新的json对象
数组:使用”[“和”]”表示
数字:直接表示,可以是整数,也可以是浮点数
字符串:使用引号”string”表示
字面值:false、null、true中的一个(必须是小写)
字符串JSON互转cJSON *json = NULL;char *str = NULL;json = cJSON_Parse(strMsg);str = cJSON_PrintUnformatted(rulesListJson);cJSON_Delete(json);free(str);
数字、字符串{"number":23,"name":"xiaoqiang"}
构造char *str = NULL;cJSON *json = NULL;sendJson = c ...
docker命令
Docker 命令帮助命令
命令
说明
docker version
显示 Docker 版本信息
docker info
显示 Docker 系统信息
docker 命令 --help
查看 Docker 命令帮助
镜像命令docker images - 查看本地的所有镜像opens@jiang ~ % docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEalpine/git latest a939554ad0d0 6 weeks ago 25.1MB
解释:
字段
说明
REPOSITORY
镜像的仓库源
TAG
镜像的标签
IMAGE ID
镜像的 ID
CREATED
镜像的创建时间
SIZE
镜像的大小
可选项:
-a, --all:列出所有镜像
-q, --quiet:只显示镜像 ID
docker serach - 搜索镜像opens@jiang ~ % docker search ubuntu #搜索 ...
git提交格式 - Conventional Commits
约定式提交:日常工作中经常用到git,方便别人也是方便自己,学习一下提交规范
约定式提交格式<类型>[可选 范围]: <描述>[可选 正文][可选 脚注]
详细说明类型:说明本次提交的类型
类型
解释
feat
新增功能
fix
修复bug
docs
仅修改了文档
style
修改了代码风格,不影响代码逻辑
refactor
代码重构,没有新增功能也没有修复bug
perf
性能优化
test
增加或修改测试用例
build
编译脚本
ci
CI CD相关
chore
杂项,不牵扯代码修改,比如增加了一个工具
revert
回退
范围:可选格式:用圆括号括起来,一个名词描述当前修改范围
描述:可选详细描述本次提交的动机和与之前的差异
脚注:可选不兼容的变更(BREAKING CHANGE): 如果当前代码与上一个版本不兼容,需要在此处说明。必须以 BREAKING CHANGE: 开头,后面跟上描述。关闭 Issue(Closes): 如果此次提交解决了某个 Issue,可以在这里关联。例如:Closes # ...