linux+arm系统学习与基础学习
先说说arm吧。先前学习linux+arm老是觉得arm次要的,学习arm和学习单片机一样,了解了中断,UART,AD,定时器就差不多了,工作重心主要在linux上面。随着时间的推移,学习的深入,自我感觉良好,uboot,kernel,rootfs自己定制问题不大,对自己感兴趣的linux device driver也有些了解,可是,最近搞了一个新体系的arm,问题暴露出来了,离开了手册和一些资料,到处是困难,虽说uboot,kernel,rootfs问题不大,但是完全自己开发的时候,还是有挺多不清楚的,这对于嵌入式系统开发来说,很致命的。软件出了问题,最大的悲剧就不知道问题的所在。最后回归到先前认为不重要的arm体系,重新认识了内核,流水线,mmu,dma,协处理器后,感觉先前的疑惑也慢慢的变少了。现在终于可以拍拍胸脯说我完全掌握了ucossii这个rtos,熟悉arm9tdmi了。对arm体系的求知欲望也越来越强了。今天通宵完全搞定arm9的中断流程,以及arm如何快速响应中断,cpu如何工作在不同的模式来响应不同的异常等基础问题。每天都对基础在进行巩固。‘温故而知新’深刻体会到了。arm硬件基础很重要。
linux学习是一个漫长而又艰辛的道路,就是应为其学习的难度而导致了高手的稀少,间接导致了高薪的产生。学习linux也是有讲究的,首先定好位这个很重要,方向不正确,就类似与在盲跑。linux内核的工作流程及基本的线程,进程,内核调度,同步异步通信,任务管理,内存管理等基本感念是必须得有的,最好要向arm硬件一样在脑子里有个流程图。先说说我是如何学linux的,首先我对学习linux和arm投入是很大的,光开发板就近2000,台式机,笔记本一应俱全,linux书籍多本(linux内核设计与实现,linux内核修炼之道,深入理解linux内核,linux设备驱动3,linux设备驱动开发详解,unix环境高级编程),可谓花了大量的本钱啊!呵呵!再说说,时间和精力方面,基本放弃了上课。平时就是玩linux+arm,基本都是在arm上面跑linux程序,最近巩固基础而跑一些基本的arm硬件了。玩linux也是有技巧,一定要弄懂每一个知识点,不可得过且过,现在技术群讨论高深的android,wince,qt啊哪个有前途什么的,说白了,这些都是花的,等你学扎实了,这个就是小儿科,在牛逼点就自己写os。
补充:学好那该死的英语。能过8级的千万别只过6级。现在的我英语太poor了,看个数据手册还得找谷歌,幸好个人意识到了,基本把不熟的单词都记录下来了,准备每天搞arm前都先看看
现在大学的风气很浮躁,没有几个肯静得下心来学的,要不就是学了点就时时刻刻的挂在嘴边,我们要的不是嘴上说,心里明白就好了,要动手做。所以学linux的话记住
不积跬步无以至千里,不读内核无以成高手。
切忌浮沙筑高台。
最后付出总是有回报的。
linux基础
http://www.makeru.com.cn/course/details/2058?s=143793
linux高级
http://www.makeru.com.cn/course/details/2478?s=143793
linux多线程编程
http://www.makeru.com.cn/course/details/1937?s=143793