参考:真香!在 VS Code 中免费使用 DeepSeek-R1!
打开 VSCode 插件市场,在搜索框输入 “AI Toolkit”, 安装。
还有其他应用,可以继续摸索。
windows下终端工具,集成了linux常用命令,最关键是包含了git工具集。
下载:cmder.app
找到cmder_prompt_config.lua文件,通常在config这个目录下:
修改这两项数值:
是致力于构建真正统一的高性能网络基础设施,为各类流量提供协调共存的平台,通过提供统一网络基础设施,支持在多应用融合的网络上传输不同优先级的数据包。这样的网络同时可支持 高带宽、实时通讯、高可靠性和高性能的应用
802.1xxx | 缩写 | TSN IEEE802.1xxxxx | Name | 中文名称 |
---|---|---|---|---|
802.1AS | gPTP | IEEE 802.1AS-2011 | gPTP (generic Precise Timing Protocol) | 定时和同步 |
802.1Qci | IEEE 802.1Qci-2017 | Per Stream Filtering & Policing (Qci) | 每(逐)流过滤和监管(控) | |
802.1Qbv | TAS | IEEE 802.1Qbv-2015 | Time Aware Shaper (Qbv) | 分时调度——预定流量的增强功能 |
802.1Qat | SRP | IEEE 802.1Qat-2010 | SRP (Stream Reservation Protocol – in Q section 35) | |
802.1Qav | CBS | IEEE 802.1Qav-2009 | Credit based shaper (in Q-2014 section 34) | 信用整形——保留流量,时间敏感流的转发和排队增强 |
802.1Qbu&3br | IEEE 802.1Qbu-2016 & IEEE 802.3br-2016 | Preemption (Qbu & 3br) | 帧抢占 | |
802.1CB | IEEE 802.1CB-2017 | Frame Replication & Elimination | 帧复制和消除可靠性 | |
IEEE 1722-2011 | AVTP (Audio Video Transport Protocol) | |||
IEEE 1722.1-2013 | AVDECC (Audio Video Discovery, Enumeration, Connection management, and Control) | |||
802.1BA | IEEE 802.1BA-2009 | Audio Video Bridging(AVB) System | ||
IEEE 802.1AS-Rev | Enhanced Generic Precise Timing Protocol | |||
IEEE 802.1Qch-2017 | Cyclic Queuing & Forwarding (Qch) | 循环队列与转发 | ||
IEEE 802.1Qcc | Stream Reservation Protocol Enhancements | 流预留协议的增强 | ||
IEEE 802.1Qcr | Asynchronous Traffic Shaping (Qcr) |
Abbreviation | Description |
---|---|
ARP | Address Resolution Protocol (ARP) |
RARP | reverse Address Resolution Protocol (RARP) |
EAPOL | EAP over LAN (EAPoL) |
NDP | Neighbor Discovery Protocol |
SRP | Stream Reservation Protocol |
MAC Control | Media Access Control |
MACsec | Media Access Control Security |
MKA | MACsec Key Agreement |
Abbreviation | Description |
---|---|
DHCP | Dynamic Host Configuration Protocol |
ICMP | Internet Control Message Protocol |
IGMP | Internet Group Management Protocol |
capture、pps 和 match 信号通常与时间同步、时间戳记录和事件调度相关。以下是它们的主要作用:
作用:
PPS 是一个精确的周期性脉冲信号(每秒一次),用于实现高精度的时间同步。在TSN中,它通常作为外部时钟源(如GPS`或原子钟)的输入,确保网络中所有设备的时间基准严格对齐。
应用场景:
同步设备的本地时钟(如IEEE 802.1AS协议)。
校准本地时钟的漂移,确保全网设备的时间误差在微秒甚至纳秒级。
触发周期性任务(如定时发送关键数据帧)。
作用:
Capture 信号用于在特定事件发生时记录当前时间戳。例如,当数据帧到达或离开网络接口时,硬件会自动捕获此时的时间戳,用于后续的时间敏感计算(如延迟测量或时钟偏差调整)。
应用场景:
记录数据帧的发送/接收时间,用于计算网络传输延迟。
在时间同步协议(如PTP, Precision Time Protocol)中,记录事件(如Sync报文发送/接收)的精确时间。
调试和验证TSN网络的实时性。
作用:
Match 信号用于触发预定的时间敏感操作。当设备的本地时间与预设的调度时间匹配时,硬件会生成此信号,触发特定动作(如打开/关闭传输窗口、发送关键数据等)。
应用场景:
在时间感知调度(如IEEE 802.1Qbv)中,控制时间敏感流量的发送时机。
触发周期性任务(如工业控制中的实时指令下发)。
实现确定性传输,避免数据帧冲突。
三者的协同工作
在TSN系统中,这三个信号通常协同工作:
PPS 提供全局时间基准,确保所有设备同步。
Capture 在关键事件发生时记录时间戳,用于同步校准或性能分析。
Match 根据预设的调度表触发动作,确保时间敏感操作(如数据传输)严格按计划执行。
这种机制使得TSN能够满足工业自动化、汽车网络等场景中对低延迟、高可靠性和确定性的严苛要求。
补充说明
这些信号的具体实现可能因硬件(如FPGA、TSN交换机芯片)或协议(如IEEE 802.1AS、802.1Qbv)而有所不同,但核心逻辑一致。
在设计中,通常通过硬件加速(而非软件)处理这些信号,以最小时间抖动(jitter)。
序号 | 缩写 | 完整拼写 | 中文翻译 |
---|---|---|---|
1 | ACC | Adaptive Cruise Control | 自适应巡航控制 |
2 | LCC | Lane Change Control | 换道控制 |
3 | LDW | Lane Departure Warning | 车道偏离警告 |
4 | LDP | Lane Departure Prevention | 车道偏离防止 |
5 | AEB | Autonomous Emergency Braking | 自动紧急制动 |
6 | TSR | Traffic Signal Recognition | 交通信号识别 |
7 | SLIF | Speed Limiting Information Function | 车速限制功能 |
8 | APA | Automatic Parking Assist | 自动泊车 |
9 | PEB | Parking Emergency Braking | 泊车紧急制动 |
1、点击.DSN文件,然后点击TOOS,再点击Create Netlist;如下图:
2、查看网表是否生成。 打开项目文件存放路径,看到了有MCU.NET的文件已经生成,将这个文件导入到PCB文件中即可。
1、新建PCB工程文件,新建.PCB加粗样式文件,添加AD的封装库文件及网表文件到PCB工程文件中。如图:
2、对比文件选择选择完之后点击“确定”。
3、更新到PCB文件中
上一步对比结果出来后,按如下图选择操作。
至此网表导入完毕!!!!
环境准备
步骤
【1】安装python
下载python下载安装包,双击安装。
【2】安装PyQt5, pyqt5_tools
pip install PyQt5 PyQt5-tools -I https://pypi.tuna.tsinghua.edu.cn/simple
【3】安装Qt Designer 下载Qt Designer下载安装包,双击安装。
【1】用Qt Designer设计界面 参考这里,设计界面。
使用 Qt Designer 创建一个基于 QWidget 的界面程序,然后给窗体内增加一个按钮控件。具体如何给窗体增加控件,如下图所示。
按 Ctrl+s 键或者点击 Qt Designer 软件的 File 菜单的 Save As 选项,把我们设计的界面文件保存到项目目录下,如上例我们保存到项目 pyqt5project 目录下,保存名称为 mytest_1.ui,注意使用 Qt Designer 设计的界面文件后缀名是 .ui。
使用 Qt Designer 工具,不单单可以设计界面,还可以设计信号槽,下面我们就使用 Qt Designer 给我们的按钮设计一个信号槽。
按照上面步骤操作完成后,点击 ok 按钮,就会返回到上一个对话框,我们对话框的右边 出现了 doclick(),选中后,点击 ok。到此为止,我们就成功的给按钮创建了信号槽。
【2】转换ui文件为python代码
>pyuic5 -o mytest_1.py mytest_1.ui
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mytest_1.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
self.btn_ok = QtWidgets.QPushButton(Form)
self.btn_ok.setGeometry(QtCore.QRect(180, 150, 56, 17))
self.btn_ok.setObjectName("btn_ok")
self.retranslateUi(Form)
self.btn_ok.clicked.connect(Form.doclick) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.btn_ok.setText(_translate("Form", "click"))
【3】编辑逻辑code 在其中, 引用【2】中的界面code,并保存。如将逻辑代码保存为domytest_1.py。
并和刚刚生成那个mytest_1.py,放在同一个目录里。
import sys
import mytest_1 # import UI file
from PyQt5.QtWidgets import QWidget, QApplication, QMessageBox
class doMyTest_1(QWidget):
def __init__(self):
super().__init__()
self.ui = mytest_1.Ui_Form() # call UI object
self.ui.setupUi(self) # link me
self.show()
def doclick(self):
QMessageBox.information(None, "test info slot!", "my python")
app = QApplication(sys.argv)
ex = doMyTest_1()
app.exec()
直接在代码编辑器里面右键运行domytest_1.py。
注意:
用PyQt5实现上述code。
如果用PyQt6实现上述代码,会有错误发生:
File "c:\d_disk\RenesasMCUHWM\RCar\Gen4\R-Car_S4\Application_Notes_for_HWM\gateway_switch\GatewaySettingTool\code\python_Qt\mytest.py", line 16, in setupUi
self.btn_ok = QtWidgets.QPushButton(parent=Form)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: arguments did not match any overloaded call:
QPushButton(parent: typing.Optional[QWidget] = None): argument 'parent' has unexpected type 'doMyTest'
QPushButton(text: str, parent: typing.Optional[QWidget] = None): not enough arguments
QPushButton(icon: QIcon, text: str, parent: typing.Optional[QWidget] = None): not enough arguments
PS C:\d_disk\RenesasMCUHWM\RCar\Gen4\R-Car_S4\Application_Notes_for_HWM\gateway_switch\GatewaySettingTool\code>