×

嵌入式linux

嵌入式linux(最便宜的可运行嵌入式linux的嵌入式处理器有哪些)

admin admin 发表于2023-03-15 03:14:27 浏览59 评论0

抢沙发发表评论

本文目录

最便宜的可运行嵌入式linux的嵌入式处理器有哪些

问题比较模糊。

我们加点限制:

  1. 最便宜:指的是板级成本最低

  2. 嵌入式Linux:指的是至少能运行

    2.6.x

    标准Linux Kernel,不含uCLinux

  3. 考虑商用级芯片

  4. 公开发行,无入门费

就我目前接触到的,板级成本最低的是新唐的N32905U1DN。

单片不到20元人民币,CPU为200MHz ARM926EJ-S,已包含16MB DRAM,搭建板级系统,需增加一片SPI FLASH(2元左右)或NAND FLASH存放系统映像。

成本较低的原因有:

  1. DRAM内嵌:这一点很重要,省去了外接DRAM,不仅能降低制造成本,也能降低设计成本(高速PCB变低速PCB设计)

  2. QFP封装:可以使用两层板,不像BGA往往需要四层板或更多,降低了成本

个人了解的不全,如果有其它更便宜的也请顺便告知一声,先谢谢了。

想学嵌入式软件,哪款开发板比较好

我本人的嵌入式就是自学的,我想你买开发板也是为了自学,先给您些建议吧,嵌入式在目前来说是一个比较受大家欢迎的一项行业,所以许多人都会选择嵌入式的学习,那么尤其是对于在校大学生或者是对于刚出学校的小白来说打家都想要找更好的工作或者学习来提升自己,自学是一项比较不错的选择,但我给你的建议是你要是初学者暂时不要选择开发板。下面和大家说下具体原因。

嵌入式的学习并非像我们之前学习单片机一样,上来就要选择一块合适自己的开发板然后根据教程进行一步步的操作。对于嵌入式来说在单机开发或者是移植操作系统前是有许多基础知识需要我们去打牢的,比如我们要了解嵌入式的交叉编译环境,构建虚拟机,而且你要是没有太多的C语言功底还要学习在LINUX下的基础操作和C语言高级编程,学习好这些之后你就要学习内存的原理,操作系统的启动规则,如果你能一路坚持下来那么祝贺你你可以选一块开发板来进行学学习了。下面就是如何选择开发板。

开发板都是大同小异的,给你的建议是不要选择老版本内核ARM的开发板,这样可能有些跟不上时代,但是也不要选择太新的,因为太新的开发板有些在移植等方面可能会有些兼容性问题,所以建议你选择一两年前的就可以比如三星的SPV5210就是一个比较不错的选择。

选择好开发板后,下一步你的工作就是要进行刷系统,单机开发,shell编程,内核移植,系统移植,网络编程,驱动设计等等操作了。在前期你可以把这一套系统的走一遍时间大概要一年多,之后再选择一小块进行专攻。

好了,我的分享就到这里,希望能对大家有所帮助,大家有什么问题或者建议可以说出来,我一一为大家解答。

成为一名嵌入式Linux开发工程师需要学习哪些知识


嵌入式系统是计算机软件和硬件的综合体,岗位包括:ESE(嵌入式软件工程师);ADE(嵌入式应用开发工程师);FWE(嵌入式底层开发工程师);FEC(嵌入式固件开发工程师)。

课程内容主要包括:

①C,Java核心编程:c语言核心编程,Java核心编程;

②Linux核心操作与算法:Linux系统使用,Linux-c编程核心技术,精品数据结构,Linux-c编程精髓;

③核心操作与算法:Linux系统编程,Linux网络编程核心技术,UI编程,Java核心编程,安卓核心技术;

④ARM+Linux底层开发:数字电路,ARM编程核心,Linux系统开发,嵌入式Linux驱动开发;

⑤大型项目实践:每期安排各类型真实的项目,详细可以找我要资料。

互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。

想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。

祝你学有所成,望采纳。


嵌入式开发培训都有哪些内容


嵌入式开发培训内容根据不同的学校有不同的设计,大体包含基础与理论、嵌入式开发系统核心开发、以及底层三大模块。学习嵌入式开发推荐粤嵌IT培训。嵌入式开发课程是粤嵌的金牌+热门学科!是国内众多嵌入式学习者的首选学习基地!粤嵌一众架构师级大牛导师汇聚,成就专业讲师团队。点击0元获取嵌入式开发试听课程
嵌入式开发主要的学习进程:
阶段一:嵌入式Linux C编程基础
阶段二:嵌入式Linux应用开发基础
阶段三:嵌入式软件编程高级
阶段四:Cortex-M4应用开发
阶段五:嵌入式Linux系统移植及驱动开发
阶段六:Python人工智能开发(赠送)
另外还有企业级实训项目:GOGO机器人、风飞送货无人机、VR/AR虚拟驾校、智能汽车控制系统、智慧家庭控制系统、G-glasss智能手表。
想要了解更多关于嵌入式开发的相关信息,推荐咨询粤嵌IT培训。粤嵌获得多项荣誉资质,教育部产学合作协同育人项目合作单位、广东省创新型试点企业、科技部备案国家级众创空间、广州市黄埔区人工智能行业协会副会长单位、广东教育学会机器人教育专委会单位、广东省重合同守信用企业。

如何以低成本将Linux 内核移植到嵌入式处


1 高速USB硬件接口设计目前的嵌入式系统设计中,USB接口的外扩主要采用微处理器芯片自带的USB控制器,一般只支持低速和全速协议,无法实现高速数据传输。该设计采用AT91RM9200处理器外扩ISP1761 USB控制器方案,解决了嵌入式系统下USB设备的传输速度问题。
AT91RM9200是Atmel公司一款基于ARM920T内核的微型处理器。它有丰富的系统与应用外设及标准接口,时钟频率可达180 MHz,并且具有低功耗、低成本、高性能,在嵌入式系统中应用广泛。ISP1761是Philips公司开发的一款高速USB On The Go(OTG)控制器,芯片内集成了64 KB的高速缓冲,单次处理数据达32 KB,极大地提升了系统的处理性能,并且功耗很低,其内部集成了Slave主机控制器和外设控制器。此外,ISP761还有可配置的32 b/16 b异步CPU接口,该设计ISP1761外部数据总线设置为16 b模式。
处理器AT91RM9200与外扩USB控制器的连接如图1所示。其中,A[17∶1]为地址线;DATA[15∶0]为数据线;WR_N为读使能;RD_N为写使能;CS_N片选信号采用NCS2;AT9lRM9200的中断源1分配给ISP1761作为其中断信号。处理器和ISP1761之间的数据传输通过中断方式实现,当USB接口有中断产生时,处理器的中断服务程序通过读取ISP1761的中断寄存器判断中断来源,从而执行相应的读/写操作。
2 高速USB软件驱动实现2.1 Linux系统中USB驱动结构USB内核模块是Linux系统中USB子系统的核心模块,它为USB驱动(设备和主控制器)提供了一个统一的接口,以访问和控制USB硬件。
如图2所示,应用程序发出的USB请求块(URB)经过上层的USB设备驱动和USB内核后到达USB主控制器。处于最底层USB主控制器的驱动(HCD)是USB主机直接与硬件交互的软件模块,它将解析URB后,再将数据发送到指定的USB设备上。
图3为ISP1761与操作系统相连接的接口框图。图5中,ISP1761要完成操作系统与USB设备的通信。驱动部分主要分两个层次:ISP1761硬件抽象层(HAL)和主控制器驱动(HCD)层。前者,通过GPIO接口和操作系统平台的相关函数来完成访问ISP1761硬件的功能;后者,主要实现将数据传输给连接的USB设备,并管理根集中器端口的功能。
因此,该设计的软件驱动部分主要由以下两个层次来完成USB主机端的驱动功能。
(1)ISP1761的HAL层。云顶赌场首先初始化设备结构,并添加设备到系统的设备层。其中,初始化部分主要完成ISP1761资源(如内存、中断等)的初始化设置和AT91RM9200处理器的初始化设置,为后期注册驱动程序做准备。如果系统成功添加了设备,在加载和卸载ISP1761主控制器驱动程序到内核时,就会进一步执行平台驱动程序的注册,否则将不能注册驱动程序。一旦注册成功,驱动程序就已经和设备绑定,任何用户态程序要操作此设备都可以通过platform_driver结构所定义的函数进行。下面给出该系统注册的platform_driver结构:
其中,在设备探测和注销等函数中调用了如下一个重要的结构体isp1761_dev。该结构体主要包含了ISP1761设备驱动的基本信息和中断处理例程指针。
(2)ISP1761的HCD层。Philips公司的ISP1761主控制器芯片遵循EHCI标准。该层在加载和卸载ISP1761主控制器驱动到内核时被调用,主要负责与连接的USB设备进行数据传输,并管理根集中器端口。具体包括主控制器例程、内存管理、根集中器和中心集中器的管理、数据传输等。
其中,pehci_hcd_urb_enqueue()函数是该部分所要实现的重点函数,主要用于完成将来自USB core层的urb传输请求转换成EHCI可识别的传输描述结构。然后安排到EHCI的periodic schedule list或者asynchronous schedule list的合适位置。当HC完成urb对应的传输后,EHCI HCD通过urb→cornplete()通知USB core对应的传输结果,最终完成通信过程。该函数的原型如下:
3 USB驱动的调试使用USB驱动的正常使用必须在内核中正确选择配置,除了默认配置之外,还要添加诸如SCSI设备的支持,VFAT文件格式的支持,新添加ISP1761驱动的支持等。ISP1761的驱动采用模块方式编译,系统启动后,逐层插入驱动模块加载USB主控制器驱动程序到内核。此时,系统插入U盘可成功获得分区,如下所示:
执行挂载命令mount-t vfat/dev/scsi/host0/busO/target0/lun0/partl/mnt/ usb(前提是已经在/mnt目录下建立了USB目录,并且U盘的格式为win-dows下的vfat)便可成功挂载U盘到指定的目录/mnt/usb下。
拷贝U盘上的文件到嵌入式系统,经多次测试,速度可达到约100~125 Mb/s,相比传统的嵌入式Linux系统下对USB的支持,速度得到了很好的提高,基本满足高速读/写的要求。
结语随着USB接口在嵌入式领域越来越广泛的应用和嵌入式Linux内核的不断扩展,嵌入式Linux内核支持的USB设备和USB主控制器越来越丰富,相应的驱动开发工作也将日益突出。该设计给出了嵌入式Linux系统下高速USB主控制器的硬件设计方案和驱动的实现方法,在提高系统性能的同时,降低了成本,有很好的实际应用价值。同时驱动的模块化结构设计保持了其最大可移植性,对于嵌入式下USB主控制器的驱动开发具有很好的借鉴意义。

linux与嵌入式系统的关系


linux和嵌入式系统是相互于相互交叉使用的。

嵌入式系统的定义就是软硬件可裁剪,在实际项目中,对产品的功耗、存储等要求严格,所以就会涉及将完整的Linux系统进行精简瘦身,节约存储提高效率,这就是所谓的系统移植、裁剪。此工作需要对Linux内核极其熟悉。

Linux驱动开发:嵌入式产品上面的各种外设的驱动开发,不仅要懂软件、还需要熟悉Linux内核代码、了解硬件相关知识。

嵌入式应用开发:调用Linux的系统调用接口,进行基于Linux系统的应用开发,只需要有Linux C语言知识的积累即可完成。

扩展资料

嵌入式linux的特点

1、嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。

2、嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费。

3、一些嵌入式系统设计成具有附加的功能,如存储在非易失性存储器中的程序,并且具有运行可以完成原始设计范围之外的任务的多任务操作系统的能力。

参考资料来源:百度百科—嵌入式linux


现在很多嵌入式Linux系统移植并不是真正的Linux系统移植,是吗


大部分的思路都是如上,大部分的编译器就是特定的芯片厂商提供好的交叉编译器,但也需要gcc编译器来作为承载,就是说:需要移植的编译器是在gcc的基础上做相应添加库,添加规则等而成,现在大部分linux发行版的kernel中90%以上代码都是相似的,自己添加自己特有驱动等等就可以了,没人会修改其他的代码,也没能力去修改。

嵌入式中的移植是什么意思,移植系统呢


与其它操作系统相比,Linux最大的特点:它是一款遵循GPL的操作系统,我们可以自由
地使用、修改、和扩展它。正是由于这一特色,Linux受到越来越多人士的青睐。于是,
一个经常会被探讨的问题出现了,即关于Linux系统的移植。对于操作系统而言,这种移
植通常是跨平台的、与硬件相关的,即硬件系统结构、甚至CPU不同。下面就让我们来看
看在Linux系统移植方面,我们都需要做些什么。
一、Linux系统移植的两大部分
对于系统移植而言,Linux系统实际上由两个比较独立的部分组成,即内核部分和系
统部分。通常启动一个Linux系统的过程是这样的:一个不隶属于任何操作系统的加载程
序将Linux部分内核调入内存,并将控制权交给内存中Linux内核的第一行代码。加载程
序的工作就完了,此后Linux要将自己的剩余部分全部加载到内存(如果有的话,视硬件
平台的不同而不同),初始化所有的设备,在内存中建立好所需的数据结构(有关进程
、设备、内存等)。到此为止Linux内核的工作告一段落,内核已经控制了所有硬件设备
。至于操作和使用这些硬件设备,则轮到系统部分上场了。内核加载根设备并启动init
守护进程,init守护进程会根据配置文件加载文件系统、配置网络、服务进程、终端等
。一旦终端初始化完毕,我们就会看到系统的欢迎界面了。小结一下:
(1)内核部分初始化和控制所有硬件设备(严格说不是所有,而是绝大部分),为内存
管理、进程管理、设备读写等工作做好一切准备。
(2)系统部分加载必需的设备,配置各种环境以便用户可以使用整个系统。
二、系统移植所必需的环境
在进一步叙述之前,我们有必要提一下做系统移植所必需的环境。
首先,需要一个新版本的gcc。对于一个准备系统移植的程序员而言,“新”到什么
程度应该心里有数。做跨平台编译,gcc也许是最好的选择。另外,Linux内核依赖许多
gcc特有的特性,非它不可。如果你已经会使用gcc并实地操练过多回,那你只需要再进
一步巩固一下跨平台编译的操作即可。两种编译环境是可用的:非目标平台上的Linux或
目标平台上的非Linux系统,除非你的开发平台过于特殊,否则你一定能够找到你能用的
gcc。
其次,编译链接库是必需的,而且必须是目标平台的编译链接库。通常这是一个枯
燥、繁琐、又丝毫没有成就感的过程。幸运的话,会有现成的链接库可以用。否则,你
需要自己用gcc建立它。
最后,需要目标平台的所有文档,越多越好。如果有一定的开发支持/仿真环境,L
oader(加载程序)则最好,这些可以帮助你减少移植过程中浪费在琐事上的时间。
三、Linux系统移植
接下来我们从内核和系统两个方面描述一下移植中的关键。
(1) 内存移植
Linux系统采用了相对来说并不是很灵活的单一内核机制,但这丝毫没有影响Linux
系统的平台无关性和可扩展性。Linux使用了两种途径分别解决这些问题,很干净利落,
丝毫不拖泥带水,而且十分清晰易懂。分离硬件相关代码和硬件无关代码,使上层代码
永远不必关心低层换用了什么代码,如何完成了操作。不论对x86上还是在Alpha平台上
分配一块内存,对上层代码而言没什么不同。硬件相关部分的代码不多,占总代码量的
很少一部分。所以对更换硬件平台来说,没有什么真正的负担。另一方面,Linux使用内
核机制很好地解决了扩展的问题,一堆代码可以在需要的时候轻松地加载或卸下,象随
身听,需要的时候带上,不需要时则锁在抽屉里。
Linux内核可以视为由五个功能部分组成:进程管理(包括调度和通信)、内存管理
、设备管理、虚拟文件系统、网络。它们之间有着复杂的调用关系,但幸运的是,在移
植中不会触及到太多,因为Linux内核良好的分层结构将硬件相关的代码独立出来。何谓
硬件相关,何谓无关?以进程管理为例,对进程的时间片轮转调度算法在所有平台的Li
nux中都是一样的,它是与平台无关的;而用来在进程中切换的实现在不同的CPU上是不
同的,因此需要针对该平台编写代码,这就是平台相关的。上面所讲的五个部分的顺序
不是随便排的,从前到后分别代表着它们与硬件设备的相关程度。越靠前越高,后面的
两个虚拟文件系统和网络则几乎与平台无关,它们由设备管理中所支持的驱动程序提供
底层支持。因此,在做系统移植的时候,需要改动的就是进程管理、内存管理和设备管
理中被独立出来的那部分即硬件相关部分的代码。在Linux代码树下,这部分代码全部在
arch目录下。
如果你的目标平台已经被Linux核心所支持的话,那么你是幸运的,因为已经没有太
多的工作让你去做。只要你的交叉编译环境是正确的,你只需要简单的配置、编译就可
以得到目标代码。否则,需要你去编写,或修改一些代码。只需修改平台相关部分的代
码即可。但需要对目标平台,主要是对CPU的透彻理解。在Linux的代码树下,可以看到
,这部分的典型代码量为:2万行左右C代码和2千行左右的汇编(C代码中通常包含许多
伪汇编指令,因此实际上纯C代码要少很多),这部分工作量是不可小看的。它包含了对
绝大多数硬件的底层操作,涉及IRQ、内存页表、快表、浮点处理、时钟、多处理器同步
等问题,频繁的端口编程意味着需要你将目标平台的文档用C语言重写一遍。这就是为什
么说目标平台的文档极其重要。
代码量最大的部分是被核心直接调用的底层支持部分,这部分代码在arch/xxx/ker
nel下(xxx是平台名称)。这些代码重写了内核所需调用的所有函数。因为接口函数是固
定的,所以这里更象是为硬件平台编写API。不同的系统平台,主要有以下几方面的不同

进程管理底层代码:从硬件系统的角度来看,进程管理就是CPU的管理。在不同的硬
件平台上,这有很大的不同。CPU中用的寄存器结构不同,上下文切换的方式、现场的保
存和恢复、栈的处理都不同,这些内容主要由CPU开发手册所描述。通常来说,CPU的所
有功能和状态对于Linux不一定有意义。实现时,需要在最小的开发代价和最好的系统性
能之间加以权衡。
* BIOS接口代码:这一名称似乎并不太准确,因为它沿用了PC一贯的叫法。但在不致引
起混淆的情况下我们还是这么叫它。在通用平台上,通常有基本输入输出系统供操作系
统使用,在PC上是BIOS,在SPARC上是PROM,在很多非通用系统上甚至并没有这样的东西
。多数情况下,Linux不依赖基本输入输出系统,但在某些系统里,Linux需要通过基本
输入输出系统中得到重要的设备参数。移植中,这部分代码通常需要完全改写。
* 时钟、中断等板上设备支持代码:即使在同一种CPU的平台上,也会存在不同的板上外
设,异种CPU平台上更是如此。不同的系统组态需要不同的初始化代码。很典型的例子就
是MIPS平台,看看arc/mips/的代码,与其它系统比较一下就知道。因为MIPS平台被OEM
得最广,在嵌入式领域应用最多(相对其它几种CPU而言)。甚至同一种MIPS芯片被不同
厂家封装再配上不同的芯片组。因此要为这些不同的MIPS平台分别编写不同的代码。
* 特殊结构代码:如多处理器支持等。其实每一种CPU都是十分特殊的,熟悉x86平台的
人都知道x86系列CPU著名的实模式与虚模式的区别,而在SPARC平台上根本就没有这个概
念。这就导致了很大的不同:PC机上的Linux在获得控制权后不久就开始切换到虚模式,
SPARC机器上则没有这段代码。又如电源管理的支持更是多种多样,不同的CPU有着不同
的实现方式(特殊的电源管理方式甚至被厂商标榜)。在这种情况下,除非放弃对电源
管理的支持,否则必须重写代码。
还有一部分代码量不多,但不能忽视的部分是在arch/xxx/mm/下的内存管理部分。
所有与平台相关的内存管理代码全部在这里。这部分代码完成内存的初始化和各种与内
存管理相关的数据结构的建立。Linux使用了基于页式管理的虚拟存储技术,而CPU发展
的趋势是:为了提高性能,实现内存管理的功能单元统统被集成到CPU中。因此内存管理
成为一个与CPU十分相关的工作。同时内存管理的效率也是最影响系统性能的因素之一。
内存可以说是计算机系统中最频繁访问的设备,如果每次内存访问时多占用一个时钟周
期,那就有可能将系统性能降低到不可忍受。在Linux系统里,不同平台上的内存管理代
码的差异程度是令人吃惊的,可以说是差异最大的。不同的CPU有不同的内存管理方式,
同一种CPU还会有不同的内存管理模式。Linux是从32位硬件平台上发展起来的操作系统
,但是现在已经有数种64位平台出现。在64位平台上,可用内存范围增大到原来的232倍
,其间差异可略窥一斑了。鉴于这部分代码的重要性和复杂性,移植工作在这里变得相
当谨慎。有些平台上甚至只是用最保守的内存管理模式。如在SPARC平台上的页面大小可
以是多种尺寸,为了简单和可靠起见,SPARC版的Linux只是用了8K页面这一种模式。这
一状况直到2.4版才得以改善。
除了上面所讲的之外,还有一些代码需要考虑,但相对来说次要一些。如浮点运算
的支持。较完美的做法是对FPU编程,由硬件完成浮点运算。但在某些时候,浮点并不重
要,甚至CPU根本就不支持浮点。这时候就可以根据需求来取舍。
对于内核移植的讨论到此为止。实际上,还有一些移植工作需要同时考虑,但很难
说这是属于内核范畴还是属于驱动程序范畴,比如说显示设备的支持,和内核十分相关
,但在逻辑上又不属于内核,并且在移植上也更像是驱动程序的开发。因此不在这里讨
论。
(2)系统移植
当内核移植完毕后,可以说所有的移植工作就已经完成大半了。就是说,当内核在
交叉编译成功后,加载到目标平台上正常启动,并出现类似VFS: Can抰 mount root fi
le system的提示时,则表示可以开始系统移植方面的工作了。系统移植实际上是一个最
小系统的重建过程。许多Linux爱好者有过建立Linux系统应急盘的经验,与其不同的是
,你需要使用目标平台上的二进制代码生成这个最小系统。包括:init、libc库、驱动
模块、必需的应用程序和系统配置脚本。一旦这些工作完成,移植工作就进入联调阶段
了。
一个比较容易的系统部分移植办法是:先着手建立开发平台上的最小系统,保证这
套最小系统在开发平台上正确运行。这样可以避免由于最小系统本身的逻辑错误而带来
的麻烦。由于最小系统中是多个应用程序相互配合工作,有时出现的问题不在代码本身
而在系统的逻辑结构上。
Linux系统移植工作至少要包括上述的内容,除此之外,有一些看不见的开发工作也
是不可忽视的,如某个特殊设备的驱动程序,为调试内核而做的远程调试工作等。另外
,同样的一次移植工作,显然符合最小功能集的移植和完美移植是不一样的;向16位移
植和向64位移植也是不一样的。
在移植中通常会遇见的问题是试运行时锁死或崩溃,在系统部分移植时要好办些,
因为可以容易地定位错误根源,而在核心移植时确实很让人头疼。虽然可以通过串口对
运行着的内核进行调试,但是在多任务情况下,有很多现象是不可重现的。又如,在初
始化的开始,很多设备还没法确定状态,甚至串口还没有初始化。对于这种情况没有什
么很好的解决办法,好的开发/仿真平台很重要,另外要多增加反映系统运行状态的调试
代码;再者要吃透硬件平台的文档。硬件平台厂商的专业支持也是很重要的。
还有一点很重要:Linux本身是基于GPL的操作系统,移植时,可以充分发挥GPL的优
势,让更多的爱好者参与进来,向共同的目标前进。

简述嵌入式linux系统移植的主要内容有哪些


嵌入式操作系统的主要好处就是屏蔽了底层硬件的差别,给上层应用提供统一的接口,并管理进程调度和资源(如CPU时间、内存)分配等。就跟windows操作系统一样,不管你是用华硕的电脑还是戴尔的电脑,只要装了windows操作系统,你都可以用office、...

linux和嵌入式linux


学嵌入式linux吧
嵌入式Linux操作系统学习规划
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定)
(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
兴趣的由来:
1、成功观念不同,不虚度此生,就是我的成功。
2、喜欢思考,挑战逻辑思维。
3、喜欢C
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
相信程序员。
不要阻止程序员做那些需要去做的。
保持语言短小精干。
一种方法做一个操作。
使得它运行的够快,尽管它并不能保证将是可移植的。
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
2、学习linux:
目的:深入掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。
4、深入学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
2010-8-21 16:46 回复
122.90.173.* 2楼
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!
技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
嵌入式书籍推荐
Linux基础
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明著
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux高级程序设计》 杨宗德著
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系统原理与实例开发》 杨宗德著
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O’’Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
C语言书籍推荐
1. The C programming language 《C程序设计语言》
2. Pointers on C 《C和指针》
3. C traps and pitfalls 《C陷阱与缺陷》
4. Expert C Lanuage 《专家C编程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹--Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C++/C编程指南》林锐
尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。
这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!