专门开一个博客,是因为自己要实施一项学习计划,希望能有个稳定的地方保存自己的学习成果,也是文档化知识的一个手段!同时它也作为一个监督手段,希望自己能把这个计划坚持下去!
首先,阐述一下这个计划的背景和目标。自己作为一个自动化专业的本科生,想要在嵌入式软件行业混个模样,系统的学习哈计算机专业的知识是非常有必要的。我将自己的职业方向定位在嵌入式,就我目前的眼界而言,我所能想到的关键词有:消费电子/工控/汽车电子。其实这个也不清晰,暂时就这样了。我希望通过这个学习计划,使自己拥有扎实的理论基础;熟悉底层的操作系统设计实现原理和方法,熟悉部分非常有用的软件源码架构,计划主要是基于x86平台,嵌入式相关作为后期内容;并且能够通过少量的实践,具有一些实际经验。计划的日程为一年,就是到2013年的7月底。最迟到2013年3月应该完成实践项目前的所有准备。
好吧,说一说我的计划吧!计划分为了3个阶段,首先是理论基础;然后是软件架构;最后是项目实践。
理论基础部分:
软件理论 | 软件工程 | 人月神话 | 嵌入式软件设计方法 | ||||
| | | | | | | |
计算机技术(可选) | 多媒体技术 | 数字图像处理 | 信息论基础 | 数据挖掘基础 | 数据库原理 | ||
| 多媒体 | 高级数据处理 | | ||||
| | | | | | | |
| Linux操作系统 | | | | | | |
| 编译原理和技术 | | 密码学与网络安全 | ||||
计算机基础 | 操作系统原理与设计 | JVM | 数据通信与网络 | 计算机网络 | RTOS(ut-kernel/ucos/vworks) | ||
| 操作系统基础 | | 网络基础 | ||||
| | | | | | | |
| | | | 算法基础 | | | |
| | 自动机理论与计算导论 | 数据结构 | 并行计算 | | ||
| | 代数结构与组合数学 | 计算机体系结构 | AUTOSAR Rlease4.0 | |||
| 计算机图形学 | 集合论与图论 | 微机原理与接口技术 | 汽车电子硬件知识 | |||
基础理论 | 线性代数 | 数理逻辑 | 计算机组成原理 | 单片机硬件知识 | |||
| | 数学理论基础 | 计算机理论基础 | 嵌入式基础 |
软件架构部分:
################################## X86 Architecture ##############################
深入分析原理/源码
applications : WebKit, curl, mplayer, apache, kdevelop, JVM
graphics library : Qt
graphics acceleration : directfb, X11
basic software : udev, systemd, jvm
OS : Linux
bootloader : grub, EFI
firmware : BIOS
熟练使用的软件/工具
usefull applications : cscope, ctags, graphviz
compile system : autotools, autoconf, autoheader, libtools, automake, make
toolchain : gcc, binutils(as, ld, ar, objdump, objcopy, readelf, nm, yacc), gdb
编程学习
desktop environment : KDE
IDE : kdevelop (this also need to be analysis)
program language : x86 assembly, c, c++, perl, python, java, shell
################################## Embbed Architecture ##############################
单独深入分析原理/源码
os : Linux (porting)
bootloader : u-boot
项目实践部分:
DProcess (data process) : 它主要是打造一个数据仓库,作为我知识/技术/其他信息积累的后盾,主要包括3部分:数据搜集/数据处理/检索显示
BoardControl : 该项目主要是作为一个嵌入式学习的一个检验,它的目标是重新编写linux系统的所有目标板驱动,最终完成一个图形化的目标板硬件控制系统(这部分应该包括linux其他编程技术的实践)。
Ksight : 该项目主要是开发一个linux下的sourceinsight开发IDE工具,主要以kdevelop为蓝本。它的目的是锻炼在linux下的软件设计方法。
总觉得自己是个想法多,实际能去做并且能完成的事情少的人,再次鞭策自己努力/坚持的去完成这个计划。