自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_29832469的博客

这里将总结我的学习历程,吸取经验,以便以后查看

  • 博客(47)
  • 收藏
  • 关注

原创 rtos最小任务切换的实现 keil软件仿真 stm32 PendSV

本例子实现了一个 rtos 最小的任务切换功能,使用 keil 仿真功能,在模拟的 stm32f103 的器件上实现了使用 PendSV 中断切换线程的效果。

2024-05-30 17:29:02 964

原创 spsr 的恢复出错,导致 thumb 指令集的 it 条件运行指令运行异常,清晰的调试思路帮助快速解决问题

分析问题,缩小问题范围敏锐观察,抓住灵感验证寄存器的值是否正确不能读中间状态,必须紧贴使用之前进行验证相信硬件,在计算机的世界没有上帝。

2024-05-11 16:08:22 774 1

原创 PTP 对时协议 IEEE1588 网络对时 计算原理

本文将阐述 PTP 对时协议的原理,slave 节点如何根据获取的时间来纠正和更新自己的时间。整个通讯过程中会发送 4 种类型的数据包,用来支撑对时。下面是 4 个包的解释Sync message: 由 master 发送,发起对时事务, slave 接收到之后,会记录时刻 t2.Follow_Up message: 由 master 发送,在数据内容中携带 master 发送 Sync message 时的精确时刻 t1.

2024-05-10 15:20:53 1027

原创 PTP 对时协议 IEEE1588 网络对时 硬件基础

在很多应用场景有精确对时的需求,例如车载网络,音视频流,工业网络。本文档将会阐述对时的硬件需求。至此,由网卡硬件实现的硬件精确时间对时的基础已经分析完毕。主要精髓是网卡会自动保存发送和接收的时间到描述符里,这个时刻及其精确,不受代码运行抖动的影响。

2024-05-09 15:47:29 1300

原创 使用 vscode 远程调试目标板的 c 语言代码

指示使用 gdbserver 调试 a.out,并监听 1234 端口的远程调试器。

2024-05-04 11:10:55 205

原创 arm 交叉编译 thumb 与 arm 指令的方法

mthumb-interwork 支持 arm 与 thumb 混合。-mthumb 使用 thumb 指令集。最后将 a.out 放入目标板卡使用。-static 使用静态链接的方式。指定函数编译为 thumb 指令。ubuntu 中安装方法。添加执行权限,即可运行。

2024-05-04 10:51:02 449

原创 解释PCIe MSI 中断要求中断向量连续?PCIe 规范里并没有明确指出

MSI 物理条件,MSI 中断产生的逻辑是RC初始化的时候,由软件将配置写入到 EP 的 2 个寄存器中,这两个寄存器一个指示的是地址 Message Address,一个指示的是数据 Message Data。当 EP 试图触发中断的时候,将会发起一个 MW 事务,往对应的 Message Address 写入 Message Data 的值。

2023-11-24 17:32:11 417

原创 mkimage 打包启动镜像 使用方法 bootm 加载校验

应用场景是从 uboot 拉起某个 rtos。由于需要同时用 TFTP 加载几个文件才能正常启动运行,这样的加载方式释放给客户容易出错,本地开发也比较麻烦,因为每次编译生成的文件都有改动,需要重新加载。

2023-11-24 14:30:02 325

原创 PCIe 的 MSI-X 中断,申请过程全流程分析,详细讲解 EP 空间中断能力 CAP 的串联

主要分析 Table BIR,这个寄存器是控制将 MSI-X Table Structure 存放在 BAR 内存空间的位置的。Table BIR 有 3Bit,指示 MSI-X Table Structure 将映射到 BARn 空间的某一个,Table Offset 指示BARn基地址的偏移。然后在 CPU 的对应 RAM 空间来初始化如下结构,即完成了 MSI-X 的结构初始化。规定 EP 的配置空间 0x34 的地址存放了第一个 CAP 的地址偏移,后续的 CAP 都如此串成链。

2023-11-15 17:35:34 1436 3

原创 PCIe 的 MSI 中断详解,寄存器级别的详细流程分析,完全搞懂硬件的工作流程

EP 可以正确触发 MSI 中断,并被 RC 捕获后往 GIC 投递 PCIe 中断。本例的 MSI 中断并不是直接写 GIC 的 ITS ((Interrupt Translation Service)在GICv3中是可选的。ITS负责接收来自外设的中断,并将它们转化为LPI INTID发送到相应的Redistributor) 产生的,而是由 RC 中转了然后投递到 GIC 的。

2023-11-01 11:17:45 3587

原创 PCIe 访问 EP 配置空间,空间映射详解,BDF 计算偏移

两种 MEM 访问 EP 配置空间的方式都是通过基地址 + 偏移地址访问的。类 xilinx 的方式是全映射,需要 256M 的空间,将所有的 PCIe 设备的配置空间都映射到 CPU 的地址空间来。类 designware 则取巧,使用少量的 CPU 地址空间,但是每次访问之前需要重新映射 EP 的地址,使得相同的 CPU 地址空间可以放到的不同的 EP 设备的配置空间。

2023-10-31 16:21:21 1225 1

原创 一文彻底理解大小端和位域 BIGENDIAN LITTLEENDIAN

高位0x12345678低位大端模式低地址高地址小端模式低地址高地址小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。简单的说就是低地址存低位,高地址存高位。大端模式是正好相反。

2023-02-19 20:16:32 718

原创 C与CPP混合工程函数方法互相调用的实现

return 0;return 0;c_print();return 0;编译之后生成的文件用nm命令查看它的符号表可以看到:使用extern "C"包含的函数生成的符号表没有额外增加前后缀,这样在 c 代码中只需要显式地声明这个函数即可。

2023-02-19 13:49:14 5049

原创 vscode snippets 配置保存

vscode snippets 配置保存

2023-02-18 15:07:15 165

原创 M300在 SylixOS 系统下网络性能测试 MIPS 架构

基于SylixOS的某型板卡, 双网口转发测试. 本文描述了双网口在路由模式和桥接模式下的延迟和带宽. 两种模式的性能基本相同

2022-11-29 08:34:21 227

原创 zynq7000 从github拉取linux源码进行编译,运行. 快速进行外设验证。全流程教程

zynq linux 快速编译验证 使用SylixOS进行驱动开发, 需要快速验证板上的外设是否完好. 嫌弃官方的SDK占用磁盘空间巨大, 本教程直接使用 github 上的源码进行快速编译运行.

2022-11-28 13:55:04 581

转载 Ubuntu 连接 wifi 断开之后的脚本监控重连

我是Ubuntu GNOME用户,我想知道是否有一种方法能够断开连接时自动重新连接。从18.10开始,NetworkManager中的xxx连接具有设置xxx.persistent,该设置可以做到这一点:在连接断开时重新连接,直到您手动断开连接。默认情况下,它设置为"no",但不幸的是,它既不在Gnome网络设置中也不在nm-connection-editor中公开。但是您可以通过如下CLI进行设置:当然,连接必须先存在所以,第一步,在设置中创建xxx链接,记下名字。

2022-11-20 17:00:05 661

原创 一次 MDIO 配置 switch 的调试过程,88e1512 switch mv88e6xxx

# 一次 MDIO 配置 switch 的调试过程## 1、什么是 MDIO 1. 物理层时序 总线的电平协议类似 IIC 的协议。有两线通讯,一条时钟 MDC,一条数据 MDIO。但是数据的表示和 IIC 有些许差异。 2. 使用场景 用于读写每个PHY的控制寄存器和状态寄存器,以达到控制PHY行为和监控PHY状态的目的。这是一个总线,可以挂32个不同地址的器件,通过不同的地址和对应的器件进行通讯。 3. 使用方法

2022-09-14 20:20:50 2782 1

原创 吐血分享 HID 2个接口设备的描述符代码

本代码实现了一个 USB device 使用两个接口描述符成功枚举,并使用 2 对端点和 PC 通讯。PC 上的上位机可以正常识别两个接口设备。使用 0x01 0x81 和 0x02 0x82 端点通讯

2022-07-13 21:41:24 686

原创 USB-HID 设备扫盲

这是一篇关于USB协议的分析,重点分析HID(human interface device)类设备。本文档是在开发 CH567 HID 设备之后成文。USB速度有4种,分为低速(Low-Speed)、全速(Full-Speed)、高速(Hi-Speed)和超高速(SuperSpeed)。其中的总线速度依次大约是1.5Mb/s, 12Mb/s和480Mb/s。这并不是指实际的数据传输速率。USB的HOST,其D+与D-会有15K的电阻下拉,在没有设备的时候会是低电平。低速设备D-有1.5k电阻上拉。全速设备D

2022-07-13 21:08:44 3771

原创 windows下使用命令行编译 SylixOS 的基础bsp工程

由于之前习惯使用vscode作为主力编辑器,在RealEvo-IDE上做编辑代码的工作不太顺手。这样导致每次代码需要编译时,就要切换会IDE去点击build按钮进行编译。这个操作虽然不复杂,但是肯定不适合我这个懒惰的人,我就喜欢偷懒,折腾。...

2022-07-02 17:34:38 348 1

原创 JLink EDU v7.58 变砖修复

JLink EDU 正版变砖修复

2022-06-10 13:49:55 1727

原创 designware PCIE IP核的驱动 调试及记录

designware PCIE1. PCIE RC 驱动流程开启时钟,初始化PCIE PHY 的状态,打开训练状态,若是训练完成,和EP建立了链接, (在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM(Link Training and Status State Machine))LTSSM将会进入L0状态。接下来可以对EP的配置空间进行访问(前置知识,你需要了解PCIE的配置空间,mem空间,io空间),以深度优先的方式开始进行不同的设备的枚举。(不同

2022-05-22 15:49:00 2395

原创 designware 网卡问题解决 iperf ping 回环模式

记一次 designware 网卡网络故障问题的解决过程问题现象在给客户ddr3板卡适配SylixOS时,会出现ftp连接困难,telnet连接不正常,板卡作为iperf服务器测试正常,作为iperf客户端测试无法连接。问题测试分析ddr3板卡问题可以稳定复现,在多个板卡上现象相同。同样代码在ddr4的板卡可以正常运行。ddr3板卡跑原厂的Linux测试,网络状态良好。初步可以判断是SylixOS系统上对网络的配置有某些不正确的地方写c代码对板卡进行udp测试,tcp客户端和tcp服

2022-05-13 12:03:30 620

原创 使用Python获取键盘的输入

使用Python获取键盘的输入本文描述在 Ubuntu 20 上使用 python 获取键盘输入1. 准备安装 evdev确认目标键盘的输入具体的设备号使用 lsusb 查看键盘usb设备总线号和设备号使用 cat /proc/bus/input/devices 和上面对应 ID使用 cat /dev/input/event4 | hexdump 去测试可疑的输入设备2. 使用如下 python 程序即可改程序会将读到的键盘输入封装成 8Bytes 的 HID 键盘数据包,

2022-05-04 16:45:31 6953

原创 esp32-c3 蓝牙 BLE 键盘 串口 低延时 ESP-IDF开发环境

esp32-c3 主控作为 BLE keyboard 的使用介绍本文默认你已经了解了ESP-IDF开发环境的基本操作,本文只描述思路,不讲操作细节本文实现了使用esp32c3将来自串口的键码使用BLE蓝牙发送到Win电脑的功能。在windows下进行了测试,使用PC自带的蓝牙和esp32c3配对之后,PC可以收到来自其键盘输入1 准备材料esp32c3: 这里使用的是合宙的开发板,淘宝9.9包邮,便宜好用。开发环境:ESP-IDF v4.4.1-dirty其他:我这里使用的是Ubuntu读

2022-05-04 16:13:15 5292 1

原创 SylixOS 非0核强亲和性绑定

演示将1核设置为强亲和性运行将当前线程绑定到1核运行 LW_CLASS_CPUSET cpuset; LW_CPU_ZERO(&cpuset); LW_CPU_SET(1, &cpuset); iRet = API_ThreadSetAffinity(API_ThreadIdSelf(), sizeof(cpuset), &cpuset);配置1核只运行亲和线程 if (API_CpuGetSchedAffi

2022-04-07 10:19:04 324

原创 SylixOS 给网卡添加多IP的方法

SylixOS 网卡添加第二个IP的方法使用 ifmip 命令添加 ip,帮助信息如下实际指令操作如下ifmip en2 add 172.168.0.126 255.255.255.0实际效果如下实际作用是在 en2 网卡增加了新的 ip 172.168.0.126,这样可以直接与对应网段的主机通信。ping命令演示...

2022-04-07 10:07:24 248

原创 leetcode刷题总结 第0003题 双指针

LeetCode刷题总结之0003

2022-03-07 09:13:16 60

原创 vscode 完美配置函数自动补全 SylixOS 代码定义完美跳转 优雅地写代码 c cpp intelliSenseEngine

vscode c语言 API函数跳转 自动补全 c_cpp本文章主要内容: 在 windows 下使用 vscode 优雅地开发 SylixOS. 实现API函数自动补全, 函数定义跳转等功能. 可举一反三, 其他 c 语言开发也可同样配置.1. 安装插件安装 vscode 过程不表在 vscode 安装 c 语言扩展插件2. 进行 vscode 配置打开 settings.json 进行配置快捷键 Ctrl + Shift + p 打开命令栏, 输入 settings.json,

2021-11-04 12:39:11 2139

原创 spi 相位 极性

每次开始传输时,主器件先拉低从器件的片选信号线NSS,选中要传输的从器件。SCK时钟线发送一个时钟周期就传输一位数据。MOSI为主出从入,数据由主器件控制发送,从器件接收。MISO的数据由从器件控制发送,主器件接收。所以SPI传输一个字节就相当于主器件和从器件交换一个字节。 SPI只有主模式和从模式之分,没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到...

2018-08-21 13:45:01 2527

原创 多线程创建

本篇博文,主要是举例如何创建多个线程,以及观察到pthread_join()函数的作用。只是做了一些简单的分析,供初学者学习使用。

2017-05-26 17:06:11 209

转载 浅谈信号量

信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为: extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));   sem为指向信号量结构的一个指针; pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;

2017-05-26 12:01:38 230

原创 ftp站点下载

本篇博文记载ftp下载的操作方法操作系统:centos 6.7 首先 确定是否安装了ftp服务,否则应该:yum install ftp示例:下面我将示例从某个站点下载文件 ftp://ftp.openssl.org/source/openssl-1.0.0t.tar.gz自此就完成了简单的下载任务。下面贴出一些常规的命令操作FTP> ! 从 ftp 子系统退出到shell。 FTP> ?

2017-05-23 09:22:06 1275

原创 Linux I2C read eeprom 从应用层看系统

Linux 操作I2C从设备有两种不同的方法。本篇文章将会介绍通过系统总线来操作I2C设备的流程。在应用层操作I2C,使用ioctl来传参。ret = ioctl(fd, I2C_RDWR, (unsigned long)&erom_data); 这是设备接口控制函数ioctl,fd是打开设备节点的文件描述符fd = open("/dev/i2c-0",O_RDWR); I2C_RDWR

2017-05-14 09:20:40 639

原创 cube HAL库 F7 配置pwm流程

stm32f767 HAL库pwm配置过程,初探cube图形化操作

2017-05-06 12:03:53 2227

原创 #字符串操作

一些字符串操作的函数strcat() snprintf() strstr();

2017-05-06 10:10:11 311

原创 关于根文件系统 jffs2和ubifs

关于根文件系统jffs2 ubifs uboot环境变量我只详细了解了两个重要的文件系统,其他系统以后在详细了解。 jffs2 使用起来比较方便,但是不适合大的文件系统。当分区比较大或者分区将要满时,挂载会花费大量时间。 ubifs 使用起来稍显复杂,做为根文件系统,我做了很久但是现阶段并没有完成。使用起来优点很多,快速挂载性,对flash 的尺寸具有良好的扩展性,等等很多优点。

2017-04-23 15:54:51 2235

原创 uboot 简单的执行流程之我见

u-boot做了些什么: 通俗来说就是设置函数开始存放的位置                    根据链接程序确定了程序主入口接下来的文本段的排列顺序(这将是启动                                                                                            最重要的部分)最先执

2017-04-17 14:52:18 369

原创 链表逆序最少空间实现

面试中常考的链表逆序,实现思路的讲解。

2017-03-31 10:11:45 286

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除