banner
ekko

ekko's blog

时间不在于你拥有多少,而在于你怎样使用
github
xbox
email
cover

ivshmem虚拟设备通信原理

本篇主要讲解 ivshmem 虚拟设备后端与前端利用共享内存和中断进行通信的原理及过程分析。 上图中左侧为 OEE 侧,右侧为 RTOS,通信过程主要通过中断及共享内存实现,中断处理及共享内存的初始化部分由 ivshmem pcie 驱动完成,本文后续内容建立在中断可互相通知…
cover
cover
cover

zephyr sysview 使用

SEGGER SystemView User Guide SystemView 是 Segger 的一种可视化调试工具,用于嵌入式系统的实时调试和分析。它可以捕获和可视化系统中的各种事件,例如任务切换、中断处理和信号量等。SystemView 可以与 Segger 的 J…
cover

zephyr用户模式介绍

Overview — Zephyr Project Documentation [! 机翻自官网] 线程模型 用户模式线程被 Zephyr 视为不信任,因此与其他用户模式线程和内核隔离。 有缺陷或恶意的用户模式线程不能泄漏或修改另一个线程或内核的私有数据 / 资源…
cover

gdb使用指南

调试本机程序 Copy gdb ./a.out 调试目标板程序 Copy gdb-mutliarch ./a.elf 使用串口方式则增加 - b 选项设置波特率: Copy gdb-multiarch -b 115200 ./a.elf 之后的步骤都是在 gdb…
cover
cover
cover
cover
cover
cover
cover

openocd gdb 断点原理

本文主要分析 openocd 添加硬件断点与软件断点的流程 Copy if (breakpoint->type == BKPT_HARD) { int64_t bpt_value; while (brp_list[brp_i].used && (brp_i…
openocd Jim-Tcl 命令注册与调用
本文主要说明 [[openocd]] 的命令是如何注册与执行的,参考文档为关于 Jim-TCL (OpenOCD 用户指南) 本文以target names为例,主要讲两部分,一部分为注册,讲命令参数与对应的处理函数做关联,另一部分为调用,讲执行target names时的具体执…
openocd配置文件解析
[!/usr/local/share/openocd/scripts/target/rk3568.cfg] Copy # SPDX-License-Identifier: GPL-2.0-or-later reset_config trst_and_srst separate…
cover
cover

openocd cti address and debug address

本篇主要讲解 [[openocd]] 配置文件中的 cti address 和 debug address 怎么解析以及如何使用 [!/usr/local/share/openocd/scripts/target/rk3568.cfg] Copy # SPDX-License…
cover
cover

openocd dap 相关

首先,需要了解 [[ARM Debug Interface v5]] 内容,然后才可以通过以下 [[openocd]] 命令进行 dap 寄存器的读取。 TAP Declaration (OpenOCD User’s Guide) Since OpenOCD version…
cover

爱你到永远

恋爱999天时发布纪念

两数之和

描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: Copy 给定 nums = [2, 7, 11, 15…
最长公共前缀
描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: Copy 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: Copy 输入: ["dog","racecar","car"] 输出:…
有效的括号
描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: Copy 输入: "()" 输出…
删除排序数组中的重复项
描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O (1) 额外空间的条件下完成。 示例 1: Copy 给定数组 nums = [1,1,2…
移除元素
描述 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O (1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例…
整数反转
描述 示例 1: Copy 输入: 123 输出: 321 示例 2: Copy 输入: -123 输出: -321 示例 3: Copy 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1…
最后一个单词的长度
描述 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 ** 说明:** 一个单词是指由字母组成,但不包含任何空格的字符串。 示例: Copy 输入: "Hello World" 输出: 5 思路 空字符串返回…
搜索插入位置
描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: Copy 输入: [1,3,5,6], 5 输出: 2 示例 2: Copy 输入: [1,3,5,6], 2…
Ownership of this blog data is guaranteed by blockchain and smart contracts to the creator alone.