- 博客(10)
- 收藏
- 关注
原创 RISC-V调试模块和opene906的2wire-jtag学习
RISC-V调试模块架构采用分层设计,包含用户交互层(调试器)、转换层(协议适配)、硬件传输层(物理连接)、平台接口层(DTM/DMI)和核心控制层(DM/hart)。调试模块通过DMI总线访问寄存器,支持抽象命令(寄存器/内存访问)和程序缓冲区执行。关键组件包括DTM控制寄存器、DMI访问寄存器和调试模块寄存器组,提供hart控制、状态监控和系统总线访问功能。调试链路支持标准JTAG协议,通过分层协作实现调试功能。
2025-11-26 22:05:50
559
原创 JTAG协议(IEEE 1149.1)学习
1149.1协议规定JTAG有如下5根线,其中TRST*是可选的,另外4根是必须的,更多细节可以参考《1149.1-2013 - IEEE Standard for Test Access Port and Boundary-Scan Architecture》的第4章节Test access port (TAP)。
2025-11-25 14:29:23
1155
原创 FreeRTOS学习4:源码阅读-任务的创建
宏,这个宏决定了栈的增长方向,当其大于0的时候(一般配置为1),代表栈是向上增长的,小于等于0的时候(一般配置为-1),代表栈是向下增长的,其与处理器的体系结构相关,大多数处理器体系结构的栈都是向下增长的(源码中可以看到prtable目录下的中对于向下增长的栈都有。宏,目的是如果当前新创建的任务优先级比当前正在运行的任务的优先级高,就让当前正在运行的任务主动让出CPU,并触发任务的切换,让优先级更高的新任务可以立马执行。的宏定义),在移植FreeRTOS的时候应该严格遵守处理器关于栈增长方向的规定。
2025-09-09 11:20:08
1710
原创 FreeRTOS学习3:任务调度和Systick底层汇编接口
寄存器中拿到当前运行的任务的栈指针,然后把FPU(如果使用FPU,保存s16-s31寄存器)的关键寄存器和核心寄存器(r4-r11和r14)保存到当前运行的任务的栈上,并把当前任务的栈指针保存在当前任务的。此接口的实现主要分为4个部分(保存当前任务上下文、切换到新的任务、恢复新任务的上下文、异常返回),每条指令的作用已在上面的注释中说明。这条命令的作用是从指定的Rn寄存器指向的内存中加载多个值到寄存器列表中(reglist),IA表明每次加载内存中的值到一个寄存器中后,下一个要加载的内存地址递增。
2025-09-04 14:16:28
1568
原创 FreeRTOS学习2:源码阅读-链表LIST
在list.h头文件中由定义一些API,这些API阅读起来简洁明了,本文只对如下几个宏定义做简单说明。
2025-09-03 11:03:23
700
原创 FreeRTOS学习1:移植FreeRTOS到STM32H723ZGT6
目录下包含很多的开发平台,例如常见的IAR、Keil、RVDS、GCC等等,我使用的是VSCode + GCC工具链去完成开发工作,所以我是用的是GCC目录下的代码。的源代码, 那么应该有下述路径,提供了一些Demo例程,理论上是可以直接使用的(例如下图提供了CORTEX_STM32F103的IAR、KEIL、GCC的Demo例程),我目前不是使用的这种方法,暂不讨论。见下图,是FreeRTOS kernel的目录组织结构,后文描述的所有的移植工作都是基于此LTS版本的源代码进行的。的配置文件进行定制。
2025-09-02 14:54:45
796
原创 opene906环境搭建
本文详细介绍了如何在Ubuntu 22.04环境下搭建OpenE906的开发环境。首先,提供了OpenE906项目的仓库地址,用户可以从GitHub或Gitee下载源代码。接着,介绍了如何下载和配置玄铁GCC-900系列的编译工具链,并提供了工具链的官方下载链接和自行编译的方法。随后,文章指导用户安装必要的仿真工具(如iverilog和gtkwave),并配置环境变量以指定RTL代码路径和工具链地址。此外,还解决了在编译过程中可能遇到的默认shell问题,并提供了修改权限的步骤。最后,文章解答了关于Make
2025-05-17 12:47:25
936
原创 Windows Python安装(非管理员权限安装Python2和Python3)
Windows Python安装(非管理员权限安装Python2和Python3)
2024-07-09 15:33:18
2947
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅