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天时发布纪念
整数反转
描述 示例 1: Copy 输入: 123 输出: 321 示例 2: Copy 输入: -123 输出: -321 示例 3: Copy 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1…
最大子序和
描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: Copy 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实…
移除元素
描述 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O (1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例…
回文数
描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: Copy 输入: 121 输出: true 示例 2: Copy 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121…
搜索插入位置
描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: Copy 输入: [1,3,5,6], 5 输出: 2 示例 2: Copy 输入: [1,3,5,6], 2…
最长公共前缀
描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: Copy 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: Copy 输入: ["dog","racecar","car"] 输出:…
实现strStr()
描述 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从 0 开始)。如果不存在,则返回 -1。 示例 1: Copy 输入: haystack…
合并两个有序链表
描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: Copy 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路 有空链表时,返回另一个链表,无论另一个链表是否为空链表皆符合规则 将首元素…
Ownership of this blog data is guaranteed by blockchain and smart contracts to the creator alone.