- 博客(32)
- 收藏
- 关注
原创 UML学习——聚合和组合的关系
某个对象的类Class由若干个成员集合构成,组合:当对象被创建时,成员跟着一起被创建聚合:当对象被创建时,成员不会跟着一起被创建,而是根据外在的条件被创建例如,class Hand{}class Computer{}//组合:class Person{ private Hand hand; public Person(){ hand = new Hand(); }}//聚合:class Person{ private Computer computer;
2021-03-18 11:21:17 400
原创 设计模式——工厂模式理解
前言:工厂模式在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。在面向对象设计中工厂模式是程序设计的首先模式。为了深入理解这个概念,首先讲一下“工厂”的概念。工厂是可以大量重复生产相同产品的场所。对于工厂来讲,生产一件产品和生产一万件产品在技术和管理层面上不应该有本质差别。工厂生产的前提是原料,工人是充足的。在现实生活中,一个日产量100件和10000件的工厂在技术和管理细节上可能还存在较大差别,但是在计算机软件中没有任何差别。微软卖出一个Windows软件和卖出一万
2021-03-09 11:29:34 698
原创 对特斯拉软件营收模式的一点感想
如果这种商业模式在汽车行业普及开来,那么会带来另一个产业链,就是汽车软件黑客的崛起。从前开发软件Bootloader刷新的时候总是强调安全算法的保密性,要假设有黑客盗刷的风险。理论上假设了很多条件,而且说明如何用流程保证。但落实下来,发现很多OEM根本没把这当回事。传统汽车几乎没有盗刷汽车软件的事情发生,一个原因是汽车没有联网,一个是因为没有形成经济链,而没有形成经济链才是根本原因。如果黑客攻击一个软件漏洞并不会带来经济效益,那么它也懒得花那心思,浪漫一点的像孙悟空一样,在如来佛指头上写个“齐天大圣到此一游
2021-01-23 23:23:50 576
转载 Huawei LiteOS 开发指南
Huawei LiteOS 开发指南目 录1.知识共享许可协议说明 2.前言 3.概述 4.基础内核 4.1.任务 4.2.内存 4.3.中断机制 4.4.队列 4.5.事件 4.6.互斥锁 4.7.信号量 4.8.时间管理 4.9.软件定时器 4.10.错误处理 4.11.双向链表1.知识共享许可协议说明您可以自由地:分享在任何媒介以任何形式复制、发行本文档演绎修改、转换或以本文档为基础进行创作只要你遵守许可协议条款,许可人就无法收回你的这些权利..
2020-12-28 21:52:24 5294
原创 AUTOSAR-OS学习笔记【Application modes和OS Application的关系】
一、背景:OSEK-OS规范第5章介绍Application modes,AUTOSAR-SW-OS需求规范的7.6章介绍OS-Application。那么,Application modes和Application有什么区别和关系呢?本文分析一下。二、Application modes1. 引入背景:OSEK-OS引入application modes的概念是为了应对ECU需要运行完全独立的应用程序,比如:factory test, Flash programming or normal
2020-12-28 21:29:52 5120 1
原创 AUTOSAR-OS学习笔记【Counter计数器】
一、背景:OSEK-OS没有单独提供(定义)Counter的接口,它只是驱动警报的一个机制。(The OSEK operating system does not provide a standardised API to manipulate counters directly.)OSEK-OS要求软件至少提供一个软件或硬件Counter。一个Counter可以驱动好几个警报,每个警报激活一个任务+事件。一般来讲,用一个每次计数器+1的硬件Counter就能触发所有想要周期的警报AUTOSAR
2020-12-28 21:27:36 5401 5
原创 AUTOSAR-OS学习笔记【4.6 Scheduling policy 调度策略】
一、内容提要:OSEK-OS有三种调度策略,不同的调度策略影响任务调度的响应时间,任务上下文切换的时间和内存消耗。1.抢占式调度 低优先级任务在运行的任何时刻,可以被就绪的高优先级任务抢占。2.不可抢占式调度 低优先级任务在运行时,即使有高优先级任务就绪,也不能被抢占运行。3.混合式调度 OSEK-OS可以实现两种调度方式并存,不但不会带来冲突,而且还能达到一些效果。 假设有三个任务 调度任务列表 任务名 优先级...
2020-12-22 22:35:10 3383
原创 OSEK-OS之歌
一、目的:用形象化的语言,少量的文字描述总结OSEK-OS的知识要点。二、内容:主频的心跳,驱动几个定时器的脉搏,产生几个软硬件计数器的滴答。一个计数器拉响了几个警报,每个周期的轮回都激活一个任务和事件。一个计数器启动了一个调度表,每个超时的节点都激活若干任务和事件。一个高优先级任务等待事件,让出CPU给我的同伴一个低优先级任务设置事件,再让CPU给我的主人让我们一起同步。一个任务开始访问资源,把占CPU的权限上升到天花板,这个任务结束访问资源,把占CPU的权限恢复原
2020-12-22 21:50:06 669
原创 汽车软件RTOS概念——进程,线程,任务
一、前言:一般看《计算机操作系统》的书籍,都会有进程(Process),线程(Thread)的概念。但是在嵌入式RTOS里面,比如应用于汽车软件的OSEK/VDX Operating System Specification 2.2.3规范里没有这两个概念,有的是任务(Task)。那么这三个概念是什么关系呢?本文阐述一下作者的理解。二、进程的概念:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是系统进行资源分配和调度的基本单位。进程是一个动态的概念,.
2020-12-15 22:00:35 3650 4
原创 浅谈汽车软件Boot的五种自刷新方式
浅谈汽车软件Boot的五种自刷新方式背景:汽车软件Boot程序的主要作用是刷新App程序。在在一个具体客户项目中,Boot也是客户需求的一部分,跟随项目也有软件开发计划(有的为了和其它Boot区分,把项目上的Boot称作CB, Customer Boot)。对于已经下线盒盖的控制器,无论是在供应商或者客户手里测试,只能通过CB刷新App。如果需要CB自刷新,就需要额外的方法。规范:整车厂只有对App程序刷新的规范,没有对Boot自刷新的规范。因为规范是针对量产车的,售后只负责App程序.
2020-12-11 22:17:17 7492 8
翻译 您需要一个实时操作系统吗?
您需要一个实时操作系统吗?ByChris Barlow | Technical Product Manageron Nov 11, 2019 10:29:00 AMTopics:MulticoreSystems ArchitectureRtosEmbedded SystemsDevelopmentReal-Time原文链接https://www.lynx.com/embedded-systems-learning-center/do-you-need-an-rtos-real-...
2020-11-24 18:25:18 361
原创 几种RTOS的【就绪状态最高优先级任务查找算法】比较
前言本文分析了uCOS-II,uCOS-III,Free-RTOS的最高优先级任务查找算法,并得出分析结论,给选择嵌入开发应用RTOS的方案提供参考。uCOS-II不受CPU硬件指令限制,但由于主要考虑8位机情况用纯软件算法查找最高优先级任务,相比uCOS-III的依靠硬件CLZ指令的方法,还是比较慢。对于32位CPU来说,uCOS-II显然不太合适了。当任务优先级数少于32个时,uCOS-III和Free-TASK(配置configUSE_PORT_OPTIMISED_TASK_SELECTION
2020-11-05 18:21:21 1496
原创 为什么ISO 11898(High speed)限制CAN最高速度是1Mbls
原因一,物理定律的限制:保证CAN通信安全最大的特点是它的发送错误自监测要求:发送器将要发送的位电平与总线上检测到的位电平进行比较。如下图绿色字。这使得所有发送回路必须是带反馈功能的。即发送节点发出一个数据位,传播到最远的接收节点,等待接收节点应答一个数据位,再传播到发送端。电信号在这个回路上传播是有时间的。物理学研究结果,铜线中的电信号传播速度大约为2.310(8次方)m/s。那么,对...
2020-02-20 11:37:18 3788 1
原创 BAM技术总结
一、背景:对于要量产的ECU,在工厂刷新程序时有两种方法:一、用一个带有JTAG探针的夹具锁住电路板,然后走JTAG协议用上位机刷入完整程序(包括Boot+App),最后盒盖。JTAG刷新功能被屏蔽了。后面再要更新程序就运行Boot走UDS协议。 二、生产的时候不用考虑CPU里面是空的程序,不需要JTAG夹具刷程序,直接盒盖。上电后,CPU检测出内部无有效程序,则停留在"STATIC"模式,自动...
2020-02-18 11:40:06 1878 1
原创 AUTOSAR CAN网络管理状态机的优化方案
一、背景: 在AUTOSAR CAN网络管理框架下,如果所有的节点都按照状态机要求,在ReadSleep状态下停发NM帧,在Prepare Bus-Sleep模式下停发App帧,所有节点可以从Prepare Bus-Sleep模式开始同步进入Bus-Sleep模式。如下图所示二、意外情况: 如果某个节点由于软件Bug进入Prepare Bus-Sleep模...
2019-09-05 17:42:11 2678
原创 CAN网络管理在Boot和App程序的应用方案
一、背景:无论是整车厂自己定义或根据OSEK,AUTOSAR规范定义的网络管理规范都是以ECU整体为对象而说的。网络管理的目的是使网络上所有节点能同步唤醒和休眠,并且节点在休眠状态下维持低功耗模式。ECU软件开发人员在实现时必须要考虑两个问题:ECU电源芯片SBC的CAN唤醒方式是指定帧还是任意帧? Boot和App程序如何配合?本文分析一下ECU软件的实现方案。二、指定帧和...
2019-09-05 16:08:45 2437
原创 从ECU和CPU视角理解AutoSar网络管理
一、KL15和KL30节点概念解释点火开关位置:OFF,ACC,ON,START四种状态KL30节点:控制器由蓄电池常供电,在点火开关OFF时仍然能运行软件和维持CAN通信。如图,在Hardware Wakeup信号OFF时,CPU能感知到该变化,但是3.3V,5V供电不受影响。CPU可以根据电源和网络管理状态机条件决定何时发送命令切断SBC的3.3V,5V供电输出,从而停止...
2019-09-05 11:46:40 8425 11
原创 KL15和KL30节点网络管理概念
一、KL15节点方式 这是最直接和简单的方法,将所有CAN总线上的ECU电源都接在KL15上面。(KL15是当点火开关在ON上才接通蓄电池电源)缺点,无法适应所有的ECU:1.可以断电关闭,比如座椅控制。2.有些ECU在汽车到OFF档时需要一些额外的时间关闭,比如车灯控制模块,可能有礼宾功能,在熄火之后需要点亮一段时间。3.有些ECU需要一直在低功耗情况下运行,...
2019-08-30 17:25:29 12377 1
原创 AutoSar和OSEK网络管理比较
共同点:1. 都属于直接网络管理。2. 网络管理的目的都是协调各节点同步进入休眠及唤醒(主要是休眠)。3. 都依靠特定的网络管理CAN报文,每个节点的网络管理ID都不一样。4. 唤醒方法相同,第一个唤醒的节点发送网络管理帧即同时唤醒其它节点。不同点:1. 唤醒帧类型不一样:网络唤醒后,OSEK要求节点发出的第一帧必须是Alive类型,不能是Ring, Limpho...
2019-08-30 17:06:15 14309 2
转载 AUTOSAR网络管理
转载来源:http://www.uml.org.cn/embeded/201806134.asp?artid=208431 网络管理组成部分网络管理部分由通信管理器(简称ComM),通用网络管理器接口(简称NmIf),总线相关的网络管理器(简称NM,包括CanNM,LinNM,FrNM),总线相关的状态管理器(简称SM,包括CanSM,LinSM,FrSM)四个模块构成。1.1ComM...
2019-08-30 14:39:34 1496
原创 AutoSar CAN网络管理状态机理解
AutoSar CAN网络管理状态机理解前言网络管理是整车控制很重要的功能。在CAN网络中通常有两种报文,应用数据帧和网络管理帧。应用数据帧只负责网络在正常工作模式下各节点的数据交互,网络管理帧控制和协调各节点唤醒,工作,休眠的时序。AutoSar CAN网络管理规范要求所有节点按如下状态机管理和交流各自的网络状态以控制整车的网络活动状态。为什么状态机要是这个样子?为什么总共五个状态休眠就三...
2019-08-28 17:51:03 8804 5
原创 CAN-FD核心技术简介
升级CAN的几条理由:1. The original requirement of the automotive industry was to accelerate the software download at end-of-line and in the garages for software updates.2. Additionally, the carmakers dema...
2019-08-15 16:39:18 14013 3
原创 SENT的优点
SENT (Single Edge Nibble Transmission) 是由SAE推出的一种汽车传感器与ECU通信的新标准((SAE J2716)),协议简单且具有很多优势。是Analog input 的替代品。有文章认为“SENT 将在局部系统中广泛取代CAN和LIN。”我觉得取代LIN可以,取代CAN不行。可以取代LIN的理由:1. 物理层上,SENT和LIN都只有一根数字信号线...
2019-08-02 17:43:27 4959 1
原创 汽车软件刷新——当前安全访问策略的缺陷及改进方案
一、背景:在汽车ECU软件中,如果需要依靠汽车总线(如CAN)刷新CPU里面的程序时,必须要通过安全访问,从而防止非法的刷新程序操作导致车辆安全(例如,黑客攻击)。在车联网以前,车辆总线是一个自封闭的网络,黑客通过远程电脑控制汽车在物理上是不可能的,除非亲自在汽车里操作或者首先在汽车的OBD接口上安装无线设备再远程操控。随着车联网时代的到来,越来越多的车辆会选择远程云端刷新程序,从而及时修补程序...
2019-02-24 13:33:04 1810 7
原创 手机支付平台付款码风险分析
一、前言:比起扫收款方二维码,再填入金额,输入支付密码支付。让收款方扫自己的支付码方便快捷的多。但是,手机付款码总共只有16个字符的有效数字(按十六进制算),比扫二维码的信息量少很多。这在原理上存在一个风险,即使不知道Seed和Key的算法。但是,可以随便生成一串数字,客户ID,付款方式,Seed都是任意的。存在1/1000000,百万分之一的概率Seed和客户ID刚好匹配。然后让收款方扫描伪造...
2019-02-21 23:11:04 412
原创 手机支付平台付款码分析
一、背景: 随着手机付款的流行,人们出门已经很少带现金了,或者只带一点儿以备不时之需。手机付款基本有两种形式,要么扫对方的二维码自己输入金额。要么展示付款码,让对方用扫码枪扫。作为软件工程师的我,虽然不从事支付软件开发。但是每次在超市购物付款时对展示付款码扫码的方式很好奇。不就是一连串阿拉伯数字,基本一分钟自动变一次嘛。就这样被扫码枪扫一扫,立即就收到扣款消息。我相信商家能推出这...
2019-02-21 19:53:20 2720
原创 电脑文件加密环境下Python程序打包成EXE不能运行的问题
一、问题:不久前用Python3.7写个脚本:读取Excel文件里数据(.xlsx),转换下格式输出到新的Excel文件里(.xls),直接运行.py文件没有问题。因为该工具要给其它部门使用,所以用PyInstaller打包成.exe文件,发现运行出错读取输入文件:.\input\FilePur-OLD.xlsxTraceback (most recent call last): Fil...
2019-02-19 17:06:50 2559 3
原创 Python读写文件的编码格式-UTF-8, GBK
做一个测试脚本,从文件夹A遍历所有的.txt格式文件,并打开文件逐行读取内容,写入到文件夹B里面。我们看读和写文件格式在是否指定为UTF-8时会发生什么错误。新建6个文件,汉字内容是“你好!”, 英文字符是"Hello"代码如下#coding=utf-8#coding=gbkimport os RootDir = R"E:\02_PythonTools\Fold-2\A\\"...
2019-02-19 15:30:29 38320
原创 从Python2.7升级到Python3.7遇到的问题及解决方法
之前用Python2.7版本写了些工具,后来发现Python2.7处理汉字时显示乱码。只好将Python版本升级到3,我直接从官网上安装了最新版本3.7。汉字能显示了,却发现了新的问题。一,print函数报错Python2.7的print函数可以不加括号,但是版本3.7却要求加括号。这个很好解决二,utf-8错误Python3.7要求所有的.py文件必须是UTF-8...
2019-02-19 14:37:08 5130
原创 C90FL Flash分配及擦写读使用笔记
如图,CPU总共有10个Block一、分配原则:1.只有Low Address Space可以作为程序启动地址。如此程序启动地址可以有6个。优先级由高到低L0>L1>L2...>L52.控制器上电后,最先启动的程序(如Start Boot Block)最好放在L0里,客户Boot放在L3或L4里,App程序从L5开始3.不要把L0用作Nvram,因为程序运行过程中...
2018-11-16 17:06:45 776 3
原创 MPC5643L单片机——CAN数据传输的字节顺序能不能逆序
一、问题提出: 突然想个问题,CAN数据传输的字节顺序能不能逆序?比如,发送的时候缓冲区里D0~D7存储指定数据,发送到总线上按照D7->D6->D5->.....->D1->D0的顺序。接收的时候,第一个收到的数据存储到缓冲区D7里,第二个存放到D6里.......如下图所示 二、理由: ...
2018-11-16 15:48:57 985
原创 MPC5643L单片机——CAN通信FIFO接收使用笔记
一、一个FIFO最多可存储几组CAN数据?手册里介绍了RX FIFO的寄存器数据结构,0x90-0xDC保留用作存储FIFO引擎,它里面的结构和上面0x80~0x90完全一样吗?也是16个字节吗?好像没有说明。根据大小计算0xDC-0x90=0x4C=76Bytes。若存储16个字节,可存储4个数据。换言之,FIFO里面最多可存储1+5=6个数据(至少包含ID)二、FIFO初始化: ...
2018-11-16 15:20:46 4705
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人