当前位置: 技术问答>linux和unix
高分求助Linux嵌入式系统开发学习计划
来源: 互联网 发布时间:2016-05-09
本文导语: 各位大虾好,我想学习Linux嵌入式系统开发,我刚刚大三,因为学校没有这个方向,所以请各位大虾帮我指点学习计划好吗,就是先学什么在学什么,最好从基础说起,以及以后的发展方向,和需要掌握的外语。非常感谢!!...
各位大虾好,我想学习Linux嵌入式系统开发,我刚刚大三,因为学校没有这个方向,所以请各位大虾帮我指点学习计划好吗,就是先学什么在学什么,最好从基础说起,以及以后的发展方向,和需要掌握的外语。非常感谢!!!
|
STEP#1:学习如何使用linux,包括linux下的常用命令,简单的shell,linux的常用配置等;
STEP#2:学习C语言,一定要学习扎实,要掌握如何编译成可执行文件,动态库,静态库,要会用GCC,知道常用编译选项,能看懂并能自己写Makefile等;知道如何交叉编译一个网上的开源项目;
STEP#3:参加实际项目,写一个相对比较大的Application!熟悉多线程,网络,文件IO,管道,信号,互斥等基本编程方法。
STEP#4:学习kernel的基本结构,能简单配置和编译内核;学习写一些简单驱动,熟悉linux内核的驱动模型;把LDD3看完;
STEP#5:研究或者尝试修改内核的一些subsystem,比如I2C, MTD,Serial,USB,FS等;
前面的工作是别人都将环境搭建好了,你在上面做一些工作而已,事实上,一个嵌入式系统,硬件出来之后,你要自己从0开始搭建起来整个运行平台!
STEP#6: 学习BOOTLOADER,一般有现成的,比如uboot,但是根据你的硬件情况一般要做一些修改;比如内存初始化,FLASH初始化,网络初始化, 串口初始化等等;并且要学习如何将bootloader烧写到flash上,让系统加点即能寻址到bootloader开始执行;小批量之前,烧写一般用仿真器(比如BDI之类)!大批量的时候一般可以用专用烧写工具在生产是就烧写好;
STEP#7: 搭建NFS开发环境;方便开发阶段调试,不用频烧写;这需要内核开启NFS支持,另外你要在HOST机器开启NFS server;
STEP#8: 制作自己的root文件系统;一般用busybox来做;根文件系统可以选择:cramfs,jffs2,yaffs等;需要哪个,在内核中一定要编译进去;准备好文件系统之后,就可以用mkfs.xxx工具来将其做成映像。然后就可以通过bootloader来将root文件系统烧写到flash上了。要想烧写的文件能够正常跑起来,首先bootloader传递给内核的参数要正确,另外,内核要对flash做好正确的分区;
NOTES:研究linux kernel当然是一个永不停息的工作:)
随便写了点,有些凌乱,希望可以抛砖引玉! Good Luck!
STEP#2:学习C语言,一定要学习扎实,要掌握如何编译成可执行文件,动态库,静态库,要会用GCC,知道常用编译选项,能看懂并能自己写Makefile等;知道如何交叉编译一个网上的开源项目;
STEP#3:参加实际项目,写一个相对比较大的Application!熟悉多线程,网络,文件IO,管道,信号,互斥等基本编程方法。
STEP#4:学习kernel的基本结构,能简单配置和编译内核;学习写一些简单驱动,熟悉linux内核的驱动模型;把LDD3看完;
STEP#5:研究或者尝试修改内核的一些subsystem,比如I2C, MTD,Serial,USB,FS等;
前面的工作是别人都将环境搭建好了,你在上面做一些工作而已,事实上,一个嵌入式系统,硬件出来之后,你要自己从0开始搭建起来整个运行平台!
STEP#6: 学习BOOTLOADER,一般有现成的,比如uboot,但是根据你的硬件情况一般要做一些修改;比如内存初始化,FLASH初始化,网络初始化, 串口初始化等等;并且要学习如何将bootloader烧写到flash上,让系统加点即能寻址到bootloader开始执行;小批量之前,烧写一般用仿真器(比如BDI之类)!大批量的时候一般可以用专用烧写工具在生产是就烧写好;
STEP#7: 搭建NFS开发环境;方便开发阶段调试,不用频烧写;这需要内核开启NFS支持,另外你要在HOST机器开启NFS server;
STEP#8: 制作自己的root文件系统;一般用busybox来做;根文件系统可以选择:cramfs,jffs2,yaffs等;需要哪个,在内核中一定要编译进去;准备好文件系统之后,就可以用mkfs.xxx工具来将其做成映像。然后就可以通过bootloader来将root文件系统烧写到flash上了。要想烧写的文件能够正常跑起来,首先bootloader传递给内核的参数要正确,另外,内核要对flash做好正确的分区;
NOTES:研究linux kernel当然是一个永不停息的工作:)
随便写了点,有些凌乱,希望可以抛砖引玉! Good Luck!
|
bshawk 总结的不错了。
我补充一下。
需要理解硬件接口原理,能够看懂板子的原理图,
会用各种仪器(如示波器,万用表,USB分析器,网络数据分析工具等)进行调试。
说的简单一点就是 Bootloader + Kernel(保护drivers) + rootfs
如果没有Linux的背景,那就先熟悉一下Linux,
熟悉了之后,开始先安装别人的提示,把Bootloader烧到Flash上,
Kernel,rootfs的image 通过1) NFS 或者 2) 烧到 Flash上,把板子跑起来,整个过程跑一遍。
然后根据自己的兴趣,对上面三方面有所侧重。
1) Bootloader很重要,板子的bootup全靠它了,还要负责加载Kernel Image
需要了解的知识: ARM core初始化,soc初始化,uart/memory/flash/network初始化。
了解bootloader搬运kernel image并将执行权交给kernel的全过程,
会用ADS或者RVDS进行bootloader的调试
2)Kernel (包含drivers)
kernel的common部分可分为几个大部分: memory managerment,process managerment,
file systems,network。
drivers部分:熟悉Kernel的驱动模型,了解中断,GPIO等资源的注册。
3)关于rootfs,可以自己从头编译,可参考linux from scratch项目。
可以使用ptxdist http://www.pengutronix.de/software/ptxdist/index_en.html
来生成。
其他的编程技巧跟Linux上没两样,如gcc,Makefile,shell,。。。。。
注意不同的是交叉编译的概念。
有条件的话,找个有经验的人带你,入门非常快,少走弯路
关于linux的书籍,请看:
http://blog.chinaunix.net/u/12880/showart_1225366.html
个人推荐你看 9->7->10
good luck
我补充一下。
需要理解硬件接口原理,能够看懂板子的原理图,
会用各种仪器(如示波器,万用表,USB分析器,网络数据分析工具等)进行调试。
说的简单一点就是 Bootloader + Kernel(保护drivers) + rootfs
如果没有Linux的背景,那就先熟悉一下Linux,
熟悉了之后,开始先安装别人的提示,把Bootloader烧到Flash上,
Kernel,rootfs的image 通过1) NFS 或者 2) 烧到 Flash上,把板子跑起来,整个过程跑一遍。
然后根据自己的兴趣,对上面三方面有所侧重。
1) Bootloader很重要,板子的bootup全靠它了,还要负责加载Kernel Image
需要了解的知识: ARM core初始化,soc初始化,uart/memory/flash/network初始化。
了解bootloader搬运kernel image并将执行权交给kernel的全过程,
会用ADS或者RVDS进行bootloader的调试
2)Kernel (包含drivers)
kernel的common部分可分为几个大部分: memory managerment,process managerment,
file systems,network。
drivers部分:熟悉Kernel的驱动模型,了解中断,GPIO等资源的注册。
3)关于rootfs,可以自己从头编译,可参考linux from scratch项目。
可以使用ptxdist http://www.pengutronix.de/software/ptxdist/index_en.html
来生成。
其他的编程技巧跟Linux上没两样,如gcc,Makefile,shell,。。。。。
注意不同的是交叉编译的概念。
有条件的话,找个有经验的人带你,入门非常快,少走弯路
关于linux的书籍,请看:
http://blog.chinaunix.net/u/12880/showart_1225366.html
个人推荐你看 9->7->10
good luck
|
0.C语言
1.UNIX环境编程
2.LINUX内核编程
3.LDD
4.国内宋宝华的那本驱动编程
5.深入理解LINUX内核
装个UBUNTU,经常使用
买块板子,建议买2440的,淘宝上有,加上LCD也就1000块左右,2440用的多,文章也多
板子一定要买~~~`,要多实践,如果想学好的话,可以从bootloader开始全自己写,
这样等你毕业后你就牛XXX了!!!
1.UNIX环境编程
2.LINUX内核编程
3.LDD
4.国内宋宝华的那本驱动编程
5.深入理解LINUX内核
装个UBUNTU,经常使用
买块板子,建议买2440的,淘宝上有,加上LCD也就1000块左右,2440用的多,文章也多
板子一定要买~~~`,要多实践,如果想学好的话,可以从bootloader开始全自己写,
这样等你毕业后你就牛XXX了!!!
|
搞嵌入式,你得有块板子。。
基本的一些LINUX基本命令
学学相应的底层东西。。。
比如汇编等等、、
基本的一些LINUX基本命令
学学相应的底层东西。。。
比如汇编等等、、
|
2楼和4楼都很精辟。尤其是,如果你是学计算机的,不是double E的,一定要好好学学硬件,不然你bootloader,driver都搞不定。
开发环境看你选,ads1.2+linux2.6 还是vxworks,wince。至少都了解 下。
开发环境看你选,ads1.2+linux2.6 还是vxworks,wince。至少都了解 下。