嵌入式的基础知识

1.嵌入式操作系统结构

一般情况下分为硬件子系统和软件子系统;

硬件子系统主要包括:CPU小系统,电源模块,调试模块,时钟模块,接口模块,复位和配置模块;

软件子系统主要包括:驱动层,中间层,应用层

 

2.实时操作系统

实时的本质是任务的处理是可预测的,也就说在确定的时间内完成任务的处理;实时操作系统是指在规定的时间内完成任务的处理。

实时操作系统分为两类:硬实时和软实时:通常是从精度上讲,软实时一般大于千分之一秒;硬实时一般都是微秒级的。

 

3.嵌入式处理器分类

主要分为MCU(C51,AVR),MPU(ARM,MIPS,PPC,X86),SOC,DSP。

 

4.嵌入式操作系统

按照实时性来分,强实时的有Vxworks,uc/OS, OSE;弱实时的有WinCE,Linux。

 

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上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
  • 在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
  • 在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

交叉开发环境可以自己建立,也可以采用厂家封装好的集成开发环境,比较典型的集成交叉开发环境如下:

  • ARM ADS or SDT
  • MS E-VC or Windows Mobile
  • WindRiver Tornado,用于Vxworks
  • TI的CSS,用于DSP;
  • Freescale的Codewarrior,用于PPC;
  • GCC用于Linux的开发;

这里注意,创建交叉编译器的时候要注意版本匹配问题,特别是Linux,要注意软件包、Kernel、编译器三者版本要match;设置交叉环境时,要把Tools和代码路径、makefile相关项都设置正确。

 

如何创建交叉开发环境呢?

1.打开目标板上的NFS,要求内核支持NFS,打开相应选项;

2.建立Gdb和Gdb Server;

基于GDB进行APP的调试,调试命令主要有: 

  • File:载入elf文件;
  • Run:启动运行;
  • List:显示当前的程序和函数;
  • Break:设置断点;
  • Delete b:删除断点;
  • Next,step:单步运行;
  • Continue:断点停止后继续执行;
  • Bt,backtrace,显示调用栈;
  • 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                           linux,windows

Lilo                                      X86                           Linux

U-boot                                ARM,PPC,MIPS       Linux,Vxworks,PSOS

Redboot                              ARM                           eCos

Vivi                                     三星ARM                      Linux

Bootrom                             PPC                            Vxworks

Blob                                   Intel PXA系列               Linux

 

与主机通信协议:1.串口:kermit,xmodem,ymodem,速率较慢,适用于网口未初始化,相关工具主要有SecureCRT,putty;

2.网口:TFTP,NFS,速度很快;

 

不管是什么样的架构,bootloader遵循“stage1+stage2”原则:

  • 与体系架构强相关,与体系架构无关;
  • Flash+RAM;
  • 汇编+C;

Stage1:通常使用汇编,初始化CPU的核心寄存器,RAM检查和初始化,拷贝代码到RAM中,设置堆栈,跳转到C入口处执行;

Stage2:通常是C语言,初始化CPU非核心寄存器,初始化相关外设,等待用户输入,如果用户在设定时间内无输入就拷贝内核和文件系统到内存中,然后跳转到内核入口;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像

转自:https://www.cnblogs.com/mfrbuaa/p/4004114.html 有修订 背景介绍: 近期项目需求,需要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发。在C语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段…

量子计算机的核心元件简称,计算机文化基础复习题(含答案).doc

计算机文化基础复习题(含答案)整理计算机文化基础复习题第一套一、单项选择题(每题1分,共30分)1、在Powerpoint2003中,若为幻灯片中的对象设置"驶入效果",应选择对话框 (? )???? A、自定义放映???? B、幻灯片版式????…

xfire客户端对返回list很挑剔,所以需要使用泛型。

casldap异常分析 | xfirewebservice(服务器配置篇) 2008-12-31xfirewebservice(客户端调用篇) 服务接口,就是用来调用的,所以客户端显得尤为重要,xfire客户端对返回list很挑剔,所以需要使用泛型。 如何建立webservice client 步骤…

C语言关键字----Const

C中CONST的使用:   虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。   问题:const变量 & 常量   为什么下面的例子在使用一个const变量…

【转】DICOM的常用Tag分类和说明!!!!

转自:https://www.cnblogs.com/stephen2014/p/4579443.html 有删改 1. 前言: 基于DICOM3.0标准的医学图像中,每一张图像中都携带着许多的信息,这些信息主要可以分为Patient, Study, Series和Image四类。每一个DICOM Tag都是…

计算机卡在无法显示网页,我的电脑上网上银行一直“无法显示网页”

首先:打开一个网页,点击“工具”--internet选项--高级--还原默认设置--应用--确定 其次:使用这个修复工具试一试&#xff…

在虚拟机上运行vxWorks

Vxworks是一个嵌入式系统,主要运行在arm、ppc、mips等嵌入式处理器上,它同样可以运行在X86处理器上。风河公司开发的tornado开发环境就 包括了pentium版本,并且发布了相应的bsp。因此我们可在vmware虚拟机上运行vxworks,利用虚拟机…

【转】成熟的医学影像“调窗”(window-leveling)算法详解

转自:http://blog.sina.com.cn/s/blog_4bce5f4b0100o9iy.html 图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 CT 里的例子有软组织、骨头、脑组织、肺、腹部等等。 技术问题: 显示…

南京大学计算机系副教授名单,2018年度国际“人工智能10大新星”名单公布:南京大学俞扬副教授国内高校入选者...

中公考研小编为各位考研小伙伴们整理了关于2018年度国际“人工智能10大新星”名单公布:南京大学俞扬副教授国内高校唯一入选者的相关资讯文章,一起了解一下吧~日前,国际人工智能领域著名杂志 IEEE Intelligent Systems 发布了2018年度“人工智…

使用SDL打造游戏世界之入门篇 - 7

打开和显示图片在这个例子里我们将学习如何使用SDL程序中打开和显示图片。示例程序将绘制一个漂亮的背景,上面显示一个正方形图案,并可以使用键盘的方向键移动它。如果比较熟悉“推箱子”这个游戏,可以看出这个程序实际就是推箱子游戏的基础。…

WDB

1. 符号表同步貌似只能是target shell下载后,能够在host shell下更新,当host shell下载的话,target shell是无法更新的。 2. host shell下执行某一个函数的时候,WDB会自动生成一个新的任务来运行,这个任务的IO将被重定…

【转】GPS从入门到放弃(一) --- GPS基础原理

转自:https://blog.csdn.net/tyst08/article/details/100529424 GPS从入门到放弃(一) — GPS基础原理 GPS,全称Global Positioning System,已经广泛应用于我们的日常生活中了,现在的智能手机 里都会自带G…

计算机系统的物质实体,计算机基础-(-第1次-).pdf

计算机基础 -(- 第 1 次-)第 1 次作业一、填空题(本大题共 30 分,共 10 小题,每小题 3 分)1. 二进制数求积 011 ______ 。2. 计算机系统是由 _ ______ 和 ______ _ 两大部分组成的。3. 八个二进制位称为一个 ______ ,是计算机的最小存储单元。…

JS判断数字/字母/中文

原文链接:http://tieba.baidu.com/f?kz140213674 1JS判断数字/字母/中文 1. var reg /^(\w|[\u4E00-\u9FA5])*$/; if(arrusername.match(reg)) { ti1; return ture; } else { alert("用户名只允许为英文,数字和汉字的混合,\n请检查是否前后有…

【转】10个推荐的 PACS/DICOM Server开源项目

10个推荐的 PACS/DICOM Server开源项目 转自:https://zhuanlan.zhihu.com/p/65437040 soolaugust 喜欢我的分享可以关注公众号:雨夜随笔 35 人赞同了该文章 本文仅授权给公众号:雨夜随笔, 欢迎关注 本文翻译自:To…

字节序、位序

字节序 字节序,又称端序、尾序,英文单词为Endian,该单词来源于于乔纳森斯威夫特的小说《格列佛游记》,小说中的小人国因为吃鸡蛋的问题而内战,战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前…

怎么抓取屏幕截图计算机考试时间,定时抓屏快照(电脑截屏工具)V4.8 最新版

定时抓屏快照(电脑截屏工具)是一款非常实用的电脑屏幕定时抓拍软件。想定时截取电脑屏幕?定时抓屏快照(电脑截屏工具)轻松帮助用户。马上要放假了,家长一定很担心小孩最新的上网情况,看是在电脑上玩什么,用户通过该软件可以及时了…

什么是IIS

IIS的设计目的是建立一套集成的服务器服务,用以支持HTTP,FTP和SMTP,它能够提供快速且集成了现有产品,同时可扩展的Internet服务器。IIS相应性极高,同时系统资源的消耗也是最少,IIS的安装,管理和…

【转】C#检查键盘大小写锁定状态的方法

转自: 本文实例讲述了C#检查键盘大小写锁定状态的方法。分享给大家供大家参考。具体分析如下: 1、命名空间: 1 using System.Runtime.InteropServices; 2、导入方法 1 2 [DllImport("user32.dll", EntryPoint "GetKeybo…

计算机系统的备份与还原实验报告,数据库《数据备份与还原》实验报告.doc

《数据库《数据备份与还原》实验报告.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《数据库《数据备份与还原》实验报告.doc》文档请在天天文库搜索。1、xx大学计算机与信息技术学院实验报告姓 名学 号…