当前位置: 首页 > ai >正文

1553B心得总结

以65170芯片为分析对象。其内存分配如下:
在这里插入图片描述

bc端向rt端发数过程

rt端软件部分读取bc端发送的遥控指令步骤为:
在这里插入图片描述
1.检测到新消息的中断。
2.0x0100中堆栈指针发生了变化,也就表示有新的消息描述符没有被处理。
3.从0x0000到0x00ff的描述符堆栈中,根据堆栈指针取出最新的消息描述符。
4.根据消息描述符里的“数据块指针”获取接收数据的存放地址,根据消息描述符里的“接受到的指令字”获取接收数据的字节数,然后就可以将bc发给rt的数据取出了。

bc端从rt端取数过程

rt端向bc端发送数据方式如下:

1.rt端将要发送的数据写入对应发送子地址的内存空间。
2.rt将发送子地址0的矢量字某一位置位,表示想发送某种类型的数据。
3.rt将状态字里的举手位置位,表示rt有数据要发给bc端。
4.bc在进行别的数据交互(如长抱环,遥控指令)等过程中获得状态字,并知晓rt端有数据要发送。
5.bc端读取rt端的矢量字,根据哪位置位了,得知rt端要发送哪个子地址的数据,然后从rt端发数据取走。
6.rt端获取了bc端取数的中断后,得知数据已经取走,则把矢量字清空。

rt端的初始化

rt端初始化主要是设置0x0140至0x01BF的查询表。
在这里插入图片描述
0x0140至0x015F用于设置每个接收子地址接收的数据存放在哪个存储区域。
0x0160至0x017F用于设置每个发送子地址发送的数据存放在哪个存储区域。
0x01A0至0x01BF用于设置每个发送子地址和接收子地址的存储区域可以存放多少数据,也叫子地址控制字。可以设置的数据量类型如下:
在这里插入图片描述

一些工作机理

查询表里存放的地址是给bc端从rt读数或写数时用的,读数会根据查询表里的地址值读数,写数会写入到查询表里的地址值对应位置,而且每次读完或写完数据,查询表中对应地址值会自动变成下一次读或写的地址。
子地址控制字设置了每个发送或接收子地址可以存放的数据量,当查询表中对应地址值更新时超出了子地址控制字设置的数据量后,地址值会变成初始地址,重新开始累计。
芯片判断查询表里的地址是否要更新成初始地址是通过判断某一位是否反转的方式。比如子地址控制字里设置某个子地址内存容量为128,那么芯片就会检测查询表里这个子地址对应的指针地址在累加过程中第7位是否发生了反转,如果反转了就将第0位到第7位清0重新计数。所以在初始化时设置查询表里的地址指针要字节数对齐。

http://www.xdnf.cn/news/16029.html

相关文章:

  • 对象\数组\Map按属性值排序迭代器
  • 达索×杰克×安托:开启服装智造“新宇宙”
  • 密码学中的概率论与统计学:从频率分析到现代密码攻击
  • 不止于“亮”:一盏智慧路灯的技术进化史——塔能科技用“落地性”定义行业标准
  • Python 程序设计讲义(9):Python 的基本数据类型——复数
  • Python-Pytorch编码习惯
  • 如何最简单、通俗地理解Python的numpy库?
  • 前端项目下载发票pdf文件要求改文件名笔记
  • [hot 100] 移动零-Python3
  • AI替代人工:浪潮中的沉浮与觉醒
  • MCP客户端架构与实施
  • 智能小e-集成配置
  • 自动化运维:从脚本到DevOps的演进
  • Java设计模式-备忘录模式
  • Leetcode力扣解题记录--第240题(矩阵搜索)
  • 基于 Qiankun 的微前端实践案例:电商平台多模块整合方案
  • java通过com进行pdf转换docx丢失
  • js面试题 高频(1-11题)
  • 观影《长安的荔枝》有感:SwiftUI 中像“荔枝转运”的关键技术及启示
  • Apache POI 介绍与使用指南
  • Day01_C++
  • ctfshow pwn40
  • CVE-2025-32463漏洞:sudo权限提升漏洞全解析
  • 网络基础17:IRF实验(H3C设备)
  • Dify实战,获取禅道需求,编写测试用例到禅道
  • 【图像翻转+图像的仿射变换】——图像预处理(OpenCV)
  • 05-ES6
  • 【Spring Cloud Gateway 实战系列】基础篇:路由、断言、过滤器、负载均衡深度解析
  • vscode怎么安装MINGW
  • 利用 Playwright MCP 构建浏览器自动化流程:技术路径与操作解析