首页 » 软件开发 » 嵌入式应用程序开发(嵌入式编程内核开发学习)

嵌入式应用程序开发(嵌入式编程内核开发学习)

雨夜梧桐 2024-07-24 19:20:32 0

扫一扫用手机浏览

文章目录 [+]

目前嵌入式系统采用的操作系统主要有LINUX、WINCE、VxWorks等。

值得尝试的路线

路线一:C语言是所有编程语言中最强的,单片机、DSP、以及各种类似ARM的芯片的编程都可以用C语言来完成),所以必须掌握的非常熟练。

嵌入式应用程序开发(嵌入式编程内核开发学习) 软件开发
(图片来自网络侵删)

推荐书籍:《C程序设计语言》这本经典教材是外国人写的,还有中文翻译版。

路线二:操作系统原理必不可少。
如果你是计算机专业毕业的,那无所谓。
如果你不是计算机专业,那一定要找一本比较简单的计算机原理书看,了解什么是“进程”、“线程”、“系统调度”等基本问题。

路线三:Linux操作系统是用C语言编写的,所以也应该先学习Linux编程,能够应用之后才能进一步理解其内核的精髓。

推荐书籍:《UNIX环境高级编程》(第2版)

路线四:了解ARM的架构、原理、汇编指令。
在嵌入式开发中,我们很少会写汇编,但最低要求是能看懂ARM汇编。

路线五:移植系统的时候,需要从底层开始。

它从bootloader开始,然后是内核移植,文件系统移植等,移植部分对硬件的依赖性很强,而且其配置步骤相对复杂,目前没有太多详细的资料。

路线六:驱动程序开发。

Linux驱动程序设计既是一个非常具有挑战性的领域,也是一门深奥的学科。

Linux驱动设计本质属于Linux内核编程的范畴,所以对Linux内核和内核编程都有要求。
学习之前需要了解Linux内核的组成,因为如果要详细研究每个部分,那可以展开成一本厚厚的书。

以上只是大致的框架,实际开发中会涉及到很多东西,比如交叉编译,makefile,shell脚本等等,所以嵌入式系统学习周期长,门槛高,自学需要很强的学习能力和专业技能,只要你能坚持下去,就一定能成功!

嵌入式的四个分支

对于我们初学者来说,应该首先学习以51为代表的单片机,​​掌握了51之后,再去深入学习更难的东西。

当然不是说你只需要学单片机;如果想学好单片机,还得学C语言,汇编语言,以及大量的应用软件;当你掌握了单片机之后,还需要自己设计原理图,PCB板;还要掌握系统设计的工程管理等等。

ARM+LINUX路线,专注于嵌入式Linux操作系统及其应用软件开发目标:

(1)掌握主流嵌入式微处理器(初步定义为ARM9)的结构与原理。

(2)必须掌握一种嵌入式操作系统(初步为uclinux或者linux,版本待定)。

(3)熟悉嵌入式软件开发流程,并完成过至少一个嵌入式软件项目。

从事嵌入式软件开发的好处有:

(1)目前国内外该领域的人才短缺,一方面该领域的准入门槛较高,非专业IT人员很难进入该领域;另一方面由于该领域比较新,目前发展速度过快,大多数人还不具备接触该领域的条件。

(2)不同于企业计算等应用软件,嵌入式领域人才的工作强度通常较低(但收入也不低)。

(3)如果要创业,开发自己的产品,嵌入式系统不像应用软件那么容易被盗版。
硬件设计一般都是找其他公司定制(这就叫“OEM”),都是通用硬件,我们只要把软件设计出来,就成了自己的产品。

(4)兴趣最重要。

从事嵌入式软件开发的缺点是:

(1)入行门槛比较高,用到的技术往往比较难,如果你没有很好的软件和硬件基础,尤其是没有很深的操作系统级软件功底,可能不太适合干这一行。

(2)该领域的公司数量远少于企业计算领域的公司数量。

(3)少数公司做嵌入式往往要求硕士以上学历,主要是因为嵌入式比较难,但大部分公司没有这个要求,只要有经验就可以。

(4)平台依赖性强,更换平台困难。

兴趣来源:

1、成功的概念不同,没有浪费生命就是我的成功。

2.喜欢思考并挑战逻辑思维。

3.喜欢C语言

4、喜欢低级开发,讨厌VB类型的开发工具(并不是说VB不好)。

5、发展前景好,适合创业,不想快要死了才去做工程师。

方法步骤:

1.基础知识:

目的:能够理解硬件的工作原理,但重点关注嵌入式软件,尤其是操作系统级软件,这将是我的优势。

学科:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构与算法、操作系统、软件工程、网络、数据库。

方法:科目虽然多,但都是比较简单的基础,大部分都掌握了,不需要全部学,可以根据需要选择选修课。

2.学习Linux:

目的:深入了解Linux系统。

方法:用Linux—〉LINXU系统编程开发—〉Linux内核驱动开发与分析。
先看深入版,再看主要原理。
看几遍后再看情景分析,与深入版对比。
两本书是交叉的,深入版是提纲,情景是目的。
分析版是0.11,适合学习。
最后再深入代码。

主要图书:Linux内核完全解析、Unix环境高级编程、Linux内核深入理解、场景分析及源代码。

3.学习嵌入式Linux:

目的:掌握嵌入式处理器和系统。

方法:

(1)嵌入式微处理器结构及应用:直接学ARM原理与汇编就行,不用复习x86了。

(2)嵌入式操作系统:ucOS/II简单,开源,适合初学者。
然后深入研究uClinux。

(3)你必须有开发板(arm9以上),并且如果可以的话能够参加培训(你会进步很快,还会交到一些朋友)。

主要书籍:毛德操《嵌入式系统》及其它arm9手册和arm汇编说明等。

参考网站:嵌入式Linux中文站:

4.深度学习:

A.数字图像压缩技术:主要掌握MPEG、MP3等编码、解码算法与技术。

B.通讯协议及编程技术:TCP/IP协议、802.11、蓝牙、GPRS、GSM、CDMA等。

C.网络与信息安全技术:如加密技术、数字证书CA等。

D.DSP技术:数字信号处理,DSP处理器通过硬件实现数字信号处理算法。

注:太多细节就不解释了,可以根据实际情况调整。
重点是1和3,不必严格按照顺序。
对于学习C++,原因是C++不仅仅是一种语言,一种工具,更是一门艺术,一种文化,一种哲学,而不是用来炫耀的东西。
对于Linux内核,学习编程,阅读一些优秀的代码也是必要的。

注意:一定要学会举一反三,基础扎实,看一看就能学到很多东西。
要想成为一名合格的程序员,必须精通至少一门编程语言,有良好的逻辑思维,理论联系实际。

不要只研究技术。
虽然挤出时间很难,但你还是应该留出一些空间来发展其他爱好,比如太空、素描、机械、管理、心理学、游戏、科幻电影。
还有一些事情你不想做但必须做!

技术是通过编程和编程创造出来的。
永远不要梦想一步登天,不要浮躁,不要觉得路很长。
而是应该编程、编程,再编程、再编程!
等待机会来临,去创业(不要相信奇迹,盲目创业很难成功,即使成功,发展空间也未必很大)。

推荐一些嵌入式书籍:

Linux 基础

1. Linux 和 Unix Shell 编程指南

C 语言基础

1. CPrimer Plus,第 5 版(作者:Stephen Prata)

2.《C 编程语言》第二版,作者:Brian W. Kernighan Dav

作者:idM.Rithie (K&R)

3. UNIX环境高级编程,第2版(APUE)

4.《嵌入式Linux应用开发详解》

Linux 内核

1.《深入理解Linux内核》(第3版)

2.《Linux内核源代码情景分析》毛德操、胡希明著

研发方向

1. UNIX 网络编程(UNP)

2. TCP/IP详解

3. Linux内核编程

4. Linux设备驱动程序开发(LDD)

5. 杨宗德的《高级Linux编程》

硬件基础知识

1. ARM架构与编程(杜春雷著)

2.S3C2410数据表

英语基础

1.《计算机与通信英语》

系统教程

1.嵌入式系统:架构、编程和设计

2.《嵌入式系统——使用开源代码和StrongARM/Xscale处理器》作者:毛德操、胡希明

3.构建嵌入式Linux系统

4.杨宗德著《嵌入式ARM系统原理与案例开发》

理论基础

1.算法简介

2.数据结构(C语言版)

3.计算机组织与架构性能分析

4.《深入理解计算机系统》作者:Randal E. Bryant David O''Hallaron

5.操作系统的本质与设计原则

6. 编制原则

7.数据通信和计算机网络

8.数据压缩原理及应用

推荐一些C语言方面的书籍

1. C 编程语言

2. PointersonC《C和指针》

3. C 陷阱和陷阱

4. ExpertCLanuage《专家C编程》

5. 编写干净的代码-----微软开发无缺陷 C 程序的技术《编程精要--微软编写高质量无缺陷 C 程序的秘诀》

6. 使用 Can 和 C++ 编写嵌入式系统程序

7.《C语言嵌入式系统编程》

8.《高质量C++/C编程指南》作者:林睿

综上所述

尽可能多地编写代码。
你需要学好 C,而不仅仅是 C 本身。
算法、架构等都很重要。
这里的许多书只是推荐,所以不要太在意它们。
关键是基础知识,这是最重要的!

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读1 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0