首页资源分类其它科学普及 > 关于嵌入式

关于嵌入式

已有 445008个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:对嵌入式的看法

    分    享:

    文档简介

    对嵌入式的看法。。。。。

    文档预览

             各位喜欢嵌入式的发烧友们,当你看到这篇文章的时候,不用怀疑,我真的就是一个接触嵌入式没几个月的菜鸟而已,甚至还不会用51单片机点亮一个LED小灯;当然大神们看到也请勿嘲笑,俺真的没学几个月,纯粹是想把自己的一些失败的经历告诉学弟学妹们,希望后面的学弟学妹能少走一些弯路。如果大货觉得有什么不妥的或者有更好的见解,敬请指正。 ​         首先我想提出几个问题,我自己也不懂的问题:什么是嵌入式?什么是嵌入式操作系统?51单片机可以算是嵌入式么?为什么要加操作系统?51单片机可以上操纵系统么?单片机和嵌入式怎么区分?windows是什么系统?UCOS、linux、windows区别在哪?怎么学习嵌入式?等等等等好多好多问题,这一系列的问题我只懂其中一点点,我就把我懂的那一点点写一写吧。 ​         什么是嵌入式系统?我在一些资料上看到这样一些解释:嵌入式系统是以应用 为中心,以计算机技术为基础,且软硬件可裁减,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。看完到现在我还是不理解是什么意思,一直没法理解。我认为的嵌入式操作系统是这样的:它是操作系统,是嵌入式的操作系统。我认为操作系统的作用无非两个​,一是屏蔽硬件差异,也就是把硬件包装好,就好比没学过微机原理的人也可以用PC机,因为操作系统已经把硬件搞定了,不需要理会你的CPU是什么更不需要知道里面管脚之类的,比如用个酷狗听音乐,你需要知道CPU做了什么么?不需要知道,用就行了;其次,是任务的调度,比如我们的PC机是可以开着酷狗听歌、上着QQ和朋友聊天、打着LOL等等,每一个应用软件可以理解为是一个进程,都是独立的,而我们通常以为每个软件是同时进行的,其实不然,在每一个时间点,计算机只运行一个应用软件,比如看电影,我们看到的都是流畅的视频,而实际我们知道视频是很多照片连在一起,只是放第一张照片和第二张照片的时间间隔很短,所以看起来是连在一起的视频,操作系统也是如此,操作系统控制CPU不停的切换着去执行各个任务,所以看起来就是每个任务同时进行。这是操作系统,再说嵌入式操作系统,呵呵,我觉得能放到芯片额就算是嵌入式操作系统吧,嵌入嘛。。。所以我觉得windows也可以理解为是嵌入式操作系统。 ​       再说说我对移植、裁剪的看法。裁剪,剪掉不要的、留下想要的,在51单片机上也可以跑操作系统,你信么,虽然我没试过,但我觉得应该是可以吧。我常说Linux是高大上的操作系统,而UCOS是小型的操作系统,我觉得这两者并没有什么本质的差别,都是操作系统嘛。也许你会觉得差别大了,Linux高大上啊,但是我自己的拙见是真觉得没本质上差别,如果你懂的裁剪,什么都好办。 说说芯片吧,常听到ARM7、ARM9、ARM11、A8、A9等等类似的高端芯片,我一点都不知道这些芯片的区别、哪些适用在哪或者哪些性能好点,对于什么几核几核更是没听过,流水线这个概念也只是听过而已。我对这些芯片的概念局限于知道架构这回事而已,我知道NXP公司生产的LPC2000系列芯片是ARM7TDMI的内核;ARM9是ARMV7的架构,ARM11是ARMV6的架构,A8和A9应该是V7-A的架构,STM32应该是V7-M的架构,我知道这一点点而已,至于不同的架构区别在哪我也不懂。喔,对了,还记得流水线,好像6410是8级流水线的,按我的理解,流水线就是说把一条指令分成几个部分来执行,就好比工厂的流水线一样,做一个大包装的工艺都是把它拆分为好几个人来完成,估计是这个意思。 再有就是架构的一点知识,每个不同架构内部都会有自己的寄存器,好像用几组通用寄存器和状态寄存器、链接寄存器、堆栈指针寄存器,不知道还有没其他;另外架构里面有涉及到关于中断什么的,叫什么中断向量管理;按我的理解,所谓的中断向量管理也没什么,就是搞出很多个通道,就比如天河城那边有东西南北四个门,就相当于四个通道,然后每个人可以从不同的门进去,然后门上有监控,看到你来了,监控提醒控制中心的人,喔你丫的来了,再看看你是不是来干坏事,不是的话就随你玩,如果是拿着炸药包来,那肯定会疏散全部人员然后逮你。中断管理也是这个意思,有几十个通道,会产生中断的事情(就好比很多人)有很多,可以从不同的通道进到CPU,进去之后CPU再对你分辨、处理等等,就是这个意思吧,我估计是,也不知道对不对。 好多人说学啥学啥,学最新的A9,我不知道这对不对,但我不会这么做,说真的我还在学51单片机,因为我实在是对51单片机了解的也就那么!10%左右而已,所以还需要学习。然后最近因为需要我在学LPC2000系列的芯片,好难搞,里面那些王八蛋是汇编语言编写的,真特么难懂。上UCOS的时候,要分任务析切换嘛,必然会用到软中断,都是汇编的东西,又涉及到流水线什么的,就死在那了。说到这就谈谈Linux和UCOS吧,我不知道这两者本质的区别在哪,我所理解的linux就说说分为三部分吧,bootloader、kernel、根文件系统,bootloader的最终目的就是启动内核,内核的目的是运行你的应用,我是这么看的。我看过一点点关于6410的启动问题,好复杂,看不懂,就是汇编然后跳转到C语言的main函数。我层在一个群上问过一个问题:为什么要编译u-boot,然后没人回答我,后来我花了好大力气才搞明白,虽然这是个弱智问题,但是没把法,智商不高嘛。UCOS则更多的是在调度的问题上,我正在学习。我能很顺手的学习LPC2000系列的芯片也得益于有一段时间我在学习6410的启动,尝试自己写bootloader,那段时间我把6410的存储、内存分类、ARM架构大概了解了,那是很有意义也是很痛苦的一段时间,经常提些弱智问题,但是我很感谢那段时间,我觉得那段时间真的很重要,学到的知识也真的很重要。 说说C语言吧,C语言很重要这是没错的,但忒么为什么说学习ARM需要C语言基础,我二级没过照学。 好了,前面瞎扯淡那么多,下面说说一点点不知道对不对的建议吧:我觉得学习是学习本质而不是学习编程,我们是嵌入式工程师而不是码农。我不知道51单片和ARM在本质上的区别是什么,肯定有区别的,只是我不懂而已,但是我相信学透了51单片机再去学ARM,应该会容易点;而学习操作系统我觉得难的不在于操作系统,而是架构和逻辑;我们分析下,所谓的底层驱动不就是和硬件打交道?常见的linux驱动教程里面不是常涉及到什么同步异步IO、阻塞IO、中断管理等等么,什么是阻塞,那不就是任务调度?至于中断,假如你真懂了ARM架构的话,小事,提个小问题,ARM的异常有几种?运行状态又有几种?应用和驱动又是怎么挂钩的? Fuck,凌乱了,都不知道写了什么。收尾吧,我觉得一个优秀的嵌入式工程师,应该是搞得定硬件,包括高低频电路;玩得转汇编;搞得定架构;搞得懂服务器、网络;懂点C语言;玩得转各类协议,包括TCP/IP、CAN、各类BUS等等。。。就这样吧。 ​          

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。