《30天自制操作系统》 第一周(D1-D7) 笔记
前言:这是我2023年5月份做的一个小项目,最终是完成了整个OS。笔记的话,只记录了第一周。想完善,却扔在草稿箱里许久。最终决定,还是发出来存个档吧。
一、汇编语言
基础指令
- MOV: move赋值,数据传送指令。一个规则:源数据和目的数据必须位数相同。该指令的数据传送源和传送目的地,不仅可以是寄存器或常数,而且可以是内存地址
- ADD: add加,演算指令
- CMP: compare比较指令
- JMP: jump/goto跳转,跳转到指定的内存地址(例如:JMP 0x7c50)
- ORG: origin源头起点,程序要从指定的该地址开始
- DB: define byte往文件里直接写入1个字节的指令,db小写功能相同;也可直接用它写字符串
- RESB: reserve byte预留n个字节,空出地址上自动填充0x00
条件跳转指令
- JE: jump if equal如果相等就跳转
- JB: jump if below如果小于就跳转
- JAE: jump if above or equal大于或等于时就跳转
- JBE: jump if below or equal小于或等于时就跳转
- JC: jump if carry如果进位标志是1就跳转
- JNC: jump if not carry如果进位标志是0就跳转
其他指令
- DW: define word16位,2字节
- DD: define double-word32位,4字节
- BYTE/WORD/DWORD: 保留字
- DWORD: Double Word双字节数据类型,是指注册表的键值,每个word为2个字节的长度,DWORD 双字即为4个字节,每个字节是8位,共32位
- entry: 入口,标签的声明,指定JMP指令的跳转目的地【汇编中,所有标号都是数字,其对应的数字由汇编语言编译器根据ORG指令计算出来】
- EQU: equal声明常数
- fin: finish结束
- INT: interrupt中断,调用BIOS函数的指令
- HLT: halt停止,让CPU停止动作的指令(进入待机状态),节能
- CLI: clear interrupt flag中断标志置为0
- STI: set interrupt flag中断标志置为1
- EFLAGS: 存储进位标志和中断标志等标志的寄存器
- PUSHFD: push flags double-word标志位的值按双字节长压入栈
- POPFD: pop flags double-word标志位的值按双字节长从栈弹出
- LGDT: 指定一个内存地址,从指定的地址【ESP+6】读取6个字节后赋值给GDTR寄存器(48位)
- 将指定的段上限【存放在ESP+4】和地址值【ESP+8】赋值给名为GDTR的48位寄存器(低位放在内存地址小的字节里,前)
- $: 这一行现在的字节数;若有ORG,代表将要读入的内存地址
- []: 内存/主存,对于CPU,其为外部存储器
二、存储相关概念
缓冲区地址:从软盘上读出的数据装载到内存的哪个位置
EBX处理4G内存,32位基址寄存器
起辅助作用的段寄存器:MOV AL,[ES:BS] 代表ES*16+BX的内存地址
先用附加段寄存器指定一个大致的地址,然后再用基址寄存器来指定其中一个具体地址
可以默认省略数据段寄存器DS,DS必须预先指定为0:
例如
MOV CX,[1234] 等价于MOV CX,[DS:1234]
MOV AL,[SI]等价于MOV AL,[DS:AL]
指定处理的扇区数,范围在0x01-0xff(指定0x02以上的数值时,要特别注意能够连续处理多个扇区的条件。如果是FD的话,似乎不能跨越多个磁道,也不能超过64KB的界限)
读盘顺序:扇区-磁头-柱面
AH=0x02: 读盘
AH=0x03: 写盘
AH=0x04: 校验
AH=0x0c: 寻道
AL=处理对象的扇区数(只能同时处理连续的扇区)
CH=柱面号&0xff
CL=扇区号(0-5位)|(柱面号&0x300)>>2
DH=磁头号
DL=驱动器号
ES:BX=缓冲地址;(校验及寻道时不使用)
返回值:
FLAGS.CF: 进位标志
FLACG.CF==0: 没有错误,AH==0
FLAGS.CF==1: 有错误,错误号码存入AH内(与重置(reset)功能一样)
0x10(16号): 控制显卡
//显示一个字符 AH=0x0e; AL=character code; BH=0; BL=color code; 返回值:无
//系统复位,复位软盘状态,再读一次 AH=0X00 DL=0X00 INT=0x13
正在上传…重新上传取消正在上传…重新上传取消
一般向一个空软盘保存文件时,
1)文件名会写在0x002600以后的地方
2)文件的内容会写在0x004200以后的地方
如果与C语言联合使用,有的寄存器能自由使用:EAX/ECX/EDX,其他寄存器只能使用其值,不能改变其值
char *p;//用于BYTE类地址 short *p;//用于WORD类地址 int *p;//用于DWORD类地址
正在上传…重新上传取消正在上传…重新上传取消
os思想:把操作和机制分开
三、术语
TAB=4: TAB键的宽度
FAT=12: 用Windows或MS-DOS格式化出来的软盘就是该格式
boot sector: 启动区,软盘的第一个扇区(512字节为1扇区),一张软盘共有2880个扇区
IPL: initial program loader启动程序加载器,必须取8字节的名字
boot: bootstrap启动,原指靴子上附带的便于拿取的靴带,自力更生完成任务
BIOS: basic input output system基本输入输出系统,组装在电脑主板的ROM(read only memory)单元里
0x00007c00-0x00007dff: 启动区内容的装载地址
地址空间:一个进程用于寻址内存的一套地址集合。主要用于解决多个应用程序同时处于内存中并且互不影响的问题——保护和重定位。
.com: 地址空间可以非数字,以.com结尾的网络域名的集合也是地址空间。
sys是system的缩写,就是系统的意思,sys是Windows的系统文件。如安装文件,日志文件,驱动文件,备份文件,操作如播放等文件,还有些垃圾文件等诸如此类。 都是这类sys后缀名的。
sys文件是驱动程序的可执行代码,其扩展名为.sys,驱动程序安装保持在windows/system32/drivers目录中。
在windows中文件的文件的路径是用反斜杠(\)表示(当初是为了和Unix的文件路径使用”/“区分开来),例如 C:\windows\system,但是我们在写程序的时候能不能再路径的字符串中写成C:\windows\system?答案是不能的,这一点想一下就会可以理解,在很多编译器中,“\”是一个转义字符,例如“\n,\r”等,如果在程序中写成“C:\windows\system“那么实际上编译出来的就是“C:windowssystem ",从而获取不到文件,但是这个路径可以写成C:\windows\system,或者也可以用正斜杠C:/windows/system,这两中方式都是可以的。说到这里,基本上这两种用法不会混淆了,只要记住”\“反斜杠有转义的功能,那么写路径的时候就不会出问题了。 顺便拓展一下,文件的相对路径和绝对路径: 例如一个绝对路径:C:\Windows\System\aaa.dll 如果当前目录是C:\windows 那么aaa.dll这个文件的地址可以表示为: ./system/aaa.dll 中”.“表示当前路径, …/windows/system/aaa.dll中”…“表示父级目录。
VGA显卡:VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。
sprintf: 只对内存进行操作,可应用于所有OS。不是按指定格式输出,只是将输出内容作为字符串写在内存中。能够不使用OS的任何功能。
分段:将4GB的内存分割,每一块的起始地址都看作0来处理
分页:paging,有多少个任务就要分多少页,还要对内存进行排序
GDT设定要优先于IDT
GDT: global (segment) descriptor table全局段号记录表。将这些数据整齐地排列在内存的某个地方,然后将内存的起始地址和有效设定个数放在CPU内被称作GDTR(global segment descriptor table register)的特殊寄存器中,设定完成。C语言里不能对GDTR赋值。
IDT: interrupt descriptor table中断记录表
中断功能:当CPU遇到外部状况变化,或者是内部偶然发生某些错误时,会临时切换过去处理这种突发事件。这就是中断功能。
要使用鼠标,就必须要使用中断。
各个设备有变化时就产生中断,中断发生后,CPU暂时停止正在处理的任务,并做好接下来能够继续处理的准备,转而执行中断程序。中断程序执行完后,再调用事先设定好的函数,返回处理中的任务。正是得益于中断机制,CPU可以一直不用查询键盘、鼠标、网卡等设备的状态,将精力集中在处理任务上。
这就是为什么每个操作前后要加中断标志的原因叭~
系统专用和应用程序用 等价于 内核模式和用户模式
PIC: programmable interrupt controller可编程中断控制器。将8个中断信号IRQ(interrupt request)集合成一个中断信号的装置。
正在上传…重新上传取消正在上传…重新上传取消
PIC寄存器(8位)
IMR: interrupt mask register中断屏蔽寄存器。8位分别对应8路IRQ信号。如果该位值为1,对应IRQ信号被屏蔽,PIC忽视该路信号。理由:对中断设定进行更改时,如果再接受别的中断会引起混乱,所以要屏蔽;此外,还可以屏蔽静电干扰等。
ICW: initial control word初始化控制数据。(只有CPU里word指代16位,这里不一定)
OCW:操作命令字。OCW1写入奇地址口,OCW2、OCW3写入偶地址口。功能:PIC继续时刻监视IRQ信号中断是否发生。io_out8(PIC0_0CW2, 0x60+IDQ号码)
四、遇到的问题
描述问题1:模拟运行操作系统时,双击"!cons_9x.bat"启动失败。 解决方法:导致该问题的原因是我自己没有仔细看书上的标注,双击"!cons_nt.bat"重试后启动成功。原因是两个文件中的命令不同,"!cons_9x.bat"中命令为command,适合linux一类系统,而"!cons_nt.bat"中命令为cmd.exe适合我现在所用的windows系统。
问题2
正在上传…重新上传取消正在上传…重新上传取消
人麻了,以为路径表示不对,跟着重新打了一遍一模一样的,最后发现是拼写失误!IMG写成ING了。
改了名称,一切正常。
网上跟我同一个报错的,但理由又是各不相同。
问题3数据也能执行吗?msg 机器语言也能显示吗?entry
不会报错,标号只是一个数字,但会错乱
不太懂以下的语句:
0A 0A——OR CL,[BP+SI]
68 65 6C——PUSH 0x6c65
问题4
正在上传…重新上传取消正在上传…重新上传取消
正在上传…重新上传取消正在上传…重新上传取消
问题5 无法生成sys文件
磁盘名称11字节
代码抄错,生成镜像文件时,一定要确保bin,sys, Makefile 同时存在
报错驱使我把代码看得更细
人才:把200写成了2OO,吐血
正在上传…重新上传取消正在上传…重新上传取消
学会定位错误。添加新的中间文件makefile时,需要注意前后的连贯性,是否需要添加/增减
正在上传…重新上传取消正在上传…重新上传取消
忘记声明全局变量了
正在上传…重新上传取消正在上传…重新上传取消
问题可能出在makefile/naskfunc.nas/bootpack.c中
问题
正在上传…重新上传取消正在上传…重新上传取消
使用32位寄存器需要你进入保护模式,进入保护的方法就是开A20 gate,我看下面几行的汇编应该就是在对CR0的这个位进行设置,从而进行快速A20。如果想使用64位寄存器,就必须在进入保护模式之后,开启长模式(long mode)。
正在上传…重新上传取消正在上传…重新上传取消
INSTRSET指令:告诉nask这个程序是给486使用的哦,nask会将EAX解释成寄存器名
486是英特尔系列的CPU【32位】
指定内存时,不知道是BYTE,WORD,DWORD,只有另一方也是寄存器的时候才能省略
p不是指针,而是地址变量,用于存放地址值
问题:如何显示字符
这个逻辑还是没有搞清楚
//extern char hankaku[4096]; why can delete?
//GDT的长度是怎么定的?0x270000-0x27ffff
问题:
第六天中的GB到底是什么?
1GB(Gigabyte)=1024MB
G:granularity颗粒度,单位的大小
4KB * 1M=4GB。1KB * 1M = 1GB。
问题: 为什么键盘输入需要缓冲区
缓冲区其实就是一块内存空间,它用在硬件设备和用户程序之间,用来缓存数据, 目的是让快速的CPU 不必等待慢速的输入输出设备,同时减少操作硬件的次数。
_io_stihlt
汇编语言写的函数,链接到C语言使用时,一定要加_
根据CPU规范,机器语言的STI指令之后,如果紧跟着HLT指令,那么就暂不受理这两条指令之间的中断,而要等到HLT指令之后才受理,所以使用io_stihlt函数就能克服这一问题
最常出现的错误:can't link
关注细节语法错误,重点看中断部分
.h 和 naskfunc.nas
问题:
改善FIFO缓冲区,还存在E0问题
五、总结感悟
- 头文件.h 和 makefile类正则匹配的共同目的:减少重复片段
- 头文件.h的作用:类似目录
- 报错首先检查笔误,再依次按关联度从高到低排查文件
相关文章:
《30天自制操作系统》 第一周(D1-D7) 笔记
前言:这是我2023年5月份做的一个小项目,最终是完成了整个OS。笔记的话,只记录了第一周。想完善,却扔在草稿箱里许久。最终决定,还是发出来存个档吧。 一、汇编语言 基础指令 MOV: move赋值,数据传送指令…...
SQL注入:报错注入
SQL注入系列文章:初识SQL注入-CSDN博客 SQL注入:联合查询的三个绕过技巧-CSDN博客 目录 什么是报错注入? 报错注入常用的3个函数 UpdateXML ExtractValue Floor rand(随机数) floor(向上取整&…...
K8s 安装部署-Master和Minion(Node)文档
K8s 安装部署-Master和Minion(Node)文档 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETC…...
OpenAI 降低价格并修复拒绝工作的“懒惰”GPT-4,另外ChatGPT 新增了两个小功能
OpenAI降低了GPT-3.5 Turbo模型的API访问价格,输入和输出价格分别降低了50%和25%。这对于使用API进行文本密集型应用程序的用户来说是一个好消息。 OpenAI官网:OpenAI AIGC专区:aigc 教程专区:AI绘画,AI视频&#x…...
springboot+value静态属性获取配置文件中的值的操作方法
1.配置类需要让spring管理 2.set方法不要加static 3.如果静态属性是private修饰,则在使用的时候,需要 类名.getXXX方法 如果静态属性是public修饰,则在使用的时候,需要 类名.属性名 import org.springframework.beans.factory.an…...
Prometheus 架构全面解析
在本指南中,我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。 此外,在当今世界,可观…...
把批量M3U8网络视频地址转为MP4视频
在数字媒体时代,视频格式的转换已成为一项常见的需求。尤其对于那些经常处理网络视频的用户来说,将M3U8格式的视频转换为更常见的MP4格式是一项必备技能。幸运的是,现在有了固乔剪辑助手这款强大的工具,这一过程变得异常简单。下面…...
联合 Maxlinear 迈凌 与 Elitestek 易灵思 - WPI 世平推出基于 FPGA 芯片的好用高效电源解决方案
近期 WPI 世平公司联合 Maxlinear 迈凌电源产品搭配 Elitestek 易灵思 FPGA 共同合作推出基于 FPGA 芯片的好用高效电源解决方案。 Elitestek 易灵思 FPGA 核心产品有 2 大系列 : Trion 系列与钛金系列。Trion 系列主要特点是 : 1. 40nm 工艺 2. 超低功耗 ( 可低至竞争对手的 …...
Keycloak - docker 运行 前端集成
Keycloak - docker 运行 & 前端集成 这里的记录主要是跟我们的项目相关的一些本地运行/测试,云端用的 keycloak 版本不一样,不过本地我能找到的最简单的配置是这样的 docker 配置 & 运行 keycloak keycloak 有官方(Red Hat Inc.)的镜像&#…...
架构篇27:如何设计计算高可用架构?
文章目录 主备主从集群小结计算高可用的主要设计目标是:当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可…...
Python 有用的库模块
简介 Python中有许多常用的库或者模块,在写代码的时候或多或少会遇到,本文对其进行总结,方便日后查阅。 pprint Python中的pprint模块是用于打印数据结构(如字典,列表等)的模块,提供了一种以…...
vivado DDS学习
实现DDS通常有两种方式,一种是读取ROM存放的正弦/余弦信号的查表法,另一种是用DDS IP核。这篇学习笔记中,我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT(DDS)的standard模式…...
微信小程序(十六)slot插槽
注释很详细,直接上代码 上一篇 温馨提醒:此篇需要自定义组件的基础,如果不清楚请先看上一篇 新增内容: 1.单个插槽 2.多个插槽 单个插糟 源码: myNav.wxml <view class"navigationBar custom-class">…...
gtest 单元测试
文章目录 前言一、Google Test介绍1.1 gtest源码下载编译1.2 常用API介绍1.3 gtest运行参数介绍 二、Google Mock参考资料 前言 Google Test(简称gtest)是一个开源的C单元测试框架。和常见的测试工具一样,gtest提供了单体测试常见的工具和组…...
掌握assert的使用:断言在错误检查和调试中不可或缺
断言在错误检查和调试中不可或缺 一、简介二、断言的基本语法和用法三、错误检查与断言四、 调试与断言五、避免滥用断言六、总结 一、简介 断言是一种在程序中用于检查特定条件是否满足的工具。一般用于验证开发者的假设,如果条件不成立,就会导致程序报…...
概念杂记--到底啥是啥?(数据库篇)
文章目录 1.聚集索引(clustered index)2.非聚集索引(Non-clustered index)3.聚集索引和非聚集索引区别?4.覆盖索引(covering index)5、复合索引 (Composite Index)6.索引…...
Ubuntu20.4 Mono C# gtk 编程习练笔记(四)
连续实时绘图 图看上去不是很清晰,KAZAM录屏AVI尺寸80MB, 转换成gif后10MB, 按CSDN对GIF要求,把它剪裁缩小压缩成了上面的GIF,图像质量大不如原屏AVI,但应该能说明原意:随机数据随时间绘制在 gtk 的 drawin…...
1 月 26日算法练习
文章目录 九宫幻方穿越雷区走迷宫 九宫幻方 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个33的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称…...
今日AI大热潮,明日智能风向标
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
03 SB实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)
1.1 自动展示所有信息 需求描述: 进入新闻首页portal/findAllType, 自动返回所有栏目名称和id 接口描述 url地址:portal/findAllTypes 请求方式:get 请求参数:无 响应数据: 成功 {"code":"200","mes…...
Abaqus许可分析工具
在当今的知识产权保护和许可管理领域,一款高效、精准的许可分析工具对于企业来说至关重要。Abaqus许可分析工具凭借其强大的功能和卓越的性能,成为了企业优化知识产权许可管理的得力助手。 一、Abaqus许可分析工具的核心优势 1.全面性:Abaqus…...
【开发工具】从eclipse到idea的过度
背景 随着eclipse相比以前性能慢了不少,idea在开发工具领域越战越猛,市场份额也逐年增加,其体验得了软件工程师的热爱。 概要 本文只是做了一个简要的记录,简单描述下本人从eclipse到idea的过度的心态。 正文 在大厂都会研发自…...
【QT+QGIS跨平台编译】之十一:【libzip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、libzip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libzip介绍 libzip是一个开源C库,用于读取,创建和修改zip文件。 libzip可以从数据缓冲区,文件或直接从其他zip归档文件直接复制的压缩数据中添加文件。在不关闭存档的情况下所做的更改可以还原…...
openlayers+vue实现缓冲区
文章目录 前言一、准备二、初始化地图1、创建一个地图容器2、引入必须的类库3、地图初始化4、给地图增加底图 三、创建缓冲区1、引入需要的工具类库2、绘制方法 四、完整代码总结 前言 缓冲区是地理空间目标的一种影响范围或服务范围,是对选中的一组或一类地图要素(点、线或面…...
(大众金融)SQL server面试题(3)-客户已用额度总和
今天,面试了一家公司,什么也不说先来三道面试题做做,第三题。 那么,我们就开始做题吧,谁叫我们是打工人呢。 题目是这样的: DEALER_INFO经销商授信协议号码经销商名称经销商证件号注册地址员工人数信息维…...
c语言笔记
1. c语言部分算法列举 1.1 找数 二分查找(前提是数据必须有序) 1.2 求极值 1.3 数组逆序 1.4 排序法(***重点***) 1.4.1 选择排序法 1.4.2 冒泡排序法 1.4.3 插入排序法 2. 字符型数组 2.1 使用格式 char s[10]; …...
6轴机器人运动正解-逆解控制【1】——三种控制位姿的方式
概览: 通过运动学正解控制机器人运动通过运动学逆解控制机器人运动一个简单的物体搬运(沿轨迹运动) 后续会陆续更新(本例仅供学习交流用) 一、6轴机器人 二、运动正解控制 通过修改各个轴的角度,实现末…...
c# Microsoft UI Automation
Microsoft UI Automation(UIA)是一种用于自动化Windows应用程序用户界面(UI)的框架。它允许开发人员编写自动化测试脚本、辅助技术应用程序和其他需要与应用程序交互的工具。以下是一些关于Microsoft UI Automation的重要信息&…...
C#-前后端分离连接mysql数据库封装接口
C#是世界上最好的语言 新建项目 如下图所示选择框红的项目 然后新建 文件夹 Common 并新建类文件 名字任意 文件内容如下 因为要连接的是mysql数据库 所以需要安装 MySql.Data.MySqlClient 依赖; using MySql.Data.MySqlClient; using System.Data;namespace WebApplication1.…...
yolov8 opencv dnn部署自己的模型
源码地址 本人使用的opencv c github代码,代码作者非本人 使用github源码结合自己导出的onnx模型推理自己的视频 推理条件 windows 10 Visual Studio 2019 Nvidia GeForce GTX 1070 opencv4.7.0 (opencv4.5.5在别的地方看到不支持yolov8的推理,所以只使用opencv…...
如何做网站的映射/uc推广登录入口
网页设计中页面尺寸标准在刚开始进行美工设计的人,对网页设计页面尺寸一般多大,可能会有疑问。下面是小编为大家整理的网页设计中页面尺寸标准,欢迎参考~对于固定宽度的网站布局,设计师常用的.分辨率有:760px、780px、…...
2016网站设计风格/软文代写多少钱一篇
区块链,可能是当下最有前景又充满分歧的技术与经济趋势。它给数字世界带来了“价值表示”和“价值转移”两项全新的基础功能。其潜力正在显现出来,但当下它又处于朦胧与野蛮生长的阶段。 对比互联网的发展史,现在的区块链可能相当于 1994 年…...
网站平台有哪些类型/太原百度快速排名提升
本机配置1. ubuntu 64bit2. hadoop 2.7.1Contents1.安装jdk2.安装ssh3.安装hadoopSteps1.安装jdka)下载这个网址中跟自己操作系统相对应的jdk版本:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html 我选择的是jdk-7u79-l…...
做网络推广阿里巴巴还是网站好/迅雷磁力
小伙伴们如果想了解更深入的解释(确保我们没有忽悠你),请继续往下看吧。 EtherCAT是EtherCAT基金会基于以太网基础开发的一种开放式的、先进的现场总线,它通过一系列独特的机制来保证数据传输的高效与可靠。 EtherCAT只需要使用…...
php网站开发论坛/长沙seo网站优化
前言 坐标变换在机器人系统中十分重要,有关坐标变换,可参考ROS官方文档tf2。 广播静态坐标变换 静态坐标变换是指两坐标系之间的变换关系是固定的一种坐标变换,常用于表示汽车上两位置固定坐标系之间的变换关系,例如各个传感器…...