bsp学习---串口调试助手
bsp学习—串口调试助手1. 学习内容 QT 图形化 QT 和底层交互 IMX6ULL(正点原子) 显示驱动移植 IMX6ULL(正点原子) 触摸驱动移植 2. 学习到的知识库2.1 QT 插件2.1.1 Qt 在嵌入式 Linux 中的作用Qt 应用不直接操作 LCD 或 GT911. Qt 通过 QPA 平台插件负责显示, 通过 generic input plugin 负责输入: 12345QApplication / QWidget -> linuxfb: /dev/fb0 -> eglfs: DRM/EGL -> evdevtouch: /dev/input/eventN -> tslib: tslib + /dev/input/eventN 本项目是 Qt Widgets 应用. 正点原子 i.MX6ULL 无桌面环境时通常使用 linuxfb. 如果 BSP 使用 DRM/KMS 和 EGL, 应改用 eglfs. 2.1.2 Qt 插件和依赖部署目标板至少需要 QtCore, QtGui,...
CrackMe 一次逆向的尝试以及思考
CrackMe lab1解题工具: IDA Pro 9.4 (静态分析工具) Ilspy (方便查看 C#) wine (Linux 环境执行 Windows 程序的一个软件) 解题插件 ida-pro-mcp 解题代码格式: .NET 题目链接 https://crackmes.one/crackme/6a7d865b184836c0dbe7d789 1 start from here这是我第一次尝试开始解决逆向题目, 在网站中找了一个 crackme, 这次题目的程序没有壳, 因此不需要任何脱壳的工作,对于 .NET 格式的程序我不是很清楚, 当然这也是作为一次学习, 于是我便开始了尝试, 另外值得一提的是, 这也是我第一次使用 IDA.另外我转上了 IDA 的一个 MCP, ida-pro-mcp, 这也是我在 AI 时代下的一次尝试和思考. 我们通过 wine 打开程序会发现截图如下. 当我们输入密码并点击 Check 按钮之后, 验证正确即解码成功. 通过 IDA 打开这个二进制文件,...
transformer-learning——Training and Regularization
Transformer Learning —- Training and Regularization实验环境: 操作系统: Linux Ubuntu 24.04 nogpu 这一章主要讲模型训练时会遇到的问题, 以及常见的处理方法. 核心问题是: 模型不能只在训练集上表现好, 模型还要在没见过的新数据上表现好. 所以这一章会包含两类内容: 训练机制: 前向传播, 反向传播, 计算图, 参数初始化 正则化方法: 权重衰减, 暂退法, 防止过拟合 最后用 Kaggle 房价预测作为一个综合实战例子. 1 模型的正则化方法1.1 模型选择, 欠拟合和过拟合训练模型时, 我们通常会看两个指标: 训练误差: 模型在训练集上的误差 验证误差: 模型在没参与训练的数据上的误差 如果模型连训练集都学不好, 这叫欠拟合. 欠拟合通常说明模型太简单, 表达能力不够. 如果模型在训练集上很好, 但在验证集上很差, 这叫过拟合. 过拟合通常说明模型太复杂, 或者数据太少, 模型把训练集里的噪声也记住了. 可以这样理解: 欠拟合: 题都没学会 过拟合: 只背了练习题答案 泛化好:...
transformer-learning——MLP
transformer learning —- MLP实验环境: 操作系统: Linux Ubuntu 24.04 nogpu 1 线性神经网络上一节中, 我们以 FashionMNIST 为例做了一个线性神经网络. 线性神经网络是结构最简单的神经网络, 其特点是: 激活函数纯为线性函数, 其输出可以是任意连续的实数值. 由于没有非线性激活函数的变换, 多层的线性神经网络在数学上完全可以转换为单层网络. 例如, 在该例子中. 我们的结构为只有输入层和输出层的单层神经网络: 输入层为 784 个神经元, Fashion-MNIST 的单张图片尺寸是 28 x 28 像素. 代码在输入时通过 X.reshape((-1, W.shape[0])) 将二维图像直接拉平(Flatten)成了一维的长条向量. 这 784 个像素点, 每一个点都对应输入层的一个接收节点. 输出层有 10 个神经元, 因为任务是要把衣服鞋包分为 10 个类别. 输出层的这 10 个神经元, 每一个神经元都负责计算出当前图片属于某一个特定类别的得分. 经过末端的 Softmax 激活后, 这 10...
transformer-learning——introduction
transformer learning —- introduction实验环境: 操作系统: Linux Ubuntu 24.04 nogpu 1 pytorch 安装本人为 no-gpu 版本. 1conda install pytorch torchvision torchaudio cpuonly -c pytorch 其他版本参考 2 机器学习的方法2.1 监督学习监督学习(supervised learning)是在给定目标特征的情况预测标签, 每个 “特征-标签” 的键值对称为一个样本(example), 我们最终的目标是能够生成一个模型, 该模型能够将任何的输入特征映射到标签. https://zh.d2l.ai/chapter_introduction/index.html#id9: 举一个具体的例子: 假设我们需要预测患者的心脏病是否会发作,那么观察结果“心脏病发作”或“心脏病没有发作”将是样本的标签。 输入特征可能是生命体征,如心率、舒张压和收缩压等。 2.1.1 回归问题回归(regression)是最简单的监督学习任务之一: 根据房子面积,...
AI 指南——openClaw安装
OpenClaw 安装与配置记录尽管距离龙虾热已经过去好几个月了, 从最开始笔者对 AI 的抵触到现在对 AI 的好奇, 这驱使着我还是决定探索一下各个 AI 工具。 本文整理 OpenClaw 的 Linux/Windows 安装过程。 Notice: 本文侧重于探讨使用 openAI 的 key 1 OpenClaw 是什么OpenClaw 是一个仍处于 beta 阶段的 agent/gateway 项目,可以接入 Telegram、Discord、微信、QQ、飞书等聊天渠道,也可以调用本机工具执行操作。 2 Linux 安装OpenClaw 需要较新的 Node.js: 推荐:Node.js 24 最低:Node.js 22.19+ 不建议:Node.js 18 查看当前版本: 12node -vnpm -v 如果版本太旧,推荐用 nvm 安装 Node 24: 1234567curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh |...
AI 指南——RAG语义检索增强
RAG 检索增强生成RAG 是 Retrieval-Augmented Generation,中文常译为检索增强生成。普通大模型只靠自己参数里的知识回答;RAG 会先去外部知识库、文档、数据库、网页或企业资料里检索相关内容,再把检索到的内容交给大模型生成答案。 RAG 的好处是什么? 可以回答模型训练后才出现的新信息,可以减少胡编,回答更容易引用来源。 1 向量化模型Embedding Model 又称语义向量模型,被广泛应用于搜索领域,其目的是将自然形式的数据转化为向量(即连续的数字序列),并用向量之间的距离衡量样本的相关性。 1.1 常见的模型开源的 Embedding 模型可以通过 sentence-transformers 加载。 安装: 1pip install sentence-transformers sentence-transformers 常用模型 常见的有: all-MiniLM-L6-v2 paraphrase-multilingual-MiniLM-L12-v2 multi-qa-MiniLM-L6-cos-v1 BGE...
AI 指南——codex 使用指南
codex 使用指南AI 工具的使用大势所趋,充分地利用能有效提升学习的效率。 安装 codex。 1npm install -g @openai/codex 然后配置基本的模型,在 ~/.codex/config.toml。 123456789101112model_provider = "codex"model = "gpt-5.4"model_reasoning_effort = "high"disable_response_storage = trueapprovals_reviewer = "user"[model_providers.codex]name = "codex"base_url = "<url>"wire_api = "responses"requires_openai_auth = true uvx 安装。 1curl -LsSf https://astral.sh/uv/install.sh |...
IMX6ULL移植——LCD驱动
IMX6ULL 移植1 LCD 显示屏驱动LCD 显示屏是常用的外设,IMXULL 提供了一个 eLCDIF 接口用于连接 RGB 接口的液晶屏。我们不需要关注液晶屏的原理,只需要明白相关的编程接口即可。不同分辨率的 LCD 屏幕的 eLCDIF 控制器的驱动代码都是一样的,因此我们只需要修改对应屏幕的参数即可。 1.1 分辨率LCD 显示屏都是由一个一个的像素点组成的,一个像素点就类似一个小灯,这个小灯是由 R,G,B 三个颜色组成的,1080p 的意思就是一个 LCD 屏幕上的像素数量是 1920*1080 个。 1.2 像素格式一个像素点是一个 RGB 小灯,RGB这三种颜色每个都是 8 bit 的数据。3 个就是 24bit。 这种像素格式称为 RGB888。再加入一个通道透明度,就是 32bit,也就是 ARGB8888。因此一个像素点占用4字节的内存。 1.3 LCD 屏幕接口显示屏的接口有很多,比如 VGA,HDMI,DP 等等。但是本开发板不支持这些接口。只支持 RGB 接口的 LCD。信号线如下: R: 8 根红线 G: 8 根绿线 B: 8 根黑线 DE:...
IMX6ULL移植——INPUT子系统
IMX6ULL 移植1 INPUT 子系统INPUT 子系统的核心代码在 drivers/input/input.c 文件当中。 我们要使用 INPUT 子系统,只需要注册一个 input 设备即可。 input_dev 结构体表示 input 设备。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778// https://elixir.bootlin.com/linux/v7.1-rc7/source/include/linux/input.h#L45struct input_dev { const char *name; const char *phys; const char *uniq; struct input_id id; unsigned long...