RTOS(程序员-开发环境).ppt_第1页
RTOS(程序员-开发环境).ppt_第2页
RTOS(程序员-开发环境).ppt_第3页
RTOS(程序员-开发环境).ppt_第4页
RTOS(程序员-开发环境).ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 RTOS编程培训 2 课程目的 掌握RGOS线程调度的基本原理熟练应用IPC进行多线程开发掌握RGOS的中断和定时器管理机制掌握RGOS内存管理的正确使用方法学会搭建RGOS的编程环境 掌握基本的嵌入式开发和调试技能 3 考核方式 笔试 闭卷 60 上机40 编程练习上机调试 4 课程内容 开发环境与调试方法系统调度 中断与线程间通信多线程开发常见问题 定时器与内存管理 5 学习指导 RGOS的一些基本概念注意理解和区分理解并掌握各种机制的应用场合对开发过程中的约束和注意事项要牢记接口只要在要用的时候会用即可 参考资料 OperatingSystemConceptsAbrahamSilberschatzPeterBaerGalvin GregGagneJohnWiley sons Inc 操作系统概念 高等教育出版社Real TimeConceptsForEmbeddedSystemsQingLi CarolineYaoCMPBooks 嵌入式系统的实时概念 北京航空航天大学出版社 7 开发环境与调试方法 开发环境开发基本流程子系统常用调试方法 开发环境 host主机平台X86 Windows Linux Target目标平台PPC MIPS ARM 9 交叉编译 在A平台上编译生成B平台运行的程序交叉编译器为什么要交叉编译 目标平台缺乏编译环境目标平台未建立目标平台不支持直接主机编译 资源限制 10 编译链接环境 Cygwin下载地址 ftp user 192 168 5 142 应用软件 编译工具类 Cygwin 20050107 rar安装方式略交叉编译器PPC ftp user 192 168 5 142 应用软件 编译工具类 gcc compile gcc3 4 4 ppc eabi 其他 需要时再找安装方式 解压缩到cygwin的根目录下将交叉编译器的bin目录添加到系统环境变量 path 中 11 启动引导方式 交换机 三级引导Boot Ctrl Main路由器 二级引导Bootloader Main为什么需要多级引导 Boot 功能最简单 负责初始化最基本的运行环境 仅能使用串口进行对外交互 Ctrl Bootloader 相对Boot增加了网口驱动 文件系统等功能 Main 功能最丰富 包括了各种上传应用协议等等 12 代码结构 根目录 kernel arch driver include target ppc mips pci i2c arch driver project mpc82xx sibyte s57 r36 main boot ctrl s57 build conf r36 arch kernel driver target 存放配置结果 存放编译链接产生的中间文件和最终文件 源代码文件 Program Project 编译工程 13 开发环境与调试方法 开发环境开发基本流程子系统常用调试方法 14 开发基本流程 第一步 编写源代码 略 第二步 编写源码相关的配置文件 包括makefile文件 第三步 进行工程配置第四步 编译第五步 将编译生成的程序载入到目标板上第六步 运行程序 15 基础知识 几种重要的文件类型 主config in文件位置 scripts 作用 生成配置结果文件 config 以及头文件 autoconf h 主makefile文件位置 根目录下作用 根据配置结果文件确定需要编译哪些子目录 并将这些子目录的 o文件链接成最终的目标文件 16 基础知识 几种重要的文件类型 config in文件位置 各个模块所在目录作用 对当前模块进行配置 以支持模块的卸载和添加makefile文件位置 各个源文件所在目录作用 根据配置确定该目录下的哪些源文件和子目录需要被编译以上两个文件统称为该模块的配置文件 17 基础知识 几种重要的文件类型 Rules make位置 根目录下作用 确定编译的依赖规则 并根据配置文件逐层递归遍历每个目录下的各个子目录 编译生成对应的 o文件 18 如何进行配置和编译 例子 S57主程序的配置 Program main Project s57 1 进入 project main s57 目录2 执行 makesconfig命令3 根据提示进行配置4 执行 makes命令进行编译 19 第二步 编写配置文件 配置项的命名必须以 CONFIG 开头 建议是 CONFIG 模块名 变量名 的格式配置项的定义define boolbooldefine intintdefine stringstringdefine hexhex 20 第二步 编写配置文件 配置项定义例子 hex Thealloclimitsofpacketbuffer CONFIG PACKET ALLOC MAX0 x4000define boolCONFIG CPM2PICybool SupportPCI CONFIG PCIstring Defaultmainfilename CONFIG MAIN FILEint HowManyprocessors CONFIG NR CPUS224 Thealloclimitsofpacketbuffer CONFIG PACKET ALLOC MAX 4000 NEW 5000 SupportPCI CONFIG PCI N y NEW Y Defaultmainfilename CONFIG MAIN FILE NEW HowManyprocessors CONFIG NR CPUS 2 NEW 5InputerrorHowManyprocessors CONFIG NR CPUS 2 NEW 4 21 第二步 编写配置文件 config in文件中使用的条件判断bool OpenSYSTEMDebug CONFIG SYS DEBUGif CONFIG SYS DEBUG y thendefine boolCONFIG SYS ASSERT y ficonfig in文件的包含关系bool Supportredundancy CONFIG RDNDif CONFIG RDND y thenincludekernel rdnd config infi 22 第二步 编写配置文件 配置项的最终保存方式Program Project conf config 配置结果文件 以makefile中变量的形式保存所有的配置项用于指导makefile中的编译和链接Program Project conf autoconf h 配置结果头文件 以C语言中宏定义的形式保存所有的配置项按模块分解成多个 h 用于源文件中 23 第二步 编写配置文件 Makefile文件的一般格式 O TARGET sub xxx o 注意 xxx为当前目录名subdir y d1d2 我想编译当前目录下的哪些子目录obj y y1 oy2 o 我想编译当前目录下的那些文件EXTRA CFLAGS WalloverrideEXTRA INCLUDE I TOPMK include 我还想将哪些目录作为系统头文件目录 可用包含 include TOPDIR Rules make 这个必须加 24 第二步 编写配置文件 Makefile中如何使用配置项如 driver makefile中的一部分O TARGET sub driver osubdir y asyncsubdir CONFIG I2C i2csubdir CONFIG MTD mtdsubdir CONFIG PCI pci 当 config文件中CONFIG PCI y时 实际上就等于 subdir y pci 25 第二步 编写配置文件 Makefile中如何使用配置项Ifeq CONFIG UART LL y obj y uart debug oelseobj y uart oEndif思考 能否使用obj CONFIG UART LL 这种方式 26 第三 四步 配置与编译 命令配置 makesconfig编译 makes进行配置操作后生成的文件Program Project conf config 配置结果文件 Program Project conf autoconf h 配置结果头文件 进行编译操作后生成的文件xxx bin 可执行程序xxx disasm gz压缩后的反汇编文件其他文件 27 示例 如何添加一个新的模块 1 新的模块目录就位2 编写模块内部的配置菜单config in3 编写这个新目录内的Makefile4 添加这个新模块的加载菜单5 修改上一级目录的Makefile 28 示例 如何添加一个新的模块 例子 在driver目录下加入AAA设备的驱动模块 假设该模块代码包括a1 c和a2 c 1 确定AAA设备驱动模块所在的位置 driver aaa 目录下 2 编写AAA模块的配置菜单 driver aaa config in comment AAADriverconfig AAAdrivermoduleconfig bool useA1 COFNIG AAA A1bool useA2 COFNIG AAA A2 29 示例 如何添加一个新的模块 3 编写aaa模块的makefile文件 driver aaa makefile O TARGET sub aaa osubdir y obj y obj CONFIG AAA A1 a1 oobj CONFIG AAA A2 a2 oinclude TOPDIR Rules make 30 示例 如何添加一个新的模块 4 修改driver模块的配置文件 driver config in 在 driver config in中加入对AAA的配置bool SupportAAA CONFIG AAA ConfigAAAif CONFIG AAA y thenincludedriver aaa config infi5 修改上一级目录的makefile driver makefile 在 driver makefile中加入subdir CONFIG AAA aaa 31 第五步 载入程序 Boot下更新程序的方法按Ctrl b进入Boot模式使用Xmodem更新Boot或CtrlCtrl Bootloader下载入程序的方法Ctrl c进入Ctrl模式或Bootloader模式使用Xmodem或TFTP功能更新Ctrl Bootloader或Main注意 Boot Bootloader Ctrl不得轻易更新 否则会导致设备无法启动 Xmodem TFTP的具体操作请参见各模式下的帮助信息 使用help命令 32 开发环境与调试方法 开发环境开发基本流程子系统常用调试方法 33 子系统介绍 为何要使用子系统可卸载性模块的初始化子系统的类型不可卸载的子系统 内存管理模块可卸载的子系统 一些协议模块 34 子系统初始化阶段划分 基础类初始化 链路层初始化 网络层初始化 应用层初始化 驱动初始化 最终阶段 基础类 SUBSYS CLASS BASIC 被后续所有模块依赖的模块并且不依赖于任何其他应用模块 链路层模块 SUBSYS CLASS LINKLAYER 链路层框架 链路层协议 不含驱动 网络层模块 SUBSYS CLASS NETWORKLAYER 网络层框架和协议 应用层模块 SUBSYS CLASS APPLICATION 网络层框架和协议 驱动 SUBSYS CLASS DRIVER 各种驱动 如PCI等 最终阶段 SUBSYS CLASS LAST 从初始化顺序上讲必须位于上述阶段之后的模块 35 可卸载子系统的创建 1 编写子系统2 编写配置文件3 修改makefile文件 36 编写子系统 1 明确本模块需要在哪个阶段初始化2 明确子系统的依赖关系和初始化顺序关系3 明确本模块的初始化函数 37 子系统的定义 SUBSYS DEFINE 00 subsysname SUBSYS CLASS XXX 1 xxx init dependance sequence dependance子系统所依赖的其他子系统 若所依赖的子系统不存在 那么该子系统不能被初始化 sequence子系统初始化之前需要先初始化的子系统列表 列表中的子系统如果不存在 不会影响到该子系统的初始化 38 子系统的定义 例子 SUBSYS DEFINE 00 a1 SUBSYS CLASS DRIVER 1 a1 init pci NULL SUBSYS DEFINE 00 a2 SUBSYS CLASS LINKLAYER 1 a2 init NULL NULL SUBSYS DEFINE 00 a3 SUBSYS CLASS LAST 1 a3 init a1 a2 a1 a2 39 子系统示例 HelloWorld staticvoidhello main unsignedlongargc void argv while 1 printk HelloWorld n sleep HZ staticvoidinit helloworld printk KERN INFO Starthelloworldtask n hello task create

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论