嵌入式linux开发流程:
1.搭建前期的开发环境,比如搭建linux主机环境,交叉编译器的安装,还有一些常用的开发辅助软件如sourceinsight等等。
2.学习对硬件的直接操作,这儿和单片机操作类似,我们须要查看原理图还有数据指南对相应的寄存器进行操作linux桌面,实现功能。
这儿只须要学会简单的IO,中断,定时器,并口就可以,旁边的储存器,IIC,LCD,AD,DA等可以大致了解一下,须要用待会儿注重学习。
3.学会UBOOT的移植,这儿不须要自己去编撰,我们须要了解uboot的结构,但是对他进行相应的功能添加和剪裁,了解uboot似乎就是对硬件的初始化裸机程序。开发板上电以后初始化显存,将uboot放在显存去执行,执行完成以后将一些传递给内核的参数装入bootparametors以后从设置好的地址取出kernel部份加载到显存,最后将程序执行权限交给kernel.
4.学会kernel的配置和移植。在这之前首先要熟悉makefile的基本规则,通过meuconfig进行内核图形化的配置,完成后执行顶楼makefile进行内核的生成。生成的内核须要设置好多参数,其中最重要的就是对文件系统的支持,执行完内核程序然后init进程就可以创建其他进程,实现多进程的工作。
5.学会通过busybox制做一个文件系统,对文件系统进行支持库的移植,完成以后建立设备节点等,最终生成镜像文件烧讲到固定的位置。
6.学会驱动的开发,这儿我水平不足,知识简单了解。对于内核驱动的添加大致就是对一个关键结构体的内容添加,这儿和STM32库函数包方式差不多,而且很复杂。
7.应用程序按照驱动程序封装的下层插口进行相应的硬件控制。
8.通过QT等学习界面开发对嵌入式系统进行界面的开发,致使产品得到更好的用户体验。
linux应用层知识:
1.熟悉linux的基本命令,把握shell脚本操作一系列linux基本命令的句型。
2.熟悉C语言
3.熟悉vi编译器的基本操作
4.使用GCC编译器,进行编译。
5.使用GDB调试程序(我不会。。)
6.linux下C的和基本操作:字符串操作,显存申请,时间获取等。
7.对文件系统的操作:文件的打开关掉,创建,搜索,状态获取。
8.针对文件表针的非低格输入输出(fgetc(),fputc()),低格输入输出(sprintf,fscanf)操作。
9.进程操作:
进程概念:操作系统中被加载到显存中的,正在运行的应用程序,由程序,数据,进程控制块(PID等)组成。
进程状态:运行态,就绪态linux命令,阻塞态(恳求IO或则等待某一风波触发的进程)
进程的创建:通常我们执行的程序就是一个进程嵌入式linux应用层开发,我们可以使用fork()的创建一个该进程的子进程,这个进程复制了父进程的数据。pid_fork(void);
进程中止:return,exit()等
守护进程:为了维护系统的运行二创建的一些进程,父进程都是init的子进程,都是后台运行,倘若将普通的进程更改为守护进程须要根据守护进程的特点进行整修。
10.进程间通讯:
进程间通讯的作用:不同进程之间进程数据信息的交换,完成某种特定的功能。主要的方式有:管线,讯号,消息队列,讯号量和共享显存,这儿简单介绍一下常用的几个。
消息队列:将数据装入消息队列,另外一个进程通过对应插口函数进行调用,获取通配符对应的消息队列。
讯号量:本身不进行数据的交换,主要是控制多个进程对共享资源的访问。
共享显存:多个进程将同一块显存区域映射到自己的进程空间,借此完成通讯,他是进程间通讯最快的一种形式。
11.多线程编程:
概念:听说在在嵌入式领域中应用很广泛,由于资源的问题。实际上现今嵌入式领域和传统计算机领域界限早已很模糊了,好多时侯硬件上资源不是那额须要节约。这儿先略过,旁边学习的时侯再深入学习一下。
12.网路编程:
TCP/IP合同栈:网路插口层(数据帧),网路层(IP合同),传输层(TCP/IP合同)嵌入式linux应用层开发,应用层(FTP等)。
套接字基础:socket套接字是封装传输层合同的操作单元,让网路编程愈发容易。
服务器模型:循环服务器模型(while结构,一次只能处理一个顾客端恳求),并发服务器(fork实现,创建子进程实现)
域名系统:DNS,将无法直接记忆的IP地址和端口进行人性化的域名变换。
13.GUI设计
略,我没有用到C的开发,用pyQT5还是比较便捷的,自制界面后直接生成源码,但是python开发也是非常容易入门,强烈推荐一下。