几分钟就能控制你的车,你知道汽车黑客是怎么做到的吗?
万物互联的时代已经来临,汽车行业的发展也不例外。随着汽车行业逐步进入信息化、智能化、网络化,车载系统也成了消费者选购汽车时主要看中的一项功能。毕竟在驾驶中,车载系统可以说是驾驶员的得力助手。
不过,不少人却对其安全性表示质疑。车辆接入网络,在带来更多驾驶便利的同时,也给了黑客远程攻击的机会。
有人的地方就有江湖,有接口的地方就有黑客
韩剧《你也是人类吗》中,反派头目为了向民众展示了解无人驾驶的危险性,暗地里雇来黑客入侵其自家公司汽车的车载系统,通过电脑获取权限对车辆进行远程控制,将测试者从副驾驶座位中甩下车,造成民众对其技术的不信任。
这样的剧情并不只是出现在荧幕里,早在 2016 年,一位美国公民驾驶着他的 2014 款切诺基,行驶在圣路易斯州的高速公路上时,他的座驾的网络系统突然遭到了网络黑客的攻击。黑客用远程设备控制了该系统,切断了他与外界的联系,随后汽车失控偏离道路,好在没有造成人员伤亡。
而在 2014 年的黑帽亚洲(Black Hat Asia)安全大会上,西班牙安全研究人员贾维尔·瓦兹奎兹-维达尔展示他们打造的一种小型装置,可以利用这种微小的设备入侵车载系统,并且在几分钟内获取他们需要的所有无线控制权。
这个尺寸仅略大于信用卡的电路板,通过四根天线与汽车的控域网连接,从车内电力系统获取能源,随时可以接收远程攻击者通过电脑发出的无线指令,影响从车窗、前灯、方向盘到刹车的所有部件。关键是,这样的装置制作成本仅不到 20 美元。
如此低廉的破解成本并不令人惊奇,早前以色列一家名为卡拉姆巴的汽车联网安全公司(Karamba Security)首席执行官阿米·多坦就表示:「联网汽车每 1800 行代码就会存在一些错误,其中 80% 是安全漏洞。」他还表示,一辆联网汽车和一辆自动驾驶汽车的潜在安全漏洞数目分别为 5000 和 15000。
车联网实现了车与人之间、甚至车与道路之间的高效互联互通与信息共享,同时也为车联网智能决策和优化提供了基础支撑,不少厂商甚至将其具备车联网功能的汽车作为主打的特色卖点。殊不知它也让联网车在信息安全、功能安全及隐私保护等方面,面临着前所未有的严峻挑战。
除了技术安全问题,还有哪些需要改进和突破
车载系统进入大众视野已有数十年的时间,从最原始的单片机逻辑电路,到如今特斯拉复杂的 17 英寸大屏幕。诚然,汽车已经成为了一个装有大规模软件的高度集成化的信息系统,除了安全技术的提高,其他方面的发展也是漫长的。
首先是精准度,传统的导航误差必须精确到 3-5 米之内。对于自动驾驶车而言,其误差更是不得超过 10 厘米才能保证车辆的正常行驶。考虑到当下建设等原因导致城市道路规划和布局时常变化,这就需要高精地图必须要做到时时更新,必要时还需通过云计算将信息进行收集及传播。
其次是车与车之间的交互,随着车联网和自动驾驶的逐步普及,车辆之间的的通讯交互必不可免,这就需要系统能克服足够的无线频段、建立一个成熟的软件维护升级制度等问题、在通讯的同时也注重用户对数据的隐私。
除了技术层面,人们对自动驾驶的信任、事故责任权限不明、政策倾向不明朗等问题也需要跟进。早前的谷歌的无人驾驶小车没有方向盘、没有油门、刹车踏板,导致其很长一段时间内无法被法律法规所界定。
▲谷歌无人驾驶小车「鹌鹑蛋」
直到 2016 年加州机动车管理局就发布了一个关于自动驾驶的草案,要求所有无人车必须有方向盘及一位在驾驶座就坐的司机,并且这名司机必须是持有驾照的合法驾驶者,而这和谷歌的无人驾驶路线相悖。这么看来,技术的进步反而总倒逼着法律去完善啊。
GEEK君有话说
不得不说,功能日益完善的车载系统,也存在信息安全脆弱的一面。汽车外部接口数量和类型不断增多,也使其软件系统受到黑客攻击的概率随之增大,攻击的途径也随着系统的改善日益翻新。汽车厂商在着力产品带来舒适体验的同时,信息安全方面的维护也是刻不容缓的。
▼猛戳左下方「了解更多」,更多精彩就在下方
MCU程序的编写方式,以及各型号单片机的区别和用途
MCU程序的编写方式,以及各型号单片机的区别和用途
单片机的程序编写
MCU的程序的编写与PC下的程序的编写存在很大的区别,虽然现在基于C的MCU开发工具越来越流行,但对于一个高效的程序代码和喜欢使用汇编的设计者来讲,汇编语言仍然是最简洁、最有效的编程语言。
对于MCU的程序编写,其基本的框架可以说是大体一致的,一般分为初始化部分(这是MCU程序设计与PC最大的不同),主程序循环体和中断处理程序三大部分,其分别说明如下:
初始化:对于所有的MCU程序的设计来讲,出世化是最基本也是最重要的一步,一般包括如下内容:
屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望有任何中断发生。
清除系统的RAM区域和显示Memory:虽然有时可能没有完全的必要,但从可靠性及一致性的角度出发,特别是对于防止意外的错误,还是建议养成良好的编程习惯。
阅读累了可以先关注我,不迷路,打开头像关注查看个人主页以及简介,更多优秀内容,叫“林老师”分享给大家
IO口的初始化:根据项目的应用的要求,设定相关IO口的输入输出方式,对与输入口,需要设定其上拉或下拉电阻;对于输出口,则必须设定其出世的电平输出,以防出现不必要的错误。
中断的设置:对于所有项目需要用到的中断源,应该给予开启并设定中断的触发条件,而对于不使用的多余的中断,则必须给予关闭。
其他功能模块的初始化:对于所有需要用到的MCU的外围功能模块,必须按项目的应用的要求进行相应的设置,如UART的通讯,需要设定Baud Rate,数据长度,校验方式和Stop Bit的长度等,而对于Programmer Timer,则必须设置其时钟源,分频数及Reload Data等。
参数的出世化:完成了MCU的硬件和资源的出世化后,接下来就是对程序中使用到的一些变量和数据的初始化设置,这一部分的初始化需要根据具体的项目及程序的总体安排来设计。对于一些用EEPROM来保存项目预制数的应用来讲,建议在初始化时将相关的数据拷贝到MCU的RAM,以提高程序对数据的访问速度,同时降低系统的功耗(原则上,访问外部EEPROM都会增加电源的功耗)。
主程序循环体:大多数MCU是属于长时间不间断运行的,因此其主程序体基本上都是以循环的方式来设计,对于存在多种工作模式的应用来讲,则可能存在多个循环体,相互之间通过状态标志来进行转换。对于主程序体,一般情况下主要安排如下的模块:
计算程序:计算程序一般比较耗时,因此坚决反对放在任何中断中处理,特别是乘除法运算。
显示传输程序:主要针对存在外部LED、LCD Driver的应用。
中断处理程序:中断程序主要用于处理实时性要求较高的任务和事件,如,外部突发性信号的检测,按键的检测和处理,定时计数,LED显示扫描等。
一般情况下,中断程序应尽可能保证代码的简洁和短小,对于不需要实时去处理的功能,可以在中断中设置触发的标志,然后由主程序来执行具体的事务――这一点非常重要,特别是对于低功耗、低速的MCU来讲,必须保证所有中断的及时响应。
对于不同任务体的安排,不同的MCU其处理的方法也有所不同。
例如,对于低速、低功耗的MCU(Fosc=32768Hz)应用,考虑到此类项目均为手持式设备和采用普通的LCD显示,对按键的反应和显示的反应要求实时性较高,应此一般采用定时中断的方式来处理按键的动作和数据的显示;而对于高速的MCU,如Fosc》1MHz的应用,由于此时MCU有足够的时间来执行主程序循环体,因此可以只在相应的中断中设置各种触发标志,并将所有的任务放在主程序体中来执行。
在MCU的程序设计中,还需要特别注意的一点就是:要防止在中断和主程序体中同时访问或设置同一个变量或数据的情况。有效的预防方法是,将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行该数据的相关操作;而在其他的程序体中(主要是中断),对需要进行该数据的处理的地方只设置触发的标志。――这可以保证数据的执行是可预知和唯一的。
在学校里学了这些知识,并没有时间思考这些之间概念之间的区别,一直注重渴望技术的提升,却忘了这些基础才是根本。蹭着在家的这一段时间,准备好好梳理一下之间的关系,这是一个宏大的框架,写下这些,也是因为在求职的时候对于这些涉及到了,加深一下自己的印象吧。不说了,直接入主题吧。
ARM
在嵌入式领域里,ARM本意是微处理器行业的一家知名企业,英国ARM公司是全球领先的半导体知识产权提供商。全球超过95%的智能手机采用ARM架构,ARM设计了大量的高性价比、耗能低的精简指令集计算(RISC)处理器。这里的ARM指的是处理器。处理器也是CPU的意思,所以ARM处理器就是CPU的意思。ARM公司不生产芯片、生产CPU.是一个32位精简指令集处理器架构,ARM处理器包含以下几个系列的处理器产品以及其它厂商实现的基于ARM体系结构的处理器。如ARM7 系列、ARM9系列、ARM9E系列、ARM10E系列等等。这些处理器广泛应用于实时嵌入式应用,如存储设备、汽车、工业和网络设备。
STM32
上面说了ARM处理器核当前ARM7、ARM9、ARM9E、ARM10E、SecurCore以及最新的ARM11系列。而STM32使用的其中的Cortex-M3内核。当时由于arm7能效低,arm9的硬件和编程过于复杂。为了满足消费电子的需求而改进arm7,代号为cortex -m,这样st或nxp等产家以这个新的核心来加自己的外设就得到了stm32或lpc系列的单片机了。可以清楚得到stm32是基于ARM Cortex-M3内核的,但不属于ARM。因为ARM公司只提供了处理器,st(意法半导体)还有nxp(恩智浦半导体)厂家以此内核为核心添加外设得到了stm32或lpc系列单片机。只能说stm32是基于ARM Cortex -M3内核的,但是不属于ARM。ARM Cortex-M3内核具有高性能、低成本、低功耗等特点,属于ARM7架构中的一员。
51单片机
谈谈51单片机与stm32单片机的区别,先介绍一下,什么是单片机。单片机全称单片微型计算机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件。在我们个人电脑中CPU、RAM、ROM、I/O这些都是单独的芯片,然后这个芯片被安装一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在一个芯片上而已。
51单片机是对所有兼容Intel8031指令系统的单片机的统称,这一系列的单片机的始祖是Intel的8031单片机,后来随着flash ROM技术的发展,8031单片机取得了长足的进展成为了应用最广泛的8bit单片机之一,他的代表型号是ATMEL公司的AT89系列。STM32单片机则是ST(意法半导体)公司使用arm公司的cortex-M为核心生产的32bit系列的单片机,它的内部资源(寄存器和外设功能)较8051、AVR和PIC都要多的多,基本接近于计算机的CPU了,适用于手机、路由器等等。
开发板与单片机的区别
经过之前的总结,ARM处理器内核加上外设模块(如UART、IIC)组成了芯片(如STM32),也就是单片机,单片机芯片再加上
一些常用的电子器件构成的电路板便是开发板。方便初学者使用,上面常用的外设有led灯、数码管、独立按键、矩阵按键、液晶显示屏、红外线接收头等。而单片机只是上面的核心芯片。
相关问答
汽车单片机 是什么?单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难...
谁能告诉我 汽车 ECU怎么编 程序 _汽配人问答[最佳回答]一般厂家都有自己的适配器,也就是电脑接口和加密装置,用来读写ecu和传感器信号!其实就是一个或数个单片机的读写。单片机也被称为微控制器(Microco...
汽车 发动机 单片机 我们通常称为什么?单片机:单片微型计算机,国际上标准叫法——微控制器(MCU),是将CPU、RAM、ROM、I/O口、串口、SPI口,以及其他一些外设如定时/计数器、控制器集成到一块芯片...
关于 单片机 读取 汽车 CAN数据的问题!明白人进?是的,通过CAN、SPI、IIC、UART等得到的基础数据都是Byte,最终为何种数据类型,需要根据双机之间通讯协议来组合。是的,通过CAN、SPI、IIC、UART等得到的基础数...
单片机 可分为商用,工业用, 汽车 用以及军用产品,它们的使用温度范围各为多少?按温度适应能力及可靠性分为四类:商业级(0~70摄氏度)、工业级(-40~85摄氏度)、汽车级(-40~120摄氏度)军工级(-55~150摄氏度)一般区分都是按芯片型号的后...按...
mcu是什么意思车上的[回答]汽车mcu就是电机控制单元(查成交价|参配|优惠政策),也就是控制电机动作的模块。MCU,即微控制器,相当于人脑,控制着汽车内所有的电子系统,如多媒体、...
汽车 电子技术学哪些东西?课程体系《汽车构造》、《汽车电子控制技术》、《汽车电力驱动技术》、《汽车故障检测与诊断技术》、《汽车影音技术》、《单片机应用技术》、《电气控制》、...
汽车 智能技术专业就业方向?汽车智能技术专业的毕业生面向汽车制造、汽车维修、汽车销售企业,以及汽车电器与电子产品生产企业和售后服务企业,从事汽车智能化技术的检测、维修与技术服务...
5 汽车 电子技术是干啥的?汽车电子技术专业主要是研究电工电子技术、汽车发动机电控系统检测、汽车单片机与总线技术、汽车空调检修等方面的基础知识和技能,在汽车电子技术领域进行汽车...
单片机 学习方法 单片机 学习技巧 - 汽车维修 技术网[回答]qcwx_s2()