- 博客(28)
- 收藏
- 关注
原创 2.Klipper开发篇:Klipper上位机源码分析
从Klipper执行流程和指令传输路线理清Klipper整个源码架构和运行逻辑,理解klipper是如何启动运行的?指令是从哪里获取,去哪里执行?它如何响应人机交互?又如何推送信息?
2025-05-15 17:10:33
914
原创 2. python协程/异步编程详解
协程(coroutine):类似一种轻量级的多线程程序,是在一个线程里面,实现多任务并行执行的编程方式。相比多线程,它在切换任务时,CPU开销更低,速度更快。
2025-04-29 23:36:07
751
原创 4. Klipper之开发篇:API服务器Moonraker的源码分析
Moonraker是Klipper API的实现工具(服务),要想使用显示屏或者网页端(Fluidd或Mainsail)访问Klipper,都需要启动Moonraker服务,因为网页或者显示屏访问Klipper,实际就是将它们的HTTP访问请求变成访问Klipper的Unix Socket,需要Moonraker在中间转换。
2025-04-27 15:12:56
928
原创 RK356x-11:在win11的WSL中开发SDK
-install第一个参数就是注册后解释器的名称,可以通过update-binfmts --display name来查看注册信息的,name就是第一个参数,第二个参数是解释器的路径;在SDK文档中有说明需要安装哪些依赖包,注意,有的包在WSL中是不支持的,因此,需要安装其它替代软件,且后面开发需要对相关脚本进行调整。在WSL中,不要安装更高的版本,之前试过Ubuntu24.04版,不行,虽然SDK中建议安装Ubuntu20.04以上版本,实际上新版ubuntu有很多不兼容的问题,只认准22.04即可。
2024-12-25 00:00:05
669
原创 10. 虚拟机VMware Workstation Pro下共享Ubuntu和Win11文件夹
本文记录当前最新版虚拟机VMware Workstation Pro如何在win11下共享文件,以实现Windows与Ubuntu互传文件的目的。
2024-12-20 16:10:25
678
原创 RK356x-9:根文件系统复制和打包
很多时候,SDK生成的根文件系统只是最原始的系统,要进行项目上的工作,可能还需要安装很多软件,可是,在批量生产时,不可能每个系统都得去装,一种办法是在一个系统上装了所有必须的软件,再将这个系统打包进新的SDK生产的烧录文件中,这样的文件被烧录后,启动就自带了所有必须软件,那如何实现呢?
2024-11-16 17:26:10
537
原创 RK356x-8:Wifi模块AP6xxx配置与调试
本文记录如何根据原理图,配置和调试RK356x(测试用RK3566)主板上wifi/蓝牙模块(测试用AP6212,rkwifibt),使其能正确连网。
2024-11-16 15:54:30
2232
原创 RK356x-6: mipi触摸屏的配置和调试
本文详细记录在基于RK356x-SDK最小系统上,配置mipi接口的触摸屏,调试直到完全正常显示的过程,让和我一样的新手无压力搞定mipi显示屏在RK356x芯片上的应用。mipi触摸屏配置,分两部分,一部分是显示屏,一部分是触摸板。注意,本文配置涉及到两个设备树文件,是在《RK356x-SDK开发入门》中自定义的:rk3566-test.dtsi和rk3566-test-base.dtsi。
2024-11-09 19:55:08
1498
1
原创 RK356x-4. RK356x-SDK开发入门
要对一个SDK进行定制化二次开发,首先得理解它的编译逻辑,配置参数如何影响编译行为,各模块是如何配合工作的。
2024-11-06 15:10:13
961
原创 RK356x-3. 第一次编译SDK和烧录
3.2 在windows上解压RKDevTool.tar,在RKDevTool\RKDevTool_Release下,找到对应芯片的.cfg文件,删除默认的config.cfg,复制一份该芯片的.cfg并重命名为config.cfg。由于是按默认配置编译了固件,并烧录,因此,它可能与主板的实际电路不一致,因此,尽量不要运行太多,可能因为电源域不一致造成IO损坏,下一节,将介绍如何配置与硬件一致的固件。parameter.txt 参数保存文件,由厂商写入,通常烧录地址0x00000000处。
2024-08-22 18:32:27
1770
原创 RK356x-2. SDK开发环境搭建
1. 启动一台装有Ubuntu的电脑(或虚拟机),SDK需要用到python,因此使用命令which python查看当前python存不存在,Ubuntu默认安装了python3,因此which python可能查不到python存,可以使用which python3查看当前python是否存在。SDK官方只支持在Linux系统上进行编译,因此,需要一台装有Linux系统的电脑,一般使用Ubuntu系统,这样可以进行可视化编程,同时可以使用强大的开发工具:vscode。至此,开发环境搭建结束!
2024-08-19 23:30:31
898
原创 RK356x-1. 系统引导过程及各部分固件分区
4.2 kernel启动在init/main.c中的函数start_kernel()函数,它先初始化各外设,定时器,系统时钟,中断向量表(及相关中关例程),内存管理,系统cache,进程通信机制等后,调用rest_init()来进行最后的初始化。1.3 当读取所有外部存器设备ID失败后,自动进入MaskRom模式,注意,上电时,如果MaskRom引脚被拉低(一般做成按键),则不从任何外设读取ID,直接进入MaskRom模式,该模式接收USB-c下载固件到eMMC等外部存储设备中。
2024-08-15 16:24:19
1061
原创 6.Linux的U盘自动挂载
U盘插到运行Linux的主板后,可以直接在某一目录通过ls查看到U盘里面的文件,如何实现?有两种方式可以实现,一种是用udev服务来管理U盘的插拔,一种是自写脚本,通过不断刷描/dev/serial里面U盘端口是否存在以确定U盘已经插入。
2024-07-24 18:49:15
3172
3
原创 5. Linux脚本编写
Linux脚本可以被认为是按一定的语法规则将一系列指令组织起来的指令集合。它能实现的功能比简单的命令行要丰富很多,因为脚本可以实现函数,循环,条件跳转等功能。
2024-07-13 20:41:55
295675
原创 4. Linux服务:如何写一个Linux服务
Linux服务是一组常驻内存运行,为有权限的使用者提供及时数据或功能的后台程序。通常所说的服务是由systemd service启动的,因此服务进程是systemd进程fork()出的子进程,通过systemd.exec配置子进程环境,再调用ExecStart指定的服务启动命令,启动服务进程,然后systemd监控这个进程,直到它退出。要让linux运行一个自定义服务,通常需要三步:1.写服务要实现的基本功能,通常是一个脚本或执行命令(可执行程序);
2024-07-13 14:28:23
1350
原创 3. Vim使用
3.8 /name查找name,光标跳到相应处,/^name查找以name开头的词,/name$查找以name结尾的词,/na..e 这里.代表任意一个字母,找na且隔两个字符后面是e的词,/na*e 这里*代表若干字符,找到na跟若干字符后接e的词。vim是常见于linux各版本的文本编辑器,很多linux发行版可能没有nano,但基本都能装一个vim,因此它比较通用,处理一些简单的脚本和配置够用了,这里记录最基本的用法,很多高端的用法平时根本用不着,咱们主打一个实用,实用为王,够用就行!
2024-07-11 15:12:41
317
原创 2. Windows直接连接Linux,Vscode远程可视化开发Linux
1 查看win10上的ssh客户端:旧版本在设置->应用->可选功能,新版本设置->系统->可选功能:找到OpenSSH客户端,如果没有找到,说明未安装,在本页面找到“添加功能”,在里面找到OpenSSH客户端,并安装它。3. 安装ssh服务端:旧版在设置->应用->可选功能,新版在设置->系统->可选功能,找到OpenSSH服务器,如果没有,则需要在本页的“添加功能”中,找到OpenSSH服务器,将其安装好。7. 连接后,在File->Open Folder中,就可以打开linux下的工程文件夹了。
2024-07-06 11:28:50
941
原创 1. linux日常
scp是从一个linux主机复制到另一个linux主机,它的基本格式是:scp[选项]本地文件名远程用户名@IP地址:远程文件名。将windows的E盘temp文件夹下的klipper.zip复制到/home/ysz下。一个文件的权限就是文件相对于各用户开放的权限,r可读,w可修改,x可执行。-m自动在/home下创建与用户名相同的家目录。-r自动删除ysz相关家目录,日志等。
2024-04-08 14:28:02
775
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人