进军嵌入式应该准备些什么 八
进军嵌入式应该准备些什么八
C 语言是嵌入式最重要的基础知识,但是掌握了它并不代表你的基础已经很好了,嵌入式学习相关的基础知识主要是这些:
一是程序设计的基础,例如:基本的编程语言基础,至少对数据类型、程序的结构及流程控制等最基本的内容要相当清楚,所以建议恶补一下C 语言,推荐谭浩强的C 语言程序设计,好好看一下,呵呵!另外有不少同学都问到数据结构的基础,我一直认为数据结构和算法的学习是帮助形成程序设计逻辑思维的很好训练方式,对于程序员的长期专业素养的提高一定有好处,所以建议即使已经在嵌入式行业中工作之后也应该多补充一些相关的知识。许多在学校没有学过数据结构的同学往往认为这部分非常枯燥、难学。而实际上如果你能明白研究计算机存储和数据组织方式的意义,就一定能够充分体会到数据结构的价值和魅力。一旦兴趣有了,一切就会迎刃而解,呵呵!
二是操作系统工作原理,这部分往往是非计算机专业的同学在学校时没有接触过的。而由于嵌入式软件设计相关的多任务环境、模块间的同步与通信协同、驱动设计等往往都需要有对操作系统工作机制的了解和掌握作为基础,因此建议没有系统学习过的同学,找一本相关的操作系统工作原理书籍认真看一下(不用特厚、特专业、特内核的,
先以普及知识为主,呵呵!)。
三是基本的硬件基础,由于嵌入式Linux 开发往往是ARM+Linux路线,所以为了能够在后续学习过程中很好地掌握主流嵌入式微处理器的结构与原理(例如:ARM9),就需要对硬件工作原理有初步的了解和掌握,建议看一下诸如计算机组成原理、体系结构等相关的专业书籍。
要深入学习你可以尝试以下路线:
(1) C 语言是所有编程语言中的强者,单片机、DSP 、类似ARM 的种种芯片的编程都可以用C 语言搞定),因此必须非常熟练的掌握。 推荐书籍:谭浩强的C 语言程序设计很不错,《The C Programming Language 》这本经典的教材是老外写的,也有中译版本。
(2)操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。
(3)Linux 操作系统就是用C 语言编写的,所以你也应该先学习下Linux 方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。
推荐书籍:《UNIX 环境高级编程》(第2版)
(4)了解ARM 的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm 汇编。
(5)系统移植的时候,就需要你
从最下层的bootloader 开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。
(6)驱动开发
linux 驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。
linux 驱动程序设计本质是属于linux 内核编程范畴的,因而是对linux 内核和内核编程是有要求的。在学习前你要想了解linux 内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。
以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile 、shell 脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!
华清远见的嵌入式专业教材比较专业,也很出名,高校图书馆以及外面书店都有卖,你可以去网上搜一下,买本看看,华清远见的网站和技术论坛上面也有很多嵌入式学习资料和入门视频可以下载,而且更新的速度也很快,LZ 没事可以去转转,相信对你会有帮助!
怎样学好嵌入式? 应该做些什么准备? 2011-9-6 18:43 提问者:yjm874984357 | 悬赏分:10 | 浏览次数:115次
2011-9-6 18:50 最佳答案嵌入式linux 学习步骤:
1、Linux 基础
安装Linux 操作系统 Linux 文件系统 Linux 常用命令 Linux 启动过程详解熟悉Linux 服务能够独立安装Linux 操作系统能够熟练使用Linux 系统的基本命令认识Linux 系统的常用服务安装Linux 操作系统 Linux 基本命令实践设置Linux 环境变量定制Linux 的服务 Shell 编程基础使用vi 编辑文件使用Emacs 编辑文件使用其他编辑器。
2、Shell 编程基础
Shell 简介认识后台程序Bash 编程熟悉Linux 系统下的编辑环境熟悉Linux 下的各种Shell 熟练进行shell 编程熟悉vi 基本操作熟悉Emacs 的基本操作比较不同shell 的区别编写一个测试服务器是否连通的shell 脚本程序编写一个查看进程是否存在的shell 脚本程序编写一个带有循环语句的shell 脚本程序。
3、Linux 下的 C 编程基础
linux C 语言环境概述 Gcc 使用方法 Gdb 调试技术 Autoconf Automake Makefile 代码优化熟悉Linux 系统下的开发环境熟悉Gcc 编译器熟悉Makefile 规则编写Hello,World 程序使用 make 命令编译程序编写带有一个循环的程序调试一个有问题的程序
4、嵌入式系统开发基础
嵌入式系统概述交叉编译配置TFTP 服务配置NFS 服务下载Bootloader 和内核嵌入式Linux 应用软件开发流程熟悉嵌入式系统概念以及开发流程建立嵌入式系统开发环境制作cross_gcc工具链编译并下载U-boot 编译并下载Linux 内核编译并下载Linux 应用程序
4、嵌入式系统移植
Linux 内核代码平台相关代码分析 ARM 平台介
绍平台移植的关键技术移植Linux 内核到 ARM 平台了解移植的概念能够移植Linux 内核移植Linux2.6内核到 ARM9开发板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念嵌入式Linux 应用软件开发流程 Linux 系统的文件和设备与文件相关的系统调用配置超级终端和MiniCOM 能够熟悉进行串口通信熟悉文件I/O 编写串口通信程序编写多串口通信程序
6、嵌入式系统中多进程程序设计
Linux 系统进程概述嵌入式系统的进程特点进程操作守护进程相关的系统调用了解Linux 系统中进程的概念能够编写多进程程序编写多进程程序编写一个守护进程程序 sleep 系统调用任务管理、同步与通信 Linux 任务概述任务调度管道信号共享内存任务管理 API 了解Linux 系统任务管理机制熟悉进程间通信的几种方式熟悉嵌入式Linux 中的任务间同步与通信编写一个简单的管道程序实现文件传输编写一个
使用共享内存的程序
7、嵌入式系统中多线程程序设计
线程的基础知识多线程编程方法线程应用中的同步问题了解线程的概念能够编写简单的多线程程序编写一个多线程程序
8、嵌入式 Linux 网络编程
网络基础知识嵌入式Linux 中TCP/IP网络结构 socket 编程常用 API 函数分析Ping 命令的实现基本UDP 套接口编程许可证管理 PPP 协议 GPRS 了解嵌入式Linux 网络体系结构能够进行嵌入式Linux 环境下的socket 编程熟悉UDP 协议、PPP 协议熟悉GPRS 使用socket 编写代理服务器使用socket 编写路由器编写许可证服务器指出TCP 和UDP 的优缺点编写一个web 服务器编写一个运行在 ARM 平台的网络播放器
9、GUI 程序开发
GUI 基础嵌入式系统GUI 类型编译QT 进行QT 开发熟悉嵌入式系统常用的GUI 能够进行QT 编程使用QT 编写“Hello ,World ”程序调试一个加入信号/槽的实例通过重载QWidget 类方法处理事件
10、Linux 字符设备驱动程序
设备驱动程序基础知识 Linux 系统的模块字符设备驱动分析 fs_operation结构加载驱动程序了解设备驱动程序的概念了解Linux 字符设备驱动程序结构能够编写字符设备驱动程序编写Skull 驱动编写键盘驱动编写I/O驱动分析一个看门狗驱动程序对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动
程序工作原理典型的块设备驱动程序分析块设备的读写请求队列了解Linux 块设备驱动程序结构能够编写简单的块设备驱动程序比较字符设备与块设备的异同编写MMC 卡驱动程序分析一个文件系统对比Linux2.6内核与2.4内核中块设备驱动的不同
11、文件系统
虚拟文件系统文件系统的建立 ramfs 内存文件系统 proc 文件系统 devfs 文件系统 MTD 技术简介 MTD 块设备初始化 MTD 块设备的读写操作了解Linux 系统
的文件系统了解嵌入式Linux 的文件系统了解MTD 技术能够编写简单的文件系统为 ARM9开发