自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 资源 (4)
  • 收藏
  • 关注

原创 类似uart_irq、timer_irq中断中是否可以加while break?

昨天公司里讨论到一个问题嵌入式中断是否可以写while,答案是:肯定的,但要加类似break的退出。有人说绝对不行,而且代码里面不能出现while(1){while(flag){}},以及不要加delay。。。。下面我据各大著名项目代码,具体情况可以自己打开文件详细阅读linux中的uart:nrf中的uart:timer定时器:spi传输...

2018-08-04 23:02:54 1975

原创 网络I/O模型代码实现

  将之前letflysite.com文章搬运过来。  下面将使用c写几个之前网络模型代码。下面都是服务端代码,客户端简略运行telnet localhost 10003。1. 阻塞型网络编程模型4步:1.创建码头;2.连接码头;3.读取数据;4.关闭。 #include <cstdio>#include <cstring>#include &lt...

2017-04-01 11:22:47 1162

原创 剑指offer(数组、字符串)及其它答案

1、调整数组顺序使奇数位于偶数前面// 12min17sclass Solution { public: void reOrderArray(std::vector &arr) { std::vector odd, even; // 将奇数和偶数分别存入vector int arr_len = arr.size(); for (int i = 0; i

2016-11-23 18:54:57 2392

原创 2016ICPC网络赛和现场赛总结

ACM沈阳网络赛、北京网络赛

2016-09-26 19:36:22 1490

原创 机器学习(常见面试之机器学习算法思想简单梳理)

supervised(classification[k nearest neighbor、decision tree、naive bayes、logistic regression、suport vector machie、adaboost]、regression[regression、tree regression])、unsupervised(k-means、apriori、fp_growth)、distribu

2016-08-18 09:46:17 7701 2

原创 C/C++知识要点总结之C++面向对象

2014-09-12 16:48:29 3603

原创 C/C++知识要点总结之C基础知识

C/C++知识要点总结之C基础知识

2014-08-10 19:26:34 2519

原创 Linux V4L2中utils架构

2023-06-29 17:00:20 1229

转载 4、AUTOSAR基础软件层

AUTOSAR基础软件层主要用于提供基础软件服务,包括标准化的系统功能以及功能接口,并且由一系列的基础服务软件组件构成,包括系统服务(System Service)、存储器服务(Memory Service)、通信服务(Communication Service)等,如下图所示。外部器件指的是微控制器外部的ECU硬件,如外部EEPROM、外部看门狗、外部Flash等。它提供一个通用的接口函数来访问一种特定的器件类型,且与该器件类型的数目无关,同时也与器件的具体硬件实现无关。一般来说,管理器属于服务层。

2023-04-25 00:53:46 312

转载 1、AUTOSAR简介

AUTOSAR规范的运用使得不同结构电子控制单元的接口特征标准化,大大缩短了汽车电子软件的开发周期,提高了汽车电子软件的质量。这些在AUTOSAR规范中定义过的接口被SWC用于访问AUTOSAR BSW模块提供的接口被SWC用于访问AUTOSAR BSW模块提供的服务,比如ECU管理模块或者诊断事件管理模块。AUTOSAR成员之间开展合作的主要目标是:使基本系统功能以及功能接口标准化,使得软件开发合作伙伴之间能交换、转换和集成各自的车载网络功能,最大限度地提高车辆售后的软件更新和系统升级效率。

2023-04-25 00:47:08 366

转载 粗解数学体系

除了加法和数乘,这里进一步加入了一些运算,比如加入范数去表达“向量的长度”或者“元素的距离”,这样的空间叫做“赋范线性空间”(normed space),再进一步的,可以加入内积运算,这样的空间叫“内积空间”(Inner product space)。没有线性的基础,就不可能存在所谓的非线性推广。学过抽象代数的都知道,基于几条最简单的规则,比如结合律,就能导出非常多的重要结论——这些结论可以应用到一切满足这些简单规则的地 方——这是代数的威力所在,我们不再需要为每一个具体领域重新建立这么多的定理。

2022-11-19 14:48:46 187

转载 [Classic AUTOSAR学习] DLT模块(Log&Trace)

AUTOSAR Dlt (Diagnostic Log and Trace) 模块主要用来接收来自DET、DEM、SW-Cs的日志信息(log information)或者来自RTE的跟踪信息(trace information)。Dlt模块通过通信总线传输这些数据,使这些日志和trace信息在ECU外部可见。为此,Dlt模块会定义了用于在如何在通信总线上发送和接收这些专用的日志/跟踪信息的API。此外也可以通过NvM模块来永久保存Dlt模块的更新过滤器设置。这使得ECU能够以期望的级别传输日志/跟

2022-08-27 22:34:32 2216

转载 如何使用VH6501进行busoff和采样点测试_大江大城的博客-程序员信息网_vh6501 采样点

最近在研究使用VH6501进行CAN节点测试,主要是采样点和Busoff测试,期间踩了不少坑,下面详细分享下踩坑和环境搭建经历,CAN测试这块我也是最近刚起步,如果有说的不对的地方欢迎各位大佬指正...

2022-07-15 12:11:57 3844

转载 汽车CAN总线错误状态种类有哪些?一旦进入Busoff,如何快速处理?

由于CAN控制器会根据自身对接收逻辑的判断,进行错误监测与错误帧的发送,用户难以干预,所以导致用户在使用时,经常遇到如下烦扰:l 节点在现场运行中,偶发进入Busoff,必须人工干预断电上电,甚至复位都没用;l 一上电,总有几个节点上不去,必须要反复上电;l 运行中,遇到干扰,由于有错误帧,发送节点持续重发,导致总线阻塞和信号延迟;l 接收节点遇到干扰后,进入错误被动,时不时的丢帧;CAN控制器受到干扰或者损坏,而导致自身的错误计数器进行计数累加,并且发出“错误帧”的错误标识,主动错误状

2022-05-03 20:02:52 5918

转载 AutoSAR CANTP总结

AutoSAR CANTPOverviewCANTP用来组装分段CAN I-PDUs。COM和DCM模块通信协议是不一样的,由PDUR根据I-PDU ID来决定用哪个协议,PDUR也会决定传输协议是否使用。PDUR相当于一个网关,比例1:1CANTP根据N-PDU ID来只处理SF FF CF FC,CANIf要确定是将I-PDU转发到CANTP或者PDURCAN TP职责:组装、分段数据来收发,取消收发 流控 检测分割会话时的错误配置与服务CANTP配置SDU个数/

2022-04-25 08:14:21 2015 2

转载 话说AUTOSAR的实用性

现在做汽车电子的,基本上都知道AUTOSAR,但是真正理解 AUTOSAR的确实没多少人。这话怎么理解呢?就是说,你明白为什么要用AUTOSAR?它有什么好处?它适合你的企业吗?首先AUTOSAR的核心是它的方法论,这是最具价值的地方,方法论的大头,其实在于整车的开发,就是它是其于功能,而非零部件。比如说开发一个BMS,整车开发的时候,人家是从上而下来的,比如,你车上要有电池管理,那需要哪些功能?首先由于你是电动汽车,就得有电池,有了电池那就得描述电池一系列功能,包括充电放电控制,电池安全检测,过放充保

2022-04-23 21:16:16 317

转载 AutoSar之微控制器抽象层MCAL

微控制器抽象层位于AUTOSAR BSW的最底层,包含内部驱动,可直接访问微控制器和外设芯片。从具体应用来看,MCAL主要包括微控制器驱动、存储器驱动、通信驱动和输入输出驱动四个部分,各部分又由具体的与微控制器硬件相对应的驱动模块组成。其实,从AUTOSAR官文中,MCAL还包含另外两个部分:加密驱动和无线通讯驱动。由于基本无项目应用,所以暂且不提。下面就每个部分宏观解释下。微控制器驱动微控制器驱动由通用定时器驱动(GPT Driver)、看门狗驱动(WDG Driver)、微控制器

2022-04-23 19:37:49 5684

转载 CANIF优化

AUTOSAR基础软件中的通讯,前文已经介绍过COM模块、PduR模块、CanTp模块和IpduM模块,今天介绍硬件抽象层的CAN接口模块 —— CanIf模块。1 位置和作用如图1所示,CAN接口模块(下文简“CanIf”)位于底层CAN驱动(CanDrv)、CAN收发器(CanTrcv)和上层通信服务层(CanSm、CanNm)、CAN传输协议(CanTp)、PDU路由器(PduR)之间。它表示上层通信层的CAN驱动程序服务接口。图1 CanIf的位置CanIf提供了独特的接口来

2022-04-23 19:17:23 973

转载 RK3399平台开发系列讲解(内存篇)15.15、MMU页表存储管理部分

目录一、MMU页表存储管理部分一、MMU页表存储管理部分MMU:完成的工作就是虚拟地址到物理地址的转换,可以让系统中的多个程序跑在自己独立的虚拟地址空间中,相互不会影响。程序可以对底层的物理内存一无所知,物理地址可以是不连续的,但是不妨碍映射连续的虚拟地址空间。TLB:MMU工作的过程就是查询页表的过程,页表放置在内存中时查询开销太大,因此专门有一小片访问更快的区域用于存放地址转换条目,用于提高查找效率。当页表内容有变化的时候,需要清除TLB,以防止地址映射出错。Cache:处理器和存储

2022-02-04 08:47:56 344

转载 Linux物理内存外碎片化概述

本文出现的内核代码来自Linux4.19,如果有兴趣,读者可以配合代码阅读本文。一、Linux物理内存外碎片化概述什么是Linux物理内存碎片化?Linux物理内存碎片化包括两种:1.物理内存内碎片:指分配给用户的内存空间中未被使用的部分。例如进程需要使用3K bytes物理内存,于是向系统申请了大小等于3Kbytes的内存,但是由于Linux内核伙伴系统算法最小颗粒是4K bytes,所以分配的是4Kbytes内存,那么其中1K bytes未被使用的内存就是内存内碎片。Linux物

2022-02-03 13:50:32 288

转载 RK3399平台开发系列讲解(内存篇)15.26、Linux内存是怎么工作的?

目录一、内存映射二、虚拟内存空间分布三、内存分配四、内存释放????Linux是怎么管理内存,今天我们一探究竟。一、内存映射Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长(也就是单个 CPU指令可以处理数据的最大长度)的处理器,地址空间的范围也不同。比如最常见的 位和 64位系统,我画了

2022-02-02 13:40:33 418

转载 页错误 Page Fault /缺页异常 详解

页错误 Page Fault/缺页异常 详解1. 第一部分:如果你看得懂 1.1 页错误定义 1.2 页错误的处理 2. 第二部分:如果你看不懂上面的,请看这里 2.1. 举例子(背景) 2.1.1 进程及页映射 2.1.2 映射关系和数据结构 2.2 结合图说明什么是页错误 2.2.1 页错误产生 2.2.2 页错误处理 1. 第一部分:如果你看得懂1.1 页错误定义当cpu执行进程的某个页面时,发现他要访问的页(虚拟地

2022-01-26 23:29:35 1750

转载 背包问题、贪心算法、动态规划

1、0-1背包问题0-1背包问题:有一个贼在偷窃一家商店时,发现有n件物品,第i件物品价值vi元,重wi磅,此处vi与wi都是整数。他希望带走的东西越值钱越好,但他的背包中至多只能装下W磅的东西,W为一整数。应该带走哪几样东西?这个问题之所以称为0-1背包,是因为每件物品或被带走;或被留下;小偷不能只带走某个物品的一部分或带走同一物品两次。在(分数(部分))背包问题(fractional knapsack problem)中,场景与上面问题一样,但是窃贼可以带走物品的一部分,而不必做出0-1的二分选

2022-01-21 16:15:49 380

转载 如何查看linux kernel邮件列表

1. 前言本文主要总结浏览kernel patch的方法,以此希望促成自己养成阅读patch的习惯。用一个朋友的话说,这样才能更好的融入社区。2.linux版本发展简介2.1 史前时代(0.01~1.0)版本更迭过程为:0.01 -> 0.02 -> 0.10 -> 0.11 -> 0.12 -> 0.95 -> 0.96 -> 0.97.x -> 0.98.x -> 0.99.x -> 1.02.2 奇偶时代(1.0~2.6.

2022-01-16 14:56:24 921

原创 【开源社区】向开源社区提交patch流程

Linux相关知识点 1.1 开发过程简述参考链接:linux/2.Process.rst at master · torvalds/linux · GitHub每两到三个月就会发生一次新的主要内核发布 使用滚动开发模型(rolling development model),不断整合主要变更。 在每个开发周期的开始,“合并窗口”被认为是开放的,合并补丁原则:足够稳定并被开发社区接受的代码才被合入到主线内核中,在此期间新开发周期的大部分更改将会合入到内核。合并窗口持续大约两周。 合并窗口内合并.

2022-01-04 20:12:39 685

转载 arm64 linux 中断,ARM64 中断处理流程

​如果说Linux内核是个身体,保罗万象,那么中断就如同是其中更为关键的神经系统,有了他的存在,中央处理器才能了解各个外设所处的状态,并且及时的给与支持响应。本章的重点不是介绍如何使用中断与中断 API,更不是为了了解软件中断、硬件中断、tasklet 微任务以及工作队列有何分别,我们仅仅只是为了观察中断时如何一步步传递上来又是如何处理的流程的呢?中断注册中断即 CPU 在执行进程上下文期间,出现了某些突发情况,导致 CPU 必须暂停任务转而执行中断上下文。从定义上来讲,其实只要是突然中断

2022-01-03 07:06:12 665

转载 linux 内核启动Initramfs与initrd 及其挂载

Initramfs/initrd则是填充(仅仅是释放文件到rootfs根目录)/扩充(通过挂载其他文件系统类型到rootfs指定目录)rootfs的关键,以保证Linux系统的后续启动。1.initrd在早期的linux系统中,一般只有硬盘或者软盘被用来作为linux根文件系统的存储设备,因此也就很容易把这些设备的驱动程序集成到内核中。但是现在的嵌入式系统中可能将根文件系统保存到各种存储设备上,包括scsi、sata,u-disk等等。因此把这些设备的驱动代码全部编译到内核中显然就不是很方便。为了

2021-12-13 16:37:53 7011

原创 kvm-qemu使用kgdb、出现Guest has not initialized the display和代码覆盖率

1、更新xml让tcp的1234端口可以被监听virsh shutdown domainvirsh listvirsh undefine domain --nvramvim *.xml1、找到domain指令并添加选项xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'。<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0

2021-10-30 11:26:13 4043 1

转载 Git的Patch功能和msg模板设置、git服务器搭建、KVM virsh常用命令

本文整理编辑自:Git的Patch功能 - 老z的博客 - 博客园http://yuxu9710108.blog.163.com/blog/static/2375153420101114488765/一、前言UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过Patch来提交代码的。作为最重要的开源项目之一,Linux,也是这样的。普通开发者从软件仓库clone下代码,然后写入代码,做一个Patc...

2021-10-18 15:20:24 400

转载 设计链表的实现

解题思路我们知道链表有带头指针和不带头指针两种,这个题目的坑在于你最开始选择哪种方式决定了你是走向正确还是失败。在设计之前最好看清各函数的输入、输出,由于插入和删除操作都返回为空,而我们都知道C语言中的函数传惨是按值传递,也就是说,如果你选择不带头指针方式,是没法在在头部进行插入和删除操作的,你尽可以改变函数内的头指针位置,但是主调函数中的头指针位置是无法改变的。还有要注意的是结构体不能声明为ListNode,因为Leetcode中内部已经定义了该变量,因此这里定义结构体为LNode。1.先区分一下

2021-10-07 23:19:47 119

转载 STM32的时钟树,你了解多少?

这是stm 32的时钟系统,时钟与单片机的关系就好比心脏与人的关系一样,它为单片机的运行提供时间基准。STM32F1系列单片机的时钟树请看图1。图1 STM32F1系列单片机的时钟树我们将这个复杂的系统分成三个部分,第一个部分是时钟的输入,也就是时钟源。第二个部分是时钟的输出,也就是各种外设等应用模块。第三个部分就是连接输入与输出的枢纽,也就是锁相回路、分频器和倍频器等。请看图2.图2 时钟系统的三个部分STM32F1系列单片机有四个时钟源:1.低速的内部时钟(LSI),它是一个

2021-10-06 22:23:09 749

原创 linux流程总结

1、linux下载1.1、启动tftp(1)、启动sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plistsudo launchctl start com.apple.tftpd执行上边两条,如果没有报错,那么说明启动成功。如果想看日志可以使用如下命令:tail -f /var/log/system.log(2)、关闭sudo launchctl unload -F /System/Library/Laun

2021-09-12 20:13:44 125

转载 逻辑分析仪的使用方法

1,下载逻辑分析仪配套软件我手头是Kingst的LA5016型号,直接去官网下载对应版本http://www.qdkingst.com/cn2.安装和使用安装过程在下载好的包中有详细的步骤说明,就不多说了,这里说一下注意的点1.采样率要根据测量频率而定,比如我最大用到400KHZ,采样率在频率10倍以上就好了,比如选5M、10M或20M,都可以但不能太大,如果选200M就会太大了,分析结果容易有问题2.可以通过采集深度设置采集时间3.选择好协议和通道后,就可以点击开始采集了,这里我用

2021-08-22 13:14:32 3542

转载 [Datasheet PHY] ksz8081数据手册解读

Ksz8081目前为MICROCHIP主推的PHY芯片之一,原为MICREL公司设计;芯片分为MII接口型号,RMII接口型号,分了两种不同的产品型号,设计选型时注意芯片后缀,价格也是不同的。10/100M自适应;MDC/MDIO Management Interface;供电:3.3V封装:24-pin 4 mm x 4 mm QFN PackageMII接口:RMII接口:选型参数主要是外部晶振A:可25M接入,内部可倍频50M输出;D:必须外部接50M有源晶振;温度

2021-04-05 19:56:59 2001

原创 sdram/IS42S16160具体参数

https://ebf-imxrt1052-tutorial.readthedocs.io/zh/latest/doc/chapter23/chapter23.html

2020-12-19 13:54:31 743 1

转载 i.MX RT1050上手手册 (外部Flash)

本文章转载自"施长浩恩智浦MCU加油站",https://mp.weixin.qq.com/s/joc6SoYUQ458xL8AhUuzxAi.MX RT1050自推出以来,我们陆续收到不少客户咨询外接Flash闪存的事项。针对该产品无闪存的特点(需要外挂片外Flash或其他存储介质),结合客户提到比较多的问题,本文着重介绍常用的FlexSPI NOR器件在i.MX RT1050上的使用。支持的Flash类型i.MX RT1050可以支持所有符合JEDEC标准(JESD...

2020-12-18 14:44:17 1303

转载 STM32启动过程解读与跟踪验证

近段时间由于在做ucos-iii的移植,所以就顺便了解下STM32的启动过程。经过查阅各种官方文献和对代码进行单步跟踪,详细地叙述了STM32加电启动的具体过程。对于关键性的语句都指明了出处。下面将学习成果分享给大家,由于笔者知识有限,不当之处敬请指出。 为了更好的说明问题,先来看STM32的内存映射(以STM32L1xx为例) 由于固定的内存映射,代码区(codearea)从0x00000000开始,通过指令总线(ICodeBus)和数据总线(DCodeB...

2020-12-18 14:42:40 306

转载 SRAM和SDRAM的区别

内存在电脑中起着举足轻重的作用,一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。按内存条的接口形式,常见内存条有两种:单列直插内存条(SIMM),和双列直插内存条(DIMM)。SIMM内存条分为30线,72线两种。DIMM内存条与SIMM内存条相比引脚增加到168线。DIMM可单条使用,不同容量可混合使用,SIMM必须成对使用。按内存的工作方式,内存又有FPA EDO DRAM和SDRAM(同步动态RAM)等形式。FPA(FAST PAGE M..

2020-11-08 16:51:42 5169

转载 ARM分散加载文件

ARM的连接器提供了一种分散加载机制,在连接时可以根据分散加载文件(.scf文件)中指定的存储器分配方案,将可执行镜像文件分成指定的分区并定位于指定的存储器物理地址。这样,当嵌入式系统在复位或重新上电时,在对CPU相应寄存器进行初始化后,首先执行ROM存储器的Bootloader代码,根据连接时的存储器分配方案,将相应代码和数据由加载地址拷贝到运行地址,这样,定位在RAM存储器的代码和数据就在RAM存储器中运行,而不再从ROM存储器中取数据或取指令,从而大大提高了CPU的运行速率和效率。(二).

2020-10-27 19:01:36 656

转载 ISO-CANFD和NONISO-CANFD报文差异

CAN_FD国际标准与博世标准差异:采集数据并对比和CANoe的差别,结果发现CRC场不同,如下图所示。

2020-10-27 10:37:01 1251

USBCANPRO资料.zip

pcan最新版工具

2021-03-13

Understand For C++v2.6 + 注册机

Understand For C++v2.6 + 注册机

2017-02-20

机器学习基石文字版

机器学习基石笔记文字版

2017-02-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除