- 博客(624)
- 资源 (12)
- 问答 (1)
- 收藏
- 关注
原创 Renesas RH850-U2A STC Instructions
摘要:本文详细介绍了Renesas RH850-U2处理器中的STC(Store Conditional)指令集,包括STC.B(字节)、STC.H(半字)和STC.W(字)三种指令。这些指令仅在与指定地址存在链接时才能成功执行,实现原子化的读-修改-写操作。执行结果通过检查寄存器reg3的值(1表示成功,0表示失败)确认。STC指令通常与对应的LDL指令(LDL.BU、LDL.HU、LDL.W)配对使用,确保多核系统中内存更新的准确性。每种指令格式包含操作码、执行流程和功能说明,适用于不同数据宽度的存储需
2026-01-19 23:30:01
603
1
原创 Renesas RH850-U2 LDL Instructions
Renesas RH850-U2 LDL指令摘要:LDL指令组(LDL.BU、LDL.HU、LDL.W)用于实现多核系统中的原子读写操作。这些指令从内存读取数据(字节/半字/字)到寄存器并建立地址链接,必须与对应的STC指令配对使用。执行时若链接保持则STC成功并清除链接,否则STC失败。LDL.BU读取字节后零扩展,LDL.HU读取半字后零扩展,LDL.W直接读取字数据。所有指令都会设置LLbit标志,支持精确的内存更新。
2026-01-18 23:31:47
553
1
原创 Renesas RH850-U2 TRAP指令介绍
本文介绍了Renesas RH850-U2微控制器中的TRAP指令系统,主要包括FETRAP和TRAP两种指令。FETRAP是FE级陷阱指令,会保存返回地址和PSW状态到FEPC和FEPSW寄存器,存储异常原因码到FEIC,并更新PSW状态后跳转到异常处理程序。TRAP指令功能类似,但使用EIPC、EIPSW和EIIC寄存器。两种指令都通过向量号(vvvv/vvvvv)确定异常原因码和处理程序偏移地址,但FETRAP禁止使用0H向量。文中详细说明了两种指令的格式、操作码和具体功能,并附有向量号与异常原因码的
2026-01-18 23:07:11
679
原创 Renesas RH850-U2A中断系统介绍-3
摘要:本文介绍了Renesas RH850-U2A的中断系统寄存器功能,主要包括ISPR(中断服务优先级寄存器)、IMSR(中断掩码状态寄存器)、ICSR(中断控制状态寄存器)、INTCFG(中断功能配置寄存器)和PLMR(中断优先级掩码寄存器)。这些寄存器通过LDSR/STSR指令访问,控制中断优先级处理、掩码状态和功能配置。其中ISPR在INTCFG.EPL=0时启用优先级控制,IMSR按特定顺序更新中断掩码状态,PLMR实现基于优先级的屏蔽功能。各寄存器位域详细定义了中断管理的硬件机制。
2026-01-08 23:23:38
700
1
原创 Renesas RH850-U2A Inter-Processor Interrupt Function
【代码】Renesas RH850-U2A Inter-Processor Interrupt Function。
2026-01-05 23:40:24
1116
2
原创 The Renesas RH850-U2A Inter-Processor Interrupt Overview and Registers
摘要:Renesas RH850-U2A处理器的IPIR(Inter-Processor Interrupt Register)实现了处理器核(PE)间的快速中断请求,具有4通道中断、电平检测、中断屏蔽等功能。系统通过自区域(Self Region)虚拟寄存器实现统一访问,各PE可使用相同代码。主要寄存器包括使能寄存器(IPInENm)、标志寄存器(IPInFLGm)、清除寄存器(IPInFCLRm)等,支持原子操作并具备ECC和访问保护功能。该机制比软件设置INTC2中断标志更高效,同时支持直接访问实际寄
2026-01-05 23:17:50
676
1
原创 Renesas RH850-U2A Mutual Exclusion
摘要: Renesas RH850-U2A处理器通过原子操作指令实现多核环境下的互斥访问。支持的指令包括LDL/STC、CAXI、SET1/CLR1/NOT1等,适用于本地RAM和集群RAM。LDL/STC通过链接机制(LLbit)确保原子读写,要求地址和数据大小匹配。SET1指令通过检查PSW.Z标志实现互斥,而CAXI指令通过比较交换操作完成同步。文中提供了基于LDL/STC、SET1和CAXI的三种自旋锁示例代码,并详细说明了链接丢失条件(如中断、异常或地址冲突)。该机制保证多核数据访问的原子性,但需
2026-01-04 23:44:26
733
原创 Renesas RH850-U2A中断系统介绍-2
Renesas RH850-U2A中断系统通过硬件和软件协同处理中断上下文的保存与恢复。硬件自动保存程序计数器(PC)、程序状态字(PSW)、异常原因码(EIIC/FEIC)和工作系统寄存器(EIWR/FEWR),而软件需保存其他必要资源。中断分为FE和EI两个级别,分别通过FERET和EIRET指令返回。返回时需先恢复上下文,否则可能导致程序状态无法正确恢复。系统支持多级中断处理,通过基本上下文寄存器确保不同级别中断的上下文独立保存,避免覆盖。中断处理流程包括优先级检查、处理地址计算、寄存器保存和状态更新
2026-01-03 15:31:21
1079
原创 Renesas RH850-U2A中断系统介绍-1
RH850-U2A中断系统采用两种异常处理地址确定方法:直接向量法和表格引用法。直接向量法通过RBASE/EBASE寄存器(由PSW.EBV位选择)与偏移地址相加生成处理地址,复位时固定使用RBASE。用户中断(EIINTn)可通过RINT位控制偏移地址缩减以节省内存。表格引用法则通过INTBP寄存器指向内存中的中断处理地址表,支持为每个中断通道指定独立处理程序,适用于需要差异化处理的场景。系统提供灵活的异常处理机制,包括复位、异常和中断向量表配置,通过专用寄存器(RBASE/EBASE/INTBP)实现地
2026-01-02 22:41:15
977
原创 Renesas RH850-U2A Branch Instructions
本文介绍了Renesas RH850-U2A处理器的分支指令,包括无条件分支指令(JARL、JMP、JR)和条件分支指令(Bcond)。Bcond指令根据PSW标志状态进行条件跳转,包含BC、BE等多种条件码形式。JARL指令实现跳转并保存返回地址,支持立即数和寄存器寻址方式。JMP指令通过寄存器或寄存器加偏移量实现跳转。JR指令支持相对地址跳转,有22位和32位两种位移格式。文中详细说明了各指令的格式、操作码及功能描述,为RH850-U2A的程序控制流程实现提供了完整的指令集参考。
2026-01-01 10:51:59
726
1
原创 Renesas RH850-U2A Arithmetic Instructions
【代码】Renesas RH850-U2A Arithmetic Instructions。
2025-12-31 23:56:24
797
原创 Renesas RH850-U2A Stack Handle Instructions
摘要:本文详细介绍了Renesas RH850-U2A处理器的栈操作指令集,包括PREPARE、DISPOSE、PUSHSP和POPSP四种核心指令。PREPARE指令用于将寄存器值保存到栈中并调整栈指针,DISPOSE指令则执行相反操作。PUSHSP和POPSP分别实现寄存器范围压栈和弹栈功能。文档提供了每种指令的格式、操作流程、操作码结构及寄存器列表定义(list12),并包含具体的位域说明和异常检查机制。这些指令通过不同的参数配置支持多种栈操作场景,为RH850-U2A的栈管理提供了高效解决方案。
2025-12-30 16:35:08
782
原创 Renesas RH850-U2A SST Instructions
本文介绍了Renesas RH850-U2A处理器的SST(Short Store)指令集,包括SST.B、SST.H和SST.W三种指令。这些16位长度指令使用ep寄存器作为基地址,通过零扩展位移量生成32位地址,分别实现字节、半字和字的存储操作。指令在中断上下文保存/恢复时与prepare指令配合使用,需先设置ep寄存器并开辟栈空间。所有指令在地址生成时采用无符号零扩展方式处理偏移量,并包含内存访问异常检查机制。各指令格式、操作语义及操作码均被详细说明。
2025-12-29 15:38:43
1021
原创 Renesas RH850-U2A ST Instructions
本文档详细介绍了Renesas RH850-U2A处理器的存储指令(ST)集,包含四种数据存储操作:ST.B(字节)、ST.H(半字)、ST.W(字)和ST.DW(双字)。每种指令提供多种寻址方式,包括带16位/23位偏移量的基址寻址、自增/自减后置寻址。文档详细说明了各指令的格式、操作流程和机器码编码方式,包括寄存器选择、位移量处理和内存访问检查等关键操作步骤。所有指令都涉及地址计算、内存访问异常检查(MDP/MAE)和实际存储操作,部分指令还会自动更新基址寄存器值。
2025-12-29 08:43:57
807
原创 Renesas RH850-U2A SLD Instructions
摘要:本文详细介绍了Renesas RH850-U2A处理器的SLD(Short format load)指令集,包括五种加载指令:SLD.B(字节加载)、SLD.BU(无符号字节加载)、SLD.H(半字加载)、SLD.HU(无符号半字加载)和SLD.W(字加载)。每种指令均包含格式说明、操作流程(含地址计算、异常检查和内存加载过程)以及对应的操作码图示,并特别标注了寄存器使用限制(如r0不能用于reg2)和位移量处理方式。这些指令通过不同位宽和符号扩展方式实现高效内存数据加载。
2025-12-28 18:44:33
597
1
原创 Renesas RH850-U2A LD Instructions
摘要:本文档详细介绍了Renesas RH850-U2A处理器的加载指令集,包括LD.B、LD.BU、LD.DW、LD.H等指令格式及操作。每种指令支持不同的寻址模式(如位移寻址、自增/减寻址),并提供对应的机器码编码方案。其中LD.B/LD.BU实现字节加载(带符号/无符号扩展),LD.H实现半字加载,LD.DW实现双字加载。所有指令均包含内存地址对齐检查(MDP/MAE)机制,并详细说明了操作数编码规则和位移量的符号扩展处理方式。
2025-12-27 17:30:49
934
原创 Renesas RH850-U2A Register Set
摘要: Renesas RH850-U2A处理器包含程序寄存器(32个通用寄存器r0-r31和程序计数器PC)和基本系统寄存器。通用寄存器中,r0固定为0,r3、r30等被特定指令隐式使用,r1、r4等需注意编译器占用。PC存储当前指令地址,复位后值为RBASE寄存器内容。基本系统寄存器通过LDSR/STSR指令访问,用于控制CPU状态和异常处理。特殊寄存器使用需遵循特定规则以保证兼容性。(149字)
2025-12-25 23:49:27
1026
原创 Renesas RH850-U2A Basic Instructions
摘要:本文档详细介绍了Renesas RH850-U2A微处理器的基础指令集,主要包括四类指令:1) 加载指令(LD/SLD系列),用于内存到寄存器的数据传输;2) 存储指令(ST/SST系列),实现寄存器到内存的数据传输;3) 算术指令(ADD/SUB/CMP等),处理寄存器间的算术运算;4) 逻辑指令(AND/OR/NOT等),执行逻辑运算操作。文档还规范了指令格式符号(如reg1/imm×等)和操作约定符号(如←/GR[a]等),为指令编码和使用提供了标准化的描述框架。该指令集支持多种数据格式操作(字
2025-12-25 23:33:25
789
原创 FreeRTOS之链表关键数据结构和函数操作接口-2
中用于定位插入位置(在索引指针的前一个位置插入,使新节点成为 “最后一个将被移除的节点”)中用于定位插入位置(在索引指针的前一个位置插入,使新节点成为 “最后一个将被移除的节点”),遍历链表找到合适的插入位置,从链表的哨兵节点(xListEnd)开始遍历。,直接插入到链表尾节点(xListEnd)的前面,作为迭代器的起始节点。,记录新节点所属的链表,便于后续操作中快速定位节点所在的链表。,新节点的下一个节点指向迭代器的下一个节点。,新节点的下一个节点的前一个节点指向新节点。:指向要插入节点的目标链表,
2025-07-15 21:13:05
515
1
原创 FreeRTOS之链表关键数据结构和函数操作接口-1
这个结构体是 FreeRTOS 内核中用于管理链表的核心数据结构xLIST。链表在 FreeRTOS 中被广泛用于任务调度、事件管理、资源分配等场景(如就绪任务链表、延时任务链表、信号量等待链表等)。
2025-07-15 00:00:38
421
原创 归并排序算法及其在算法中的应用
将当前数组从中间分成两个子数组,递归地对这两个子数组继续进行分解,直到每个子数组只包含一个元素(此时子数组自然有序)。递归地对分解得到的子数组进行排序。由于每个子数组最终会被分解到只包含一个元素,因此排序操作实际上是在合并过程中完成的。将两个已排序的子数组合并成一个有序数组。这是归并排序的核心操作,需要比较两个子数组的元素,按顺序放入新的数组中。
2025-06-09 22:50:24
622
1
原创 ARM A64 LDR指令
https://developer.arm.com/documentation/ddi0487/fcLoad Register (immediate) loads a word or doubleword from memory and writes it to a register. The address that is used for the load is calculated from a base register and an immediate offset. The Unsigned
2025-05-16 00:00:28
847
1
原创 arm CPS指令解释
Some PSTATE fields can be accessed using the Special-purpose Current Program Status Register (CPSR). The CPSR can be directly read using the MRS instruction, and directly written using the MSR (register) and MSR (immediate) instructions.某些 PSTATE 字段可通过专用当
2024-12-13 23:55:55
1380
3
原创 ARM A32多数据处理汇编指令理解分享
在ARM A32多数据处理汇编指令分为多数据存储指令和多数据加载指令:1,多数据存储指令:push, STMFD(STMDB), STMED(STMDA) , STMFA(STMIB), STMEA(STMIA);2,多数据加载指令:pop,LDMF(LDMIA), LDMFA(LDMDA), LDMEA(LDMDB), LDMED(LDMIB);
2024-12-05 23:58:31
1737
1
原创 FreeRTOS之ARM CR5栈结构操作示意图
下面以FreeRTOS源码中arm cortex-r5处理器的栈处理为例来介绍栈结构操作前后变化。
2024-12-03 20:09:21
807
1
原创 FreeRTOS之vTaskDelete实现分析
TaskHandle_t xTaskToDelete 要删除任务的句柄,但这个句柄其实就是我们申请任务时创建的TCB,这个参数在传入的时候可以设置为NULL,表示要删除的是自己当前的任务。
2024-11-22 23:33:49
746
1
原创 FreeRTOS之xTaskCreate实现分析
TaskFunction_t pxTaskCode 任务的处理函数const char * const pcName 任务的名字const configSTACK_DEPTH_TYPE uxStackDepth 当前任务栈的大小,栈的实际大小为uxStackDepth * sizeof(StackType_t)void * const pvParameters 传入到任务处理函数的参数UBaseType_t uxPriority 当前任务的优先级。
2024-11-21 23:58:53
930
2
原创 objdump命令的常见用法
objdump 是一个在类Unix系统中广泛使用的命令行工具,它是GNU Binutils套件的一部分,主要用于显示编译后的对象文件、可执行文件、共享库等二进制文件的详细信息。objdump 是一个极其灵活和多功能的工具,对软件开发者、安全研究人员以及任何想要深入了解二进制文件内部结构的人来说都非常有用。
2024-07-22 22:36:12
4837
2
原创 PCIe 5.1-Transaction Layer Specification
该文章基于《5.0-1.0-PUB — PCI Express® Base Specification Revision 5.0 Version 1.0》翻译和理解。
2024-07-18 23:14:40
1510
2
原创 kpatch dynamic kernel patching
kpatch 是一种 Linux 动态内核补丁的基础架构,它允许你在不重启或重新启动任何进程的情况下为运行中的内核打补丁。它能让系统管理员立即为内核打上重要的安全补丁,而不必等待长时间运行的任务完成、用户注销或预定的重启窗口。它能在不牺牲安全性或稳定性的情况下,对正常运行时间进行更多控制。
2024-07-08 22:03:29
1533
2
原创 kpatch Patch Author Guide
由于 kpatch-build 比较容易使用,人们很容易认为补丁模块构建成功意味着补丁可以安全应用。但事实上,这是一个非常危险的假设。创建实时补丁时可能会遇到许多陷阱。本文件试图为补丁创建过程提供指导。本文正在编写中。如果您觉得有用,请作出贡献!
2024-07-04 23:47:16
1413
4
原创 arm64虚拟化-CPU虚拟化
本篇博客是基于对苯叔《ARM64高级特性专题》的学习而总结的,大家如有需要可以去淘宝或者奔跑吧linux社区去购买对应的课程。
2024-05-26 19:42:05
2233
4
原创 io_uring的使用示例及其解释
这几个系统调用接口都在io_uring.c文件中。liburing 是io_uring的实现者Jens Axboe为了简化用户使用io_uring所实现的一个用户空间的 C 库,用于简化在 Linux 系统上使用 io_uring 的开发。它提供了一组简洁而强大的 API,使开发者可以更轻松地利用 io_uring 的高性能异步 I/O 功能,而无需深入了解 io_uring 的内部工作原理。
2024-05-12 22:31:03
2129
3
原创 epoll的使用示例及其解释
epoll 是 Linux 下的一个 I/O 多路复用机制,用于高效地监听多个文件描述符上的 I/O 事件。相较于 select 和 poll,epoll 在处理大量连接时具有更好的性能。
2024-04-09 21:51:36
3342
4
CoAP_rfc7252.pdf
2020-12-04
Real-Time Embedded Multithreading--Using ThreadX.7z
2019-08-20
openocd-2020-12-23.pdf
2020-11-24
busybox-1.31.0.tar.bz2
2020-07-08
_install.tar.gz
2020-07-08
Inside the C++ Object Model_english&chinese;
2018-07-27
See mips run
2018-03-17
简明 Python 教程_cn_en
2018-09-04
nand操作时page_size = 2048;
2014-11-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅