- 博客(148)
- 资源 (2)
- 收藏
- 关注
转载 CAN-FD
上一篇对CAN总线进行了整理,今天我们来看看它的升级版-CAN FD。有了CAN,为什么还要CAN FD呢?随着汽车功能越来越多,CAN总线的局限性也逐渐暴露:1、CAN总线最高速率为1Mbit/s,通常使用的是500k,随着功能的逐渐增多,各ECU之间的信息交互也越多,导致总线负载持续走高;2、CAN报文中只有约40~50%的带宽用于实际数据传输;3、响应机制受车内布线的物理特性限制,例如CAN控制器中的ACK生成延迟;收发器传播延迟;导线延迟等。为了解决上诉CAN总线的局限性,对其进行升级时
2020-10-20 13:40:44 1401
转载 CAN总线
CAN总线最近在整理总线的基本知识,今天来整理一下CAN总线。CAN历史CAN总线特点总线拓扑CAN帧的种类最近在整理总线的基本知识,今天来整理一下CAN总线。CAN历史1983年,BOSCH开始着手开发CAN总线;1986年,在SAE会议上,CAN总线正式发布;1987年,Intel和Philips推出第一款CAN控制器芯片;1991年,奔驰 500E 是世界上第一款基于CAN总线系统的量产车型;1991年,Bosch发布CAN 2.0标准,分 CAN 2.0A (11位标识符)和 CAN
2020-10-19 10:13:09 3987
转载 冯诺依曼结构和哈佛结构
FROMhttps://www.cnblogs.com/douzi2/p/4876551.html哈佛结构是,数据和代码分开存在。冯诺依曼结构是在哈佛结构之后提出的,冯诺依曼提出“代码本身也是一种数据”,解决了哈佛结构的一个问题——总线暂用资源太多。冯诺依曼结构是,数据和代码放在一起。首先,通过BIOS(Uboot)将硬盘(Flash)中的程序(数据和代码),全部拷贝到R...
2019-06-03 17:19:47 561
转载 CAN FD的波特率到底能跑多快?
FROMhttp://news.21dianyuan.com/detail/34859.html众所周知,CAN FD是基于CAN 2.0的升级版协议,为了满足汽车电子日益增长的高带宽和高传输速率的要求,CAN FD主要升级了以下几个方面:一、更高的传输波特率图 1可变数据段波特率结构CANFD速率包含两个段的速率,一个是仲裁段和ACK段,沿用CAN2.0的规范,最高速...
2019-06-03 16:06:42 9454 1
转载 CodeWarrior的map文件详解
From https://blog.csdn.net/lin_strong/article/details/79759080最近各种忙着码代码,遇到了各种各样的坑,对CodeWarrior工程中的这个map文件的理解也越来越深了。闲来无事,和大家分享下对这个map文件的理解。可能还有不对之处,敬请指出。前言map文件保存了你的整个程序编译链接后的各种信息,包括编译器链接器信息,内存分配信...
2018-10-18 15:03:49 1041
转载 理解S12(X)架构中的地址映射方案
From https://blog.csdn.net/lin_strong/article/details/78127072由于在暑假匆忙接收的嵌入式项目中需要使用特别大的数组,非分页RAM的内存不够用了,没办法,硬着头皮尝试使用分页RAM,但是完全没有单片机的基础,导致极其的困难。之前写程序都是按照纯软件的思维,主要考虑架构,不会考虑到每个变量具体存在哪个物理地址这么底层的问题,结果被飞思卡...
2018-10-18 15:02:41 475
转载 (深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack)
bss段: bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。 bss是英文Block Started by Symbol的简称。 bss段属于静态内存分配。 data段: 数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。 数据段属于静态内存分配。 text段:...
2018-08-19 23:13:50 728 1
转载 How To Ask Questions The Smart Way
在黑客的世界里,当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。本指南将教你如何正确的提问以获得你满意的答案。How To Ask Questions The Smart Way...
2018-06-12 17:13:19 967
转载 CAN总线基础知识(二)
From https://blog.csdn.net/shanghaiqianlun/article/details/17795497CAN协议和标准规范1 由ISO标准化的CAN协议 CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么不同,但是在物理层有些区别。 (1) 关于ISO11898:这个标准用于高速CAN通讯。...
2018-05-26 12:44:07 862
转载 CAN总线基础知识(一)
From https://blog.csdn.net/shanghaiqianlun/article/details/177944271.CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。 CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的...
2018-05-26 12:42:44 1026
转载 CAN总线基础知识(三)
From https://blog.csdn.net/shanghaiqianlun/article/details/179115451.CAN协议1.1 帧类型通讯时使用下面5个类型的帧: 数据帧 遥控帧 错误帧 过载帧 帧间空隙 在所有这些帧中,数据帧和遥控帧由用户设置,而其它帧则由CAN硬件设置。 数据和遥控帧有两种格式:标准和扩展格式。标准格式有1...
2018-05-26 12:36:55 1277
转载 CAN总线错误分析与解决
From https://blog.csdn.net/jcjx0315/article/details/70137271CAN总线错误分析与解决背景写这篇文章是因为我看到网上介绍CAN总线错误处理的文章,清一色的都是生搬照抄教科书或是数据文档的内容,特别是国内很难找到一些有价值的内容,这让一些真正有需要的人很苦恼,包括我自己。这篇不打算对CAN的错误处理机制做进一步的探讨,而是从实际工作中碰到的具...
2018-05-26 12:18:24 4134
转载 ISO 26262中的ASIL等级确定与分解
FROM http://www.hirain.com/sts/142/4451. 引言 汽车上电子/电气系统(E/E)数量不断的增加,一些高端豪华轿车上有多达70多个ECU(Electronic Control Unit电子控制单元),其中安全气囊系统、制动系统、底盘控制系统、发动机控制系统以及线控系统等都是安全相关系统。当系统出现故障的时候,系统必须转入安全状态或者转换到降级模式,...
2018-03-15 21:35:55 1654
转载 Difference Between Tier 1 & Tier 2 Companies
From http://smallbusiness.chron.com/difference-between-tier-1-tier-2-companies-25430.html Manufacturers sometimes refer to companies in their supply chain as tier one and tier two suppliers. The te...
2018-02-26 11:34:14 918
转载 AUTOSAR架构诊断功能简介
From https://zhuanlan.zhihu.com/p/25198437随着计算机及嵌入式技术被愈加广泛融入到汽车工程中,整车内的CAN总线网络结构由于ECU的增加愈加复杂,与之正相关提高的是汽车电子开发验证复杂度。电子控制系统强大的可操控性虽使车辆运行性能较之传统机械猛兽更为迅猛稳定,但同样也对产品前期设计开发,整车的制造生产,及售后工程部门的维修处理方面提出了挑战。因此各OEM迫切...
2018-02-24 15:17:35 6704 1
转载 AUTOSAR架构深度解析
From https://zhuanlan.zhihu.com/p/25198647AUTOSAR architecture的分层式设计,用于支持完整的软件和硬件模块的独立性(Independence),中间RTE(Runtime Environment)作为虚拟功能总线VFB(Virtual Functional Bus)的实现,隔离了上层的应用软件层(Application Layer)与下层...
2018-02-24 11:40:39 30995
转载 AUTOSAR架构软件结构简介
From https://zhuanlan.zhihu.com/p/25219257近年随着汽车电子化、智能化发展,汽车CAN总线上搭载的ECU日益增多。各汽车制造商车型因策略不同ECU数目略有不同,但据统计平均一台车约为25个模块,某些高端车型则高达百余个。同时娱乐信息系统作为「人类第三屏」,交互体验正不断扩展,加上车联网程度的逐步加深,整车系统的通信数据量正在以量级增长。汽车电子领域迫切需要有...
2018-02-24 11:01:57 1205
转载 基于CAN总线的汽车诊断协议UDS (网络层 ISO 15765)
From: http://blog.csdn.net/qq_28086637/article/details/73699677上个月一个同事Z跳槽去了德赛西威,Z之前是完全不懂诊断的MCU工程师,去德赛后做诊断开发,让我感觉到,汽车嵌入式行业,CAN和诊断工程师还是比较稀缺的。之前我和Z共同负责一个项目,我负责CAN网络和诊断部分,经过4个多月的奋战,我一个人把汽车诊断UDS的系统搭建出来
2018-01-20 23:49:54 11575
转载 总线中主动错误和被动错误的通俗解释
Fromhttps://wenku.baidu.com/view/738dfacdbb4cf7ec4afed0cd.html 首先建议把广泛使用的“主动错误”和“被动错误”概念换成“主动报错”和“被动报错”。1. 主动报错站点 只要检查到错误,它立即“主动地”发出错标识。所谓“出错标识“,它本身就是一个“错误的位序列”(连续的6个显性位,不满足CAN协议的“最多5
2018-01-20 23:25:59 5179 2
原创 内存对齐方式及结构体的存储
1. 内存对齐方式虽然所有的变量最后都会保存在特定地址的内存中,但相应的内存空间必须满足内存对齐的要求。主要出于两个方面的原因: (1) 平台原因: 不是所有的硬件平台(特别是嵌入式系统中使用的低端处理器)都能访问任意地址上的任意数据,某些硬件平台只能访问对齐的地址,否则会出现硬件异常。 (2) 性能原因: 如果数据存放在未对齐的内存空间中,则处理器访问
2017-11-08 16:47:17 1029
转载 动态分布内存——free()函数与realloc()函数
1. free()函数对于程序而言,不可再访问的内存块被称为垃圾,留有垃圾的程序存在内存泄漏现象。虽然一些语言提供了垃圾收集器用于垃圾的自动定位和回收,但C语言不提供。要求每个程序负责回收各自的垃圾,方法是调用free()函数释放不需要的内存。通常malloc()要与free()配套使用,当动态内存使用完毕时,如果不及时释放的话,必然导致“内存泄露(即内存空间减少)”,进而
2017-10-31 14:20:13 1168
转载 sizeof(struct )大小讨论
FROM: http://blog.163.com/feyeye@126/blog/static/4351010920091082551515/ struct 结构大小和顺序、#progma pack参数有关系针对字节对齐,环境使用的gcc version 3.2.2编译器(32位x86平台)为例。char 长度为1个字节,short 长度为2个字节,in
2017-10-12 22:20:12 658
原创 ARM架构知识点(来自朱友鹏课堂笔记)
3.文件读写的一些细节errno和perror(1)errno就是error number, 意思就是错误号码。linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会返回一个特定的errno编号来告诉我们这个函数到底哪里错了。(2)errno是由OS来维护的一个全局变量,任何OS内部函数都可以通过设置errno来告诉上层调用者究竟刚才发生了什么错误(3)errno本身实
2017-10-12 09:43:11 816
原创 ARM汇编指令和伪指令(朱友鹏课堂笔记)
一、ARM汇编指令集1. 指令与伪指令(汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行。(汇编)伪指令本质上不是指令(只是和指令一起卸载代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。2、两种不同风格的ARM指令ARM官方的ARM汇编风格:指令一般用大写、Wingdows中的ID
2017-10-12 09:41:55 2227
转载 嵌入式系统 Boot Loader 技术内幕
本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。
2017-09-13 16:54:22 1041 1
转载 实现u-boot对yaffs/yaffs2文件系统下载的支持
From https://yq.aliyun.com/articles/10555摘要: 以下红色部分就是需要修改的地方,老版本的U-boot需要添加下面的代码才能够增加对yaffs2的支持,新版本的只需添加一个宏就可以增加对yaffs2的支持。 yaffs2文件系统的移植主要涉及到u-boot对yaffs2文件系统的烧写支持、linux内核对yaffs2文件系统的支持,以及yaffs2文
2017-09-13 00:39:18 457
原创 制作可在MINI2440上运行的文件系统
1. 前言目的:制作可在MINI2440上运行的文件系统 Busybox版本: 1.20.0 (from https://busybox.net/downloads/) 交叉编译器: arm-linux-gcc version 4.3.22. What is busyboxfrom README in busybox folder. BusyBox combines tin
2017-09-12 11:45:36 401
原创 yaffs2移植到linux-4.3.2
1. 简介任务:将yaffs2移植到可在目标板上运行的linux-4.3.2 目标板: MINI24402. 准备工作下载yaffs2源码, https://yaffs.net/get-yaffs3. 移植工作3.1 解压yaffs2源码$ tar -xzf yaffs2-b6a3ae5.tar.gz 3.2 打补丁参考yaffs2文件夹下的README-linux$ cd yaffs-dir$
2017-09-10 13:36:48 633
原创 The condition code flags
1. Condition code meaningThe N, Z, C, and V (Negative, Zero, Carry and oVerflow) bits are collectively known as the condition code flags, often referred to as flags. The condition code flags in the CPS
2017-08-02 11:12:54 807
转载 C语言中的static 详细分析
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之。 C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,
2017-07-26 10:27:44 206
原创 日期计算函数:已知当前日期,求过了一段时间后的日期。
函数的功能是,根据当前日期,计算过了一段时间后的日期。1. 流程图:2.函数实现: /** * Method called to check if the date is valid. * short duration: unit is day. * short[] curData: current date, format is YYMMDD
2017-05-22 14:25:28 1172
原创 U-BOOT启动kernel的过程
本文记录了以u-boot启动运行在ARM上的Linux为例,拷贝内核镜像文件到SDRAM后,调用do_bootm的过程。话不多说,先上软件流程图: 一、内核镜像文件的检查内核镜像文件拷贝到SDRAM上之后,需要对镜像文件进行检查,包括Imag
2017-05-21 07:20:03 1364
原创 u-boot的命令详解
进入U-BOOT的控制界面后,可以运行各种命令,比如下载文件到内存,擦除、读写FLASH,运行内存、NOR FLASH中的程序,查看、修改、比较内存中的数据等。U-BOOT的命令可以说是U-BOOT学习的核心,启动kernel就是通过U-BOOT命令来启动的。 本文记录了关于U-BOOT命令的学习和分析。U-BOOT命令的学习大致可以分为两个部分:U-BOOT命令的存储格式、命令的检索和执行。一、
2017-05-18 23:40:37 698
转载 再谈U-Boot的设备管理框架
再谈U-Boot的设备管理框架转载自 http://blog.csdn.net/ce123_zhouwei/article/details/7357045一、U-Boot的设备管理框架在《U-Boot的设备管理》一文中通过源码分析讲解了U-Boot的设备管理。本文将从宏观的角度继续讲解U-Boot的设备管理框架。设备管理框架实现了设备的高度抽象,保持框架的稳定性
2017-05-17 22:46:34 321
原创 u-boot环境变量
u-boot通过环境变量为用户提供一定程度的可配置性,如波特率,启动参数等。环境变量固化在非易失性存储介质中,通过saveenv来保存。可配置性意味着环境变量是可以添加、删除和修改的,也就是说环境变量的内容可能会频繁变化,为了不让这种变化对u-boot的代码和数据造成破坏,通常的选择是在FLASH中预留一个专门用来存储环境变量的块。 U-boot环境变量大致分为四个部分:环境变量的结构,初始化,环
2017-05-17 21:34:33 608
转载 U-Boot的设备管理
转载自 http://blog.csdn.net/ce123_zhouwei/article/details/7319330U-Boot的设备管理目录一、初始设备链表、初始化设备和注册设备1.1 devices_init函数1.2 devices结构的定义1.3 drv_system_init 函数二、设备注册2.1 device_register (device_
2017-05-16 23:58:28 320
原创 C语言宏定义中#和##运算符
宏定义可以包含两个专用的运算符:#和##1, #运算符#运算符将宏的一个参数转换为字符串字面量,所执行的操作可以理解为“字符串化”。它仅允许出现在带参数的宏的替换列表中。举个例子 #define PRINT_INT(n) printf(#n " = %d\n", n)n之前的#运算符通知预处理器根据PRINT_INT的参数创建一个字符串字面量,因此 PRINT_INT(i/j);会变为
2017-05-09 22:21:21 1400
原创 LDR的用法(ARM指令及伪指令)
在ARM汇编中,LDR用的比较多,现总结一下它的用法:1. 内存访问指令LDR指令可以从内存中读取数据到寄存器中。ldr r1, [r2, #4] /*将地址为r2+4的内存单元数据读取到r1中*/ldr r1, [r2], #4 /*将地址为r2的内存单元数据读取到r1中,然后r2 = r2 + 4*/2. 地址读取伪指令ldr伪指令不是真实存在的指令,编译器会把它扩展成真正的指令:
2017-05-09 15:12:45 23160
转载 U-boot1.1.6移植之Makefile分析(一)
转载自: http://blog.chinaunix.net/uid-22713545-id-61844.html本文是针友善之臂公司出品的mini2440进行移植,其CPU不ARM920T架构的S3C2440,一片64M Nand Flash (K9F1208),一片2M Nor Flash 更具体数据请参考开发板手册。 u-boot-1.1.6有几千个文件,不可能对每一
2017-05-09 09:29:54 497 1
yaffs2文件系统映像制作工具
2017-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人