嵌入式学习路线图
嵌入式开发学习路线图
为什么选择学习嵌入式?
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一。当前的中国IT人才面临严重的“后继乏人”, 而且这种缺口由于培训缺乏、教育模式等原因造成的,而缺口最大的,就是高级IT人才。如果你从事的IT培训不专业,面对竞争越来越激烈的职场,基本找不到 工作。据专家预测,嵌入式每年人才缺口在30万左右。
嵌入式行业平均薪资分布
嵌入式职业发展讲解视频
视频中主要讲解什么样的人适合从事嵌入式行业、嵌入式行业从业人员需要具备哪些基本素质、嵌入式行业的特点以及嵌入式行业的现状与发展。
ARM+Linux嵌入式底层内核驱动方向学习总体路线图
基础学习Ⅰ---Linux入门
目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux 系统有很多发行版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,而是尽快把 Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟机上安装。
Ubuntu系统下载地址:http://www.ubuntu.org.cn/desktop/get-ubuntu/download/
A)经典书籍推荐:
决于对数据结构的掌握程度。在数据结构部分我们要把链表、树、排序作
为学习重点。而且我们也可以查看一些比较常见的函数(如strcopy、strcat、printf等)在内核中是如何实现的,以及编写代码模拟堆栈,这 不仅有利于编写代码质量的提高,而且还可以初步了解Linux内核精髓,为今后工作打下坚实的基础。
C++、QT在嵌入式开发领域,是用来开发图形界面的,希望从事上层应用开发及图形界面,那么在C++、QT方面需要比较深入的学习。
A)经典书籍推荐:
C)经典学习案例:
1、学员成绩管理系统2、计算器3、电子词典4、文件压缩器
基础进阶---Linux应用程序设计
Linux的思想源于Unix。Linux继承了Unix的优点,但是没有用UNIX的代码,所有程序都是重新编写的,而且Linux与Unix的源码级兼容。Linux是类Unix操作系统。Linux 不仅符合 POSIX 标准,而且还包括其它 UNIX 标准的多种特性,例如,UNIX 的 System V 接口文档(System V Interface Document,SVID)和伯克利软件发布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 几个典型特性当中最实用的一些功能:
Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号。 Linux 支持 BSD Socket 网络编程接口。
许多 Linux 发行版采用 SysV init 机制,支持运行级别。
此阶段的学习是从事嵌入式上层应用开发以及底层开发人员的必修课程。进程、线程、信号、文件锁、socket是这部分内容的重点。要把这些内容学的透彻非要下些苦功夫不可。而且函数是系统提供给我们的,难免要对计算机系统深入理解一番。TCP/IP协议也是要涉及到的。有问题建议用Google搜索及登陆chinaunix论坛。通过这个阶段的学习,我们就可以初步实现一些应用程序的开发了,如做自己的shell命令解析器、简单的聊天软件、视频多播等。
A)经典书籍推荐:
C)经典学习案例:
1、串口监听程序 2、图片浏览器 3、MP3播放器 4、聊天程序 5、 ftp程序
6、音频广播程序 7、ping的实现 8、DDos攻击程序 9、ARP攻击程序
嵌入式入门---ARM体系结构
从这部分开始,我们将真正进入嵌入式开发学习阶段。首先我们要知道采用哪种处理器。目前通用嵌入式处理器有ARM、MIPS、PowerPC、X86等。从市场产品占有率上看,ARM处理器远远领先于同类其它处理器,并逐步掠夺传统51单片机和英特尔市场份额。据招聘网站统计,目前用人单位在技术水平上要求开发人员掌握ARM9及以上平台的开发技术。ARM公司在发布ARM11产品后,更改以往的数字标记更新方式,转为发布ARM Cortex。但是Cortex并不是更高端,而是全新系列的处理器,比如Cortex M3,它主要应用于机械加工、工控领域,目的是取代以前的ARM7处理器。 在开始学习前,建议有一块自己的开发板,目前ARM9 2440的开发板价格在400-600元之间,ARM11 6410的开发板价格要高一些,最便宜的也要1200元以上。在此,提醒大
3)ARM体系结构与Bootloader开发
C)经典学习案例:
1. ARM模拟器开发 2. Watchdog控制程序 3. RTC时钟控制程序 4. Uart控制程序 5. LCD控制程序 6. 触摸屏控制程序 7. DMA控制程序 8. 音频控制程序 9. 网卡控制程序 10. 文件系统制作 11. ARM-Linux移植
嵌入式提升---Linux内核、驱动
众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核源码包,去看内核中的代码,在这里可以充分检验C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱动、合理剪裁内核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11 6410及以上的开发板,可以试试在裸板上编写驱动并移植Android系统到开发板上吧。
B)经典学习案例:
1. GPIO驱动 2. RTC时钟驱动 3. WatchDog驱动 4. Udev移植 5. 触摸屏输入设备驱动
6. LCD显示设备驱动 7. DMA驱动 8. 音频设备驱动 9. Nand Flash块设备驱动 10. 网络设备驱动
UEA-嵌入式底层驱动开发者 V8.2版
----项目案例
嵌入式开发课程涉及领域非常广泛。从硬件时序图到体系机构、从驱动到各种协议规范、从操作系统内核到应用层开发。整个过程触及海量的系统开发知识和少量硬件体系知识。嵌入式开发分成应用层开发和底层驱动开发。伴随着嵌入式领域如消费电子、移动设备、智能工控等行业应用的兴起,庞大的市场需求刺激了众多企业纷纷投向嵌入式开发行业。行业的迅猛增长伴随着人才需求的极度短缺,国内大学教育与实际需求脱轨的同时,造成了人才断层,所以一门好的嵌入式课程必须有足够的嵌入式项目实践做支撑。
企业实际开发项目
•Linux环境下的视频点播系统
•从零开发ARM-Linux嵌入式设备的Bootloader •Android智能手机
•ARM Cortex A9双核平板电脑
1、Linux环境下的视频点播系统
PPLIVE、PPS等网络电视相对于传统电视由于提供灵活的点播方式,倍受人们欢迎。基于C/S架构的网络程序不仅用于网络电视,同样适用于嵌入式领域的网络程序,如QQ的服务端软件、网络游戏、银行使用的排号机、餐厅的点餐系统等。而这些系统服务器端大多数才用的是UNIX/LINUX平台的系统及网络程序。通过该项目的演练,可以为目前最热门的研发职业生涯打下坚实的技术基础。该项目目前用于尚观内部学员自习时间观看教学视频。
项目说明视频
2、从零开发ARM-Linux嵌入式设备的Bootloader
一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 引导加载程序、Linux 内核、文件系统、用户应用程序。简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 通常,BootLoader 是严重地依赖于硬件而实现的,所以就要求嵌入式开发从业人员必须具备开发Bootloader的能力。尚观要求学员具备从零首写Bootloader的能力,这样不仅能轻松胜任企业职位要求,对于掌握真正嵌入式开发本质具有强有力的帮助。
3、Android智能手机
Google的Android系统不仅取得了手机市场广阔占有率,同时也被平板电脑厂商和其他智能终端以及大量的嵌入式设备生产厂商所采用。这主要归结于Android的开源、可修改、可移植等特性。采用Android系统不仅能减少企业产品研发人力、财力的投入,还能帮助企业缩短研发周期增快产品上市速度,保证产品具备先期竞争实力。Android的普及势必促使研发人员具备底层驱动研发能力。尚观以企业实际Android手机研发为实例,基于ARM11 6410平台真实开发底层驱动,移植Android系统,最终实现Android智能手机。
4、ARM Cortex A9双核平板电脑
该项目直接在双核A9处理器上运行主流的Android系统,学员需要凭借ARM11的经验再进一步理解更新架构,在原来代码的基础上,重写基于A9的Bootloader及相关驱动,让Android系统运行在A9双核处理器上。该平台采用7寸平板显示,拥有主流智能平板配置。
技术强化真实案例
1、嵌入式C语言强化部分案例
• 自己设计一个指法练习的游戏程序
• 自己设计一个汉诺塔游戏
2、数据结构部分案例
• 成绩管理系统
• 电子词典
• 文件压缩器
• 计算器
3、c++程序设计案例
• 串口监听程序
• 模板库的实现(MyTL) • 编写自己的图片浏览器
4、Linux系统程序设计案例 • 串口监听程序 • 图片浏览器
• MP3播放器
5、Linux网络程序设计案例 • 聊天程序
• ftp程序
• ping的实现
• DDos攻击程序 • ARP攻击程序
6、ARM嵌入式开发案例 • ARM模拟器开发 • Watchdog控制程序 • RTC时钟控制程序 • Uart控制程序 • LCD控制程序 • DMA控制程序 • 音频控制程序 • 网卡控制程序 • 触摸屏控制程序 • 文件系统制作 • ARM-Linux移植
7、Linux设备驱动程序案例 • GPIO驱动
• RTC时钟驱动 • WatchDog驱动 • Udev移植
• 触摸屏输入设备驱动 • LCD显示设备驱动 • DMA驱动
• 音频设备驱动
• Nand Flash块设备驱动 • 网络设备驱动
8、Android底层驱动开发案例 • Android LED驱动 • Android 图形驱动 • Android 音频驱动 • Android 触摸屏驱动 • Android GSM驱动
嵌入式学习路线图
嵌入式开发学习路线图
为什么选择学习嵌入式?
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一。当前的中国IT人才面临严重的“后继乏人”, 而且这种缺口由于培训缺乏、教育模式等原因造成的,而缺口最大的,就是高级IT人才。如果你从事的IT培训不专业,面对竞争越来越激烈的职场,基本找不到 工作。据专家预测,嵌入式每年人才缺口在30万左右。
嵌入式行业平均薪资分布
嵌入式职业发展讲解视频
视频中主要讲解什么样的人适合从事嵌入式行业、嵌入式行业从业人员需要具备哪些基本素质、嵌入式行业的特点以及嵌入式行业的现状与发展。
ARM+Linux嵌入式底层内核驱动方向学习总体路线图
基础学习Ⅰ---Linux入门
目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux 系统有很多发行版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,而是尽快把 Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟机上安装。
Ubuntu系统下载地址:http://www.ubuntu.org.cn/desktop/get-ubuntu/download/
A)经典书籍推荐:
决于对数据结构的掌握程度。在数据结构部分我们要把链表、树、排序作
为学习重点。而且我们也可以查看一些比较常见的函数(如strcopy、strcat、printf等)在内核中是如何实现的,以及编写代码模拟堆栈,这 不仅有利于编写代码质量的提高,而且还可以初步了解Linux内核精髓,为今后工作打下坚实的基础。
C++、QT在嵌入式开发领域,是用来开发图形界面的,希望从事上层应用开发及图形界面,那么在C++、QT方面需要比较深入的学习。
A)经典书籍推荐:
C)经典学习案例:
1、学员成绩管理系统2、计算器3、电子词典4、文件压缩器
基础进阶---Linux应用程序设计
Linux的思想源于Unix。Linux继承了Unix的优点,但是没有用UNIX的代码,所有程序都是重新编写的,而且Linux与Unix的源码级兼容。Linux是类Unix操作系统。Linux 不仅符合 POSIX 标准,而且还包括其它 UNIX 标准的多种特性,例如,UNIX 的 System V 接口文档(System V Interface Document,SVID)和伯克利软件发布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 几个典型特性当中最实用的一些功能:
Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号。 Linux 支持 BSD Socket 网络编程接口。
许多 Linux 发行版采用 SysV init 机制,支持运行级别。
此阶段的学习是从事嵌入式上层应用开发以及底层开发人员的必修课程。进程、线程、信号、文件锁、socket是这部分内容的重点。要把这些内容学的透彻非要下些苦功夫不可。而且函数是系统提供给我们的,难免要对计算机系统深入理解一番。TCP/IP协议也是要涉及到的。有问题建议用Google搜索及登陆chinaunix论坛。通过这个阶段的学习,我们就可以初步实现一些应用程序的开发了,如做自己的shell命令解析器、简单的聊天软件、视频多播等。
A)经典书籍推荐:
C)经典学习案例:
1、串口监听程序 2、图片浏览器 3、MP3播放器 4、聊天程序 5、 ftp程序
6、音频广播程序 7、ping的实现 8、DDos攻击程序 9、ARP攻击程序
嵌入式入门---ARM体系结构
从这部分开始,我们将真正进入嵌入式开发学习阶段。首先我们要知道采用哪种处理器。目前通用嵌入式处理器有ARM、MIPS、PowerPC、X86等。从市场产品占有率上看,ARM处理器远远领先于同类其它处理器,并逐步掠夺传统51单片机和英特尔市场份额。据招聘网站统计,目前用人单位在技术水平上要求开发人员掌握ARM9及以上平台的开发技术。ARM公司在发布ARM11产品后,更改以往的数字标记更新方式,转为发布ARM Cortex。但是Cortex并不是更高端,而是全新系列的处理器,比如Cortex M3,它主要应用于机械加工、工控领域,目的是取代以前的ARM7处理器。 在开始学习前,建议有一块自己的开发板,目前ARM9 2440的开发板价格在400-600元之间,ARM11 6410的开发板价格要高一些,最便宜的也要1200元以上。在此,提醒大
3)ARM体系结构与Bootloader开发
C)经典学习案例:
1. ARM模拟器开发 2. Watchdog控制程序 3. RTC时钟控制程序 4. Uart控制程序 5. LCD控制程序 6. 触摸屏控制程序 7. DMA控制程序 8. 音频控制程序 9. 网卡控制程序 10. 文件系统制作 11. ARM-Linux移植
嵌入式提升---Linux内核、驱动
众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核源码包,去看内核中的代码,在这里可以充分检验C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱动、合理剪裁内核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11 6410及以上的开发板,可以试试在裸板上编写驱动并移植Android系统到开发板上吧。
B)经典学习案例:
1. GPIO驱动 2. RTC时钟驱动 3. WatchDog驱动 4. Udev移植 5. 触摸屏输入设备驱动
6. LCD显示设备驱动 7. DMA驱动 8. 音频设备驱动 9. Nand Flash块设备驱动 10. 网络设备驱动
UEA-嵌入式底层驱动开发者 V8.2版
----项目案例
嵌入式开发课程涉及领域非常广泛。从硬件时序图到体系机构、从驱动到各种协议规范、从操作系统内核到应用层开发。整个过程触及海量的系统开发知识和少量硬件体系知识。嵌入式开发分成应用层开发和底层驱动开发。伴随着嵌入式领域如消费电子、移动设备、智能工控等行业应用的兴起,庞大的市场需求刺激了众多企业纷纷投向嵌入式开发行业。行业的迅猛增长伴随着人才需求的极度短缺,国内大学教育与实际需求脱轨的同时,造成了人才断层,所以一门好的嵌入式课程必须有足够的嵌入式项目实践做支撑。
企业实际开发项目
•Linux环境下的视频点播系统
•从零开发ARM-Linux嵌入式设备的Bootloader •Android智能手机
•ARM Cortex A9双核平板电脑
1、Linux环境下的视频点播系统
PPLIVE、PPS等网络电视相对于传统电视由于提供灵活的点播方式,倍受人们欢迎。基于C/S架构的网络程序不仅用于网络电视,同样适用于嵌入式领域的网络程序,如QQ的服务端软件、网络游戏、银行使用的排号机、餐厅的点餐系统等。而这些系统服务器端大多数才用的是UNIX/LINUX平台的系统及网络程序。通过该项目的演练,可以为目前最热门的研发职业生涯打下坚实的技术基础。该项目目前用于尚观内部学员自习时间观看教学视频。
项目说明视频
2、从零开发ARM-Linux嵌入式设备的Bootloader
一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 引导加载程序、Linux 内核、文件系统、用户应用程序。简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 通常,BootLoader 是严重地依赖于硬件而实现的,所以就要求嵌入式开发从业人员必须具备开发Bootloader的能力。尚观要求学员具备从零首写Bootloader的能力,这样不仅能轻松胜任企业职位要求,对于掌握真正嵌入式开发本质具有强有力的帮助。
3、Android智能手机
Google的Android系统不仅取得了手机市场广阔占有率,同时也被平板电脑厂商和其他智能终端以及大量的嵌入式设备生产厂商所采用。这主要归结于Android的开源、可修改、可移植等特性。采用Android系统不仅能减少企业产品研发人力、财力的投入,还能帮助企业缩短研发周期增快产品上市速度,保证产品具备先期竞争实力。Android的普及势必促使研发人员具备底层驱动研发能力。尚观以企业实际Android手机研发为实例,基于ARM11 6410平台真实开发底层驱动,移植Android系统,最终实现Android智能手机。
4、ARM Cortex A9双核平板电脑
该项目直接在双核A9处理器上运行主流的Android系统,学员需要凭借ARM11的经验再进一步理解更新架构,在原来代码的基础上,重写基于A9的Bootloader及相关驱动,让Android系统运行在A9双核处理器上。该平台采用7寸平板显示,拥有主流智能平板配置。
技术强化真实案例
1、嵌入式C语言强化部分案例
• 自己设计一个指法练习的游戏程序
• 自己设计一个汉诺塔游戏
2、数据结构部分案例
• 成绩管理系统
• 电子词典
• 文件压缩器
• 计算器
3、c++程序设计案例
• 串口监听程序
• 模板库的实现(MyTL) • 编写自己的图片浏览器
4、Linux系统程序设计案例 • 串口监听程序 • 图片浏览器
• MP3播放器
5、Linux网络程序设计案例 • 聊天程序
• ftp程序
• ping的实现
• DDos攻击程序 • ARP攻击程序
6、ARM嵌入式开发案例 • ARM模拟器开发 • Watchdog控制程序 • RTC时钟控制程序 • Uart控制程序 • LCD控制程序 • DMA控制程序 • 音频控制程序 • 网卡控制程序 • 触摸屏控制程序 • 文件系统制作 • ARM-Linux移植
7、Linux设备驱动程序案例 • GPIO驱动
• RTC时钟驱动 • WatchDog驱动 • Udev移植
• 触摸屏输入设备驱动 • LCD显示设备驱动 • DMA驱动
• 音频设备驱动
• Nand Flash块设备驱动 • 网络设备驱动
8、Android底层驱动开发案例 • Android LED驱动 • Android 图形驱动 • Android 音频驱动 • Android 触摸屏驱动 • Android GSM驱动