mmWave SDK
Loading the player...
将在30s后自动为您播放下一课程
mmWave SDK的部分 mmWave SDK Okay 我这边用PDF好了 为什么我想用这个呢? 因为它是我们TRAINING.TI.COM 上面标准的东西。 我希望我用的就是 TRAINING.TI.COM上的东西 来跟各位解释。 各位今天现场听不清楚的时候 你还是可以回到TRAINING.TI.COM。 这边也要顺便再跟各位说明一下 TRAINING.TI.COM 是一个非常好的来源。 就说你想要知道 所有TI产品的一些知识 都可以在TRAINING.TI.COM 上面得到 。 像我们今天讲的毫米波雷达而言呢 如果你去TRAINING.TI.COM 然后 搜寻关键字 打mmWave的话 大概可以找到80个 大概可以找到80个Video 都是一系列的 那80个video内部有些 还要再长出更多的细项 所以说是非常地丰富 那 erm mmWave SDK 简单来讲就是 要开发我们这颗ICU的时候 要用的软体 要用的软体 这个软体是副单晶片 刚刚我不是提到有单晶片 还有串接式的影像雷达 串接式的影像雷达 我们会搭配另外一套SDK 叫雷达SDK 所以两个是不一样的东西 mmWave SDK只用在单晶片 雷达SDK会用在影像雷达 串接雷达 因为那种雷达SDK 它是必须要跑在更复杂的处理器上面 因为它结了好多颗的收发器 有很多资料进来 你需要做一些更复杂的处理 单晶片相对而言简单很多 所以它不需要这么复杂的架构 那mmWave SDK到底包含了什么呢 首先它里面有包含RTOS TI的RTOS 然后 当然就是Chip的Driver 目前最新的mmWave SDK 已经到了3.0 我们从1.0, 1.1, 2.0, 2.1 现在已经到3.0了 在3.0的mmWave SDK device driver 它事实上 已经support所有的 1443,1642,6843,1843 这样子的东西 Driver都已经在里面了 好 这些Driver指的就是 因为我们终究还是有一些周边 比如 说举个例子 UR driver, SPI driver, King driver King D 的driver 类似这样子的东西 Okay 此外我们还要support API 还有一些application 的 library 我们把它叫 mmWave的library 这个API的话 因为软体 都是分很多层的 所以不同层会有不同API 我们等下也会看到 然后 最后还会附上一个 MMwave demo MMwave demo 事实上也是 几乎是所有人 比如说你去买了一个开发版之后 你的第一件事情 接下来 大家就读一读 开发版的user guide 读完 大家就知道上面的LED什么意思 jumper要怎么调 电要怎么插 接下来一定就是烧CODE 你要把CODE放在上面去嘛 把那个烧到上面去的 第一支 Sample code 往往就是 等一下会提到的 MMwave demo SDK里面已经 提供好preview 的 binary 你就可以很快地把 preview binary 透过一个烧入的工具 就把它写到开发版上 非常的快 我相信 我把这个过程称为开箱的过程 基本上开箱过程大概都是 可能3-4分钟内就可以搞定 非常非常的简单 而且非常非常的易用 非常容易使用 然后 另外还有一些Tool 就是在SDK的tool SDK 的tool我相信 一般人可能会比较忽略 为什么呢 因为大家build code的时候 可能就是 打make,make clean, make all 很少有人会关心 你MAKE 中间的流程 到底发生了什么事。 实际上他的过程应该非常精彩丰富 我们等下如果有时间就来看一下 到了整个code都generate完之后 它需要做一些格式转换 最后 还要把它捆成一包印象档 最后通过[inaudible]把它烧进去 那个tool 都是做那样的事情 这就需要转换 这个其实也有 如果你是在做mmWave开发的话 TEAM里边可能也要一个人来 做这样子的事情 基本上是做一些整合的工作 这个是mmWave SDK 它的一个比较high level 的框图 你可以看得到 各式各样不同颜色 像这种 蓝色这边是TI的code 黄色这边本质上就是 customer自己的code 然后这边有个紫框 代表说 这个code 这个方块里面的code 是ISO26262 符合它规范的 我们先从最底下这边 就是刚刚提到的hardware的部分 hardware这边有雷达的SS部分 就是front end 雷达SS,[inaudible] SS在这边 然后这边是MSS 还有DSP等等 网上面会有TI的RTOS 然后 还有Driver 这边还有OSAL OSAL的全名 不管是不是做软体的 很容易就猜到 就是OS的抽象层 abstraction layer 对不对 有这种抽象层是什么意思? 就代表说 DRIVER往下接口 它势必要调用一些OS的资源 那你调用OS的资源 可是有些customer就不想TI的RTOS 他想用他自己的RTOS 对不对 RTOS超多的 我们今天这样子的东西 就是它所有都是有 有OSAL这样子的设计的概念 所以换句话说 你可以抽换掉自己的 抽换掉TI的RTOS变成自己的RTOS 然后你的DRIVER就 透过OSAL来做嫁接 Okay 然后在这上边 有mmWaveLink mmWaveLink的API 好 这个东西还蛮重要的 因为 在TI所有的 跟前方的雷达Subsession 沟通的呢 都是靠mmWaveLink API 你可以说 其实你能够直接控制的就是 直接呼叫mmWaveLink API 然后它会把它转换成message 格式 把它送到Subsession里边 它收到message之后 会做相对应的处理 会做相对应的处理 所以这个东西是很重要 只不过在mmWave SDK 这个开发包里面 它对mmWaveLink 这种API的 说明比较没有琢磨 但是事实上TI有另一份文件 我们把它叫做AWR 1xxx control interface 它那个control interface 指的就是 用mmWaveLink layer来对反应 雷达的反应做control 所以事实上这个是一切的基础 我是鼓励大家也必须要取得那份 control interface control interface 实际上 比如说在刚才的单晶片收发器时候 它就是下SPI命令 对吧 下SPI命令 也是把它转发成MESSAGE 的那种格式 所以mmWaveLink 非常重要 mmWaveLib 指的是各式各样的application 比如说 像CFAR等等各式各样的 application方案 好 接下来 mmWave API mmWave API 你可以把它 想象成是mmWaveLink 还有一些架构的再包装 啊 再包装 就等于说,再把它简化 那各位的应用程式是mmWave 在我们这包里面是mmWave demo mmWave demo 它实际上 呼叫呢 都是先呼叫mmWave API 然后 mmWave API包装一下 再去呼叫mmWaveLink mmWaveLink发message到这边处理 回来的流程也是一路这样回来 那这个position指的是 因为雷达这边有一些 一阶 二阶好的FFTE 然后 AOA等等的 甚至包含后面的一些处理列 是这样的意思 那SDK在目录的长相是这种样子 然后 要说明的是呢 这个目录长相 它是based on mmWave SDK 1点多跟2点多 长的是这个样子 3点多变掉了 3点多改变了 3点多是一个比较大的改变 3点多目录长得 结构就不再是这种样子 那这里面,如果你 从网络上下载了 然后 安装以后 通常我们不会去改变它的目录 你一定把它装在 C driver下面的 TI目录下面 就会看到mmWave SDK 那打开第一件事当然就是document document 这个 你要看一看 通常Release Notes 和 User Guides 都要把它看清楚 Release Notes 里面呢 如果在看Release Notes 通常会看 它到底有什么新东西 比如说每版SDK到底有什么新东西 还有在这一版SDK里面 它有没有 known bug 是不是还有哪些bug 然后或者是说这一版SDK 到底解掉了那些BUG 这是我关心的 所以 我在Release Notes里面 就看这样的东西 那在User Guide 就是针对 mmWaveSDK 的讲解 这边firmware firmware的东西指的是 刚刚Luke不是有提到吗 在雷达的那个subsession MSS 那边事实上还有 处理器的 R4 那个处理器里面的firmware呢 对customer而言 我们的 RF系统 事实上就是一个黑盒子 你也不用管它 你能接触它的界面就是 mmWaveLink 你不用管它 那个黑盒子怎么样运作的 那这个就是黑盒子的firmware 那在我们SDK里面 是以binary的方式附上去 是以binary的方式附上去 当然 在上电开机之后 这种firmware就会被载到里面去 好 还有Tool Too 就是刚才讲的 它做 image 的一些转换跟配置等等 进来以后 从package这边进来 有TI TI里面 通常如果你拿到 一开始 你通常会到demo这边 就是开始去看一些 mmWave Demo的程式 看它是怎么写的 driver 通常一般不会去看 因为它就是写好在那边的嘛 我们都有调用 所以 没事的话 大家不会去看 也不会去改这种driver 了 没事的话 不会去动这部分 alg 的话 大家都会自己加了 control 就包含 mmWave 跟 mmWaveLink 就是刚才讲的 那两层 你的 demo 会去call mmWave 的API mmWave API 再去call mmWaveLink API 这样子的部分 然后Platform Platform 这里面放的 大概都是 跟Platform的配置比较相关的 配置比较相关指的就是说 比如说 它的硬体相关的机体配置 等等 这样子的东西 最后还有一些功用的软体层 这个driver 这是一个driver API的长相 这边就是 ADC buffer 这里面的driver 它开出来 API 大概都长的蛮像的 不外乎就是init, open control, close 类似这样 或者是 left right 对不对 大概就是长的这种样子 刚刚有提到就是说 调用资源的话就是 透过 比如说 Semaphore, memory 或者 等等的一些资源的话 透过这个来调用 来调用 透过这个 当然也可以 把它转成其他的RTOS 如果 你要的话 好 mmWaeLink API 这个API 你可以在刚刚的 mmWaveLink的目录下面看到 它的名字都是 R 开头的 R 开头的 我们把它分成两大类 一大类是device manager 另外一大类是sensor control sensor control 它都是 R 开头的 所以 其实我应该这么说 就是说 如果你真的要把雷达单晶片 用到镜子的话 其实你的API的对象应该是这个 而不是什么mmWave API 因为 mmWave API 只是在包装 当然你应该不会对这种不满意 因为这种东西通常 只是做一些包装的动作 因为 最后终究还是要把它 打包成message 送到刚刚的雷达那边去 雷达的firmware 那边去嘛 好 那再这边都是再做 这种打包的动作 把你上层传下来的参数 依照一定的格式把它填好转换 做成message 再送出去 每一个长相大概都是这种样子 但是应用面 都是其实必须要呼叫这样子的API 好 这个是更上层了 就是我刚才讲的 mmWave API 会call mmWaveLink 然后 再到这边 那当然 如果不同盒之间 要做一些IPC的话呢 mmWave API 它有一些 可以做这样的事情 在MSS 跟 DSS之间做调用 好 library Library 这边当然就是像 有一些 比如说像 CFAR等等 FFT等等的 Windowing 的这些library 它是放在那个下面 它都是用 function code 方式让你去呼叫它的 所以 使用起来 就是这样子 好 这就是一个处理电的过程 我想 前方就跟大家讲的 雷达的SS吗 那进来以后 这边ADC ADC 进到ADC buffer 然后 我们会去 呼叫函数对它做Range FFT的运算 目前这张是based on 1642 1642 它有DSP 主要的一些FFT运算都是在DSP上面 去完成的 去完成的 如果是未来的一些 比如说 1843 或者是像 过去的一些1443 它有所谓的加速器 加速器 那个加速器 最主要也是拿来做FFT DSP 的loading 就可以释放出来 FFT就让加速器去做就好了 DSP再可以去做其他事情 这张图就会换成其他的长相 不过我们这边是以1643来做例子 这边的话 是一截 然后 接着 在L3里面是放雷达的cube 然后 接着再做二截的FFT 然后 做detection, angle estimation 这样子的东西 接下来就把一些资料送到MSS这边 那MSS这边呢 以一般目前的customer而言 因为 就我所知 有些客户 他已经有这种clustering跟tracking 这种application 那种Application 呢 看起来 有些客户的application 也是based on 这种on-base的application 所以他把这个东西丢在这边以后 clustering 跟 tracking 的这种application 就可以在MSS R4F这边执行 执行完 最后再把结果 透过 比如说 车用 那就是透过 [inaudible] 往外丢 或者是像工业这边 可能也许就透过UART 把结果往外丢 那个结果可能就包含了 我今天又侦测到几个目标 然后每个目标误差的 information是什么 距离等等的 这样子的information 所以大概是这样 所以 比如说 我在这边描述的东西 也曝露了一个设计上的难题 因为TI 以后的毫米波雷达 会有非常多样化的硬体的组合 有很多硬体的组合 那 part number 有很多种 它内部的硬体长相可能会 不太一样 那对software的人 就变成一个很大的挑战 你没有办法 比如说 今天1443是没有DSP的 但是它有hardware加速器 1642呢 它是没有hardware 加速器 但是有DSP 然后 有DSP 1843 是两个都有 这个combination就好多种 对于 software 的人来说 其实就是噩梦 对不对 很讨厌 如果你把工业的这种application 的应用再考量进来的话 你会觉得这更是噩梦中的噩梦 为什么呢?因为工业 不像车用的application 这么单纯 工业用的application 可能是非常非常的发散 它的这种处理链 长相可能都会很不一样 同意吗? 它的处理链长相可能都不太一样 它的流程不一定都是长的这种样子的 流程不一定长的这种样子的 如果software也没有 一个好的方法的话 那几乎 等于每次要做一个东西 大概就是要重写了 讲白了就是要重写 所以TI的software的RT 理解到 也意识到这样的问题 好 这也是为什么会有 mmWave 3.0的发生 我们把它叫做scalable的SDK 我们把它叫做scalable的SDK 为的就是解决刚刚的那些问题 等下我们就会看到 这个就是呼叫流程了 我想呼叫流程 这个就不一一过 因为这种东西 完全可以带过 大家可以在 看就好了 我们还是直接来看 scalable的SDK到底 到底它有一些什么改变 它的概念跟这个其实还有差异蛮大的 好 那我们来看3.0的部分
mmWave SDK的部分 mmWave SDK Okay 我这边用PDF好了 为什么我想用这个呢? 因为它是我们TRAINING.TI.COM 上面标准的东西。 我希望我用的就是 TRAINING.TI.COM上的东西 来跟各位解释。 各位今天现场听不清楚的时候 你还是可以回到TRAINING.TI.COM。 这边也要顺便再跟各位说明一下 TRAINING.TI.COM 是一个非常好的来源。 就说你想要知道 所有TI产品的一些知识 都可以在TRAINING.TI.COM 上面得到 。 像我们今天讲的毫米波雷达而言呢 如果你去TRAINING.TI.COM 然后 搜寻关键字 打mmWave的话 大概可以找到80个 大概可以找到80个Video 都是一系列的 那80个video内部有些 还要再长出更多的细项 所以说是非常地丰富 那 erm mmWave SDK 简单来讲就是 要开发我们这颗ICU的时候 要用的软体 要用的软体 这个软体是副单晶片 刚刚我不是提到有单晶片 还有串接式的影像雷达 串接式的影像雷达 我们会搭配另外一套SDK 叫雷达SDK 所以两个是不一样的东西 mmWave SDK只用在单晶片 雷达SDK会用在影像雷达 串接雷达 因为那种雷达SDK 它是必须要跑在更复杂的处理器上面 因为它结了好多颗的收发器 有很多资料进来 你需要做一些更复杂的处理 单晶片相对而言简单很多 所以它不需要这么复杂的架构 那mmWave SDK到底包含了什么呢 首先它里面有包含RTOS TI的RTOS 然后 当然就是Chip的Driver 目前最新的mmWave SDK 已经到了3.0 我们从1.0, 1.1, 2.0, 2.1 现在已经到3.0了 在3.0的mmWave SDK device driver 它事实上 已经support所有的 1443,1642,6843,1843 这样子的东西 Driver都已经在里面了 好 这些Driver指的就是 因为我们终究还是有一些周边 比如 说举个例子 UR driver, SPI driver, King driver King D 的driver 类似这样子的东西 Okay 此外我们还要support API 还有一些application 的 library 我们把它叫 mmWave的library 这个API的话 因为软体 都是分很多层的 所以不同层会有不同API 我们等下也会看到 然后 最后还会附上一个 MMwave demo MMwave demo 事实上也是 几乎是所有人 比如说你去买了一个开发版之后 你的第一件事情 接下来 大家就读一读 开发版的user guide 读完 大家就知道上面的LED什么意思 jumper要怎么调 电要怎么插 接下来一定就是烧CODE 你要把CODE放在上面去嘛 把那个烧到上面去的 第一支 Sample code 往往就是 等一下会提到的 MMwave demo SDK里面已经 提供好preview 的 binary 你就可以很快地把 preview binary 透过一个烧入的工具 就把它写到开发版上 非常的快 我相信 我把这个过程称为开箱的过程 基本上开箱过程大概都是 可能3-4分钟内就可以搞定 非常非常的简单 而且非常非常的易用 非常容易使用 然后 另外还有一些Tool 就是在SDK的tool SDK 的tool我相信 一般人可能会比较忽略 为什么呢 因为大家build code的时候 可能就是 打make,make clean, make all 很少有人会关心 你MAKE 中间的流程 到底发生了什么事。 实际上他的过程应该非常精彩丰富 我们等下如果有时间就来看一下 到了整个code都generate完之后 它需要做一些格式转换 最后 还要把它捆成一包印象档 最后通过[inaudible]把它烧进去 那个tool 都是做那样的事情 这就需要转换 这个其实也有 如果你是在做mmWave开发的话 TEAM里边可能也要一个人来 做这样子的事情 基本上是做一些整合的工作 这个是mmWave SDK 它的一个比较high level 的框图 你可以看得到 各式各样不同颜色 像这种 蓝色这边是TI的code 黄色这边本质上就是 customer自己的code 然后这边有个紫框 代表说 这个code 这个方块里面的code 是ISO26262 符合它规范的 我们先从最底下这边 就是刚刚提到的hardware的部分 hardware这边有雷达的SS部分 就是front end 雷达SS,[inaudible] SS在这边 然后这边是MSS 还有DSP等等 网上面会有TI的RTOS 然后 还有Driver 这边还有OSAL OSAL的全名 不管是不是做软体的 很容易就猜到 就是OS的抽象层 abstraction layer 对不对 有这种抽象层是什么意思? 就代表说 DRIVER往下接口 它势必要调用一些OS的资源 那你调用OS的资源 可是有些customer就不想TI的RTOS 他想用他自己的RTOS 对不对 RTOS超多的 我们今天这样子的东西 就是它所有都是有 有OSAL这样子的设计的概念 所以换句话说 你可以抽换掉自己的 抽换掉TI的RTOS变成自己的RTOS 然后你的DRIVER就 透过OSAL来做嫁接 Okay 然后在这上边 有mmWaveLink mmWaveLink的API 好 这个东西还蛮重要的 因为 在TI所有的 跟前方的雷达Subsession 沟通的呢 都是靠mmWaveLink API 你可以说 其实你能够直接控制的就是 直接呼叫mmWaveLink API 然后它会把它转换成message 格式 把它送到Subsession里边 它收到message之后 会做相对应的处理 会做相对应的处理 所以这个东西是很重要 只不过在mmWave SDK 这个开发包里面 它对mmWaveLink 这种API的 说明比较没有琢磨 但是事实上TI有另一份文件 我们把它叫做AWR 1xxx control interface 它那个control interface 指的就是 用mmWaveLink layer来对反应 雷达的反应做control 所以事实上这个是一切的基础 我是鼓励大家也必须要取得那份 control interface control interface 实际上 比如说在刚才的单晶片收发器时候 它就是下SPI命令 对吧 下SPI命令 也是把它转发成MESSAGE 的那种格式 所以mmWaveLink 非常重要 mmWaveLib 指的是各式各样的application 比如说 像CFAR等等各式各样的 application方案 好 接下来 mmWave API mmWave API 你可以把它 想象成是mmWaveLink 还有一些架构的再包装 啊 再包装 就等于说,再把它简化 那各位的应用程式是mmWave 在我们这包里面是mmWave demo mmWave demo 它实际上 呼叫呢 都是先呼叫mmWave API 然后 mmWave API包装一下 再去呼叫mmWaveLink mmWaveLink发message到这边处理 回来的流程也是一路这样回来 那这个position指的是 因为雷达这边有一些 一阶 二阶好的FFTE 然后 AOA等等的 甚至包含后面的一些处理列 是这样的意思 那SDK在目录的长相是这种样子 然后 要说明的是呢 这个目录长相 它是based on mmWave SDK 1点多跟2点多 长的是这个样子 3点多变掉了 3点多改变了 3点多是一个比较大的改变 3点多目录长得 结构就不再是这种样子 那这里面,如果你 从网络上下载了 然后 安装以后 通常我们不会去改变它的目录 你一定把它装在 C driver下面的 TI目录下面 就会看到mmWave SDK 那打开第一件事当然就是document document 这个 你要看一看 通常Release Notes 和 User Guides 都要把它看清楚 Release Notes 里面呢 如果在看Release Notes 通常会看 它到底有什么新东西 比如说每版SDK到底有什么新东西 还有在这一版SDK里面 它有没有 known bug 是不是还有哪些bug 然后或者是说这一版SDK 到底解掉了那些BUG 这是我关心的 所以 我在Release Notes里面 就看这样的东西 那在User Guide 就是针对 mmWaveSDK 的讲解 这边firmware firmware的东西指的是 刚刚Luke不是有提到吗 在雷达的那个subsession MSS 那边事实上还有 处理器的 R4 那个处理器里面的firmware呢 对customer而言 我们的 RF系统 事实上就是一个黑盒子 你也不用管它 你能接触它的界面就是 mmWaveLink 你不用管它 那个黑盒子怎么样运作的 那这个就是黑盒子的firmware 那在我们SDK里面 是以binary的方式附上去 是以binary的方式附上去 当然 在上电开机之后 这种firmware就会被载到里面去 好 还有Tool Too 就是刚才讲的 它做 image 的一些转换跟配置等等 进来以后 从package这边进来 有TI TI里面 通常如果你拿到 一开始 你通常会到demo这边 就是开始去看一些 mmWave Demo的程式 看它是怎么写的 driver 通常一般不会去看 因为它就是写好在那边的嘛 我们都有调用 所以 没事的话 大家不会去看 也不会去改这种driver 了 没事的话 不会去动这部分 alg 的话 大家都会自己加了 control 就包含 mmWave 跟 mmWaveLink 就是刚才讲的 那两层 你的 demo 会去call mmWave 的API mmWave API 再去call mmWaveLink API 这样子的部分 然后Platform Platform 这里面放的 大概都是 跟Platform的配置比较相关的 配置比较相关指的就是说 比如说 它的硬体相关的机体配置 等等 这样子的东西 最后还有一些功用的软体层 这个driver 这是一个driver API的长相 这边就是 ADC buffer 这里面的driver 它开出来 API 大概都长的蛮像的 不外乎就是init, open control, close 类似这样 或者是 left right 对不对 大概就是长的这种样子 刚刚有提到就是说 调用资源的话就是 透过 比如说 Semaphore, memory 或者 等等的一些资源的话 透过这个来调用 来调用 透过这个 当然也可以 把它转成其他的RTOS 如果 你要的话 好 mmWaeLink API 这个API 你可以在刚刚的 mmWaveLink的目录下面看到 它的名字都是 R 开头的 R 开头的 我们把它分成两大类 一大类是device manager 另外一大类是sensor control sensor control 它都是 R 开头的 所以 其实我应该这么说 就是说 如果你真的要把雷达单晶片 用到镜子的话 其实你的API的对象应该是这个 而不是什么mmWave API 因为 mmWave API 只是在包装 当然你应该不会对这种不满意 因为这种东西通常 只是做一些包装的动作 因为 最后终究还是要把它 打包成message 送到刚刚的雷达那边去 雷达的firmware 那边去嘛 好 那再这边都是再做 这种打包的动作 把你上层传下来的参数 依照一定的格式把它填好转换 做成message 再送出去 每一个长相大概都是这种样子 但是应用面 都是其实必须要呼叫这样子的API 好 这个是更上层了 就是我刚才讲的 mmWave API 会call mmWaveLink 然后 再到这边 那当然 如果不同盒之间 要做一些IPC的话呢 mmWave API 它有一些 可以做这样的事情 在MSS 跟 DSS之间做调用 好 library Library 这边当然就是像 有一些 比如说像 CFAR等等 FFT等等的 Windowing 的这些library 它是放在那个下面 它都是用 function code 方式让你去呼叫它的 所以 使用起来 就是这样子 好 这就是一个处理电的过程 我想 前方就跟大家讲的 雷达的SS吗 那进来以后 这边ADC ADC 进到ADC buffer 然后 我们会去 呼叫函数对它做Range FFT的运算 目前这张是based on 1642 1642 它有DSP 主要的一些FFT运算都是在DSP上面 去完成的 去完成的 如果是未来的一些 比如说 1843 或者是像 过去的一些1443 它有所谓的加速器 加速器 那个加速器 最主要也是拿来做FFT DSP 的loading 就可以释放出来 FFT就让加速器去做就好了 DSP再可以去做其他事情 这张图就会换成其他的长相 不过我们这边是以1643来做例子 这边的话 是一截 然后 接着 在L3里面是放雷达的cube 然后 接着再做二截的FFT 然后 做detection, angle estimation 这样子的东西 接下来就把一些资料送到MSS这边 那MSS这边呢 以一般目前的customer而言 因为 就我所知 有些客户 他已经有这种clustering跟tracking 这种application 那种Application 呢 看起来 有些客户的application 也是based on 这种on-base的application 所以他把这个东西丢在这边以后 clustering 跟 tracking 的这种application 就可以在MSS R4F这边执行 执行完 最后再把结果 透过 比如说 车用 那就是透过 [inaudible] 往外丢 或者是像工业这边 可能也许就透过UART 把结果往外丢 那个结果可能就包含了 我今天又侦测到几个目标 然后每个目标误差的 information是什么 距离等等的 这样子的information 所以大概是这样 所以 比如说 我在这边描述的东西 也曝露了一个设计上的难题 因为TI 以后的毫米波雷达 会有非常多样化的硬体的组合 有很多硬体的组合 那 part number 有很多种 它内部的硬体长相可能会 不太一样 那对software的人 就变成一个很大的挑战 你没有办法 比如说 今天1443是没有DSP的 但是它有hardware加速器 1642呢 它是没有hardware 加速器 但是有DSP 然后 有DSP 1843 是两个都有 这个combination就好多种 对于 software 的人来说 其实就是噩梦 对不对 很讨厌 如果你把工业的这种application 的应用再考量进来的话 你会觉得这更是噩梦中的噩梦 为什么呢?因为工业 不像车用的application 这么单纯 工业用的application 可能是非常非常的发散 它的这种处理链 长相可能都会很不一样 同意吗? 它的处理链长相可能都不太一样 它的流程不一定都是长的这种样子的 流程不一定长的这种样子的 如果software也没有 一个好的方法的话 那几乎 等于每次要做一个东西 大概就是要重写了 讲白了就是要重写 所以TI的software的RT 理解到 也意识到这样的问题 好 这也是为什么会有 mmWave 3.0的发生 我们把它叫做scalable的SDK 我们把它叫做scalable的SDK 为的就是解决刚刚的那些问题 等下我们就会看到 这个就是呼叫流程了 我想呼叫流程 这个就不一一过 因为这种东西 完全可以带过 大家可以在 看就好了 我们还是直接来看 scalable的SDK到底 到底它有一些什么改变 它的概念跟这个其实还有差异蛮大的 好 那我们来看3.0的部分
mmWave SDK的部分
mmWave SDK
Okay
我这边用PDF好了
为什么我想用这个呢?
因为它是我们TRAINING.TI.COM 上面标准的东西。
我希望我用的就是
TRAINING.TI.COM上的东西
来跟各位解释。
各位今天现场听不清楚的时候
你还是可以回到TRAINING.TI.COM。
这边也要顺便再跟各位说明一下
TRAINING.TI.COM 是一个非常好的来源。
就说你想要知道
所有TI产品的一些知识
都可以在TRAINING.TI.COM 上面得到 。
像我们今天讲的毫米波雷达而言呢
如果你去TRAINING.TI.COM
然后 搜寻关键字
打mmWave的话
大概可以找到80个
大概可以找到80个Video
都是一系列的
那80个video内部有些 还要再长出更多的细项
所以说是非常地丰富
那 erm mmWave SDK
简单来讲就是 要开发我们这颗ICU的时候
要用的软体
要用的软体
这个软体是副单晶片
刚刚我不是提到有单晶片
还有串接式的影像雷达
串接式的影像雷达
我们会搭配另外一套SDK
叫雷达SDK
所以两个是不一样的东西
mmWave SDK只用在单晶片
雷达SDK会用在影像雷达
串接雷达
因为那种雷达SDK
它是必须要跑在更复杂的处理器上面
因为它结了好多颗的收发器
有很多资料进来
你需要做一些更复杂的处理
单晶片相对而言简单很多
所以它不需要这么复杂的架构
那mmWave SDK到底包含了什么呢
首先它里面有包含RTOS
TI的RTOS
然后 当然就是Chip的Driver
目前最新的mmWave SDK
已经到了3.0
我们从1.0, 1.1, 2.0, 2.1
现在已经到3.0了
在3.0的mmWave SDK
device driver 它事实上 已经support所有的
1443,1642,6843,1843
这样子的东西
Driver都已经在里面了
好 这些Driver指的就是
因为我们终究还是有一些周边
比如 说举个例子
UR driver, SPI driver, King driver
King D 的driver
类似这样子的东西
Okay 此外我们还要support API
还有一些application 的 library
我们把它叫 mmWave的library
这个API的话 因为软体 都是分很多层的
所以不同层会有不同API
我们等下也会看到
然后 最后还会附上一个
MMwave demo
MMwave demo 事实上也是
几乎是所有人
比如说你去买了一个开发版之后
你的第一件事情
接下来 大家就读一读 开发版的user guide
读完 大家就知道上面的LED什么意思
jumper要怎么调
电要怎么插
接下来一定就是烧CODE
你要把CODE放在上面去嘛
把那个烧到上面去的
第一支 Sample code
往往就是
等一下会提到的 MMwave demo
SDK里面已经 提供好preview 的 binary
你就可以很快地把 preview binary
透过一个烧入的工具
就把它写到开发版上
非常的快
我相信
我把这个过程称为开箱的过程
基本上开箱过程大概都是
可能3-4分钟内就可以搞定
非常非常的简单
而且非常非常的易用
非常容易使用
然后 另外还有一些Tool
就是在SDK的tool
SDK 的tool我相信 一般人可能会比较忽略
为什么呢
因为大家build code的时候
可能就是
打make,make clean, make all
很少有人会关心
你MAKE 中间的流程 到底发生了什么事。
实际上他的过程应该非常精彩丰富
我们等下如果有时间就来看一下
到了整个code都generate完之后
它需要做一些格式转换
最后 还要把它捆成一包印象档
最后通过[inaudible]把它烧进去
那个tool 都是做那样的事情
这就需要转换
这个其实也有
如果你是在做mmWave开发的话
TEAM里边可能也要一个人来
做这样子的事情
基本上是做一些整合的工作
这个是mmWave SDK
它的一个比较high level 的框图
你可以看得到
各式各样不同颜色
像这种
蓝色这边是TI的code
黄色这边本质上就是
customer自己的code
然后这边有个紫框
代表说 这个code
这个方块里面的code
是ISO26262 符合它规范的
我们先从最底下这边
就是刚刚提到的hardware的部分
hardware这边有雷达的SS部分
就是front end
雷达SS,[inaudible] SS在这边
然后这边是MSS
还有DSP等等
网上面会有TI的RTOS
然后 还有Driver
这边还有OSAL
OSAL的全名
不管是不是做软体的 很容易就猜到
就是OS的抽象层
abstraction layer 对不对
有这种抽象层是什么意思?
就代表说 DRIVER往下接口
它势必要调用一些OS的资源
那你调用OS的资源
可是有些customer就不想TI的RTOS
他想用他自己的RTOS
对不对 RTOS超多的
我们今天这样子的东西
就是它所有都是有
有OSAL这样子的设计的概念
所以换句话说 你可以抽换掉自己的
抽换掉TI的RTOS变成自己的RTOS
然后你的DRIVER就 透过OSAL来做嫁接
Okay 然后在这上边 有mmWaveLink
mmWaveLink的API
好 这个东西还蛮重要的
因为 在TI所有的
跟前方的雷达Subsession 沟通的呢
都是靠mmWaveLink API
你可以说 其实你能够直接控制的就是
直接呼叫mmWaveLink API
然后它会把它转换成message 格式
把它送到Subsession里边
它收到message之后
会做相对应的处理
会做相对应的处理
所以这个东西是很重要
只不过在mmWave SDK
这个开发包里面
它对mmWaveLink 这种API的
说明比较没有琢磨
但是事实上TI有另一份文件
我们把它叫做AWR 1xxx
control interface
它那个control interface 指的就是
用mmWaveLink layer来对反应
雷达的反应做control
所以事实上这个是一切的基础
我是鼓励大家也必须要取得那份
control interface
control interface 实际上
比如说在刚才的单晶片收发器时候
它就是下SPI命令
对吧 下SPI命令
也是把它转发成MESSAGE 的那种格式
所以mmWaveLink 非常重要
mmWaveLib 指的是各式各样的application
比如说 像CFAR等等各式各样的
application方案
好 接下来 mmWave API
mmWave API 你可以把它 想象成是mmWaveLink
还有一些架构的再包装
啊 再包装
就等于说,再把它简化
那各位的应用程式是mmWave
在我们这包里面是mmWave demo
mmWave demo 它实际上
呼叫呢 都是先呼叫mmWave API
然后 mmWave API包装一下
再去呼叫mmWaveLink
mmWaveLink发message到这边处理
回来的流程也是一路这样回来
那这个position指的是
因为雷达这边有一些 一阶 二阶好的FFTE
然后 AOA等等的
甚至包含后面的一些处理列
是这样的意思
那SDK在目录的长相是这种样子
然后 要说明的是呢
这个目录长相
它是based on mmWave SDK
1点多跟2点多 长的是这个样子
3点多变掉了
3点多改变了 3点多是一个比较大的改变
3点多目录长得
结构就不再是这种样子
那这里面,如果你
从网络上下载了
然后 安装以后
通常我们不会去改变它的目录
你一定把它装在
C driver下面的 TI目录下面
就会看到mmWave SDK
那打开第一件事当然就是document
document 这个 你要看一看
通常Release Notes 和 User Guides
都要把它看清楚
Release Notes 里面呢
如果在看Release Notes
通常会看 它到底有什么新东西
比如说每版SDK到底有什么新东西
还有在这一版SDK里面
它有没有 known bug
是不是还有哪些bug
然后或者是说这一版SDK
到底解掉了那些BUG
这是我关心的
所以 我在Release Notes里面
就看这样的东西
那在User Guide 就是针对
mmWaveSDK 的讲解
这边firmware
firmware的东西指的是
刚刚Luke不是有提到吗
在雷达的那个subsession
MSS 那边事实上还有
处理器的 R4
那个处理器里面的firmware呢
对customer而言
我们的 RF系统 事实上就是一个黑盒子
你也不用管它
你能接触它的界面就是
mmWaveLink
你不用管它 那个黑盒子怎么样运作的
那这个就是黑盒子的firmware
那在我们SDK里面
是以binary的方式附上去
是以binary的方式附上去
当然 在上电开机之后
这种firmware就会被载到里面去
好 还有Tool
Too 就是刚才讲的
它做 image 的一些转换跟配置等等
进来以后
从package这边进来
有TI
TI里面 通常如果你拿到
一开始 你通常会到demo这边
就是开始去看一些
mmWave Demo的程式
看它是怎么写的
driver 通常一般不会去看
因为它就是写好在那边的嘛
我们都有调用 所以
没事的话 大家不会去看
也不会去改这种driver 了
没事的话 不会去动这部分
alg 的话 大家都会自己加了
control 就包含 mmWave 跟 mmWaveLink
就是刚才讲的 那两层
你的 demo 会去call mmWave 的API
mmWave API 再去call mmWaveLink API
这样子的部分 然后Platform
Platform 这里面放的 大概都是 跟Platform的配置比较相关的
配置比较相关指的就是说 比如说
它的硬体相关的机体配置
等等 这样子的东西
最后还有一些功用的软体层
这个driver
这是一个driver API的长相
这边就是 ADC buffer
这里面的driver 它开出来 API
大概都长的蛮像的
不外乎就是init, open control, close 类似这样
或者是 left right 对不对
大概就是长的这种样子
刚刚有提到就是说
调用资源的话就是
透过 比如说 Semaphore, memory
或者 等等的一些资源的话
透过这个来调用
来调用
透过这个 当然也可以 把它转成其他的RTOS
如果 你要的话
好 mmWaeLink API
这个API 你可以在刚刚的 mmWaveLink的目录下面看到
它的名字都是 R 开头的
R 开头的 我们把它分成两大类
一大类是device manager 另外一大类是sensor control
sensor control 它都是 R 开头的
所以 其实我应该这么说
就是说 如果你真的要把雷达单晶片
用到镜子的话
其实你的API的对象应该是这个
而不是什么mmWave API
因为 mmWave API 只是在包装
当然你应该不会对这种不满意
因为这种东西通常 只是做一些包装的动作
因为 最后终究还是要把它
打包成message 送到刚刚的雷达那边去
雷达的firmware 那边去嘛
好 那再这边都是再做 这种打包的动作
把你上层传下来的参数
依照一定的格式把它填好转换
做成message 再送出去
每一个长相大概都是这种样子
但是应用面
都是其实必须要呼叫这样子的API
好 这个是更上层了
就是我刚才讲的
mmWave API 会call mmWaveLink
然后 再到这边
那当然 如果不同盒之间
要做一些IPC的话呢
mmWave API 它有一些
可以做这样的事情
在MSS 跟 DSS之间做调用
好 library
Library 这边当然就是像
有一些
比如说像 CFAR等等
FFT等等的
Windowing 的这些library
它是放在那个下面
它都是用
function code 方式让你去呼叫它的
所以 使用起来
就是这样子
好 这就是一个处理电的过程
我想 前方就跟大家讲的
雷达的SS吗
那进来以后 这边ADC
ADC 进到ADC buffer
然后 我们会去
呼叫函数对它做Range FFT的运算
目前这张是based on 1642
1642 它有DSP
主要的一些FFT运算都是在DSP上面
去完成的
去完成的
如果是未来的一些
比如说 1843
或者是像 过去的一些1443
它有所谓的加速器
加速器
那个加速器 最主要也是拿来做FFT
DSP 的loading 就可以释放出来
FFT就让加速器去做就好了
DSP再可以去做其他事情
这张图就会换成其他的长相
不过我们这边是以1643来做例子
这边的话 是一截
然后 接着 在L3里面是放雷达的cube
然后 接着再做二截的FFT
然后 做detection, angle estimation 这样子的东西
接下来就把一些资料送到MSS这边
那MSS这边呢
以一般目前的customer而言
因为 就我所知 有些客户
他已经有这种clustering跟tracking
这种application
那种Application 呢
看起来 有些客户的application
也是based on 这种on-base的application
所以他把这个东西丢在这边以后
clustering 跟 tracking 的这种application
就可以在MSS R4F这边执行
执行完 最后再把结果
透过
比如说 车用
那就是透过 [inaudible]
往外丢
或者是像工业这边
可能也许就透过UART
把结果往外丢
那个结果可能就包含了
我今天又侦测到几个目标
然后每个目标误差的 information是什么
距离等等的
这样子的information
所以大概是这样
所以 比如说 我在这边描述的东西
也曝露了一个设计上的难题
因为TI 以后的毫米波雷达
会有非常多样化的硬体的组合
有很多硬体的组合
那 part number 有很多种
它内部的硬体长相可能会
不太一样
那对software的人 就变成一个很大的挑战
你没有办法
比如说 今天1443是没有DSP的
但是它有hardware加速器
1642呢 它是没有hardware 加速器
但是有DSP
然后 有DSP
1843 是两个都有
这个combination就好多种
对于 software 的人来说
其实就是噩梦 对不对
很讨厌
如果你把工业的这种application
的应用再考量进来的话
你会觉得这更是噩梦中的噩梦
为什么呢?因为工业 不像车用的application
这么单纯
工业用的application
可能是非常非常的发散
它的这种处理链
长相可能都会很不一样
同意吗?
它的处理链长相可能都不太一样
它的流程不一定都是长的这种样子的
流程不一定长的这种样子的
如果software也没有 一个好的方法的话
那几乎 等于每次要做一个东西
大概就是要重写了
讲白了就是要重写
所以TI的software的RT
理解到 也意识到这样的问题
好 这也是为什么会有
mmWave 3.0的发生
我们把它叫做scalable的SDK
我们把它叫做scalable的SDK
为的就是解决刚刚的那些问题
等下我们就会看到
这个就是呼叫流程了
我想呼叫流程
这个就不一一过
因为这种东西
完全可以带过
大家可以在
看就好了
我们还是直接来看
scalable的SDK到底
到底它有一些什么改变
它的概念跟这个其实还有差异蛮大的
好 那我们来看3.0的部分
mmWave SDK的部分 mmWave SDK Okay 我这边用PDF好了 为什么我想用这个呢? 因为它是我们TRAINING.TI.COM 上面标准的东西。 我希望我用的就是 TRAINING.TI.COM上的东西 来跟各位解释。 各位今天现场听不清楚的时候 你还是可以回到TRAINING.TI.COM。 这边也要顺便再跟各位说明一下 TRAINING.TI.COM 是一个非常好的来源。 就说你想要知道 所有TI产品的一些知识 都可以在TRAINING.TI.COM 上面得到 。 像我们今天讲的毫米波雷达而言呢 如果你去TRAINING.TI.COM 然后 搜寻关键字 打mmWave的话 大概可以找到80个 大概可以找到80个Video 都是一系列的 那80个video内部有些 还要再长出更多的细项 所以说是非常地丰富 那 erm mmWave SDK 简单来讲就是 要开发我们这颗ICU的时候 要用的软体 要用的软体 这个软体是副单晶片 刚刚我不是提到有单晶片 还有串接式的影像雷达 串接式的影像雷达 我们会搭配另外一套SDK 叫雷达SDK 所以两个是不一样的东西 mmWave SDK只用在单晶片 雷达SDK会用在影像雷达 串接雷达 因为那种雷达SDK 它是必须要跑在更复杂的处理器上面 因为它结了好多颗的收发器 有很多资料进来 你需要做一些更复杂的处理 单晶片相对而言简单很多 所以它不需要这么复杂的架构 那mmWave SDK到底包含了什么呢 首先它里面有包含RTOS TI的RTOS 然后 当然就是Chip的Driver 目前最新的mmWave SDK 已经到了3.0 我们从1.0, 1.1, 2.0, 2.1 现在已经到3.0了 在3.0的mmWave SDK device driver 它事实上 已经support所有的 1443,1642,6843,1843 这样子的东西 Driver都已经在里面了 好 这些Driver指的就是 因为我们终究还是有一些周边 比如 说举个例子 UR driver, SPI driver, King driver King D 的driver 类似这样子的东西 Okay 此外我们还要support API 还有一些application 的 library 我们把它叫 mmWave的library 这个API的话 因为软体 都是分很多层的 所以不同层会有不同API 我们等下也会看到 然后 最后还会附上一个 MMwave demo MMwave demo 事实上也是 几乎是所有人 比如说你去买了一个开发版之后 你的第一件事情 接下来 大家就读一读 开发版的user guide 读完 大家就知道上面的LED什么意思 jumper要怎么调 电要怎么插 接下来一定就是烧CODE 你要把CODE放在上面去嘛 把那个烧到上面去的 第一支 Sample code 往往就是 等一下会提到的 MMwave demo SDK里面已经 提供好preview 的 binary 你就可以很快地把 preview binary 透过一个烧入的工具 就把它写到开发版上 非常的快 我相信 我把这个过程称为开箱的过程 基本上开箱过程大概都是 可能3-4分钟内就可以搞定 非常非常的简单 而且非常非常的易用 非常容易使用 然后 另外还有一些Tool 就是在SDK的tool SDK 的tool我相信 一般人可能会比较忽略 为什么呢 因为大家build code的时候 可能就是 打make,make clean, make all 很少有人会关心 你MAKE 中间的流程 到底发生了什么事。 实际上他的过程应该非常精彩丰富 我们等下如果有时间就来看一下 到了整个code都generate完之后 它需要做一些格式转换 最后 还要把它捆成一包印象档 最后通过[inaudible]把它烧进去 那个tool 都是做那样的事情 这就需要转换 这个其实也有 如果你是在做mmWave开发的话 TEAM里边可能也要一个人来 做这样子的事情 基本上是做一些整合的工作 这个是mmWave SDK 它的一个比较high level 的框图 你可以看得到 各式各样不同颜色 像这种 蓝色这边是TI的code 黄色这边本质上就是 customer自己的code 然后这边有个紫框 代表说 这个code 这个方块里面的code 是ISO26262 符合它规范的 我们先从最底下这边 就是刚刚提到的hardware的部分 hardware这边有雷达的SS部分 就是front end 雷达SS,[inaudible] SS在这边 然后这边是MSS 还有DSP等等 网上面会有TI的RTOS 然后 还有Driver 这边还有OSAL OSAL的全名 不管是不是做软体的 很容易就猜到 就是OS的抽象层 abstraction layer 对不对 有这种抽象层是什么意思? 就代表说 DRIVER往下接口 它势必要调用一些OS的资源 那你调用OS的资源 可是有些customer就不想TI的RTOS 他想用他自己的RTOS 对不对 RTOS超多的 我们今天这样子的东西 就是它所有都是有 有OSAL这样子的设计的概念 所以换句话说 你可以抽换掉自己的 抽换掉TI的RTOS变成自己的RTOS 然后你的DRIVER就 透过OSAL来做嫁接 Okay 然后在这上边 有mmWaveLink mmWaveLink的API 好 这个东西还蛮重要的 因为 在TI所有的 跟前方的雷达Subsession 沟通的呢 都是靠mmWaveLink API 你可以说 其实你能够直接控制的就是 直接呼叫mmWaveLink API 然后它会把它转换成message 格式 把它送到Subsession里边 它收到message之后 会做相对应的处理 会做相对应的处理 所以这个东西是很重要 只不过在mmWave SDK 这个开发包里面 它对mmWaveLink 这种API的 说明比较没有琢磨 但是事实上TI有另一份文件 我们把它叫做AWR 1xxx control interface 它那个control interface 指的就是 用mmWaveLink layer来对反应 雷达的反应做control 所以事实上这个是一切的基础 我是鼓励大家也必须要取得那份 control interface control interface 实际上 比如说在刚才的单晶片收发器时候 它就是下SPI命令 对吧 下SPI命令 也是把它转发成MESSAGE 的那种格式 所以mmWaveLink 非常重要 mmWaveLib 指的是各式各样的application 比如说 像CFAR等等各式各样的 application方案 好 接下来 mmWave API mmWave API 你可以把它 想象成是mmWaveLink 还有一些架构的再包装 啊 再包装 就等于说,再把它简化 那各位的应用程式是mmWave 在我们这包里面是mmWave demo mmWave demo 它实际上 呼叫呢 都是先呼叫mmWave API 然后 mmWave API包装一下 再去呼叫mmWaveLink mmWaveLink发message到这边处理 回来的流程也是一路这样回来 那这个position指的是 因为雷达这边有一些 一阶 二阶好的FFTE 然后 AOA等等的 甚至包含后面的一些处理列 是这样的意思 那SDK在目录的长相是这种样子 然后 要说明的是呢 这个目录长相 它是based on mmWave SDK 1点多跟2点多 长的是这个样子 3点多变掉了 3点多改变了 3点多是一个比较大的改变 3点多目录长得 结构就不再是这种样子 那这里面,如果你 从网络上下载了 然后 安装以后 通常我们不会去改变它的目录 你一定把它装在 C driver下面的 TI目录下面 就会看到mmWave SDK 那打开第一件事当然就是document document 这个 你要看一看 通常Release Notes 和 User Guides 都要把它看清楚 Release Notes 里面呢 如果在看Release Notes 通常会看 它到底有什么新东西 比如说每版SDK到底有什么新东西 还有在这一版SDK里面 它有没有 known bug 是不是还有哪些bug 然后或者是说这一版SDK 到底解掉了那些BUG 这是我关心的 所以 我在Release Notes里面 就看这样的东西 那在User Guide 就是针对 mmWaveSDK 的讲解 这边firmware firmware的东西指的是 刚刚Luke不是有提到吗 在雷达的那个subsession MSS 那边事实上还有 处理器的 R4 那个处理器里面的firmware呢 对customer而言 我们的 RF系统 事实上就是一个黑盒子 你也不用管它 你能接触它的界面就是 mmWaveLink 你不用管它 那个黑盒子怎么样运作的 那这个就是黑盒子的firmware 那在我们SDK里面 是以binary的方式附上去 是以binary的方式附上去 当然 在上电开机之后 这种firmware就会被载到里面去 好 还有Tool Too 就是刚才讲的 它做 image 的一些转换跟配置等等 进来以后 从package这边进来 有TI TI里面 通常如果你拿到 一开始 你通常会到demo这边 就是开始去看一些 mmWave Demo的程式 看它是怎么写的 driver 通常一般不会去看 因为它就是写好在那边的嘛 我们都有调用 所以 没事的话 大家不会去看 也不会去改这种driver 了 没事的话 不会去动这部分 alg 的话 大家都会自己加了 control 就包含 mmWave 跟 mmWaveLink 就是刚才讲的 那两层 你的 demo 会去call mmWave 的API mmWave API 再去call mmWaveLink API 这样子的部分 然后Platform Platform 这里面放的 大概都是 跟Platform的配置比较相关的 配置比较相关指的就是说 比如说 它的硬体相关的机体配置 等等 这样子的东西 最后还有一些功用的软体层 这个driver 这是一个driver API的长相 这边就是 ADC buffer 这里面的driver 它开出来 API 大概都长的蛮像的 不外乎就是init, open control, close 类似这样 或者是 left right 对不对 大概就是长的这种样子 刚刚有提到就是说 调用资源的话就是 透过 比如说 Semaphore, memory 或者 等等的一些资源的话 透过这个来调用 来调用 透过这个 当然也可以 把它转成其他的RTOS 如果 你要的话 好 mmWaeLink API 这个API 你可以在刚刚的 mmWaveLink的目录下面看到 它的名字都是 R 开头的 R 开头的 我们把它分成两大类 一大类是device manager 另外一大类是sensor control sensor control 它都是 R 开头的 所以 其实我应该这么说 就是说 如果你真的要把雷达单晶片 用到镜子的话 其实你的API的对象应该是这个 而不是什么mmWave API 因为 mmWave API 只是在包装 当然你应该不会对这种不满意 因为这种东西通常 只是做一些包装的动作 因为 最后终究还是要把它 打包成message 送到刚刚的雷达那边去 雷达的firmware 那边去嘛 好 那再这边都是再做 这种打包的动作 把你上层传下来的参数 依照一定的格式把它填好转换 做成message 再送出去 每一个长相大概都是这种样子 但是应用面 都是其实必须要呼叫这样子的API 好 这个是更上层了 就是我刚才讲的 mmWave API 会call mmWaveLink 然后 再到这边 那当然 如果不同盒之间 要做一些IPC的话呢 mmWave API 它有一些 可以做这样的事情 在MSS 跟 DSS之间做调用 好 library Library 这边当然就是像 有一些 比如说像 CFAR等等 FFT等等的 Windowing 的这些library 它是放在那个下面 它都是用 function code 方式让你去呼叫它的 所以 使用起来 就是这样子 好 这就是一个处理电的过程 我想 前方就跟大家讲的 雷达的SS吗 那进来以后 这边ADC ADC 进到ADC buffer 然后 我们会去 呼叫函数对它做Range FFT的运算 目前这张是based on 1642 1642 它有DSP 主要的一些FFT运算都是在DSP上面 去完成的 去完成的 如果是未来的一些 比如说 1843 或者是像 过去的一些1443 它有所谓的加速器 加速器 那个加速器 最主要也是拿来做FFT DSP 的loading 就可以释放出来 FFT就让加速器去做就好了 DSP再可以去做其他事情 这张图就会换成其他的长相 不过我们这边是以1643来做例子 这边的话 是一截 然后 接着 在L3里面是放雷达的cube 然后 接着再做二截的FFT 然后 做detection, angle estimation 这样子的东西 接下来就把一些资料送到MSS这边 那MSS这边呢 以一般目前的customer而言 因为 就我所知 有些客户 他已经有这种clustering跟tracking 这种application 那种Application 呢 看起来 有些客户的application 也是based on 这种on-base的application 所以他把这个东西丢在这边以后 clustering 跟 tracking 的这种application 就可以在MSS R4F这边执行 执行完 最后再把结果 透过 比如说 车用 那就是透过 [inaudible] 往外丢 或者是像工业这边 可能也许就透过UART 把结果往外丢 那个结果可能就包含了 我今天又侦测到几个目标 然后每个目标误差的 information是什么 距离等等的 这样子的information 所以大概是这样 所以 比如说 我在这边描述的东西 也曝露了一个设计上的难题 因为TI 以后的毫米波雷达 会有非常多样化的硬体的组合 有很多硬体的组合 那 part number 有很多种 它内部的硬体长相可能会 不太一样 那对software的人 就变成一个很大的挑战 你没有办法 比如说 今天1443是没有DSP的 但是它有hardware加速器 1642呢 它是没有hardware 加速器 但是有DSP 然后 有DSP 1843 是两个都有 这个combination就好多种 对于 software 的人来说 其实就是噩梦 对不对 很讨厌 如果你把工业的这种application 的应用再考量进来的话 你会觉得这更是噩梦中的噩梦 为什么呢?因为工业 不像车用的application 这么单纯 工业用的application 可能是非常非常的发散 它的这种处理链 长相可能都会很不一样 同意吗? 它的处理链长相可能都不太一样 它的流程不一定都是长的这种样子的 流程不一定长的这种样子的 如果software也没有 一个好的方法的话 那几乎 等于每次要做一个东西 大概就是要重写了 讲白了就是要重写 所以TI的software的RT 理解到 也意识到这样的问题 好 这也是为什么会有 mmWave 3.0的发生 我们把它叫做scalable的SDK 我们把它叫做scalable的SDK 为的就是解决刚刚的那些问题 等下我们就会看到 这个就是呼叫流程了 我想呼叫流程 这个就不一一过 因为这种东西 完全可以带过 大家可以在 看就好了 我们还是直接来看 scalable的SDK到底 到底它有一些什么改变 它的概念跟这个其实还有差异蛮大的 好 那我们来看3.0的部分
mmWave SDK的部分
mmWave SDK
Okay
我这边用PDF好了
为什么我想用这个呢?
因为它是我们TRAINING.TI.COM 上面标准的东西。
我希望我用的就是
TRAINING.TI.COM上的东西
来跟各位解释。
各位今天现场听不清楚的时候
你还是可以回到TRAINING.TI.COM。
这边也要顺便再跟各位说明一下
TRAINING.TI.COM 是一个非常好的来源。
就说你想要知道
所有TI产品的一些知识
都可以在TRAINING.TI.COM 上面得到 。
像我们今天讲的毫米波雷达而言呢
如果你去TRAINING.TI.COM
然后 搜寻关键字
打mmWave的话
大概可以找到80个
大概可以找到80个Video
都是一系列的
那80个video内部有些 还要再长出更多的细项
所以说是非常地丰富
那 erm mmWave SDK
简单来讲就是 要开发我们这颗ICU的时候
要用的软体
要用的软体
这个软体是副单晶片
刚刚我不是提到有单晶片
还有串接式的影像雷达
串接式的影像雷达
我们会搭配另外一套SDK
叫雷达SDK
所以两个是不一样的东西
mmWave SDK只用在单晶片
雷达SDK会用在影像雷达
串接雷达
因为那种雷达SDK
它是必须要跑在更复杂的处理器上面
因为它结了好多颗的收发器
有很多资料进来
你需要做一些更复杂的处理
单晶片相对而言简单很多
所以它不需要这么复杂的架构
那mmWave SDK到底包含了什么呢
首先它里面有包含RTOS
TI的RTOS
然后 当然就是Chip的Driver
目前最新的mmWave SDK
已经到了3.0
我们从1.0, 1.1, 2.0, 2.1
现在已经到3.0了
在3.0的mmWave SDK
device driver 它事实上 已经support所有的
1443,1642,6843,1843
这样子的东西
Driver都已经在里面了
好 这些Driver指的就是
因为我们终究还是有一些周边
比如 说举个例子
UR driver, SPI driver, King driver
King D 的driver
类似这样子的东西
Okay 此外我们还要support API
还有一些application 的 library
我们把它叫 mmWave的library
这个API的话 因为软体 都是分很多层的
所以不同层会有不同API
我们等下也会看到
然后 最后还会附上一个
MMwave demo
MMwave demo 事实上也是
几乎是所有人
比如说你去买了一个开发版之后
你的第一件事情
接下来 大家就读一读 开发版的user guide
读完 大家就知道上面的LED什么意思
jumper要怎么调
电要怎么插
接下来一定就是烧CODE
你要把CODE放在上面去嘛
把那个烧到上面去的
第一支 Sample code
往往就是
等一下会提到的 MMwave demo
SDK里面已经 提供好preview 的 binary
你就可以很快地把 preview binary
透过一个烧入的工具
就把它写到开发版上
非常的快
我相信
我把这个过程称为开箱的过程
基本上开箱过程大概都是
可能3-4分钟内就可以搞定
非常非常的简单
而且非常非常的易用
非常容易使用
然后 另外还有一些Tool
就是在SDK的tool
SDK 的tool我相信 一般人可能会比较忽略
为什么呢
因为大家build code的时候
可能就是
打make,make clean, make all
很少有人会关心
你MAKE 中间的流程 到底发生了什么事。
实际上他的过程应该非常精彩丰富
我们等下如果有时间就来看一下
到了整个code都generate完之后
它需要做一些格式转换
最后 还要把它捆成一包印象档
最后通过[inaudible]把它烧进去
那个tool 都是做那样的事情
这就需要转换
这个其实也有
如果你是在做mmWave开发的话
TEAM里边可能也要一个人来
做这样子的事情
基本上是做一些整合的工作
这个是mmWave SDK
它的一个比较high level 的框图
你可以看得到
各式各样不同颜色
像这种
蓝色这边是TI的code
黄色这边本质上就是
customer自己的code
然后这边有个紫框
代表说 这个code
这个方块里面的code
是ISO26262 符合它规范的
我们先从最底下这边
就是刚刚提到的hardware的部分
hardware这边有雷达的SS部分
就是front end
雷达SS,[inaudible] SS在这边
然后这边是MSS
还有DSP等等
网上面会有TI的RTOS
然后 还有Driver
这边还有OSAL
OSAL的全名
不管是不是做软体的 很容易就猜到
就是OS的抽象层
abstraction layer 对不对
有这种抽象层是什么意思?
就代表说 DRIVER往下接口
它势必要调用一些OS的资源
那你调用OS的资源
可是有些customer就不想TI的RTOS
他想用他自己的RTOS
对不对 RTOS超多的
我们今天这样子的东西
就是它所有都是有
有OSAL这样子的设计的概念
所以换句话说 你可以抽换掉自己的
抽换掉TI的RTOS变成自己的RTOS
然后你的DRIVER就 透过OSAL来做嫁接
Okay 然后在这上边 有mmWaveLink
mmWaveLink的API
好 这个东西还蛮重要的
因为 在TI所有的
跟前方的雷达Subsession 沟通的呢
都是靠mmWaveLink API
你可以说 其实你能够直接控制的就是
直接呼叫mmWaveLink API
然后它会把它转换成message 格式
把它送到Subsession里边
它收到message之后
会做相对应的处理
会做相对应的处理
所以这个东西是很重要
只不过在mmWave SDK
这个开发包里面
它对mmWaveLink 这种API的
说明比较没有琢磨
但是事实上TI有另一份文件
我们把它叫做AWR 1xxx
control interface
它那个control interface 指的就是
用mmWaveLink layer来对反应
雷达的反应做control
所以事实上这个是一切的基础
我是鼓励大家也必须要取得那份
control interface
control interface 实际上
比如说在刚才的单晶片收发器时候
它就是下SPI命令
对吧 下SPI命令
也是把它转发成MESSAGE 的那种格式
所以mmWaveLink 非常重要
mmWaveLib 指的是各式各样的application
比如说 像CFAR等等各式各样的
application方案
好 接下来 mmWave API
mmWave API 你可以把它 想象成是mmWaveLink
还有一些架构的再包装
啊 再包装
就等于说,再把它简化
那各位的应用程式是mmWave
在我们这包里面是mmWave demo
mmWave demo 它实际上
呼叫呢 都是先呼叫mmWave API
然后 mmWave API包装一下
再去呼叫mmWaveLink
mmWaveLink发message到这边处理
回来的流程也是一路这样回来
那这个position指的是
因为雷达这边有一些 一阶 二阶好的FFTE
然后 AOA等等的
甚至包含后面的一些处理列
是这样的意思
那SDK在目录的长相是这种样子
然后 要说明的是呢
这个目录长相
它是based on mmWave SDK
1点多跟2点多 长的是这个样子
3点多变掉了
3点多改变了 3点多是一个比较大的改变
3点多目录长得
结构就不再是这种样子
那这里面,如果你
从网络上下载了
然后 安装以后
通常我们不会去改变它的目录
你一定把它装在
C driver下面的 TI目录下面
就会看到mmWave SDK
那打开第一件事当然就是document
document 这个 你要看一看
通常Release Notes 和 User Guides
都要把它看清楚
Release Notes 里面呢
如果在看Release Notes
通常会看 它到底有什么新东西
比如说每版SDK到底有什么新东西
还有在这一版SDK里面
它有没有 known bug
是不是还有哪些bug
然后或者是说这一版SDK
到底解掉了那些BUG
这是我关心的
所以 我在Release Notes里面
就看这样的东西
那在User Guide 就是针对
mmWaveSDK 的讲解
这边firmware
firmware的东西指的是
刚刚Luke不是有提到吗
在雷达的那个subsession
MSS 那边事实上还有
处理器的 R4
那个处理器里面的firmware呢
对customer而言
我们的 RF系统 事实上就是一个黑盒子
你也不用管它
你能接触它的界面就是
mmWaveLink
你不用管它 那个黑盒子怎么样运作的
那这个就是黑盒子的firmware
那在我们SDK里面
是以binary的方式附上去
是以binary的方式附上去
当然 在上电开机之后
这种firmware就会被载到里面去
好 还有Tool
Too 就是刚才讲的
它做 image 的一些转换跟配置等等
进来以后
从package这边进来
有TI
TI里面 通常如果你拿到
一开始 你通常会到demo这边
就是开始去看一些
mmWave Demo的程式
看它是怎么写的
driver 通常一般不会去看
因为它就是写好在那边的嘛
我们都有调用 所以
没事的话 大家不会去看
也不会去改这种driver 了
没事的话 不会去动这部分
alg 的话 大家都会自己加了
control 就包含 mmWave 跟 mmWaveLink
就是刚才讲的 那两层
你的 demo 会去call mmWave 的API
mmWave API 再去call mmWaveLink API
这样子的部分 然后Platform
Platform 这里面放的 大概都是 跟Platform的配置比较相关的
配置比较相关指的就是说 比如说
它的硬体相关的机体配置
等等 这样子的东西
最后还有一些功用的软体层
这个driver
这是一个driver API的长相
这边就是 ADC buffer
这里面的driver 它开出来 API
大概都长的蛮像的
不外乎就是init, open control, close 类似这样
或者是 left right 对不对
大概就是长的这种样子
刚刚有提到就是说
调用资源的话就是
透过 比如说 Semaphore, memory
或者 等等的一些资源的话
透过这个来调用
来调用
透过这个 当然也可以 把它转成其他的RTOS
如果 你要的话
好 mmWaeLink API
这个API 你可以在刚刚的 mmWaveLink的目录下面看到
它的名字都是 R 开头的
R 开头的 我们把它分成两大类
一大类是device manager 另外一大类是sensor control
sensor control 它都是 R 开头的
所以 其实我应该这么说
就是说 如果你真的要把雷达单晶片
用到镜子的话
其实你的API的对象应该是这个
而不是什么mmWave API
因为 mmWave API 只是在包装
当然你应该不会对这种不满意
因为这种东西通常 只是做一些包装的动作
因为 最后终究还是要把它
打包成message 送到刚刚的雷达那边去
雷达的firmware 那边去嘛
好 那再这边都是再做 这种打包的动作
把你上层传下来的参数
依照一定的格式把它填好转换
做成message 再送出去
每一个长相大概都是这种样子
但是应用面
都是其实必须要呼叫这样子的API
好 这个是更上层了
就是我刚才讲的
mmWave API 会call mmWaveLink
然后 再到这边
那当然 如果不同盒之间
要做一些IPC的话呢
mmWave API 它有一些
可以做这样的事情
在MSS 跟 DSS之间做调用
好 library
Library 这边当然就是像
有一些
比如说像 CFAR等等
FFT等等的
Windowing 的这些library
它是放在那个下面
它都是用
function code 方式让你去呼叫它的
所以 使用起来
就是这样子
好 这就是一个处理电的过程
我想 前方就跟大家讲的
雷达的SS吗
那进来以后 这边ADC
ADC 进到ADC buffer
然后 我们会去
呼叫函数对它做Range FFT的运算
目前这张是based on 1642
1642 它有DSP
主要的一些FFT运算都是在DSP上面
去完成的
去完成的
如果是未来的一些
比如说 1843
或者是像 过去的一些1443
它有所谓的加速器
加速器
那个加速器 最主要也是拿来做FFT
DSP 的loading 就可以释放出来
FFT就让加速器去做就好了
DSP再可以去做其他事情
这张图就会换成其他的长相
不过我们这边是以1643来做例子
这边的话 是一截
然后 接着 在L3里面是放雷达的cube
然后 接着再做二截的FFT
然后 做detection, angle estimation 这样子的东西
接下来就把一些资料送到MSS这边
那MSS这边呢
以一般目前的customer而言
因为 就我所知 有些客户
他已经有这种clustering跟tracking
这种application
那种Application 呢
看起来 有些客户的application
也是based on 这种on-base的application
所以他把这个东西丢在这边以后
clustering 跟 tracking 的这种application
就可以在MSS R4F这边执行
执行完 最后再把结果
透过
比如说 车用
那就是透过 [inaudible]
往外丢
或者是像工业这边
可能也许就透过UART
把结果往外丢
那个结果可能就包含了
我今天又侦测到几个目标
然后每个目标误差的 information是什么
距离等等的
这样子的information
所以大概是这样
所以 比如说 我在这边描述的东西
也曝露了一个设计上的难题
因为TI 以后的毫米波雷达
会有非常多样化的硬体的组合
有很多硬体的组合
那 part number 有很多种
它内部的硬体长相可能会
不太一样
那对software的人 就变成一个很大的挑战
你没有办法
比如说 今天1443是没有DSP的
但是它有hardware加速器
1642呢 它是没有hardware 加速器
但是有DSP
然后 有DSP
1843 是两个都有
这个combination就好多种
对于 software 的人来说
其实就是噩梦 对不对
很讨厌
如果你把工业的这种application
的应用再考量进来的话
你会觉得这更是噩梦中的噩梦
为什么呢?因为工业 不像车用的application
这么单纯
工业用的application
可能是非常非常的发散
它的这种处理链
长相可能都会很不一样
同意吗?
它的处理链长相可能都不太一样
它的流程不一定都是长的这种样子的
流程不一定长的这种样子的
如果software也没有 一个好的方法的话
那几乎 等于每次要做一个东西
大概就是要重写了
讲白了就是要重写
所以TI的software的RT
理解到 也意识到这样的问题
好 这也是为什么会有
mmWave 3.0的发生
我们把它叫做scalable的SDK
我们把它叫做scalable的SDK
为的就是解决刚刚的那些问题
等下我们就会看到
这个就是呼叫流程了
我想呼叫流程
这个就不一一过
因为这种东西
完全可以带过
大家可以在
看就好了
我们还是直接来看
scalable的SDK到底
到底它有一些什么改变
它的概念跟这个其实还有差异蛮大的
好 那我们来看3.0的部分
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
mmWave SDK
所属课程:汽车/工业 毫米波雷达感测器
发布时间:2018.12.03
视频集数:6
本节视频时长:00:24:28
本课程介绍了TI mmWave解决方案;60GHz mmWave传感器;60GHz vs. 24GHz;mm波伏电源解决方案和BOM估算;mmWave SDK 。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>