欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第三章 嵌入式程序设计基础.ppt

    • 资源ID:2406908       资源大小:1.67MB        全文页数:69页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第三章 嵌入式程序设计基础.ppt

    3,C H A P T E R,嵌入式程序设计基础,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,C语言概述,C语言是一种面向对象的计算机程序设计语言,它是目前众多计算机语言中公认最优秀的结构程序设计语言之一。(1)C语言不但具有高级语言的特性,还具有低级语言的许多功能。(2)C语言是结构化程序设计语言,层次清晰,逻辑结构可以用顺序、选择和循环三种基本结构组成,便于按模块化方式组织程序,易于调试和维护。,C语言概述,(3)C语言有丰富的运算符和数据结构,灵活使用各种运算符可以实现其他高级语言难以支持的运算,利用各种复杂结构可以使程序执行效率更高。(4)C语言具有较强的移植性,本身不依赖于计算机的硬件系统,只要在不同种类的计算机上安装C语言编译器,即可达到程序移植的目的。(5)C语言的语法比较灵活,允许程序编写者有较大的自由度,但也因此给初学者带来很多困难,所以学会调试是非常重要的,一、预处理,1、宏定义(1)无参数定义:#define 标识符 字符串(2)带参宏在调用时不仅要展开宏,而且要用实参代替形参:#define 宏名(形参表)字符串,预处理,2、文件包含 文件包含的命令格式为:#include“filename”#include 这两种形式有所区别:使用引号表示首先 在当前源文件目录中查找被包含的文件,若未找到则到默认头文件目录中查找;使用尖 括号表示只在系统头文件目录中查找,而不在源文件目录中查找,预处理,3、条件编译 条件编译指在特定条件下,对满足条件 和不满足条件的情况分别进行处理,满足条件时编译某些语句,不满足条件时编译另一些语句。,二、位运算,C语言提供了6个位运算符,它们的含义及描述如表所示:,三、指针,1、数据指针 unsigned char*p=(unsigned char*)0 xF000FF00;*p=11;2、函数指针 函数指针就是指向函数的指针,用来 保存函数的入口地址:数据类型标志符(指针变量名)(形参列表);,四、结构体,结构体是把不同类型的数据组合到一个类型中。例如,定义一个结构体名为person的结构体变量wang:struct personchar name10;char sex;int age;wang;结构指针:struct person*wang;,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,Linux操作系统基础,1、Linux操作系统的生产及发展2、Linux操作系统的特点3、Linux常用命令,一、Linux操作系统的产生及发展,Linux的发展与Unix和GNU有紧密的联系。Linux是由芬兰赫尔辛基大学的计算机系研究生Linus Benedict Torvalds于1990年设计。1991年10月,Linus发布了Linux系统第一个正式版本,版本号为0.02。如今的Linux已经拥有超过250种发行版本,内核版本由最初的0.01版发展到现在的2.6版。,二、Linux操作系统的特点,自由开放UNIX的完整实现真正的多任务多用户完全符合POSIX标准良好的图形界面强大的网络功能良好的可移植性性能安全可靠,三、Linux常用命令,Linux文件、目录操作命令文件、目录权限管理命令用户管理命令压缩/解压命令文件搜索命令网络通信命令进程管理命令磁盘管理命令,三、Linux常用命令,1、Linux文件、目录操作命令(1)ls命令:列出目录和文件的信息(2)cp命令:文件或目录复制(3)mv命令:为文件或目录改名或者将文件 由一个目录移动到另一个目录中(4)rm命令:删除一个目录中的一个或多个 文件或目录。,三、Linux常用命令,1、Linux文件、目录操作命令(5)mkdir命令:创建一个目录(6)rmdir命令:删除目录(7)cd命令:改变当前工作目录(8)pwd命令:显示当前工作目录的绝对路径,Linux常用命令,1、Linux文件、目录操作命令(9)cat命令:显示指定的一个或者多个文 件的内容(10)more命令:用于将内容比较长的文件进 行分屏查看(11)ln命令:用于创建文件或目录链接,Linux常用命令,2、文件、目录权限管理命令(1)chmod:改变文件或目录的访问权限 符号标记:chmod 用户 操作符号 权限 文件名 八进制数:chmod 权限 文件名,Linux常用命令,2、文件、目录权限管理命令(2)chgrp命令:改变文件或目录所属的组(3)chown命令:修改文件或目录所有者和组,Linux常用命令,3、用户管理命令(1)passwd命令:设置和修改该用户密码。(2)su命令:切换用户,主要用于普通用户 切换到超级用户,而且需输入相应用户 密码(3)useradd命令:添加用户帐号,Linux常用命令,4、压缩/解压命令(1)gzip命令:用于压缩和解压缩指定的文 件,使用gzip命令压缩的文件扩展名为.gz。(2)tar命令:备份或还原指定文件。使用 tar命令备份文件时可以将要备份的文件 进行压缩以节省磁盘空间。,Linux常用命令,5、文件搜索命令(1)find命令:在指定目录中搜索符合条件。如果没有指定,则牧人为当前目录。(2)grep命令:在指定文件中查找指定的内 容,并显示含有这些内容的行。,Linux常用命令,6、网络通讯命令(1)ifconfig命令:用于查看和配置网络端 口的地址和参数。(2)ping命令:用于检测远程主机的网络情 况是否正常。(3)ftp命令:用于向远程服务器传送指定文 件或从远程服务器下载指定文件。,Linux常用命令,6、网络通讯命令(4)tftp命令:传输文件,是简单的文字模 式ftp命令,常在嵌入式开发中下载文件。(5)nslookup命令:查询DNS域名。(6)netsat命令:显示网络连接状态,可以 显示整个Linux系统的详细网络状态信息。,Linux常用命令,7、进程管理命令(1)ps命令:显示当前系统中由该用户运行 的进程列表。(2)kill命令:发送一个信号给指定PID的进 程,并根据该信号完成指定行为。(3)pstree命令:用于使用树形结构显示进 程间的关系。,Linux常用命令,7、进程管理命令(4)top命令:用于实时动态显示当前系统所 运行的进程。(5)clear命令:用于清除屏幕上的输出信息(6)shutdown命令:用于关闭或重启计算机。,Linux常用命令,8、磁盘管理命令(1)df命令:用于显示文件系统的磁盘空间 使用情况,可以获取磁盘被占用了多少 多少空间以及还剩下多少空间等信息。(2)mount命令:挂载文件系统或设备。(3)umount命令:卸载已经挂载的设备文件。,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,Linux编程工具链,1、Vi编辑器2、Gcc编译器3、Gdb调试器4、Make工程管理器,一、vi编辑器,1、Vi的基本操作模式2、进入和退出vi3、删除和修改文本4、光标移动5、查找操作6、移动和复制文本7、撤销和重复命令8、运行shell命令,二、gcc编译器,GCC(GNU Compiler Collection,GNU编译器集合)GCC可以编译如C、C+、Java、Pascal、Fortran、Ada、COBOL等多种语言。用gcc编译程序时,分为预处理、编译、汇编和链接四个阶段:预处理阶、编译、汇编、连接。,gdb调试器,1、gdb调试器是一款GNU发布的Linux下的字符界面调试工具,虽然它没有图形化的友好界面,但功能十分强大,拥有很多图形化调试器所不能完成的2、gdb的主要功能有以下几点:(1)按照用户自定义的要求启动程序。(2)让被调试的程序在任意断点处停止(3)程序暂停时可以检查运行环境。(4)程序暂停时可以动态改变运行环境。,gdb调试器,3、gdb的常用命令:(1)设置断电命令(2)查看停止点命令(3)设置观察点命令(4)维护停止点命令(5)单步执行命令(6)shell命令(7)源码查看相关命令(8)其他命令,三、make工程管理器,1、makefile的编写规则2、makefile中的变量3、隐含变量4、make的运行5、make的嵌套执行,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,编程流程,C语言是Linux下广泛使用的开发语言,因此也采用C语言来学习Linux下程序的开发。Linux下C程序的开发主要有四个阶段:(1)要详细分析待解决问题,选择最佳算法 并设计出相应的数据结构,画出流程图。(2)选择vi或其他文本编辑器来编写源代码。(3)源代码编写后,需要通过gcc编译器来 把源代码编译成可执行的二进制文件。(4)如果程序如果编译链接没有错误,就可 以直接运行了,如果出现错误,则进行调试。,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,模块设计,1、模块概述2、模块的编写3、模块makefile的编写4、模块的加载和卸载,一、模块概述,模块的全称是动态可加载内核模块,是在内核空间运行的程序,实际是一种目标对象文件,没有链接,不能独立运行,但是其代码可以在运行时链接到系统中作为内核的一部分载入或从内核移出。使用模块简单灵活,避免了重新编译内核的麻烦,实现了动态扩充内核的功能。,二、模块的编写,以一个简单的Linux2.4内核下的模块“hello world”为例讲解模块的相关知识:,三、模块makefile的编写,编译内核模块常用的选项如下:(1)-O2:打开优化选项(2)-I:使用加载内核模块的内核的头文件,而不是默认的内核头文件。(3)-D_KERNEL_:告诉头文件,代码在内核模式运行,使内核头文件所有内容可见。(4)-DMODULE:通知头文件这是一个内核模块的代码。,模块makefile的编写,编译内核模块常用的选项如下:(5)-DLINUX:为了提高代码可移植性,这里说明代码是在Linux操作系统下编译。(6)_SMP_:对称多处理机上运行。(7)-Wall:显示所有警告信息。(8)-W:用于控制warnning信息的数量,四、模块的加载和卸载,1、加载模块有两种方式:(1)第一种方式:insmod命令手工把它插 入到内核,(2)另一种更智能的方法:按需装入需要 执行modprobe程序2、与内核模块加载和卸载有关的常用命令有如 下几个:insmod、rmmod、Lsmod、Ksyms、Modprobe,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,驱动程序设计,1、Linux设备驱动程序概述2、设备驱动接口3、简单设备驱动程序分析,一、Linux设备驱动程序概述,Linux设备驱动程序就是这样的一组标准化接口,它隐藏了设备工作的细节。用户程序通过标准化系统调用,这些调用和特定的硬件无关,再由Linux内核调用特定的设备驱动程序操作,控制实际的硬件设备。在Linux系统中,把设备分为:(1)字符设备(2)块设备(3)网络设备,二、设备驱动接口,Linux系统把每个设备都当做文件来看待,访问设备就像访问文件一样。(1)打开设备使用系统调用open()(2)关闭设备使用系统调用close()(3)读写设备使用系统调用read()和 write()。,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,Linux2.6与Linux2.4内核驱动的区别,(1)Linux2.6内核驱动程序必须由MODULE_LICENSE(“Dual BSD/GPL”)语句来定义许可证,而不能再用2.4内核的MODULE_LICENSE(“GPL”)。(2)从Linux2.4到2.6,内核模块的编译、链接过程以及Makefile的书写都发生了改变。(3)Linux2.4编译生成的内核模块后缀为.o Linux2.6编译生成的内核模块后缀为.ko,Linux2.6与Linux2.4内核驱动的区别,(4)Linux2.6内核中,内核模块必须调用宏module_init()与module_exit()注册载入和卸载时的函数。Linux2.4内核中,如果载入函数命名为init_module(),卸载函数命名为cleanup_module(),可以不必使用module_init()与module_exit()宏。,Linux2.6与Linux2.4内核驱动的区别,(5)Linux2.4内核中,模块自身通过MOD_INC_USE_COUNT和MOD_INC_USE_COUNT这两个宏,来计算被其他模块使用的次数。2.6内核中,这两个宏被函数try_module_get(&module)和module_put(module)取而代之。,Linux2.6与Linux2.4内核驱动的区别,(6)Linux2.4内核中设备有8位主设备号,8位次设备号,而在2.6内核中扩展到了12位主设备号,20位次设备号。(7)就字符型设备而言,驱动中向内核注册设备的调用函数register_chrdev()在Linux2.6内核中变为int register_chrdev_region(dev_t from,unsigned count,char*name)。,Linux2.6与Linux2.4内核驱动的区别,(8)Linux2.6内核中,所有的内存分配函数不再包含在头文件linux/malloc.h中,而是包含在linux/slab.h中,原来的linux/malloc.h已经不存在。(9)Linux2.6内核中对结构体的定义形式也发生了变化更具有可移植性、代码更加紧凑、容易阅读,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,交叉编译,交叉编译的环境建立在宿主机上,而对应的开发板称为目标机。现代的嵌入式系统软件主要由C语言和汇编语言代码结合编写,编写完源代码文件后转换为可执行的二进制代码格式的过程,包括三个步骤:(1)用宿主机上建立的交叉编译环境生成.obj目标文件,(2)这些.obj文件按照目标机的要求链接成一个目标文件。(3)通过重定位机制,将映像文件下载到目标机上运行。,交叉编译,交叉编译主要流程:,主要内容,1,3,2,4,C语言概述,Linux操作系统基础,Linux编程工具链,编程流程,5,模块设计,驱动程序设计,Linux2.6与linux2.4内核驱动的区别,交叉编译,Embest EduKit-型教学实验平台,6,7,8,9,Embest EduKit-III型教学实验平台简介,1、Embest EduKit-III型教学实验平台2、JTAG仿真器3、Flash编程器4、RealView MDK,第一节:Embest EduKit-III型教学实验平台,Embest EduKit-III 型开发板是实验系统的主要硬件平台基于SAMSUNG 公司的S3C44B0X 处理器和S3C2410X处理器,资源丰富硬件系统包含了嵌入式系统开发应用所需的大部分设备如串口、以太网口、USB 口、音频输出、LCD 及TSP 触摸屏、5*4 的小键盘、固态硬盘、大容量的Flash 和SDRAM 等等,第一节:Embest EduKit-III型教学实验平台,1、硬件平台实物:,一、Embest EduKit-III型教学实验平台,2、Embest EduKit-III型开发板的硬件结构框图:,二、JTAG仿真器,JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式。,三、Flash编程,1、当用户程序编写完之后,需要把程序生成的二进制执行文件烧写到目标机的Flash存储器中观察实际运行结果。2、教学实验平台包括一套完善的Flash编程器,可与前面提到的JTAG仿真器配合使用,对目标机上的Flash进行读写。,Flash编程,3、Flash编程器运行界面,Flash编程,4、Flash编程器的主要特征:(1)支持所有基于ARM7和ARM9核的处理器,(2)用户也可以通过选择自定义(USER-DEFINE),来定义编程使用的CPU类型;(3)支持大多数厂家生产的Flash芯片(4)支持对Flash进行空白检查、擦除、编程、文件校验、计算校验和、保护、上载;,Flash编程,(5)支持指定扇区范围操作,不影响其他扇区内容;(6)支持8位、16位和32位读写访问宽度;(7)支持1片、2片及4片Flash编程,编程文件无需劈分;(8)支持Windows 98、2000、NT及XP操作系统。,四、RealView MDK,2005年,ARM公司收购了德国Keil公司,随后推出了业界最高效的ARM开发环境:RealView开发工具集(RealView MDK:RealView Microcontroller Development Kit),应用于基于ARM核处理器的嵌入式开发中。它不但适合专业应用程序开发工程师做产品开发设计,也适合嵌入式系统的初学者学习使用。,四、RealView MDK,开发工具集整合了RealView编译器和Keil Vision3集成开发环境,还包括ULINK2仿真器,支持ARM7、ARM9、Cortex-M3等MPU,它功能强大,方便学习和使用。关于RealView MDK的更多信息,请参考Vision3 IDE的用户手册。,

    注意事项

    本文(第三章 嵌入式程序设计基础.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开