无标题
基于Yocto编译imx-boot 检查磁盘空间,至少需要200GB空间 wsl.exe –system -d Ubuntu-22.04 df -h /mnt/wslg/distroUbuntu-22.04为采用wsl.exe -l查看到的安装版本 代理设置 export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897不同代理设置方式不一样,用代理下载更快 安装必要的库sudo apt-get install build-essential chrpath cpio debianutils diffstat file gawk gcc git iputils-ping libacl1 liblz4-tool locales python3 python3-git python3-jinja2 python3-pexpect...
Yocto
petalinux 构建嵌入式webserveradd nginxpetalinuxde yocto layers中已经有了webserver的配方, 直接build就行 petalinux-build -c nginx nginx添加进镜像在project-spec/meta-user/conf/user-rootfsconfig中添加 CONFIG_nginx 然后在petalinux-config -c rootfs中的user layer中就会出现nginx 选择然后再进行编译即可
lwip ptp
lwip 支持 ptp和gptp功能记录背景xilinx的官方lwip bsp不支持 IEEE1588 协议 ptp和gptpptp: 可以在普通网卡上以软件方式实现,但精度只能达到毫秒级。要达到微秒级,需要支持硬件时间戳的网卡,但协议本身并不强制gPTP:强制要求链路上的每个设备(终端和交换机/网桥)都必须在硬件层面上支持时间戳。这意味着在数据包进入和离开网络端口的物理层瞬间,就由硬件打上时间戳,完全绕过了操作系统协议栈带来的随机延迟和抖动。这是实现纳秒级精度的基石。 lwip协议栈修改ptp 和 gptp 架构ptp实现 gptp实现 ptp(IEEE 1588)的基于udp的实现只需要绑定监听指定的端口(319, 320)上的事件就行但是gptp协议是IEEE 802.1AS, 仅支持 Layer 2(以太网帧),所以需要去捕获以太网帧,这里在ethernet的input入口处捕获。需要特别注意需要设置mac的hash表,让gptp的多播地址不被mac过滤。xilinx的mac设置hash表的时候需要先stopmac,设置完后需要restart...
WSL2
工程创建流程 vitis打开硬件描述(xsa)所在目录 create application project create a new platfrom hardware(xsa) 选中你的xsa文件 选择自己需要的工程模板(这里用的lwip udp client perf) 选择设置bsp lwip设置如下 去ps工程里添加数学库
WSL2
常用功能端口转发一次配置,可以实现 Windows端口==WSL端口 在WINDOWS用户目录下创建一个.wslconfig文件 [wsl2]localhostForwarding=true PS 如果Windows本地启动了指定端口, 这时WSL中可以使用相同的端口, 但是localhost:port 将指向Windows的服务 也可以直接在wsl的设置里将网络模式选择为Mirrored vhdx 内存优化导入Hyper-V# 启用Hyper-V功能(如果需要)Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All# 导入Hyper-V模块Import-Module Hyper-V 运行优化命令optimize-vhd命令需要在管理员权限的PowerShell中运行,并且需要Hyper-V模块支持。 optimize-vhd -Path "D:\00.wsl\ext4.vhdx" -Mode full windows...
无标题
wsl2的快照与回滚查看已安装的系统wsl -l -v NAME STATE VERSION* Ubuntu Running 2 docker-desktop Stopped 2 做快照wsl --export Ubuntu F:\WSL-bak\wsl-ubuntu.tar 回滚注销当前系统wsl --unregister Ubuntu 回滚wsl --import D:\WSL\Ubuntu F:\WSL-bak\wsl-ubuntu.tar --version 2 # 安装的哪个版本的就写哪个版本的(比如我安装的是Ubuntu-24.04)ubuntu2404 config --default-user USERNAME
RTOS System
RTOS 实时操作系统MOSI/MISO loopbackMOSI(Master Out Slave In)和 MISO(Master In Slave Out)是 SPI 总线的两条数据线。Loopback 指的是将 MOSI 和 MISO 物理上短接(或在软件中模拟),这样主机发送的数据会直接回到主机的接收端。在没有真实 SPI 从设备的情况下,可以用 loopback 测试 SPI 主机的收发流程、FIFO、回调等功能是否正常。 任务优先级设置#define TASK_PRIORITY_PAYLOAD (tskIDLE_PRIORITY + 4)#define TASK_PRIORITY_HEARTBEAT (tskIDLE_PRIORITY + 1)/* ... */int userTaskStack = TASK_PRIORITY_PAYLOAD;TaskHandle_t userTask = xTaskCreateStatic( &user_task_entry, ...
WSL2
常用指令保存密码git config –global credential.helper store
tool
订阅转换转换链接sub SwitchyOmega (V3) 配置 配置备份.bak ssh-keygen -R ip
C++ 泛型编程和模板
SFINAESubstitution Failure Is Not An Error : 替换失败不是错误*** 在模板的参数替换过程中,如果某个模板参数导致不合法的替换,编译器并不会立即报错,而是尝试寻找其他匹配的模板。 ***当编译器在实例化一个模板时,进行模板参数替换,如果替换过程中发生了错误(例如类型不匹配、表达式非法等),编译器会忽略这个模板,而不会将其视为编译错误。这时,编译器会继续寻找其他可能匹配的模板。如果没有找到其他匹配的模板,编译才会失败。SFINAE 主要用于函数模板的重载,通过某些条件选择合适的模板函数,而忽略不适用的函数模板。 typenametemplate <typename T>typename std::enable_if<std::is_integral<T>::value, void>::typeprocess(T value) { std::cout << "Processing integral type: " << value...

