如何选择合适的蓝牙模块

如何选择合适的蓝牙模块,第1张

低功耗蓝牙,也可称其为智能蓝牙,一开始是蓝牙4.0核心规格的一部分。在被蓝牙技术联盟采纳前,它是由诺基亚所设计的一项短距离无线通讯技术,其最初的目标是提供功耗最低的无线标准,并且专门在低成本、低带宽、低功耗与低复杂性方面进行了优化。这些设计目标在核心规格中得以显现:低功耗蓝牙正努力成为一项专为半导体制造商以及低功耗、低成本实际应用所设计的低功耗标准。目前,低功耗蓝牙技术已被广泛使用,并且只需一粒纽扣电池就能运行很长时间。

低功耗蓝牙选型要点:

1、传输速率

传输速率通常是设计人员首要考虑的,因为它关系到传送的信息类型。因此在进行蓝牙模块选型的时候务必要清楚蓝牙模块的应用,并以工作状态下所需要的数据传输速率为选型标准,毕竟把高质量音乐传送到耳机所需的数据速率,与心跳监护仪所需的数据速率有着很大的差别。

2、传输距离

传输距离也是一个重要的考虑因素,当然距离越远越好,SKB369的传输距离可以达到30米。

3、功耗

功耗主要由传输速率和距离来决定。一般蓝牙设备通过电池供电,功耗的高低直接决定着产品的续航能力。

4、芯片

芯片决定着蓝牙模块的运算能力,没有一颗强劲的“ 芯 ”,蓝牙模块的性能无法保证。

5、接口

蓝牙模块的接口分为串行、USB、数字I/O口、模拟I/O口、SPI及语音类的接口等等,如果只是数据传输,采用串行接口(TTL电平)就好了。

6、工作模式

蓝牙工作的时候,一般分为主、从端,一个主端最多可以与7个从端通讯,但只能点对点通信。

AT89C2051

89C2051是由ATMEL公司推出的一种小型单片机。95年出现在中国市场。其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受,其程序的电可擦写特性,使得开发与试验比较容易。

89C2051共有20条引脚,详见图1从图中可见,2051继承了8031最重要引脚:
P1口共8脚,准双向端口。

P30~P36共7脚,准双向端口,并且保留了全部的P3的第二功能,如P30、P31的串行通讯功能,P32、P33的中断输入功能,P34、P35的定时器输入功能。

在引脚的驱动能力上面,89C2051具有很强的下拉能力,P1,P3口的下拉能力均可达到20mA相比之下,89C51/87C51的端口下拉能力每脚最大为15mA。但是限定9脚电流之和小于71mA这样,引脚的平均电流只9mA。89C2051驱动能力的增强,使得它可以直接驱动LED数码管。

为了增加对模拟量的输入功能,2051在内部构造了一个模拟信号比较器,其输入端连到P10和P11口,比较结果存入P36对应寄存器,(P36在2051外部无引脚),原理见图2。

对于一些不大复杂的控制电路我们就可以增加少量元件来实现,例如,对温度的控制,过压的控制等。
图3为测量示意图。其中,R用于测量门限的调节,IN端接输入模拟信号。

2 电源

89C2051有很宽的工作电源电压,可为27~6V,当工作在3V时,电流相当于6V工作时的1/4。89C2051工作于12Hz时,动态电流为55mA,空闲态为1mA,掉电态仅为20nA。这样小的功耗很适合于电池供电的小型控制系统。

3 存储器

89C2051片内含有2k字节的Flash程序存储器,128字节的片内RAM,与80C31内部完全类似。由于2051内部设计全静态工作,所以允许工作的时钟为0~20MHz,也就是说,允许在低速工作时,不破坏RAM内容。相比之下,一般8031对最低工作时钟限制为35MHz,因为其内部的RAM是动态刷新的。89C2051不允许构造外部总线来扩充程序/数据存储器,所以它也不需要ALEPSEN、RD、WR一类的引脚。

4内部I/O控制

89C2051在内部I/O控制上继承了MCS51的特性:

5路2级优待中断,串等口,2路定时器/计数器,内部组成参见图4。
AT89C2051
at89c2051是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大at89c2051单片机可为您提供许多高性价比的应用场合。

程序保密

89C2051设计有2个程序保密位,保密位1被编程之后,程序存储器不能再被编程除非做一次擦除,保密位2被编程之后,程序不能被读出。

软硬件的开发

89C2051可以采用下面2种方法开发应用系统。

(1) 由于89C2051内部程序存贮器为Flash,所以修改它内部的程序十分方便快捷,只要配备一个可以编程89C2051的编程器即可。调试人员可以采用程序编辑-编译-固化-插到电路板中试验这样反复循环的方法,对于熟练的MCS-51程序员来说,这种调试方法并不十分困难。当做这种调试不能够了解片内RAM的内容和程序的走向等有关信息。

(2) 将普通8031/80C31仿真器的仿真插头中P10~P17和P30~P36引出来仿真2051,这种方法可以运用单步、断点的调试方法,但是仿真不够真实,比如,2051的内部模拟比较器功能,P1口、P3口的增强下拉能力等等。

主要性能:

和MCS-51产品兼容;

2KB可重编程FLASH存储器(1000次);

27-6V电压范围;

全静态工作:0Hz-24KHz

2级程序存储器保密锁定

1288位内部RAM

15条可编程I/O线

两个16位定时器/计数器

6个中断源

可编程串行通道

高精度电压比较器(P10,P11,P36)

直接驱动LED的输出端口
红外线热释电传感器

 主要是由一种高热电系数的材料,如锆钛酸铅系陶瓷、钽酸锂、硫酸三甘钛等制成尺寸为21mm的探测元件。在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。为了提高探测器的探测灵敏度以增大探测距离,一般在探测器的前方装设一个菲涅尔透镜,该透镜用透明塑料制成,将透镜的上、下两部分各分成若干等份,制成一种具有特殊光学系统的透镜,它和放大电路相配合,可将信号放大70分贝以上,这样就可以测出10~20米范围内人的行动。

菲涅尔透镜利用透镜的特殊光学原理,在探测器前方产生一个交替变化的“盲区”和“高灵敏区”,以提高它的探测接收灵敏度。当有人从透镜前走过时,人体发出的红外线就不断地交替从“盲区”进入“高灵敏区”,这样就使接收到的红外信号以忽强忽弱的脉冲形式输入,从而强其能量幅度。

人体辐射的红外线中心波长为9~10--um,而探测元件的波长灵敏度在02~20--um范围内几乎稳定不变。在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7~10--um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。

被动式热释电红外探头的工作原理及特性: 人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是靠探测人体发射的10UM左右的红外线而进行工作的。人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。

1)这种探头是以探测人体辐射为目标的。所以热释电元件对波长为10UM左右的红外辐射必须非常敏感。

2)为了仅仅对人体的红外辐射敏感,在它的辐射照面通常覆盖有特殊的菲泥尔滤光片,使环境的干扰受到明显的控制作用。

3)被动红外探头,其传感器包含两个互相串联或并联的热释电元。而且制成的两个电极化方向正好相反,环境背景辐射对两个热释元件几乎具有相同的作用,使其产生释电效应相互抵消,于是探测器无信号输出。

4)一旦人侵入探测区域内,人体红外辐射通过部分镜面聚焦,并被热释电元接收,但是两片热释电元接收到的热量不同,热释电也不同,不能抵消,经信号处理而报警。

5)菲泥尔滤光片根据性能要求不同,具有不同的焦距(感应距离),从而产生不同的监控视场,视场越多,控制越严密。

被动式热释电红外探头的优缺点:

优点:

本身不发任何类型的辐射,器件功耗很小,隐蔽性好。价格低廉。

缺点:

◆容易受各种热源、光源干扰

◆被动红外穿透力差,人体的红外辐射容易被遮挡,不易被探头接收。

◆易受射频辐射的干扰。

◆环境温度和人体温度接近时,探测和灵敏度明显下降,有时造成短时失灵。

抗干扰性能:

1。防小动物干扰

探测器安装在推荐地使用高度,对探测范围内地面上地小动物,一般不产生报警。

2。抗电磁干扰

探测器的抗电磁波干扰性能符合GB10408中461要求,一般手机电磁干扰不会引起误报。

3。抗灯光干扰

探测器在正常灵敏度的范围内,受3米外H4卤素灯透过玻璃照射,不产生报警。

红外线热释电传感器的安装要求:

红外线热释电人体传感器只能安装在室内,其误报率与安装的位置和方式有极大的关系。正确的安装应满足下列条件:

1。红外线热释电传感器应离地面20-22米。

2。红外线热释电传感器远离空调, 冰箱,火炉等空气温度变化敏感的地方。

3。红外线热释电传感器探测范围内不得隔屏、家具、大型盆景或其他隔离物。

4。红外线热释电传感器不要直对窗口,否则窗外的热气流扰动和人员走动会引起误报,有条件的最好把窗帘拉上。红外线热释电传感器也不要安装在有强气流活动的地方。

红外线热释电传感器对人体的敏感程度还和人的运动方向关系很大。红外线热释电传感器对于径向移动反应最不敏感, 而对于横切方向 (即与半径垂直的方向)移动则最为敏感 在现场选择合适的安装位置是避免红外探头误报、求得最佳检测灵敏度极为重要的一环。
片机攻击技术
目前,攻击单片机主要有四种技术,分别是:

(1)软件攻击

该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMEL AT89C 系列单片机的攻击。攻击者利用了该系列单片机擦除 *** 作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的 *** 作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。

(2) 电子探测攻击

该技术通常以高时间分辨率来监控处理器在正常 *** 作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。

(3)过错产生技术

该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误 *** 作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。

(4)探针技术

该技术是直接暴露芯片内部连线,然后观察、 *** 控、干扰单片机以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特别危险的,但是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。

大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。
毕业设计说明书(论文)中文摘要

盗窃、入室抢劫等刑事案件的多发使得人们越来越渴望有一个安全生活的空间。传统的防盗门窗越来越不能满足人们日常防范的要求,因此人们迫切需要一种智能型的家庭安全防范报警系统。对市场上出现的各种报警装置进行了研究之后,发现利用单片机实现报警具有体积小、价格低、集成度高等突出优点,利用单片机来开发防盗系统能使系统易于 *** 作,且花费较小,因而具有广泛的应用性。该设计以单片机AT89C2051为核心,作为控制器件。采用喇叭发声作为报警装置。并辅之一些外围器件,用C语言控制单片机来完成报警系统的设计。整个报警系统由电源、单片机控制部分、命令控制部分以及报警装置等四部分组成。并且采取了一些硬件及软件的抗干扰措施,提高了系统的可靠性。

关键词 报警控制 单片机 C语言
毕业设计说明书(论文)外文摘要

Title Design Of Alarm System Based on MCU

Abstract

People more and more hope a safely living space for the increasing crime of embezzling and looting Because conventional security doors and windows can’t meet people’s routing guard more and more,people urgently need a kind of intelligent alarm system in their houses After researching many different kinds of alarm systems in the market, discovering that design alarm systems by MCU have strong points such as smart、low price、high integrated level and so onUsing MCU to develop alarm system can made the system operated easily and cost lower,so it can be widely usedThe design use AT89C2051 as the core department and the control component Adopting a horn as a alarm unitAnd adding some other components, using C language to control the MCU to complete the system alarmThe whole alarm system is made up by the power source、MCU controller、command control part and alarm unitMoreover by taking some hardware and software antijamming measures can raise the systems’ dependabilities

Keywords alarm control MCU C language
资料来源:>一,资料查询类网站 1 大学生电子设计联盟 >芯片 离线开关
输出电压:700V
输出通道数字:1
封装类型:双列直插
针脚数:7
工作温度范围:-40°C 到 +150°C
SVHC(高度关注物质):No SVHC (19-Dec-2011)
器件标号:278
封装形式:DIP
封装类型:DIP
工作温度敏:-40°C
工作温度最高:150°C
控制器类型:脉宽调制
电源电压 最大:265V
电源电压 最小:85V
表面安装器件:通孔安装
频率:132kHz
外围电路不知道怎么弄上来~有方法联系我吗?

蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块、蓝牙音频模块、蓝牙音频+数据二合一模块等等,模块具有半成品的属性,是在芯片的基础上进行过加工,以使后续应用更为简单。像SKYLAB的BLE42/50蓝牙模块SKB369/BLE50蓝牙模块SKB501是属于数据传输模块,仅支持数据传输,不支持音频传输。
一般蓝牙主要用于短距离的数据交互,其具有低功耗、便宜、低延迟等特点,但其缺点依然不能忽视,由于其数据传输速率为1Mbps,无法传输大数据内容,因此在可穿戴设备,虚拟和增强现实、高性能HID控制器、智能家居和工业以及IoT物联网设备中应用极为广泛。

原文链接:网页链接

我是1999年上的大学,物理专业。在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这一切都离不开在校时学到的基础技能(数学、IT、电子电路)、受过煅炼的自学能力。

所以,各位正在迷茫的在校生,各位正在尝试转行的程序员,未来一定有你的位置,是好是坏取决于你当下的努力与积累。

我不能预言几年后什么行业会热门,也不能保证你照着本文学习可以发财。我只是一个有十几年经验的程序员,给对编程有兴趣的你,提供一些建议。

1程序员的三大方向

程序员的方向,一般可以分为3类:专业领域、业务领域、 *** 作系统领域。你了解它们后,按兴趣选择吧。

对于专业领域,我提供不了建议。

业务,也就是应用程序,它跟 *** 作系统并不是截然分开的:

①开发实体产品时,应用程序写得好的人,有时候需要 *** 作系统的知识,比如调度优先级的设置、知道某些函数可能会令进程休眠。

②写应用程序的人进阶为系统工程师时,他需要从上到下都了解,这时候就需要有 *** 作系统领域的知识了,否则,你怎么设计整个系统的方案呢?

③做应用程序的人,需要了解行业的需求,理解业务的逻辑。所以,当领导的人,多是做应用的。一旦钻入了某个行业,很难换行业。

④而 *** 作系统领域,做好了这是通杀各行业:他只负责底层系统,在上面开发什么业务跟他没关系。这行很多是技术宅,行业专家。

⑤ *** 作系统和业务之间并没有一个界线。有 *** 作系统经验,再去做应用,你会对系统知根知底,碰到问题时都有解决思路。有了业务经验,你再了解一下 *** 作系统,很快就可以组成一个团队自立门户,至少做个CTO没问题。

11 专业领域

它又可以分为下面2类。

111 学术研究

比如语音、图像处理、人工智能,这类工作需要你有比较强的理论知识,我倾向于认为这类人是“科学家”,他们钻研多年,很多时候是在做学术研究。

在嵌入式领域,需要把他们的成果用某种算法表达出来,针对某种芯片进行优化,这部分工作也许有专人来做。

112 工程实现

也有这样一类人,他们懂得这些专业领域的概念,但是没有深入钻研。可以使用各类开源资料实现某个目标,做出产品。比如图像处理,他懂得用opencv里几百个复杂函数来实现头像识别。有时候还可以根据具体芯片来优化这些函数。

“专业领域”不是我的菜,如果你要做这一块,我想最好的入门方法是在学校学习研究生、博士课程。

12 业务领域

换句话说,就是应用程序,这又可以分为下面2类。

121 界面显示

做产品当然需要好的界面,但是,不是说它不重要,是没什么发展后劲。

现在的热门词是Android APP和IOS APP开发。你不要被Android、IOS两个词骗了,它们跟以前的VC、VB是同一路货色,只是、仅仅是一套GUI控件的实现。

希望没有冒犯到你,我有理由。

一个程序需要有GUI界面,但是程序的内在逻辑才是核心。Android、IOS的开发工具给我们简化了GUI的开发,并提供了这些控件的交互机制,封装并提供了一些服务(比如网络传输)。但是程序内部的业务逻辑、对视频图像声音的处理等等,这才是核心。另外别忘了服务器那边的后台程序:怎样更安全地保存数据、保护客户的隐私,怎样处理成千上万上百万的并发访问,等等,这也是核心。

但是,从Android、IOS APP入门入行,这很快!如果你是大四,急于找到一份工作,那么花上1、2个月去学习Android或IOS,应该容易找到工作,毕竟APP的需求永远是最大的,现在这两门技术还算热门。在2011、2012年左右,Android程序员的起薪挺高,然后开始下滑。Android APP的入门基本只要1个月,所以懂的人也越来越多。2013、2014年,IOS开发的工资明显比Android高了,于是各类IOS培训也火曝起来。中华大地向来不缺速成人才,估计再过一阵子IOS工程师也是白菜价了。

会Android、IOS只是基本要求,不信去51job搜搜Android或IOS,职位要求里肯定其他要求。

122 业务逻辑

举个简单例子,做一个打卡软件,你需要考虑这些东西:

①正常流程是上班下班时都要打卡

②有人忘记了怎么办?作为异常记录在案,推送给管理员

③请假时怎么处理?

④加班怎么处理?

对于更复杂的例子,视频会议系统里,各个模块怎么对接,各类协议怎么兼容,你不深入这个行业,你根本搞不清楚。

应用开发的职位永远是最多的,入门门槛也低。基本上只要你会C语言,面试时表现比较得体,一般公司都会给你机会。因为:

①你进公司后,还需要重新培训你:熟悉它们的业务逻辑。

②你要做的,基本也就是一个个模块,框架都有人给你定好了,你去填代码就可以了。

说点让你高兴的事:软件公司里,做领导的基本都是写应用程序的(当然还有做市场的)。写应用程序的人,对外可以研究市场接待客户,对内可以管理程序员完成开发,不让他做领导让谁做?

如果你的志向是写应用程序,那么我建议你先练好基本功:数据结构、算法是必备,然后凭兴趣选择数据库、网络编程等等进行深入钻研。

最后,选择你看好的、感兴趣的行业深耕个10年吧。做应用开发的人选择了某个行业,后面是很难换行业的,选行很重要!

13 *** 作系统领域

UCOS太简单,VxWorks太贵太专业,Windows不玩嵌入式了,IOS不开源,所以对于 *** 作系统领域我们也只能玩Linux了。

在嵌入式领域Linux一家独大!

Android呢?Android跟QT一样,都是一套GUI系统。只是Google的实力太强了,现在Android无处不在,所以很多时候Linux+Android成了标配。注意,在这里我们关心的是Android的整个系统、里面的机制,而不是学习几个API然后开发界面程序。 *** 作系统领域所包含的内容,简单地说,就是制作出一台装好系统的专用“电脑”,可以分为:

①为产品规划硬件:

按需求、性能、成本选择主芯片,搭配周边外设,交由硬件开发人员设计。

②给单板制作、安装 *** 作系统、编写驱动

③定制维护、升级等系统方案

④还可能要配置、安装Android等GUI系统:

⑤为应用开发人员配置开发环境

⑥从系统角度解决疑难问题

这个领域,通常被称为“底层系统”或是“驱动开发”。

先解决2个常见误区:

①这份工作是写驱动程序吗?

看看上面罗列的6点,应该说,它包含驱动开发,但远远不只有驱动开发。

②我们还需要写驱动吗?不是有原厂吗?或者只需要改改就可以?

经常有人说,芯片原厂都做好驱动了,拿过来改改就可以了。如果,你的硬件跟原厂的公板完全一样,原厂源码毫无BUG,不想优化性能、削减成本,不想做一些有特色的产品,那这话是正确的。

但是在这个不创新就是找死的年代,可能吗?!原因有二:

①即使只是修改代码,能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干驱动程序。

②很多时候,需要你深度定制系统。

以前做联发科手机只需要改改界面就可以出货了,现在山寨厂一批批倒下。大家都使用原厂的方案而不加修改时,最后只能拼成本。

举个例子,深圳有2家做交通摄像头、监控摄像头的厂家,他们曾经找我做过4个项目:

①改进厂家给的SD卡驱动性能,使用DMA。

②换了Flash型号后,系统经常出问题,需要修改驱动BUG。

③触摸屏点击不准,找原因,后来发现是旁路电容导致的。

④裁减成本,把4片DDR换为2片DDR,需要改bootloader对DDR的初始化。

这些项目都很急,搞不定就无法出货,这时候找原厂?除非你是中兴华为等大客户,否则谁理你?

我在中兴公司上班时,写驱动的时间其实是很少的,大部分时间是调试:系统调优,上帮APP工程师、下帮硬件工程师查找问题。我们从厂家、网上得到的源码,很多都是标准的,当然可以直接用。但是在你的产品上也许优化一下更好。比如我们可以把摄像头驱动和DMA驱动揉合起来,让摄像头的数据直接通过DMA发到DSP去。我们可以在软件和硬件之间起桥梁作用,对于实体产品,有可能是软件出问题也可能是硬件出问题,一般是底层系统工程师比较容易找出问题。

当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。

在 *** 作系统领域,对知识的要求很多:

①懂硬件知识才能看懂电路图

②英文好会看芯片手册

③有编写、移植驱动程序的能力

④对 *** 作系统本身有一定的理解,才能解决各类疑难问题

⑤理解Android内部机制

⑥懂汇编、C语言、C++、JAVA

它绝对是一个大坑,没有兴趣、没有毅力的人慎选。

①这行的入门,绝对需要半年以上,即使全天学习也要半年。

②它的职位,绝对比APP的职位少

③并且你没有1、2年经验,招你到公司后一开始你做的还是APP。

优点就是:

①学好后,行业通杀,想换行就换行;想自己做产品就自己做产品。

②相比做应用程序的人,不会被经常变动的需求搞得天天加班。

③门槛高,当然薪水相对就高。

*** 作系统领域,我认为适合于这些人:

①硬件工程师想转软件工程师,从底层软件入门会比较好

②单片机工程师,想升级一下。会Linux底层的人肯定会单片机,会单片机的人不一定会Linux。

③时间充足的学生:如果你正读大二大三,那么花上半年学习嵌入式Linux底层多有益处。

④想掌握整个系统的人,比如你正在公司里写APP,但是想升为系统工程师,那么底层不得不学。

⑤想自己创业做实体产品的工程师,你有钱的话什么技术都不用学,但是如果没钱又想做产品,那么Linux底层不得不学。

⑥做Linux APP的人,没错,他们也要学习。

这部分人不需要深入,了解个大概就可以:bootloader是用来启动内核,Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链,有这些概念就可以了

本文中,就把 *** 作系统默认为Linux,讲讲怎么学习嵌入式Linux+Android系统。

14 嵌入式Linux+Android系统包含哪些内容

嵌入式Linux系统包含哪些东西?不要急,举一个例子你就知道了。

①电脑一开机,那些界面是谁显示的?

是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。

类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。

②启动windows的目的是什么?

当然运行应用程序以便上网、聊天什么的了。

这些上网程序、聊天程序在哪?

在C盘、D盘上。

所以,windows要先识别出C盘、D盘。在Linux下我们称之为根文件系统。

③windows能识别出C盘、D盘,那么肯定有读写硬盘的能力。

这个能力我们称之为驱动程序。当然不仅仅是 *** 作硬盘,还有网卡、USB等等其他硬件。嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。

简单地说,嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。而应用程序,我们又可以分为:C/C++、Android。

所以,嵌入式Linux+Android系统包含以下6部分内容:

①bootloader

②Linux内核

③驱动程序

④使用C/C++编写的应用程序

⑤Android系统本身

⑥Android应用程序

Android跟Linux的联系实在太大了,它的应用是如此广泛,学习了Linux之后没有理由停下来不学习Android。在大多数智能设备中,运行的是Linux *** 作系统;它上面要么安装有Android,要么可以跟Android手机互联。现在,Linux+Android已成标配。

2 怎么学习嵌入式Linux *** 作系统

本文假设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。

在实际工作中,我们从事的是“ *** 作系统”周边的开发,并不会太深入学习、修改 *** 作系统本身。

① *** 作系统具有进程管理、存储管理、文件管理和设备管理等功能,这些核心功能非常稳定可靠,基本上不需要我们修改代码。我们只需要针对自己的硬件完善驱动程序

②学习驱动时必定会涉及其他知识,比如存储管理、进程调度。当你深入理解了驱动程序后,也会加深对 *** 作系统其他部分的理解

③Linux内核中大部分代码都是设备驱动程序,可以认为Linux内核由各类驱动构成

但是,要成为该领域的高手,一定要深入理解Linux *** 作系统本身,要去研读它的源代码。

在忙完工作,闲暇之余,可以看看这些书:

①赵炯的《linux内核完全注释》,这本比较薄,推荐这本。他后来又出了《Linux 内核完全剖析》,太厚了,搞不好看了后面就忘记前面了。

②毛德 *** 、胡希明的《LINUX核心源代码情景分析》,此书分上下册,巨厚无比。当作字典看即可:想深入理解某方面的知识,就去看某章节。

③其他好书还有很多,我没怎么看,没有更多建议

基于快速入门,上手工作的目的,您先不用看上面的书,先按本文学习。

21 入门路线图

假设您是零基础,我们规划了如下入门路线图。前面的知识,是后面知识的基础,建议按顺序学习。每一部分,不一定需要学得很深入透彻,下面分章节描述。

22 学习驱动程序之前的基础知识

221 C语言

只要是理工科专业的,似乎都会教C语言。我见过很多C语言考试90、100分的,一上机就傻了,我怀疑他们都没在电脑上写过程序。

理论再好,没有实践不能干活的话,公司招你去干嘛?

反过来,实践出真知,学习C语言,必须练练练、写写写!

当你掌握基本语法后,就可以在电脑上练习一些C语言习题了;

当你写过几个C程序后,就可以进入下一阶段的裸机开发了。

①不需要太深入

作为快速入门,只要你会编写“Hello, world!”,会写冒泡排序,会一些基础的语法 *** 作,暂时就够了。

指针 *** 作是重点,多练习;

不需要去学习过多的数据结构知识,只需要掌握链表 *** 作,其他不用学习,比如:队列、二叉树等等都不用学;不需要去学习任何的函数使用,比如文件 *** 作、多线程编程、网络编程等等;这些知识,在编写Linux应用程序时会用,但是在 *** 作系统特别是驱动学习时,用不着!

永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。

在后续的“裸机开发”中,会让你继续练习C语言,那会更实战化。

C语言是在写代码中精进的。

②可以在Visual Studio下学习,也可以在Linux下学习,后者需要掌握一些编译命令,我们暂时没有提供C语言的教程,找一本C语言书,网上找找免费的C语言视频(主要看怎么搭建环境),就可以自学了。

222 PC Linux基本 *** 作:

对于PC Linux,我们推荐使用Ubuntu,在它上面安装软件非常简便。

我们的工作模式通常是这样:在Windows下阅读、编写代码,然后把代码上传到PC Linux去编译。实际上,Ubuntu的桌面系统已经很好用了,我们拿到各种智能机可以很快上手,相信Ubuntu的桌面系统也可以让你很快上手。为了提高工作效率,我们通常使用命令行来 *** 作Ubuntu。

不用担心,你前期只需要掌握这几条命令就可以了,它们是如此简单,我干脆列出它们:

①cd : Change Directory(改变目录)

cd 目录名          // 进入某个目录cd            // cd “两个点”:返回上一级目录cd -             // cd “短横”:返回上一次所在目录

②pwd : Print Work Directory(打印当前目录 显示出当前工作目录的绝对路径)

③mkdir : Make Directory(创建目录)

mkdir abc         // 创建文件夹abc
mkdir -p a/b/c    // 创建文件夹a,再a下创建文件夹b,再在b下创建文件夹c

④rm : Remove(删除目录或文件)

rm  file     // 删除名为file的文件
rm -rf dir   // 删除名为dir的目录

⑤ls : List(列出目录内容)

⑥mount : 挂载

mount -t nfs -o nolock,vers=2 1921681123:/work/nfs_root /mnt
mount -t yaffs /dev/mtdblock3 /mnt

⑦chown : Change owner(改变文件的属主,即拥有者)

chown book:book /work -R  //对/work目录及其下所有内容,属主改为book用户,组改为book

⑧chmod : Change mode(改变权限),下面的例子很简单粗暴

chmod 777 /work -R  // 对/work目录及其下所有内容,权限改为可读、可写、可执行

⑨vi : Linux下最常用的编辑命令,使用稍微复杂,请自己搜索用法。

要练习这些命令,你可以进入Ubuntu桌面系统后,打开终端输入那些命令;或是用SecureCRT、putty等工具远程登录Ubuntu后练习。

223 硬件知识

我们学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册;不求能设计原理图,更不求能设计电路板。

对于正统的方法,你应该这样学习:

①学习《微机原理》,理解一个计算机的组成及各个部件的交互原理。

②学习《数字电路》,理解各种门电路的原理及使用,还可以掌握一些逻辑运算(与、或等)。

③《模拟电路》?好吧,这个不用学,至少我在工作中基本用不到它,现在全忘光了。

就我个人经验来说,这些课程是有用的,但是:

①原理有用,实战性不强。

比如《微机原理》是基于x86系统,跟ARM板子有很大差别,当然原理相通。

我是在接触嵌入式编程后,才理解了这些课程。

②每本书都那么厚,内容都很多,学习时间过长,自学有难度。

针对这些校园教材的不足,并结合实际开发过程中要用到的知识点,我们推出了《学前班_怎么看原理图》的系列视频:

学前班第1课第1节___怎么看原理图之GPIO和门电路wmv

学前班第1课第21节_怎么看原理图之协议类接口之UARTwmv

学前班第1课第22节_怎么看原理图之协议类接口之I2Cwmv

学前班第1课第23节_怎么看原理图之协议类接口之SPIwmv

学前班第1课第24节_怎么看原理图之协议类接口之NAND Flashwmv

学前班第1课第25节_怎么看原理图之协议类接口之LCDwmv

学前班第1课第3节___怎么看原理图之内存类接口wmv

学前班第1课第41节_怎么看原理图之分析S3C2410开发板wmv

学前班第1课第42节_怎么看原理图之分析S3C2440开发板wmv

学前班第1课第43节_怎么看原理图之分析S3C6410开发板wmv

即使你只具备初中物理课的电路知识,我也希望能通过这些视频,让你可以看懂原理图,理解一些常见的通信协议;如果你想掌握更多的硬件知识,这些视频也可以起个索引作用,让你知道缺乏什么知识。

这些视频所讲到的硬件知识,将在《裸板开发》系列视频中用到,到时可以相互对照着看,加深理解。

224 要不要专门学习Windows下的单片机开发

很多学校都开通了单片机的课程,很多人都是从51单片机、AVR单片机,现在比较新的STM32单片机开始接触嵌入式领域,并且使用Windows下的开发软件,比如keil、MDK等。

问题来了,要不要专门学习Windows下的单片机开发?

①如果这是你们专业的必修课,那就学吧

②如果你的专业跟单片机密切相关,比如机械控制等,那就学吧

③如果你只是想从单片机入门,然后学习更广阔的嵌入式Linux,那么放弃在Windows下学习单片机吧!

理由如下:

①Windows下的单片机学习,深度不够

Windows下有很好的图形界面单片机开发软件,比如keil、MDK等。

它们封装了很多技术细节,比如:

你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的;

你可以编写中断处理函数,但是却不知道它是怎么被调用的;

你不知道程序怎么从Flash上被读入内存;

也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪;

当你想裁剪程序降低对Flash、内存的使用时,你无从下手;

当你新建一个文件时,它被自动加入到工程里,但是其中的机理你完全不懂;

等等等。

②基于ARM+Linux裸机学习,可以学得更深,并且更贴合后续的Linux学习。实际上它就是Linux下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程,需要你自己来管理。

在工作中,我们当然倾向于使用Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质。

一切从零编写代码、管理代码,可以让我们学习到更多知识:

你需要了解芯片的上电启动过程,知道第1条代码如何运行;

你需要掌握怎么把程序从Flash上读入内存;

需要理解内存怎么规划使用,比如栈在哪,堆在哪;

需要理解代码重定位;

需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场;

你会知道,main函数不是我们编写的第1个函数;

你会知道,芯片从上电开始,程序是怎么被搬运执行的;

你会知道,函数调用过程中,参数是如何传递的;

你会知道,中断发生时,每一个寄存器的值都要小心对待;

等等等。

你掌握了ARM+Linux的裸机开发,再回去看Windows下的单片机开发,会惊呼:怎么那么简单!并且你会完全明白这些工具没有向你展示的技术细节。

驱动程序=Linux驱动程序软件框架+ARM开发板硬件 *** 作,我们可以从简单的裸机开发入手,先掌握硬件 *** 作,并且还可以:

①掌握如何在PC Linux下编译程序、把程序烧录到板子上并运行它

②为学习bootloader打基础:掌握了各种硬件 *** 作后,后面一组合就是一个bootloader

225 为什么选择ARM9 S3C2440开发板,而不是其他性能更好的?

有一个错误的概念:S3C2440过时了、ARM9过时了。

这是不对的,如果你是软件工程师,无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的。

一款芯片,上面有CPU,还有众多的片上设备(比如UART、USB、LCD控制器)。我们写程序时,并不涉及CPU,只是去 *** 作那些片上设备。

所以:差别在于片上设备,不在于CPU核;差别在于寄存器 *** 作不一样。

因为我们写驱动并不涉及CPU的核心,只是 *** 作CPU之外的设备,只是读写这些设备的寄存器。

之所以推荐S3C2440,是因为它的Linux学习资料最丰富,并有配套的第1、2期视频。

226 怎么学习ARM+Linux的裸机开发

学习裸机开发的目的有两个:

①掌握裸机程序的结构,为后续的u-boot作准备

②练习硬件知识,即:怎么看原理图、芯片手册,怎么写代码来 *** 作硬件

后面的u-boot可以认为是裸机程序的集合,我们在裸机开发中逐个掌握各个部件,再集合起来就可以得到一个u-boot了。

后续的驱动开发,也涉及硬件 *** 作,你可以在裸机开发中学习硬件知识。

注意:如果你并不关心裸机的程序结构,不关心bootloader的实现,这部分是可以先略过的。在后面的驱动视频中,我们也会重新讲解所涉及的硬件知识。

推荐两本书:杜春蕾的《ARM体系结构与编程》,韦东山的《嵌入式Linux应用开发完全手册》。后者也许是国内第1本涉及在PC Linux环境下开发的ARM裸机程序的书,如果我说错了,请原谅我书读得少。

对于裸机开发,我们提供有2部分视频:

①环境搭建

第0课第1节_刚接触开发板之接口接线wmv

第0课第2节_刚接触开发板之烧写裸板程序wmv

第0课第3节_刚接触开发板之重烧整个系统wmv

第0课第4节_刚接触开发板之使用vmwae和预先做好的ubuntuwmv

第0课第5节_刚接触开发板之u-boot打补丁编译使用及建sourceinsight工程wmv

第0课第6节_刚接触开发板之内核u-boot打补丁编译使用及建sourceinsight工程wmv

第0课第7节_刚接触开发板之制作根文件系统及初试驱动wmv

第0课第8节_在TQ2440,MINI2440上搭建视频所用系统wmv

第0课第9节_win7下不能使用dnw烧写的替代方法wmv

原文链接:网页链接

您好,广东深圳大深传感属于自主研发生产光电传感器的厂家。
大深传感创始人团队从欧姆龙辞职,回国创立DASS大深品牌,开始自主研发国产传感器,立志成为中国传感器的代名词!
深圳大深传感科技有限公司专注光电传感器产品研发及生产于一体, 主营产品包括槽型光电传感器、方型光电传感器、光纤传感器、接近传感器等系列 ,是目前国内少有完整掌握光电传感器核心技术的企业。
强大的研发能力是DASS大深传感器持续发展的坚实基础。我们引进专业的高端人才队伍,打造精准的研发管理体系。多年来始终坚持务实、创新、专业、真诚的理念,坚持技术创新,推动产品更新迭代!
大深每一款产品都凝聚着大深人的智慧和汗水,DASS大深从光电传感器进军市场,抓住产业链的细分环节,首创的漫反射零盲区检测技术,抗强光检测技术让光电传感器性能升级!应用范围更广泛!得到广大国内客户认可!
DASS大深传感一直在努力!立志要做中国本土自己的传感器产品,希望能新基建时代浪潮中与与传感器消费者互惠互利、共同进步,为传感器产业的蓬勃发展出一份力,为民族工业的振兴做出一份贡献!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13042889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存