嵌入式学习意见,我有C语言基础,单片机基础,现在学ARM,linux也看了点,但linux方面还是不知道怎么切入
我有C语言基础,单片机基础,现在学ARM,linux也看了点,但linux方面还是不知道怎么切入。看了鸟哥,懂了点,看《深入理解linux内核》,发现太难啃了,看了《Li...
我有C语言基础,单片机基础,现在学ARM,linux也看了点,但linux方面还是不知道怎么切入。看了鸟哥,懂了点,看《深入理解linux内核》,发现太难啃了,看了《Linux程序设计》(第四版,Neil Matthew),感觉也是半懂,现在在看《UNIX环境高级编程》,反正也能理解,但我不知道怎么去运用(盲目的看了再说),我没操作系统的基础,我是机械专业的。高手给点意见呀,我想做驱动开发这块。
展开
11个回答
2011-05-17
展开全部
驱动开发是个设计多方面知识的工作,好多相关知识你都要很熟悉,建议你先把基础打牢,如,数字电路,C语言,操作系统,linux等。UNIX环境高级编程是本很不错的书,多看几遍并试着多编写程序。有条件的话买套开发板,一般都会带源码之类的,然后把它参透,要多实践并多积累知识,驱动开发不是很短时间内就能学好的,网上有2440的教程,可以看几遍也是很不错的,国嵌出的,可以自己下载也可以从淘宝上买光盘,我也是一直在学相关东西,贵在坚持,呵呵
展开全部
1. 先选一块有名气的ARM板子
2. 在网上搜索如何搭建开发环境
不要采用板子供应商提供的开发包。自己去下载gcc, uboot, linux和跟arm芯片有关的补丁
搭建tftp,nfs等
3. ARM一般都会有固话的internalRom启动程序,利用这个启动程序来玩玩你的RAM版本的uboot。这部分要好好看看arm芯片的boot部分和开发板原理图。
4. 改改你的uboot中的flash驱动,争取做到flash启动(internal mode and external mode)
5. 学习uboot的各种命令
6. 学习如何加载linux和配置linux。
看书方面,鸟哥也行,华清软件也行,
个人意见: 学习linux, 先学习和熟悉操作(新手光这个部分可能都要几个月)和该操作的简单原理,然后在去研究程序设计。
----------------------------------------------------
2. 在网上搜索如何搭建开发环境
不要采用板子供应商提供的开发包。自己去下载gcc, uboot, linux和跟arm芯片有关的补丁
搭建tftp,nfs等
3. ARM一般都会有固话的internalRom启动程序,利用这个启动程序来玩玩你的RAM版本的uboot。这部分要好好看看arm芯片的boot部分和开发板原理图。
4. 改改你的uboot中的flash驱动,争取做到flash启动(internal mode and external mode)
5. 学习uboot的各种命令
6. 学习如何加载linux和配置linux。
看书方面,鸟哥也行,华清软件也行,
个人意见: 学习linux, 先学习和熟悉操作(新手光这个部分可能都要几个月)和该操作的简单原理,然后在去研究程序设计。
----------------------------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我现在在做usb驱动,很痛苦啊,一步一个坎,你要有心理准备啊,打个比方吧,我给你源程序直接编译,插入内核都得经过一翻风雨,这种东西很少现成的解决办法,都得自己在网上收集,慢慢的找,
想研究内核(驱动也算内核里的一部分)基础知识也得过关,要不别人说啥都不知道,举个例子,大部分驱动都得用到的内存分配,就不是简答的malloc了,内核里你会遇到vmalloc(虚拟地址),kmalloc(内核地址),_pa()(获取物理地址),page(页),等等还有很多,如果你没有相关的知识,说什么你也是不懂的,就更别说用了。
首先得学linux操作系统的使用,也就是那些命令,编程在牛逼的高手,也得熟悉编程所在的平台吧,网上可能有常用命令的教程吧,我没找过,这个必须得会.
必须会的工具 vi ,gcc,makefile,
至于操作系统的知识没有必要把计算机专业学的操作系统的教材全部看会,但是内存管理和进程管理得看会了,因为编程时,会经常遇到进程和内存的知识。
然后你就可以研究内核,看相关的书籍了,这才是最难的部分!!我看的是linux 设备驱动(LDD3)建议你中文版和英文版都弄到手,网上都能下到,先看英文版的,看不懂得再对照中文的,因为中文的实在是操*蛋啊,偶尔看几眼还行,看多了就恶心了不如看英文的呢,LZ自求多福吧= =!!!
想研究内核(驱动也算内核里的一部分)基础知识也得过关,要不别人说啥都不知道,举个例子,大部分驱动都得用到的内存分配,就不是简答的malloc了,内核里你会遇到vmalloc(虚拟地址),kmalloc(内核地址),_pa()(获取物理地址),page(页),等等还有很多,如果你没有相关的知识,说什么你也是不懂的,就更别说用了。
首先得学linux操作系统的使用,也就是那些命令,编程在牛逼的高手,也得熟悉编程所在的平台吧,网上可能有常用命令的教程吧,我没找过,这个必须得会.
必须会的工具 vi ,gcc,makefile,
至于操作系统的知识没有必要把计算机专业学的操作系统的教材全部看会,但是内存管理和进程管理得看会了,因为编程时,会经常遇到进程和内存的知识。
然后你就可以研究内核,看相关的书籍了,这才是最难的部分!!我看的是linux 设备驱动(LDD3)建议你中文版和英文版都弄到手,网上都能下到,先看英文版的,看不懂得再对照中文的,因为中文的实在是操*蛋啊,偶尔看几眼还行,看多了就恶心了不如看英文的呢,LZ自求多福吧= =!!!
追问
唉LDD3翻译是不咋地,我看了下没看了,你可看看linux那些事儿--我是USB,看上去很好玩的,看完了给我点意见呀,因为我也啃不太动。我想你没问题
追答
。。。我俩弄混了,我做的是USB设备驱动,用LDD3上的话叫“USB器件驱动”,我做的是USB摄像头驱动,得调用usb core的函数= =!你做到是USB总线的驱动,那你就不用看LDD3了,讲的不是一个套路,我建议你看看usb协议,usb协议像教材似的讲的很全,跟USB有关的基本都有,做不同部分侧重看不同的章节,依然下英文版和中文版的,中文版章节安排的挺乱的,对照的英文看能好一点,第一章introduce中文版有错误,别的还没看完呢。
其实你要是单纯的想做驱动没必要直接看那么难的,驱动里还是有许多共性的东西,也就是基础知识,看一本教材就基本掌握了,然后再针对某个特定的设备来学习会好一点
至于教材,他们都是相互抄的,那本看的人多我就看那本,相信群众,哈哈
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的专业就是嵌入式系统结果学过后就发现这专业就是骗人的,首先就不知道这到底是属于硬件类还是软件类,结果什么都要学所包含的课程从软件到硬件什么都要学,根本就没个核心科目,现在我们班上想继续在嵌入式这一行发展的都去了培训机构去了,以我的经验来说嵌入式就是编写直接驱动硬件的程序,所以有两个发展方向(这是我们老师总结的)一个是硬件单片机和arm最重要,一个是编程c是基础汇编语言和单片机、arm的变种语言要精通。而且liunx要会。嵌入式是个非常好的行业但是比较难学,因为你硬件软件都要会,不像其它专业要求单一。
追问
同感!!软硬我是都有弄,但兴趣在软件。想过报培训班,但时间上不允许,还是自己先好好学学吧,一起努力!!
追答
嵌入式有一门基础课《嵌入式系统设计与实践》这本书很重要。linux随便买本教程就可以了,只要求会就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学linux嵌入式的话,推荐2本经典的 《嵌入式linux基础教程》 美:christopher hallinan著
《linux开发工具箱——项目开发的最有效途径》 美:John Fusco著,你会受益匪浅的,建议楼主还是多熟悉熟悉linux操作系统的结构,还有就是ARM的一些硬件知识是必须要掌握的,我觉得对初学者来说,基础知识是非常重要的,而且要非常透彻的掌握。
《linux开发工具箱——项目开发的最有效途径》 美:John Fusco著,你会受益匪浅的,建议楼主还是多熟悉熟悉linux操作系统的结构,还有就是ARM的一些硬件知识是必须要掌握的,我觉得对初学者来说,基础知识是非常重要的,而且要非常透彻的掌握。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果想做驱动开发,你已经有C语言基础。就买块开发板自己玩啊,比如友善的mini2440,配套的还有国嵌的视频。你看了的那些书已经够用了,实践下估计对你提高很大!!!!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询