作者简介:程磊,某手机大厂系统开发工程师,阅码场荣誉总编辑,最大的爱好是钻研Linux内核基本原理。目录:一、计算机简介 1.1 什么是计算机 1.2 计算机发展史 1.3 计算机的二元结构二、计算机硬件体系结构 2.1 图灵机模型 2.2 冯诺依曼结构 2.3 现代计算机结构三、计算机软件体系结构 3.1 系统软件 3.2 应用软件四、操作系统组成结构 4.1 内核 4.2 OS库 4.3 OS进程五、操作系统本质解析 5.1 操作系统的目的 5.2 操作系统的作用之一 ...
公元1951年5月15日的国会听证上,美国陆军五星上将麦克阿瑟建议把朝鲜战争扩大至中国,布莱德利随后发言:“如果我们把战争扩大到共产党中国,那么我们会被卷入到一场错误的时间,错误的地点同错误的对手打的一场错误的战争中。”写代码,适用于同样的原则,那就是把正确的代码放到正确的位置而不是相反。同样的一个代码,可以出现在多个可能的位置,它究竟应该出现在哪里,是软件架构设计的结果,说白了一切都是为了高内聚和低耦合。陷入绝境下面我们设想一个名字叫做ABC的简单的网卡,它需要接在一个CPU(假设CPU为X)的内存总线上,需要地址、数...
嵌入式工资为什么比纯软工资低那么多?下面,谈谈我的个人体会。记得在1999年的时候,我离开大型国企,进入一家个人小作坊工作,做嵌入式开发,同时做软件开发和硬件设计,月薪是4000元。这对于当时身处四线城市的我来说,感觉已经算很高的收入了。但后来由于一些原因,我转行到一家纯软件开发公司,工资只有1000元,再加上奖金1000元。当时我就觉得,“软件开发的收入比嵌入式开发要少的多”。毕竟是小城市出来的,我对于这两个行业,以及软件行业内使用不同语言做开发的收入对比,没有什么具体的概念,只是从个人体会上直接得出的结论。因为是做派...
在上回讲完功能安全的定义以后,"是什么" 和 "为什么" 的问题,我们已经搞懂了。接下来就要看看重点,"怎么样" 的问题。主机厂在研发一款汽车平台的初期,会基于以往大量的工程和实际经验,把整车的功能细分到不同的子系统里,比如车载娱乐系统,底盘和驱动系统,辅助驾驶和车身照明系统等等。以下以被动安全辅助系统来举例。被动安全辅助系统,比如安全带和安全气囊就属于被动安全系统的一部分。假如汽车在发生碰撞以后,安全带会收紧,并且相应的安全气囊会弹出。当主机厂划分子系统到安全气囊控制器的时候,当然要描述一下,这个控制器的功能...
上回更新到主机厂在内部做危险分析和风险评估(HARA), 进而定义了安全目标(Safety Goal), 这篇会基于安全目标继续进行下去。主机厂引入了下一个阶段的工作,名字叫“功能安全概念” (functional safety concept)中文概念比较难理解,这是一个concept,但是中文的定义是“概念”,个人认为翻译的不是很好。我宁愿把它当做一个 “构想” 或者 “实施的方法”,这个过程主要是为了通过之前定义的安全目标,来确定具体的功能安全需求。并将它们初步的分配到设计架构中,以满足实现功能安全的终极目标,让“所有的风险都变得可以接受”,(absense of...
本来想好的题目是《跟我学做PLC》,但是转念一想,做为一个离开工控行业七八年的二手程序猿,自己的行业知识已经过期很久了,所以还是改为《揭秘PLC》更合适些。想当年大四的时候学分不够,所以选修了PLC这门课程,虽然没正儿八经听过几节课,但是实验课程却甚是有趣,引起了我们几个小伙伴的好奇心,总想趁老师不在偷偷拆开看看,到底里面是一个PC还是一个专用的芯片,可惜一直没有得手。不过后来倒是在微机原理实验室里从一堆废电脑里拆出一个Voodoo(好家伙,淘宝现在居然能卖15w)毕业后一不小心进入了工控行业,开始研发DCS/PLC产品,接触到了...
书接上回,我们上次以Codesys为例,介绍了其PC端的安装和Target配置,今天我们继续聊聊PLC的基本原理和实现方法。突然想到之前有个重要的问题没有跟大家介绍,从实现方式上讲,PLC分编译型和解释型,Codesys是编译型的,而某宝上200多元的“三菱仿”是解释型的,其实这“三菱仿”某宝上20元就能买到全套原理图及PCB和源码。这两条技术路线还是有比较大的区别,其中最大的区别就是IDE生成的文件是否可以在PLC设备端直接执行,编译型的可以直接运行,而解释型生成的是中间文件,其主要包含命令码和操作码,PLC在获取中间文件后会根据预先定义好的命令...
揭秘继续,上一期我们介绍了PLC设备端的程序RTS与PC端编译的用户程序之间的交互的核心:双方定义好相同的含有函数指针的结构体,通过ld连接文件将其定义到固定的地址上去执行。今天我们探究下PLC RTS的IO是如何实现的,首先说明一点,从实物上看,PLC的IO分两种,一种是PLC的CPU模块本体的IO,比如下图这款S7-1200,本体内置6个DI和4个DO另一种是通过IO扩展模块,下图是一个比较好的例子,该系统有两种IO扩展模式: 方式1. CPU通过背板扩展IO模块。方式2. CPU通过IO-LINK扩展。IO-LINK技术也是近些年工业总线技术的一个方向,以后有时间我们可以专门...
继续揭秘PLC,今天我们聊聊RTS的服务。服务有很多种,其最主要的任务是给用户提供调试接口的,相当于MCU的JTAG功能。Codesys有个比较实用的功能,代码编译好后,可以不连PLC实物直接在电脑端做仿真,手动测试验证逻辑。这个功能类似于MDK和IAR里的Simulator功能,不接MCU直接跑逻辑。当用户再点击Codesys在线菜单栏下的登录按钮后,首先Codesys会发送CheckID的命令码去检查板子返回的Target ID是否能于当前软件设置的Target匹配,下一步就是发送Stop命令关闭IEC运算(MCU版本的Codesys通常不支持在线下装,MPU版本的在线下装不需要停止IEC运算),然后...
揭秘PLC(五)RTS之扩展通讯之前有朋友问过这样一个问题,遇到一个新项目/行业,到底是选择MCU还是PLC来实现,我觉得在PLC能够满足要求的前提下,项目初期非常合适使用PLC做评估验证,当产品定型后再通过设计专用的MCU板卡来实现,PLC揭秘(1)中介绍过的ISaGRAF就支持把IEC-61131-3的工程倒出为.c文件,从而简化设备商设计专用控制器的流程。PLC相比MCU,还有一些无法比拟的优势:灵活性和扩展性。有些应用虽然相同,但是现场的传感器,执行器却并不相同,厂家不可能遍历所有的应用场景去设计MCU固件,而PLC可以通过更换用户代码以及安装不同的IO模块...
今天是2021年最后一天,坐标西安,这个千年古都失去了往日的繁华和喧嚣,全市小区,企事业单位除过疫情防控和保障人员车辆,都不准外出,我们也居家办公。这也许是度过的最安静的一个元旦假期了。最热闹的当属小区的群里,最辛苦的当属一线的工作人员和志愿者。向所有这些一线防疫人员致敬,我的城,加油!今年持续了2020年的缺芯片潮,因为使用ST的片子也很多,所以比较关心这块,其中最离谱的就是F103系列,涨的最离谱的时候竟然比我用的H7系列都贵好几倍。为此还专门找了几家国产的品牌来替代,像极海,GD,航顺,等等几家。因为这些低端系列做...
摘要本篇笔记主要记录基于恩智浦MPC5744P的Flash模拟EEPROM存储参数和数据的算法,对官方给出的方案深入学习,并可以添加一些扩展内容。准备工作安装S32DS for PA, 因为我们在S32DS下开发MPC5744P。安装S32DS 的SDK, 我们使用最新版3.0.3EEPROMEEPROM (electrically erasable programmable read only memory)因为我们的板卡没有外部EEPROM,必须使用内部Flash来模拟, MPC5744P有内部DFlash 可以用来模拟EEPROM,计划分为四部分来存储设计,1,系统参数,2,标定参数,3,历史记录,4,故障记录MPC5744P 片上可以用来模拟EEPROM 的地址范围如下图...
摘要本篇笔记主要记录J1939诊断协议和UDS基于CAN的诊断协议为什么可以和谐共处。准备工作J1939标准文档。UDS ISO 14229和ISO 15765文档先来说说UDSUnified diagnostic services (UDS)是乘用车常用的诊断协议。分为基于CAN的UDS如UDSonCAN ISO14229-3,还有基于以太网,基于LIN总线,等等,我们这里主要来了解基于CAN总线,因为车上诊断目前大多使用CAN。以为OSI Layer 6是由车厂自定义的,所以必须拿到车厂的文档,才能开发出对应的诊断协议栈。分层结构如下所示:如果要做诊断协议代码,需要熟悉ISO 15765, ISO 14229. 而物理层的ISO 11898可以...
虎年大吉
摘要本篇笔记主要记录基于MPC5744P的MACL和EB开发准备工作。准备工作下载MCAL下载EB工具AUTOSAR简介AUTOSAR(automotive open system architecture)是汽车开放系统架构,目前广泛应用于汽车行业,各大车企,零部件,软件等公司很多都加入了AUTOSAR,成为合作伙伴和会员。AUTOSAR的合作伙伴分为大概五种,核心合作伙伴,包括宝马,博世,福特,通用,大众等,除此之外还有高级合作伙伴,开发合作伙伴,关联合作伙伴,和参与者国内的百度,华为等也是AUTOSAR的高级合作伙伴,像大家熟悉的还有ARM, VECTOR, EB, GreenHiss, Mathworks, 等等。AUTO...
摘要本篇笔记主要记录基于MPC5744P的MACL和EB的开发编译和配置。准备工作准备好一个在EB下配置好的工程,这里以例程为例子来说明安装配置好编译器GreenHills或者其他编译器,这里以GreenHills为例。导入例程打开EB工具,导入例程,点file->import 按照路径导入就可以。我这里已经导入编译工程:生成的配置代码在EB中配置的文件下,这里是工程的output文件夹。这是根据AUTOSAR 4.0.3 生成的代码。将这些代码与上层代码编译就可以使用了,这里就与例程的应用代码一起使用命令行编译。先看一下例程文件夹工具链文件夹toolchains 包含如果工程里没有build...
说实话,以前也用过正版的编译器,我记得之前用过正版的IAR编译器license也没有多贵,而最近用了个10万一个license的编译器编译嵌入式代码,因为对功能安全有要求,而这个Greenhills就是过了功能安全认证的。一般在汽车电子行业用的比较多。工业行业一般都用IAR和MDK。那个license 大家都知道怎么搞。今天就来看下这个GH的集成开发环境和编译器。集成开发环境IDE是MULTI,有不少功能。这个编译器有好多认证,如果产品要过功能安全认证,一般才会选择使用,看网站介绍确实很牛逼,具体深入的还没有研究,但是感觉编辑界面很一般,待后续研究过后来跟...
CAN总线不管是在车上还是在工业控制中用的越来越多,而且也在不断的发张和更新,CAN FD的应用也越来越多,而CAN的测试工具也越来越多,不管是国内的还是国外的,那些年我用过的几天来给大家分享一下VectorVector的工具比较贵,但是车厂一般都认,工具确实做的比较好,上位机功能强大。除过测试还可以用来标定,诊断等,我主要使用过CANape和Canoe以及CANalyzer有不同的侧重点应用。看一下CANape用来做一个简单的can数据帧测试。EControls第二个用过的比较多的是由EControls制造的CANcapture具体的使用之前在公众号也分享过,有兴趣的可以参考如果用好...
物联网的应用越来越多,而一款好的物联网网关设计的好坏,直接影响你的整个体验,今天我们来分享一下一款8层物联网网关核心板,是金手指接口。系统框图如下,核心采用ARM A7核。有多个接口使用。top层bottom层信号层电源层地层约束管理器设置支持的接口包括:带有PMIC,两路CAN,两路以太网,256M DDR3L DRAM,可以扩展至1G,1G的nand flash,可以扩展至4G,4G的eMMC,可以扩展至16G,两路高速USB,两路SDIO,4路SPI,QSPI, UART, SD,PWM等等。可以满足大部分的物联网应用网关需求,核心板连接母板可引出4G,wifi,蓝牙,nfc等接口。目前该板子已经量...
现在基于模型的设计越来越多,也越来越多被接受和开发,并推向量产产品,一般在MATLAB/SIMULINK里面搭好模型,在配合stateflow完成一些详细设计,就可以生成嵌入式代码,直接部署目标板。例如使用stateflow和simulink开发CAN通信协议栈。,完成侯可以编译生成代码,可以看到生成的代码可读性还是很好的,所以建议大家多采用基于模型的设计此外还会生成代码报告,方便检查和评审。基于模型设计已经越来越多的用于新能源汽车,航空航天,工业控制,无线通信等等行业。我都是推荐旁边的同事现在既要会传统开发方式也要会基于模型的设计,大家可能从传统...
这些年用过的调试器其实也不少,JLink,STLink,PEMicro,还有TI的等等,但是劳德巴赫LAUTERBACH这货是用过最贵的,硬件加上软件价格不菲,号称调试器中的贵族,今天我们简单来介绍下摘要本篇笔记主要记录劳德巴赫调试器的应用指导,以LA-3500型号和MPC5744p单片机说明。准备工作准备好trace32软件劳德巴赫调试器LA-3500。安装软件安装trace32软件,配合劳德巴赫调试器使用。打开安装包,双击setup.bat进行安装,一路next,进行安装。安装完成侯在开始菜单可以看到如下图所示的一系列图标打开查看下,license信息。设置CPU下载程序测试,在tools->Pr...
ting就在今天,Arm发布了新一代的Cortex-M处理器,Cortex-M85。简单粗暴的打个比方:Cortex-M85 ≈ Cortex-M7 + TrustZone + Helium(Cortex-M版本的NEON)性能总结:超标量双发射流水线——暴力特色:支持Helium(也就是Cortex-M版本的NEON)可以通过SIMD指令集提供强大的DSP性能。目前已经可以使用的软件支持有:CMSIS-DSP:提供强大的DSP加速库Arm-2D:提供强大的2.5D图形加速能力各类第三方音频库:通过Helium提供数倍的音频加速性能CMSIS-NN:提供强大...
出于好奇,我拆开了那个几万元的劳德巴赫调试器,可以看到板子做工非常精良,布局走线都非常漂亮,用料也是PFGA+PowerPC处理器做主控,一分价钱一分货,这货用料真可以。拧开背面四个螺丝就可以直接打开了。可以看到用了ALTERA的Cyclone IV还有一片ALTERA的ACEX系列,同时用了一片AMCC的 PowerPC架构的PPC405EX处理器。外扩了两片三星的K4T1G164QG DDR芯片。除此之外靠近板边还有一个高速USB芯片。有兴趣的可以研究下这几个棵料。劳德巴赫在汽车行业里用的比较多,因其过了功能安全,所以很多需要过功能安全认证的产品在选工具链的时候都会考虑,...
摘要本篇笔记主要记录基于MBD模型设计的CAN通信步骤和方法。前期工具箱的安装不在本文档讨论范围内。准备工作安装好MPC5744基于模型的工具箱和支持包,这个可以在NXP官网下载按照文档配置编译器和设置路径以及license激活,QSG里面写的很清楚,这里不在赘述。模型设计正确安装MBD工具箱后,在simulink里面可以看到到MPC5744的外设和例程,这里我们参照CAN通信例程来建立名字为T2的模型。建立的模型如下,根据自己的实际修改管脚和参数,这里使用CAN0,编译建立好模型后,编译如果没有错误就可以生成代码,也可以调整代码生成的配置选项。生成的代码C...
摘要本篇笔记主要记录基于MBD模型设计的PWM输出步骤和方法。前期工具箱的安装不在本文档讨论范围内。准备工作安装好MPC5744基于模型的工具箱和支持包,这个可以在NXP官网下载2,按照文档配置编译器和设置路径以及license激活,QSG里面写的很清楚,这里不在赘述。模型设计正确安装MBD工具箱后,在simulink里面可以看到到MPC5744的外设和例程,这里我们设计三相PWM输出来建立名字为PWM的模型,为后续电机控制打下基础,因为三相PWM互补输出可以用来控制电机运转。建立的模型如下,根据自己的实际修改管脚和参数,这里使用PWM0,PWM 配置因为要控制电机...
Freemaster是NXP推出支持电机控制调试的神器,可以方便的控制各种电机调试相信很多调试电机的工程师都使用过本地功能,FreeMaster新版还支持远程操作,今天我们就来试试远程操作,需要开启服务器端和客户端。注意事项FreeMASTER服务器端需连接电路板,用户端进行远程控制。在进行远程控制时服务器端软件FreeMASTER Remote Server和用户端软件FreeMASTER需同时打开。注意,两台电脑必须处于同一局域网下。服务器端1. 将电路板上电并通过PE连接至电脑,打开软件FreeMASTER Remote Server。2. 在软件打开后点击“HTTP”选项,在这一页面中选择“Enable ...
工程师应该如何进阶?软件工程师可能会陷入代码陷阱、而硬件工程师则可能陷入画图、焊接陷阱。你可能会强调一些“吃饭的本领”:我会电路设计、我会单片机、我会C语言、我会用烙铁、我会FPGA、我会抄电路……这些都是单点的技能,大家容易进入“运用专业技能”的舒适区。看似辛苦加班,但是实际上是做一些很多人都能做的重复劳动,用身体上的忙碌掩盖思想上的懒惰。有时甚至沉醉于“代码”、“电路”本身,而忘记我们自己到底要解决什么问题。很多工程师遇到项目中需要运用的技能自己不会,就“犯蹙”;而有的工程师其实碰到“需要运用的技能自己不...
摘要本篇笔记主要记录开源CAN工具BUSMASTER的使用。BUSMASTER介绍BUSMASTER是由ETAS和BOSCH开发的全球开源免费的CAN通讯分析上位机软件,源代码开源,是基于C++软件开发的,功能强大,比国内某功的软件强大很多。BUSMASTER是用于设计,监视,分析和模拟CAN网络的开源PC软件。可以从Github下载BUSMASTER开源软件,由RBEI和ETAS赞助的BUSMASTER软件项目向研究和工业界开放。由发起人管理的项目的开放性提供了有关总线系统,协议和硬件接口的灵活修改和扩展。此外,它将有助于缩短解决方案的后续开发周期。 可以使用免费软件工具(例如Microsoft Visua...
ARM+FPGA+DSP = 一板在手,天下我有。随着嵌入式系统的越来越复杂,我们需要更加强悍性能的板卡来完成产品的开发和设计。本文分享性能超强的ARM+FPGA+DSP异构多核开发板——TMS320C6678 + Zynq-7045的三大经典案例,案例源码免费下载,下方查看详情!(1)基于SRIO的ZYNQ+DSP核间通讯案例(2)基于CameraLink、SDI、PAL的目标追踪视觉方案(3)基于AD9361软件无线电方案图 1案例源码限时公开,长按下方二维码下载!开发板简介TL6678ZH-EVM开发板基于TI KeyStone架构C6000系列TMS320C6678八核C66x定点/浮点DSP,以及Xilinx Zynq-7000系列XC7Z045/XC7Z100 So...
击上方“果果小师弟”,选择“置顶/星标公众号”干货福利,第一时间送达!摘要:在看别人单片机程序时,你也许是崩溃的,因为全局变量满天飞,不知道哪个在哪用了,哪个表示什么,而且编写极其不规范。自己写单片机程序时,也许你也是崩溃的。总感觉重新开启一个项目,之前的写过相似的代码也无法使用,得重新敲,代码重用度不高,编程效率低下,代码无法积累。而且感觉写这个代码没有思想,没有灵魂,没有框架,只是一个一个功能代码的堆砌,很空泛。那么这个时候,你也许应该在单片机中引入面向对象的思想了,使代码更规范。一、单片机程序框架1、...