首先是C语言:位,字节,基本数据类型char.int,long,double,float,string,数组,大小端,字符串,语句,引出结构体,枚举,联合体,冒泡排序,选择排序,快排,指针,数组指针,函数指针,函数形参,传指针,C语言高级。
C语言描述的数据结构:线性表,线性栈,线性队列,算法的时间复杂度与空间复杂度;重点是链表,链式栈,链式队列,二叉树,有球钟问题,约瑟夫问题,表达式计算,二叉树的递归,前序遍历,中序遍历,后序遍历,等,树的结点。
linux的文件系统编程,IO编程,系统调用接口,标准C库与linux系统调用的区别,shell脚本,Linux的环境变量,文件操作,文件可以是图片文件(例如256位BMP图片),进程与线程,进程间通信有无名管道,有名管道,信号量,和信号,共享内存,消息队列;线程间通信有互斥锁,条件变量,等。
linux的网络编程:UDP组播,广播,子网掩码,IP地址,端口号,TCP的三次握手与四次挥手,TCP数据包的首部通信协议,可靠的面向连接的通信方式,无失序,无丢失,无重复,以及重传机制。socket套接字,文件传输,服务器端的 fcntl( ) , select( ), poll ( ) ,epoll ( ) ; 等,sqlite3数据库的编程应用,sqlite3命令, sqlite3语句,sqlite3编程,函数接口sqlite3_open( ); sqlite3_get_table( ). sqlite3_free_table( ),等等。
ARM的体系架构,内核的组成40个寄存器,控制器,运算器,等,机器码与ARM汇编指令的一一对应,ARM汇编手册,ARM指令集,编译工具链,yagarto, keil4 ,内联汇编,C中调用汇编语句,汇编中写C语句的编译,语法规则; Linux平台下的交叉编译工具链;u-boot的启动,程序的下载,接口,UART, IIC,SPI, PWM ,中断,GPIO模拟SPI。寄存器的配置。
Linux系统移植,u-boot移植,putty,内核镜像的制作编译,easybox使用,根文件镜像,NFS/TFTP , 设备树的制作,u-boot源码分析,u-boot的启动及硬件的初始化,内核启动,设备驱动加载,根文件NFS挂载,镜像的下载。 u-boot和内核系统是整个嵌入式的难点和奠基石,加上设备驱动,珠穆朗玛峰不是一天就可以登上去的。
设备驱动:字符设备框架,platform总线平台模型,是基础,中断,IIC,各种C语言结构体,设备文件,内核接口,框架流程,与框架的整合,设备树文件的设备属性信息,及设备树文件编写语法规则。写驱动就是在写标准接口的实现,便于应用层的统一调用。通向网络设备,等,
C++语言,面向对象的语言,类,对象,成员变量,成员方法,构造函数,析构函数,重载,重载运算符,虚函数,虚继承,容器,迭代器,引用,模板,在后面QT界面中会一一应用到。
应用层QT,ui界面编译,信号槽机制,事件,定时器,paint画图,视图,场景,图元,图元组,两个纯虚函数的重写,俄罗斯方块,文本界面,进程线程,TCP通信。一个QT就专设一个职位,可想而知了。
Android系统架构,u-boot和内核,驱动架构有添加改动,hal层,本地C/C++库,Android framworks框架,Android studio开发软件,运行时Dalvik 虚拟机启动,NJI调用本地核心库,从hal层的程序到本地C/C++核心库,到应用层类库。 Android的文件系统,编译过程,init进程,zygote进程,Dalvik虚拟机的启动,app的启动。珠穆朗玛峰之路才刚刚开始。