logo素材网站有哪些,做的网站怎么让别人也能看到,jetpack报错 wordpress,房屋租赁网站开发模版1.嵌入式操作系统结构
一般情况下分为硬件子系统和软件子系统#xff1b;
硬件子系统主要包括#xff1a;CPU小系统#xff0c;电源模块#xff0c;调试模块#xff0c;时钟模块#xff0c;接口模块#xff0c;复位和配置模块#xff1b;
软件子系统主要包括#x…
1.嵌入式操作系统结构
一般情况下分为硬件子系统和软件子系统
硬件子系统主要包括CPU小系统电源模块调试模块时钟模块接口模块复位和配置模块
软件子系统主要包括驱动层中间层应用层 2.实时操作系统
实时的本质是任务的处理是可预测的也就说在确定的时间内完成任务的处理实时操作系统是指在规定的时间内完成任务的处理。
实时操作系统分为两类硬实时和软实时通常是从精度上讲软实时一般大于千分之一秒硬实时一般都是微秒级的。 3.嵌入式处理器分类
主要分为MCUC51AVRMPUARMMIPSPPCX86SOCDSP。 4.嵌入式操作系统
按照实时性来分强实时的有Vxworksuc/OS, OSE弱实时的有WinCELinux。 5.make
主要作用是读入所有的makefile文件初始化变量推导出变量的隐晦规则并分析规则为所有的文件生成依赖关系链根据依赖关系和文件修改情况决定什么文件重新生成然后执行生成命令。 6.makefle的作用
在通常的IDE集成环境中不需要makefile只需要建立好工程就可以了因此IDE环境简单一些开发中使用makefile的很大程度上是指定编译链接规则 实现自动化编译由于makefile在开发中需要自己指定所以相对于IDE要灵活。 7.GCC开发工具
由于Linux下是没有图形界面的因此提供了相应的开发工具
GCC编译工具主要参数如下-v查看编译器的版本-c只编译不链接-o链接适合c文件-g编译时生成调试信息-gdwarf-2附带宏调试信息-fomit-frame-pointer:-o1/2/3:编译优化选项-l:指定头文件目录 ld与makefile结合使用链接目标文件objdump反汇编strip剥离符号信息减少目标或lib的大小gdb命令行方式调试-g参数编译elf可执行文件ddd图形界面 8.交叉编译
什么是交叉编译在一个平台上编译出来可在另一个平台上运行的可执行代码这个过程叫做交叉编译这个过程要关注一下平台使用的硬件架构和操作系统。
为什么要使用交叉编译主要原因有两点1.当我们的目标机尚未建立起来必须借助交叉编译生成需要的bootloader和内核2.目标机上有限的资源主要表现在CPU的低性能和非常小的内存空间对于编译来说不可能在目标机上构建编译环境只工具链就会占用很大的空间因此就在我们的PC上建立交叉编译的环境以生成在目标机上可执行文件。
我们经常在windows下面利用VC编译和调试C代码最终生成可以在windows下可执行的程序同样的道理我们也可以在PC上不论是windows还是linux编译可在目标机上运行的可执行程序唯一不同的是我们需要安装相对应的交叉编译工具链cross complication tool chain。举例如下
在Windows PC上利用ADSARM 开发环境使用armcc编译器则可编译出针对ARM CPU的可执行代码。
在Linux PC上利用arm-linux-gcc编译器可编译出针对Linux ARM平台的可执行代码。
在Windows PC上利用cygwin环境运行arm-elf-gcc编译器可编译出针对ARM CPU的可执行代码。
交叉开发环境可以自己建立也可以采用厂家封装好的集成开发环境比较典型的集成交叉开发环境如下
ARM ADS or SDTMS E-VC or Windows MobileWindRiver Tornado用于VxworksTI的CSS用于DSPFreescale的Codewarrior用于PPCGCC用于Linux的开发
这里注意创建交叉编译器的时候要注意版本匹配问题特别是Linux要注意软件包、Kernel、编译器三者版本要match设置交叉环境时要把Tools和代码路径、makefile相关项都设置正确。 如何创建交叉开发环境呢
1.打开目标板上的NFS要求内核支持NFS打开相应选项
2.建立Gdb和Gdb Server
基于GDB进行APP的调试调试命令主要有
File:载入elf文件Run启动运行List显示当前的程序和函数Break设置断点Delete b删除断点Nextstep单步运行Continue断点停止后继续执行Btbacktrace显示调用栈Print查看变量Display动态监视变量 9.模块编程
什么是模块模块可以动态的改变内核的功能这样做可以提高灵活性主要用于前期调试代码时添加的调试模块
工具主要有1. insmod
2.lsmod
3.rmmod
模块的组成主要包括内核头文件模块加载和卸载的方法设备的节点File操作数据结构open/close/write/read的方法makefie 10.Bootloader
含义boot是与硬件强相关的主要是初始化硬件为kernel的运行创造条件loader是把kernel拷贝到内存中并且跳转到相应地址开始运行bootloader由于和硬件是强相关的因此不同的CPU架构对应着不同类型的bootloader主要有以下几种不同的bootloader如下所示
Bootloader CPU OS
Grub X86 linuxwindows
Lilo X86 Linux
U-boot ARMPPCMIPS LinuxVxworksPSOS
Redboot ARM eCos
Vivi 三星ARM Linux
Bootrom PPC Vxworks
Blob Intel PXA系列 Linux 与主机通信协议1.串口kermitxmodemymodem速率较慢适用于网口未初始化相关工具主要有SecureCRTputty
2.网口TFTPNFS速度很快 不管是什么样的架构bootloader遵循“stage1stage2”原则
与体系架构强相关与体系架构无关FlashRAM汇编C
Stage1通常使用汇编初始化CPU的核心寄存器RAM检查和初始化拷贝代码到RAM中设置堆栈跳转到C入口处执行
Stage2通常是C语言初始化CPU非核心寄存器初始化相关外设等待用户输入如果用户在设定时间内无输入就拷贝内核和文件系统到内存中然后跳转到内核入口