1.如何零基础学嵌入式
2.åµå
¥å¼å¼åè¦å¦ä»ä¹
3.åµå
¥å¼è½¯ä»¶å¼ååºè¯¥å¦ä»ä¹
4.总结uboot的源码重要概念,不知道的源码看过来
如何零基础学嵌入式
嵌入式的前景和待遇都非常好,一般从事嵌入式的源码待遇都在-之间,但是源码相对的嵌入式非常难学,因为嵌入式需要学习的源码东西非常多,而且非常的源码以太源码解读难。零基础那就更难了,源码除非能找到学习嵌入式的源码方法。嵌入式还是源码可以自自学的,怎样学习嵌入式,源码我刚才看到一篇很不错的源码文章,是源码一个专科生介绍自己如何自学嵌入式,并找到嵌入式的源码工作,里面介绍了他的源码学习方法和学习过程,希望对你有帮助。源码
………………………………………………
先做个自我介绍,我年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了。年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学了。
退学后我也迷茫,app源码的坑大专都没有毕业,我真的不知道我能干什么,我在纠结着我能做什么。所以辍学后我一段时间,我想去找工作,因为我比较沉默寡言,不是很会说话,我不适合去应聘做业务。我想应聘做技术的,可是处处碰壁。
一次偶然的机会,我才听到嵌入式这个行业。那天我去新华书店,在计算机分类那边想找本书学习。后来有个女孩子走过来,问我是不是读计算机的,有没有兴趣学习嵌入式,然后给我介绍了一下嵌入式现在的火热情况,告诉我学嵌入式多么的有前景,给我了一份传单,嵌入式培训的广告。听了她的介绍,我心里痒痒的,确实我很想去学会一门自己的技术,靠自己的滁州网站建设源码双手吃饭。
回家后,我就上网查了下嵌入式,确实是当今比较热门的行业,也是比较好找工作的,工资也是相对比较高。我就下决心想学嵌入式了。于是我去找嵌入式培训的相关信息,说真的,我也很迷茫,我不知道培训是否真的能像他们宣传的那样好,所以我就想了解一段时间再做打算。
后来,我在百度知道看到一篇让我很鼓舞的文章,是一个嵌入式高手介绍没有基础的朋友怎么自学入门学嵌入式,文章写的很好,包含了如何学习,该怎么学习。他提到一个方法就是看视频,因为看书实在太枯燥和费解的,很多我们也看不懂。这点我真的很认同,我自己看书往往看不了几页。
我在想,为什么别人都能自学成才,我也可以的巢湖全网营销源码!我要相信自己,所以我就想自学,如果实在学不会我再去培训。
主意一定,我就去搜索嵌入式的视频,虽然零星找到一些嵌入式的视频,但是都不系统,我是想找一个能够告诉我该怎么学的视频,一套从入门到精通的视频,一个比较完整的资料,最好能有老师教,不懂可以请教的。
后来我又找到一份很好的视频,是在IT学习联盟网站推出的一份视频《零基础嵌入式就业班》(喜欢《零基础嵌入式就业班》的可以复制 sina.lt/qKh 粘贴浏览器地址栏按回车键即打开)。里面的教程还不错,很完整,可以让我从基础的开始学起。视频比较便宜。
下面介绍下我的学习流程,希望对和我一样完全没有基础的朋友有所帮助。
收到他们寄过来的光盘后,我就开始学习了,由于我没有什么基础,我就从最简单的C语言视频教程学起,话说简单,python 源码的书其实我还是很多不懂的,我只好请教他们,他们还是很热心的,都帮我解决了。C语言我差不多学了一个礼拜,接下来我就学了linux的基本命令,我在他们提供linux虚拟机上都有做练习,敲linux的基本命令,写简单的C语言代码,差不多也就三个礼拜。我每天都在不停的写一些简单的代码,这样一月后我基本掌握了C和linux的基本操作。
接下来我就去学习了人家的视频的培训教程,是整套的,和去参加培训没有多大的区别,这一看就是两个月,学习了ARM的基本原理,学习嵌入式系统的概念,也掌握了嵌入式的环境的一些搭建,对linux也有更深层次的理解了,明白了嵌入式应用到底是怎么做的,但是驱动我只是有一点点的了解,这个相对难一点,我想以后再慢慢啃。
这两个月,除了吃饭睡觉,我几乎都在学习。因为我知道几乎没有基础,比别人差劲,我只能坚持努力着,我不能放弃,我必要要靠自己来养活自己,必须学好这门技术,然后我就把不懂的问题总结记下来,这样慢慢积累了一段时间,我发现自己真的有点入门了。
最后的一个月,我就去看关于实践部分的内容,了解嵌入式项目具体的开发流程,需要什么样的知识,我就开始准备这方面的知识,也就是学习这方面的视频,同时他们建议我去找了找一些嵌入式面试的题目,为自己以后找工作做准备。我就到网上找了很多嵌入式的题目,把他们理解的记下来,这样差不多准备了天左右
我觉得自己差不多入门了,会做一些简单的东西了。我就想去找工作看看,于是我就到job疯狂的投简历,因为我学历的问题,专科没有毕业,说真的,大公司没有人会要我,所以我投的都是民营的小公司,我希望自己的努力有所回报。没有想过几天过后,就有面试了,但是第一次面试我失败了,虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比较严格,需要有一年的项目经验,所以我没有被选中。
后来陆续面试了几家公司,终于功夫不负有心人。我终于面试上的,是在闵行的一家民营的企业,公司规模比较小,我的职务是嵌入式linux应用开发,做安防产品的应用的。我想我也比较幸运,经理很看重我的努力,就决定录用我,开的工资是一个月,虽然我知道在上海只能过温饱的生活,但是我想我足够了。我至少不用每天都要靠父母养,我自己也能养活自己的。我想只要我继续努力,我工资一定会翻倍的。
把本文写出来,希望能让和我一样的没有基础的朋友有信心,其实我们没有必要自卑,我们不比别人笨,只要我们肯努力,我们一样会成功。
希望你未来能成为一位嵌入式高手。
…………………………………………………………
åµå ¥å¼å¼åè¦å¦ä»ä¹
åµå ¥å¼Linuxæä½ç³»ç»å¦ä¹ è§å\x0d\ARM+LINUX路线ï¼ä¸»æ»åµå ¥å¼Linuxæä½ç³»ç»åå ¶ä¸åºç¨è½¯ä»¶å¼åç®æ ï¼ \x0d\ï¼1ï¼ ææ¡ä¸»æµåµå ¥å¼å¾®å¤çå¨çç»æä¸åçï¼åæ¥å®ä¸ºarm9ï¼ \x0d\ï¼2ï¼ å¿ é¡»ææ¡ä¸ä¸ªåµå ¥å¼æä½ç³»ç» ï¼åæ¥å®ä¸ºuclinuxælinux,çæ¬å¾ å®ï¼ \x0d\ï¼3ï¼ å¿ é¡»çæåµå ¥å¼è½¯ä»¶å¼åæµç¨å¹¶è³å°åä¸ä¸ªåµå ¥å¼è½¯ä»¶é¡¹ç®ã \x0d\ä»äºåµå ¥å¼è½¯ä»¶å¼åç好å¤æ¯ï¼ \x0d\ï¼1ï¼ç®åå½å å¤è¿æ¹é¢ç人é½å¾ç¨ç¼ºãè¿ä¸é¢åå ¥é¨é¨æ§è¾é«ï¼æ以éä¸ä¸IT人åå¾é¾åå ¥è¿ä¸é¢åï¼å¦ä¸æ¹é¢ï¼æ¯å 为è¿ä¸é¢åè¾æ°ï¼ç®ååå±å¤ªå¿«ï¼å¤§å¤æ°äººæ æ¡ä»¶æ¥è§¦ã \x0d\ï¼2ï¼ä¸ä¼ä¸è®¡ç®çåºç¨è½¯ä»¶ä¸åï¼åµå ¥å¼é¢å人æçå·¥ä½å¼ºåº¦é常ä½ä¸äºï¼ä½æ¶å ¥ä¸ä½ï¼ã \x0d\ï¼3ï¼åªå¤©è¥æ³åä¸ï¼æèªå·²ç产åï¼åµå ¥å¼ä¸ååºç¨è½¯ä»¶é£æ ·å®¹æ被ççã硬件设计ä¸è¬é½æ¯è¯·å ¶å®å ¬å¸ç»è®¢åï¼è¿å«âè´´çâï¼OEMï¼ï¼é½æ¯éç¨ç硬件ï¼æ们åªç®¡è®¾è®¡è½¯ä»¶å°±åæèªå·±ç产åäºã \x0d\ï¼4ï¼å ´è¶£æå¨ï¼è¿æ¯æ主è¦çã \x0d\ä»äºåµå ¥å¼è½¯ä»¶å¼åç缺ç¹æ¯ï¼ \x0d\ï¼1ï¼å ¥é¨èµ·ç¹è¾é«ï¼æç¨å°çææ¯å¾å¾é½æä¸å®é¾åº¦ï¼è¥è½¯ç¡¬ä»¶åºç¡ä¸å¥½ï¼ç¹å«æ¯æä½ç³»ç»çº§è½¯ä»¶ååºä¸æ·±ï¼åå¯è½ä¸éäºæ¤è¡ã \x0d\ï¼2ï¼è¿æ¹é¢çä¼ä¸æ°éè¦è¿å°äºä¼ä¸è®¡ç®ç±»ä¼ä¸ã \x0d\ï¼3ï¼æå°æ°å ¬å¸ç»å¸¸è¦ç¡å£«ä»¥ä¸ç人æåµå ¥å¼ï¼ä¸»è¦æ¯åºäºåµå ¥å¼çé¾åº¦ãä½å¤§å¤æ°å ¬å¸ä¹å¹¶æ æ¤è¦æ±ï¼åªè¦æç»éªå³å¯ã \x0d\ï¼4ï¼å¹³å°ä¾æ强ï¼æ¢å¹³å°æ¯è¾è¾è¦ã \x0d\å ´è¶£çç±æ¥ï¼ \x0d\1ãæåè§å¿µä¸åï¼ä¸è度æ¤çï¼å°±æ¯æçæåã \x0d\2ãå欢æèï¼ææé»è¾æç»´ã \x0d\3ãå欢C \x0d\Cæ¯ä¸ç§è½åæ¥æç»´æéçè¯è¨ãå ³äºCçç²¾ç¥çä¸äºæ¹é¢å¯ä»¥è¢«æ¦è¿°æçå¥å¦ä¸ï¼ \x0d\ç¸ä¿¡ç¨åºåã \x0d\ä¸è¦é»æ¢ç¨åºååé£äºéè¦å»åçã \x0d\ä¿æè¯è¨çå°ç²¾å¹²ã \x0d\ä¸ç§æ¹æ³åä¸ä¸ªæä½ã \x0d\使å¾å®è¿è¡çå¤å¿«ï¼å°½ç®¡å®å¹¶ä¸è½ä¿è¯å°æ¯å¯ç§»æ¤çã \x0d\4ãå欢åºå±å¼åï¼è®¨åvbç±»å¼åå·¥å ·ï¼å¹¶ä¸æ¯è¯´vbä¸å¥½ï¼ã \x0d\5ãåå±åæ¯å¥½ï¼éååä¸ï¼ä¸æ³èªå·±è¦æ»äºçæ¶åè¿æ¯ä¸ä¸ªå·¥ç¨å¸ã \x0d\æ¹æ³æ¥éª¤ï¼ \x0d\1ãåºç¡ç¥è¯ï¼ \x0d\ç®çï¼è½çæ硬件工ä½åçï¼ä½éç¹å¨åµå ¥å¼è½¯ä»¶ï¼ç¹å«æ¯æä½ç³»ç»çº§è½¯ä»¶ï¼é£å°æ¯æçä¼å¿ã \x0d\ç§ç®ï¼æ°åçµè·¯ã计ç®æºç»æåçãåµå ¥å¼å¾®å¤çå¨ç»æã \x0d\æ±ç¼è¯è¨ãC/C++ãç¼è¯åçã离æ£æ°å¦ã \x0d\æ°æ®ç»æåç®æ³ãæä½ç³»ç»ã软件工ç¨ãç½ç»ãæ°æ®åºã \x0d\æ¹æ³ï¼è½ç§ç®ä¼å¤ï¼ä½é½æ¯è¾ç®åçåºç¡ï¼ä¸å¤§é¨åå·²ææ¡ãä¸ä¸å®å ¨å¦ï¼å¯æ ¹æ®éè¦éä¿®ã \x0d\主æ»ä¹¦ç±ï¼the c++ programming languageï¼ä¸ç´æ²¡æ¶é´è¯»ï¼ãæ°æ®ç»æ-C2ã \x0d\\x0d\2ãå¦ä¹ linuxï¼ \x0d\ç®çï¼æ·±å ¥ææ¡linuxç³»ç»ã \x0d\ æ¹æ³ï¼ä½¿ç¨linuxâãlinxuç³»ç»ç¼ç¨å¼åâã驱å¨å¼åååælinuxå æ ¸ãå çæ·±ï¼é£ä¸»è®²åçãçå éåï¼çæ æ¯åæï¼å¯¹ç §æ·±çï¼ä¸¤æ¬äº¤åï¼æ·±æ¯çº²ï¼æ æ¯ç®ãåæåæ¯0.çï¼éåå¦ä¹ ãæåæ·±å ¥ä»£ç ã \x0d\主æ»ä¹¦ç±ï¼linuxå æ ¸å®å ¨åæãunixç¯å¢é«çº§ç¼ç¨ãæ·±å ¥ç解linuxå æ ¸ãæ æ¯åæåæºä»£ã \x0d\3ãå¦ä¹ åµå ¥å¼linuxï¼ \x0d\ç®çï¼ææ¡åµå ¥å¼å¤çå¨å ¶åç³»ç»ã \x0d\æ¹æ³ï¼ï¼1ï¼åµå ¥å¼å¾®å¤çå¨ç»æä¸åºç¨ï¼ç´æ¥armåçåæ±ç¼å³å¯ï¼ä¸è¦éå¤xã \x0d\ ï¼2ï¼åµå ¥å¼æä½ç³»ç»ç±»ï¼ucOS/IIç®åï¼å¼æºï¼å¯ä¾å ¥é¨ãèåæ·±å ¥ç 究uClinuxã \x0d\ ï¼3ï¼å¿ é¡»æåå¼åæ¿ï¼arm9以ä¸ï¼ï¼ææ¡ä»¶å¯åå å¹è®ï¼è¿æ¥å¿«ï¼è½è®¤è¯äºæåï¼ã \x0d\ 主æ»ä¹¦ç±ï¼æ¯å¾·æçãåµå ¥å¼ç³»ç»ãåå ¶ä»arm9æåä¸armæ±ç¼æ令çã \x0d\\x0d\4ãæ·±å ¥å¦ä¹ ï¼ \x0d\ Aãæ°åå¾åå缩ææ¯ï¼ä¸»è¦æ¯åºææ¡MPEGãmp3çç¼è§£ç ç®æ³åææ¯ã \x0d\ Bãéä¿¡åè®®åç¼ç¨ææ¯ï¼TCP/IPåè®®ã.ï¼Bluetoothï¼GPRSãGSMãCDMAçã \x0d\\x0d\-8- : åå¤ \x0d\...* 2楼\x0d\\x0d\ Cãç½ç»ä¸ä¿¡æ¯å®å ¨ææ¯ï¼å¦å å¯ææ¯ï¼æ°åè¯ä¹¦CAçã \x0d\ DãDSPææ¯ï¼Digital Signal Processï¼DSPå¤çå¨éè¿ç¡¬ä»¶å®ç°æ°åä¿¡å·å¤çç®æ³ã \x0d\ 说æï¼å¤ªå¤ç»èæªè¯´æï¼å¯æ ¹æ®å®é æ åµè°æ´ãéç¹å¨äº1ã3ï¼ä¸å¿ å®å ¨æç §é¡ºåºä½ã对äºå¦ä¹ c++ï¼çç±æ¯c++ä¸åªæ¯ä¸ç§è¯è¨ï¼ä¸ç§å·¥å ·ï¼å¥¹è¿æ¯ä¸ç§èºæ¯ï¼ä¸ç§æåï¼ä¸ç§å²å¦ç念ãä½ä¸æ¯æ¿æ¥ç«èå¾ä¸è¥¿ã对äºlinuxå æ ¸ï¼å¦ä¹ ç¼ç¨ï¼è¯»ä¸äºä¼ç§ä»£ç ä¹æ¯æå¿ è¦çã \x0d\ 注æï¼ è¦å¦ä¼ä¸¾ä¸åå¤ï¼æ强大çåºç¡ï¼å¾å¤ä¸è¥¿ç®åççå°±è½ä¼ãæ³æ为åæ ¼çç¨åºåï¼åææ¯å¿ é¡»çç»è³å°ä¸ç§ç¼ç¨è¯è¨ï¼å¹¶å ·æè¯å¥½çé»è¾æç»´ãä¸å®è¦ç论ç»åå®è·µã \x0d\ ä¸è¦ä¸å³é»ç ææ¯ï¼è½ç¶æ¤åºæ¶é´æ¯å¾é¾åå°çï¼ä½è¿æ¯è¦çç¹ä½å°å»å®åå ¶ä»çç±å¥½ï¼æ¯å¦å®å®ï¼ç´ æãæºæ¢°ã管çï¼å¿çå¦ã游æãç§å¹»çµå½±ãè¿æä¸äºä¸æ¿æåä½å¿ é¡»è¦åçï¼ \x0d\ ææ¯æ¯éè¿ç¼ç¨ç¼ç¨å¨ç¼ç¨ç¼åºæ¥çãæ°¸è¿ä¸è¦æ¢¦æ³ä¸æ¥ç»å¤©ï¼ä¸è¦åæµ®èºç人ï¼ä¸è¦è§å¾è·¯é漫ä¸ãèæ¯è¦ç¼ç¨ç¼ç¨å¨ç¼ç¨ï¼å®äºå¨ç¼ç¨ï¼å¨ç¼ç¨ï¼çæºä¼æ¥äºå¨åä¸ï¼ä¸è¦ç¸ä¿¡æå¥è¿¹åçï¼ç²ç®åä¸å¾é¾æåï¼å³ä¾¿æåäºåå±ç©ºé´ä¹ä¸ä¸å®å¾å¤§ï¼ã \x0d\\x0d\ åµå ¥å¼ä¹¦ç±æ¨è \x0d\ Linuxåºç¡ \x0d\ 1ããLinuxä¸Unix Shell ç¼ç¨æåã \x0d\ Cè¯è¨åºç¡ \x0d\ 1ããC Primer Plusï¼5th Editionããç¾ãStephen Prataç \x0d\ 2ããThe C Programming Language, 2nd Editionããç¾ãBrian W. Kernighan David M. Rithieï¼K & Rï¼ç \x0d\ 3ããAdvanced Programming in the UNIX Environmentï¼2nd Editionãï¼APUEï¼ \x0d\ 4ããåµå ¥å¼Linuxåºç¨ç¨åºå¼å详解ã \x0d\ Linuxå æ ¸ \x0d\ 1ããæ·±å ¥ç解Linuxå æ ¸ãï¼ç¬¬ä¸çï¼ \x0d\ 2ããLinuxå æ ¸æºä»£ç æ æ¯åæãæ¯å¾·æ è¡å¸æè \x0d\ ç åæ¹å \x0d\ 1ããUNIX Network Programmingãï¼UNPï¼ \x0d\ 2ããTCP/IP详解ã \x0d\ 3ããLinuxå æ ¸ç¼ç¨ã \x0d\ 4ããLinux设å¤é©±å¨å¼åãï¼LDDï¼ \x0d\ 5ããLinuxé«çº§ç¨åºè®¾è®¡ã æ¨å®å¾·è\x0d\ 硬件åºç¡ \x0d\ 1ããARMä½ç³»ç»æä¸ç¼ç¨ãææ¥é·ç \x0d\ 2ãS3C Datasheet \x0d\ è±è¯åºç¡ \x0d\ 1ãã计ç®æºä¸éä¿¡ä¸ä¸è±è¯ã \x0d\ ç³»ç»æç¨ \x0d\ 1ããåµå ¥å¼ç³»ç»ââä½ç³»ç»æãç¼ç¨ä¸è®¾è®¡ã \x0d\ 2ããåµå ¥å¼ç³»ç»ââéç¨å ¬å¼æºä»£ç åStrongARM/Xscaleå¤çå¨ãæ¯å¾·æ è¡å¸æç \x0d\ 3ããBuilding Embedded Linux Systemsã \x0d\ 4ããåµå ¥å¼ARMç³»ç»åçä¸å®ä¾å¼åã æ¨å®å¾·è\x0d\ ç论åºç¡ \x0d\ 1ããç®æ³å¯¼è®ºã \x0d\ 2ããæ°æ®ç»æï¼Cè¯è¨çï¼ã \x0d\ 3ãã计ç®æºç»ç»ä¸ä½ç³»ç»æ?æ§è½åæã \x0d\ 4ããæ·±å ¥ç解计ç®æºç³»ç»ããç¾ãRandal E. Bryant David O''Hallaronç \x0d\ 5ããæä½ç³»ç»ï¼ç²¾é«ä¸è®¾è®¡åçã \x0d\ 6ããç¼è¯åçã \x0d\ 7ããæ°æ®éä¿¡ä¸è®¡ç®æºç½ç»ã \x0d\ 8ããæ°æ®å缩åçä¸åºç¨ã \x0d\\x0d\ Cè¯è¨ä¹¦ç±æ¨è \x0d\ 1. The C programming language ãCç¨åºè®¾è®¡è¯è¨ã \x0d\ 2. Pointers on C ãCåæéã \x0d\ 3. C traps and pitfalls ãCé·é±ä¸ç¼ºé·ã \x0d\ 4. Expert C Lanuage ãä¸å®¶Cç¼ç¨ã \x0d\ 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs \x0d\ ãç¼ç¨ç²¾ç²¹--Microsoft ç¼åä¼è´¨æ éCç¨åºç§è¯ã \x0d\ 6. Programming Embedded Systems in C and C++ ãåµå ¥å¼ç³»ç»ç¼ç¨ã \x0d\ 7.ãCè¯è¨åµå ¥å¼ç³»ç»ç¼ç¨ä¿®ç¼ã \x0d\ 8.ãé«è´¨éC++/Cç¼ç¨æåãæé \x0d\ å°½å¯è½å¤çç¼ç ï¼è¦å¦å¥½Cï¼ä¸è½åªæ³¨éCæ¬èº«ãç®æ³ï¼æ¶ææ¹å¼çé½å¾éè¦ã \x0d\\x0d\è¿éå¾å¤ä¹¦å ¶å®æ¯æ¨èèå·²ï¼ä¸å¿ 太å¨æï¼å ³é®è¿æ¯åºç¡ï¼ææ¯éä¸ä¹éï¼ï¼ï¼
åµå ¥å¼è½¯ä»¶å¼ååºè¯¥å¦ä»ä¹
å¦ææ¯å¸æååµå ¥å¼è½¯ä»¶æ¹ååå±çè¯ï¼ç®åæ常è§çæ¯åµå ¥å¼Linux+ARMæ¹åï¼å ³äºè¿ä¸ªæ¹åï¼æ认为大æ¦å3个é¶æ®µï¼
1ãåµå ¥å¼linuxä¸å±åºç¨ï¼å æ¬QTçGUIå¼å
2ãåµå ¥å¼linuxç³»ç»å¼å
3ãåµå ¥å¼linux驱å¨å¼ååµå ¥å¼ç®å主è¦é¢åçå 个æä½ç³»ç»æ¯ï¼LINUXï¼WINCEãVxWorksçç
Linuxæ¯å¼æºå è´¹çï¼èä¸å ¶æºä»£ç æ¯å¼æ¾çï¼æ´å éåæ们å¦ä¹ åµå ¥å¼ãæ以èªå¦çè¯ä½ å¯ä»¥å°è¯ä»¥ä¸è·¯çº¿ï¼
ï¼1ï¼ Cè¯è¨æ¯ææç¼ç¨è¯è¨ä¸ç强è ï¼åçæºãDSPã类似ARMçç§ç§è¯ççç¼ç¨é½å¯ä»¥ç¨Cè¯è¨æå®ï¼ï¼å æ¤å¿ é¡»é常çç»çææ¡ã
æ¨è书ç±ï¼è°æµ©å¼ºçå¾ä¸éï¼ãThe C Programming Languageã è¿æ¬ç»å ¸çæææ¯èå¤åçï¼ä¹æä¸è¯çæ¬ã
ï¼2ï¼ æä½ç³»ç»åçï¼æ¯å¿ éçï¼å¦æä½ æ¯è®¡ç®æºä¸ä¸æ¯ä¸é£ä¹å°±æ æè°äºï¼å¦ææ¯é计ç®æºä¸ä¸çå°±å¿ é¡»æ¾ä¸æ¬æ¯è¾æµ æ¾ç计ç®æºåç书ç±çä¸çï¼æå¥å«âè¿ç¨ââ线ç¨ââç³»ç»è°åº¦âççåºæ¬é®é¢ææ¸ æ¥ã
ï¼3ï¼ Linuxæä½ç³»ç»å°±æ¯ç¨Cè¯è¨ç¼åçï¼æä»¥ä½ ä¹åºè¯¥å å¦ä¹ ä¸Linuxæ¹é¢çç¼ç¨ï¼åªæä½ ä¼åºç¨äºï¼æè½è¿ä¸æ¥å»äºè§£å ¶å æ ¸çç²¾é«ã
æ¨è书ç±ï¼ãUNIXç¯å¢é«çº§ç¼ç¨ãï¼ç¬¬2çï¼
ï¼4ï¼ äºè§£ARMçæ¶æï¼åçï¼ä»¥åå ¶æ±ç¼æ令ï¼æ们å¨åµå ¥å¼å¼åä¸ï¼ä¸è¬å¾å°å»åæ±ç¼ï¼ä½æ¯æèµ·ç çè¦æ±æ¯è½å¤çæarmæ±ç¼ã
ï¼5ï¼ ç³»ç»ç§»æ¤çæ¶åï¼å°±éè¦ä½ ä»æä¸å±çbootloaderå¼å§ï¼ç¶åå æ ¸ç§»æ¤ï¼æ件系ç»ç§»æ¤çãè移æ¤è¿é¨å对硬件çä¾èµæ¯é常大çï¼å ¶é ç½®æ¥éª¤ä¹ç¸å¯¹å¤æï¼ä¹æ²¡æ太å¤è¯¦ç»èµæã
ï¼6ï¼ é©±å¨å¼å
linux驱å¨ç¨åºè®¾è®¡æ¢æ¯ä¸ªæå¯ææææ§çé¢åï¼åæ¯ä¸ä¸ªå大精深çå 容ã
linux驱å¨ç¨åºè®¾è®¡æ¬è´¨æ¯å±äºlinuxå æ ¸ç¼ç¨èç´çï¼å èæ¯å¯¹linuxå æ ¸åå æ ¸ç¼ç¨æ¯æè¦æ±çãå¨å¦ä¹ åä½ è¦æ³äºè§£linuxå æ ¸çç»æï¼å 为æ¯ä¸é¨åè¦è¯¦ç»ç 究çè¯è¶³å¤å¯ä»¥æ©å±æä¸æ¬å书ã以ä¸åªä¸è¿æ¯å¤§æ¦çæ¡æ¶ï¼å¨å®é çå¼åä¸è¿ä¼æ¶åå¾å¤ä¸è¥¿ï¼æ¯å¦ï¼äº¤åç¼è¯ãmakefileãshellèæ¬ççï¼æ以说å¦ä¹ åµå ¥å¼çå¨æè¾é¿ï¼é¨æ§è¾é«ï¼èªå¦çè¯æ´æ¯éè¦è¾å¼ºçå¦ä¹ è½ååä¸ä¸ååºãåªè¦è½åæä¸æ¥ä¸å®ä¼åå¾æåï¼æ¨èå°åæ¸ è¿è§çç½ç«ä¸äºè§£åµå ¥å¼ç课ç¨ä½ç³»åå¦ä¹ æ¹æ³ï¼è¿æå¾å¤èµæåè§é¢æç¨å¯ä»¥ä¸è½½ã
总结uboot的重要概念,不知道的看过来
本篇内容不讲解uboot源码,只总结面试中高频问到的重要知识点。内容适用于嵌入式新人了解uboot,对老手有复习和查漏补缺的作用。
1、PC机启动:上电后,BIOS程序初始化DDR内存和硬盘,从硬盘读取OS镜像到DDR,跳转执行OS。
2、嵌入式Linux系统启动:上电后执行uboot,初始化DDR、Flash,将OS从Flash读到DDR,启动OS。
3、uboot定义与作用:uboot属于bootloader,作为单线程裸机程序,主要作用是初始化硬件、内存、flash等,引导内核启动。
4、uboot启动阶段(不同平台差异):MTK平台:boot rom -> preloader -> lk -> kernel;RK平台:bootrom -> spl(miniloader) -> uboot -> trust -> kernel;NXP平台:bootrom -> bl2 -> ATF -> uboot -> kernel。
5、uboot支持多种启动方式:SPI Flash/eMMC/Nvme/SD/Hard Disk/U-Disk/net。启动方式不同,固件存放位置也不同。
6、掌握uboot的关键点:命令和环境变量。uboot启动后大部分工作在shell中完成,命令用于操作,环境变量如bootcmd和bootargs,用于设置启动参数。
7、bootargs参数详解:root用于指定rootfs位置,console用于设置控制台,mem用于指定内核使用内存大小,ramdisk_size用于设置ramdisk大小,initrd用于指定initrd参数,init用于指定启动脚本,mtdparts用于设置分区。
8、常用bootargs组合:文件系统为ramdisk、jffs2类型、nfs等不同情况下的bootargs设置示例。
总结,了解uboot是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。