首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CAN协议栈(二) 之ISO11898-1理解

在详细讲ISO11898-1之前先来了解一下汽车CAN通信网络中常用几个协议都处于OSI模型什么位置。 图1 OSI模型 物理层定义了比特流一些性质及电气特性,不在本文讨论范围内故跳过。...媒体访问控制(Medium Access Control,MAC):定义了数据帧如何在介质上进行传输,我们知道CAN属于广播式总线,MAC就分配了帧在信道上使用权。...图3 层级间交互示意图 >>>> CAN特点 1.基于多主优先级总线访问 总线空闲时,任何节点都可以发送数据。...帧间隔 >>>> LLC子层 本地过滤 过载通知 错误恢复管理 LLC层有2种服务: 数据帧传输 远程帧传输 LLC层帧结构: 1.数据帧 图8 数据帧结构 2.远程帧 图9 远程帧结构 MAC层帧优先级进行了仲裁发送给...以上均是笔者自己理解,如有错误欢迎指正。

1.6K20

浅谈我DDD领域驱动设计理解

DDD切入点1 - 理解概念 DDD全称为Domain-driven Design,即领域驱动设计。...要理解什么是领域驱动设计,首先要理解什么是领域,什么是设计,还有驱动是什么意思,什么驱动什么。 什么是领域(Domain)?...从领域和代码实现角度来理解,领域模型绑定了领域和代码实现,确保了最终代码实现就一定是解决了领域中核心问题。因为:1)领域驱动领域模型设计;2)领域模型驱动代码实现。...之所以我们觉得子域划分很简单,是因为我们整个大领域非常了解了。如果我们遇到一个冷门领域,就没办法这么容易去划分子域了。这就需要我们先去努力理解领域内知识。...所以,千万不要以为会DDD了就以为自己很牛逼,实际上你会只是软件设计中冰山一角而已。 总结 本文重点是基于我个人DDD一些理解,希望能整理出一些自己总结出来一些感悟和经验,并分享给大家。

1.3K101
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CAN通信协议栈(四) 之ISO14229理解

    ISO14229是UDS诊断应用层协议,定义了诊断服务实现步骤及具体诊断服务定义。...):每个回复信息中都必须包含 可选择(Optional):回复类型可选 供应商自行定义(Manufacturer/Supplier Specific):根据OEM或者供应商需求自行定义回复类型...图5 服务响应规则示意 (2)子服务请求及响应规则 如下图所示: 图6 子服务请求及响应规则示意 (3)物理寻址方式请求服务及响应 物理寻址在之前介绍过,是一通信。...图7 物理寻址方式请求子服务及响应规则示意 图8 物理寻址方式请求(无子服务)及响应规则示意 (4)功能寻址方式请求服务及响应 功能寻址是一通信。...图9 功能寻址方式请求子服务及响应规则示意 图10 功能寻址方式请求(无子服务)及响应规则示意 物理寻址和功能寻址方式ID主机厂会在CAN matrix定义好,这里不需要我们自己去区别,只需知道哪些是物理寻址方式

    2K40

    Linux 函数库理解

    一、前言 我们C程序中,并没有定义“printf”函数实现,且在预编译中包含“stdio.h”中也只有该函数声明,而没有定义函数实现,那么,是在哪里实“printf”函数呢?...会。 库如果被取缔了,我们会受到影响吗?会。 在实现库函数跳转时候我们要耗费时间吗?要。 动态链接优点: 形成可执行程序小!这样可以节省资源 -- 内存,磁盘,网络。...三、在Linux下库命名 1.动态库 我们直接编译一个文件,之后用file指令查看编出 test 可执行文件,这里可以看到 dynamically linked ,翻译成中文就是动态链接意思。...其中XXX就是库名字,我们可以看到上面的库名字是c,所以链接是c标准库。 用这个库程序非常多,但是库只有一份,所有有C语言写程序,不会出现重复代码! 因为,动态库是一个共享库。...系统给我们提供 标准库 .h(告诉我们怎么用),动静态库 .so/.a 我们代码 + 库代码 = 可执行程序! 这一套只在Linux下有效吗?在windows下原理也是一样

    88130

    Linux进程地址空间理解

    一、关于进程地址空间简单理解 进程地址空间其实是分了很多个区域,区域划分本质就是区域内各个地址都是可以使用。...如同下面这个图所示: 无论是环境变量地址还是环境变量表地址,所存放地址都在栈上部。这里已初始化数据和未初始化数据是指全局变量,包括静态变量(静态变量默认被初始化为0)。...进程地址空间不是真实物理内存,叫做虚拟内存。每一个进程都有自己独立PCB,也有自己独立地址空间。在32位机器下,进程地址空间大小为[0,4GB]。...进程地址空间和真实物理内存之间有一个叫做页表结构,页表存放就是虚拟内存到物理内存之间映射关系,所以通过虚拟内存经过一定步骤就可以访问到真实物理内存中内容。...物理内存可以在任意一个空闲合法位置进行申请,一个进程申请物理内存可以是无序,但一旦映射到页表中就跟有序虚拟地址产生了一一关系,将物理内存从无序变成有序。

    12310

    Node.js 事件驱动模型深入理解

    本文主要讨论以下问题:1.Node.js 事件驱动模型分析2.Node.js 如何处理高并发请求?...3.Node.js 缺点介绍先简单介绍一下 Node.js,Node.js 是基于事件驱动、非阻塞 I/O 模型服务器端 JavaScript 运行环境,是基于 Google V8 引擎在服务器端运行单线程...一、Node.js 事件驱动模型分析看懂上图之后,你就明白 Node.js 事件驱动模型了,从上图中我们可以看到以下几个部分:Application 应用层,也就是 JavaScript 交互层,是...如果你理解了最后一个问题,就好理解了。如果要总结的话,就是异步无阻塞编程思想。当遇到耗时操作时,会以异步非阻塞方式进入事件队列,不会影响后续请求执行。...以上方式减少了高并发等待时间,让高并发可以从容应对。三、Node.js 缺点介绍通过上面的介绍,我们知道了 Node.js 事件驱动模型,下面我们将介绍 Node.js 不足之处。

    71550

    Linux信号产生内核级理解

    一、键盘产生信号  键盘产生信号这里就要涉及一个重要概念了,叫硬件中断。我这里会粗粒度地说一下键盘产生信号,以及信号被上层软件读到过程,只是说一下我自己理解。...1.2、键盘产生信号并被读取过程 在CPU上是有各个针脚,每个针脚有对应编号。针脚在主板上是可以和键盘进行连接。...CPU有寄存器能记录是几号(我觉得可以理解成数组下标)针脚触发了高电平。然后CPU就可以根据寄存器中数字在中断向量表中找到对应数组下标中读取键盘数据方法。操作系统就去读取键盘上输入数据。...信号发送给进程后进程PCB中其实是用一个32位整数来保存收到信号,也就是说,信号是以位图形式被保存起来。...假设我们要修改空指针里内容,将保存在eax寄存器中空指针地址(虚拟地址)和CR3寄存器中基地址到MMU中进行映射,发现页表中根本就没有空指针虚拟地址到物理地址之间转换关系(或者是其它情况,有转换关系但是页表项权限为只读权限但你却要做修改

    10910

    DDD(领域驱动设计)分层架构理解(适合新人)

    这种DDD项目结构和之前有哪些不同,我该如何开发我代码,开发不同职责代码该放在哪里?下面就我理解,说一说DDD分层架构。...传统开发分层 传统数据驱动开发模式,View、Service、dao这种三层分层模式,我们会很自然写出过程式代码,这种开发方式中对象只是数据载体,而没有行为,是一种贫血对象模型。...以数据为中心,以数据库ER图为设计驱动,分层架构在这种开发模式下可以认为是数据处理和实现过程。 image.png 什么是DDD?...DDD 全称是 Domain-Driven Design,中文叫领域驱动设计,是一套应对复杂软件系统分析和设计面向对象建模方法论。...对于同一个概念 8.聚合: 聚合概念类似于包概念,每个包里包含一类实体或者行为,它有助于分散系统复杂性,也是一种高层次抽象,可以简化领域模型理解

    1.8K10

    linux系统中“平均负载”理解

    最近在极客时间学习了倪朋飞老师Linux性能优化实战》专题,里面讲到了linux平均负载这个概念。也就是load average。现在谈谈平均负载理解,并整理为笔记。...,没有看错,这里说是平均进程数量,与CPU本身使用率没有直接关系。这个load averages实际上表示是系统中平均活跃进程数。...因此,我们可以讲系统平均负载理解为单位时间内平均活跃进程数。 那么我们如果需要知道一个服务器上负载究竟是多少合适呢?...从这个趋势来看,系统整体负载在降低。 按照课程经验值,通常情况下,当平均负载高于CPU数量70%时候,就应该负载进行排查了,一旦系统负载过高,可能对整体服务性能造成影响。...sysstat包含了常用linux性能工具。用于监控和分析系统性能。

    1K20

    CAN底层驱动数据传输注意事项

    现在CAN通讯可以说是得到了越来越多应用,从汽车到工业,到农业等等行业和产品都在使用,而CAN通信也从经典CAN-CANFD-CANXL,一路在发展和更新,因为使用比较多所以经常关注CAN发展,但经典...CAN还是使用最多和最频繁,在底层驱动中,我们要注意数据传输。...如我们在读取CAN数据帧时候需要做调整,我们以NXP Kinetis系列为例子, ? 同样在发送传输时候,也要做调整。 ?...关于完整CAN底层驱动可以在公众号搜索,多次有介绍,包括高层协议栈开发和应用。...现在充电桩,工业控制,机器人等农机等产品大量使用CAN通信,所以 CAN通信对于底层嵌入式工程师来说是必须掌握一种通信 为了更好服务大家,特做个小调查,望大家踊跃参加

    60020

    linux | 静态路由理解与测试

    静态路由 静态路由使用原因多种多样,当没有到目的IP地址动态路由时经常使用静态路由,或者用于覆盖动态获知路由。 默认情况下,静态路由管理距离为 1,因此优先于来自任何动态路由协议路由。...RELATED— 请求新连接但属于现有连接一部分数据包,例如连接端口为 20 被动 FTP 连接,但传输端口可以是任何未使用端口 1024 或更高。...INVALID— 不属于连接跟踪表中任何连接数据包。 您可以对任何网络协议使用连接跟踪有状态功能iptables,即使该协议本身是无状态(例如 UDP)。...: -A 在规则链末尾加入新规则 -i 网卡名称 匹配从这块网卡流入数据 -o 网卡名称 匹配从这块网卡流出数据 -m state 匹配状态 -j 跳转到指定目标。...valid_lft forever preferred_lft forever https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux

    1.7K30

    Linux进程PCB理解&&查看进程信息方法

    一、学习准备:操作系统工作模式理解 首先我们要清楚是,操作系统是一个进行软硬件资源管理软件。操作系统下要管理好底层硬件。...每一个硬件生产产商都会给他们产品提供对应驱动程序,驱动程序是特定于某一硬件或系统设备软件组件,它为系统提供管理硬件各种功能。...当软件需要实现某些功能,而这些功能无法通过应用程序单独实现或难以实现时,驱动程序就能派上用场。操作系统通过驱动程序底层硬件进行管理。         ...进一步说,正是系统调用函数进行了封装,才使诸如C语言,C++等各种编程语言具有了跨平台性,我上层同样都是调用printf函数,在linux操作系统下我就去调用linux系统调用函数(封装在C标准库...下面是计算机层状结构图: 二、进程理解 可执行程序被加载到内存,加载是程序代码和数据,可是操作系统并不认识哪些代码和数据对应哪些进程。

    17610

    GC理解

    而我们很多对象都是朝生夕死,如果分代的话,我们把新创建对象放到某一地方,当GC时候先把这块存“朝生夕死”对象区域进行回收,这样就会腾出很大空间出来。...因为年轻代中对象基本都是朝生夕死(80%以上),所以在年轻代垃圾回收算法使用是复制算法,复制算法基本思想就是将内存分为两块,每次只用其中一块,当这一块内存用完,就将还活着对象复制到另外一块上面...这个时候,“From”和“To”会交换他们角色,也就是新“To”就是上次GC前“From”,新“From”就是上次GC前“To”。不管怎样,都会保证名为ToSurvivor区域是空。...频发Full GC消耗时间是非常可观,这一点会影响大型程序执行和响应速度,更不要说某些连接会因为超时发生连接错误了。...碎片化带来风险是极大,严重影响Java程序性能。堆空间被散布对象占据不连续内存,最直接结果就是,堆中没有足够大连续内存空间,接下去如果程序需要给一个内存需求很大对象分配内存。。。

    1.1K40

    vite理解

    vite理解快速冷启动"快速冷启动"指的是在开发过程中,当你启动应用程序或重新启动开发服务器时,Vite 能够迅速加载应用程序。...即时热模块替换(HMR)即时热模块替换(HMR)是指在开发过程中,当你代码进行修改后,Vite 能够实时更新修改模块,而无需完全刷新整个页面或重新加载整个应用程序。...Vite 预解析(Pre-Bundling)"Vite 预解析"是指在构建阶段项目的源码进行静态分析和预处理,以提前解析模块依赖关系和生成优化代码块,从而提高构建性能和减少启动延迟。...Vite 利用了现代浏览器 ES 模块原生支持,可以通过静态分析和预处理源码,提前解析模块依赖关系,从而减少构建时工作量和时间。...3、优化代码块生成:根据模块依赖关系,Vite 会生成优化代码块(Code Splitting),将相关模块打包到同一个代码块中。这样可以提高代码加载效率,减少不必要网络请求。

    25770

    PBC理解

    最近有几次关于PBC培训,部门内也在搞一些实践,PBC全称是Packaged Business Capabilities,感觉每个人PBC理解都有差别,我也在思考PBC是什么?...我PBC有什么深入思考,以及如果让我去构建BPC时候,我会怎么做。整理一下自己PBC理解,希望可以抛砖引玉。 PBC是什么?...咨询公司gartnerPBC定义为:Packaged business capabilities (PBCs) are software components representing a well-defined...需要被业务人员理解和识别,可被组装,复用能力模块。 PBC也是一种能力,但什么是能力呢?能力是能够顺利完成某些活动所必须具备一组功能。...可能会有的想法是低代码解决不了复杂业务问题,但是业务流程处理,大业务流程包含小业务流程,低代码能不能解决业务问题,在于流程梳理够不够清楚。

    89011

    less理解

    less理解: less是写css时可以采用另一种写法,用less格式写出来东西,可以通过编译器编译成css。也就是可以使用某种方法,把less文件变成css文件。...编译成css文件和平时自己写css没什么区别,浏览器自动可读 好处 使用less而不是直接写css有几个好处: less使用常量形式保存一个值,哪里用到这个常量都行,这个常量作用域应该是这个less...(这里常量类似于js变量,只是常量定义了之后不能动态修改值)。 编译后可以是压缩后css,这样就不用自己压缩啦。 选择器嵌套写法。...据说这种方法是官方推荐,就是你less和你html、js是没有关联,html中直接引用编译好css就行。...这种方法据说官方最不推荐, 在编译完成之前,body宽度会被设为0,我也不知道为什么,但实际就是这样。 可以使用外部设置变量。

    1K20

    Activit理解

    Activit和工作流理解 工作流(Workflow),就是通过计算机业务流程自动化执行管理。...工作流介绍 工作流(Workflow),就是通过计算机业务流程自动化执行管理。...就是系统业务流程进行自动化管理,所以工作流是建立在业务流程基础上,所以一个软件系统核心根本上还是系统业务流程,工作流只是协助进行业务流程管理。...而手工处理工作流程,一方面无法整个流程状况进行有效跟踪、了解,另一方面难免会出现人为失误和时间上延时导致效率低下,特别是无法进行量化统计,不利于查询、报表及绩效评估。...Activit如何使用 部署activiti Activiti是一个工作流引擎(其实就是一堆jar包API),业务系统使用activiti来系统业务流程进行自动化管理,为了方便业务系统访问(操作)activiti

    99330
    领券