ImageVerifierCode 换一换
格式:DOC , 页数:27 ,大小:155.50KB ,
资源ID:139586      下载积分:5 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-139586.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于arm平台的uCOSII移植.doc)为本站会员(h****)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

基于arm平台的uCOSII移植.doc

1、BruceWoo 西南科技大学创新基金项目 第 1页 CopyRight: FreshAir 团队 西 南 科 技 大 学 创新基金项目过程与结果总结报告 基于 ARM7平台的 C/OS-的移植 年 级 : 2007 级 学 号 : 20076012 姓 名 : 吴 友 强 专 业 : 计算机科学与技术 二零一零年五月Brucewoo 西南科技大学创新基金 项目 第 2页 一 .准备工作 1. C/OS- 简介 uC/OS-II 读做“ micro COS2”, 意为“微控制器操作系 统版本 2”。 uC/OS-II 是著名的,源代码公开的实时内核,可用于各类 8 位, 16 位和 32 位单

2、片机或 DSP。从 uC/OS 算起,该内核已有十多年应用历史,在诸多领域得到广泛应用。 简要说明一下该题目的特点和它的实际意义和社会价值。(约 250 字并翻译英文) 2. C/OS- 的特点 ( 1) 提供源代码 ( 2) 可固化 ( 3) 可裁剪 ( 4) 可剥夺 ( 5) 多任务 ( 6) 可确定性 ( 7) 任务栈 ( 8) 系统服务 ( 9) 中断管理 ( 10) 稳定性与可靠性 3.编译器的选择 ARM 处理器核的 C 编译器有很多,大概有 SDT, ADS1.2, IAR, TASKING 和 GCC 等。我最终选择的是 ADS1.2 编译程序 和调试。 为什么要选择 ADS1

3、.2,要简要说明理由。(约 200 字) 4.ARM7简介 ARM7 处理器核具有用户,系统,管理,中止,未定义,中断和快中断 7 中工作模式。其中除了用户模式外其他均为特权模式。同时支持两个指令集: 16 位 Thumb 指令集和 32 位 ARM 指令集。 为什么要选择 ARM7,而不选 ARM9或 ARMX 的高版本进行 uC/OS-II 的移植,简要说明理由。(约 200字) 5.开发环境的搭建 操作系统: Windows XP 集成开发环境: ADS1.2 调试环境: AXD( ADS1.2 配套的软件) 串口调试工具 6.项目 中所运用到的技术创新 ( 1)实现了加密程序,保护了用

4、户应用程序代码,利用在特定的地址 0x1fc 处写入特定的值 0x87654321 实现加密 ( 2)通过工程配置文件加载程序代码,实现了写应用程序的模板工程,不用每次配置工程设置 ( 3)初始化程序和操作系统代码都留有很多扩充的接口,方便不同的用户需要实现不同的启动代码功能和扩充操作系统的功能 7.项目的特色 ( 1)在本文档中有完整的源代码,并且有很详细的注释 ( 2)只要具备同样的软硬件环境,根据我的过程与结果总结报告完全可以实现这个项目 ( 3)同时完成了引导程序 和操作系统的移植 Brucewoo 西南科技大学创新基金 项目 第 3页 ( 4)涉及到软硬件的知识,不仅仅只是软件 二

5、移植过程 1.编写 bootloader( ARM 启动代码) 1.启动代码综述 (精确简述移植过程,关键程序不要省略,其它程序可用流程图表达和说明即可。) 在一般 32 位 ARM 应用系统中,软件大多数采用 C 语言进行编程,并且以嵌入式操作系统为开发平台,这样大大的提高了开发效率及软件性能。为了能够进行系统初始化,通常会用一个汇编文件作为启动代码。它可以实现向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、 I/O 初始化、外围初始化和地址重映射等操作。 ARM 公司 之设计内核,不生产芯片,只是把内核授权给其他厂商。其他厂商购买了授权后加入自己的外设,生产出各具特色的芯片。这样就

6、促进了基于 ARM 处理器核的芯片的多元化,但也使得各种芯片的启动代码差别很大,不易编写出统一的启动代码。 2.文件的组成 汇编文件 1.Startup.S:异常向量表、各模式堆栈初始化和跳到 main()函数入口等 2.IRQ.S :负责管理中断嵌套 C 文件 Target.C :初始化目标板 头文件 Config.H :系统配置和类型定义 Target.H :一些和目标板相关的声明 LPC2294.H : LPC2000 系列芯片特殊寄存器定义 分散加载文件 mem_a.Scf:在片内 Flash 发布, RelInFLASH Mem_b.Scf:在片内 RAM 调试, DebugInRA

7、M,在 uCOSII 中不使用这种布局模式 Mem_c.Scf:在片内 Flash 调试, DebugInFLASH 3.各源代码文件内容及其注释 1.Startup.S: ;*-File Info- ;* File name: Startup.s ;* Last modified Date: 2009-08-17 ;* Last Version: 1.0 ;* Descriptions: 为 LPC2100 系列芯片的启动代码,从这里开始执行 ,包括初始化代码,为每一种模 ;* 式 的进入口和任务的堆栈 ;定义堆栈的大小 SVC_STACK_LEGTH EQU 0 FIQ_STACK_LEG

8、TH EQU 0 IRQ_STACK_LEGTH EQU 256 ABT_STACK_LEGTH EQU 0 UND_STACK_LEGTH EQU 0 NoInt EQU 0x80 ; Bit7,I 位 NoFIQ EQU 0x40 ; Bit6, F 位 USR32Mode EQU 0x10 ; M4:0=10000,用户模式 SVC32Mode EQU 0x13 ; M4:0=10011,管理模式 SYS32Mode EQU 0x1f ; M4:0=11111,系统模式 IRQ32Mode EQU 0x12 ; M4:0=10010, IRQ 中断 FIQ32Mode EQU 0x11

9、; M4:0=10001,快速中断 IMPORT _use_no_semihosting_swi ;引入的外部标号在这声明 IMPORT FIQ_Exception ; 快速中断异常处理程序 IMPORT _main ; C 语言主程序入口 IMPORT TargetResetInit ;目标板基本初始化 Brucewoo 西南科技大学创新基金 项目 第 4页 ;给外部使用的标号在这声明 EXPORT bottom_of_heap EXPORT StackUsr EXPORT Reset EXPORT _user_initial_stackheap CODE32 AREA vectors,CO

10、DE,READONLY ENTRY ;中断向量表 Reset LDR PC, ResetAddr ; 0x00,复位 LDR PC, UndefinedAddr ; 0x04,未定义地址 LDR PC, SWI_Addr ; 0x08,软件中断 LDR PC, PrefetchAddr ; 0x0c,预取指中止 LDR PC, DataAbortAddr ; 0x10,数据中止 DCD 0xb9205f80 ; 0x14,保留 LDR PC, PC, #-0xff0 ; 0x18, IRQ 中断 LDR PC, FIQ_Addr ; 0x1C,快速中断 ResetAddr DCD ResetI

11、nit ;复位初始化处理程序地址 UndefinedAddr DCD Undefined ;未定义指令处理程序地址 SWI_Addr DCD SoftwareInterrupt ;软件中断处理程序地址 PrefetchAddr DCD PrefetchAbort ;预取指中止处理程序地址 DataAbortAddr DCD DataAbort ;数据中止处理程序地址 Nouse DCD 0 ;未使用 IRQ_Addr DCD 0 ; IRQ 中断,已在 “LDR PC, #-0xff0“中处理 FIQ_Addr DCD FIQ_Handler ;未定义指令 Undefined B Undefi

12、ned ;死循环 ;软中断 SoftwareInterrupt ; B SoftwareInterrupt ;/增加开 /关中断处理 CMP R0, #4 ;判断传过来的参数是否大于 4 LDRLO PC, PC, R0, LSL #2 ;小于 4(参数正确),进行查表 MOVS PC, LR ;大于或者等于 4(参数出错),则返回 SwiFunction DCD IRQDisable ;0 号调用,禁止 IRQ 中断 DCD IRQEnable ;1 号调用,使能 IRQ 中断 DCD FIQDisable ;2 号调用,禁止 FIQ 中断 DCD FIQEnable ;3 号调用,使能 F

13、IQ 中断 IRQDisable ;关 IRQ 中断 MRS R0, SPSR ;读取 SPSR 的值 ORR R0, R0, #NoInt ;置位 I 位,设置关 IRQ 中断 MSR SPSR_c, R0 ;回写 SPSR MOVS PC, LR ;返回 IRQEnable Brucewoo 西南科技大学创新基金 项目 第 5页 ;开 IRQ 中断 MRS R0, SPSR BIC R0, R0, #NoInt ;清零 I 位,设置开 IRQ 中断 MSR SPSR_c, R0 MOVS PC, LR FIQDisable ;关 FIQ 中断 MRS R0, SPSR ORR R0, R0

14、, #NoFIQ ;置位 F 位,设置关 FIQ 中断 MSR SPSR_c, R0 MOVS PC, LR FIQEnable ;开 FIQ 中断 MRS R0, SPSR BIC R0, R0, #NoFIQ ;清零 F 位,设置开 FIQ 中断 MSR SPSR_c, R0 MOVS PC, LR ;取指令中止 PrefetchAbort B PrefetchAbort ;死循环 ;取数据中止 DataAbort B DataAbort ;死循环 ;快速中断 FIQ_Handler STMFD SP!, R0-R3, LR ;寄存器 R0R3, LR 入栈 BL FIQ_Exceptio

15、n ;调用 FIQ 处理程序 LDMFD SP!, R0-R3, LR ;寄存器 R0R3, LR 出栈 SUBS PC, LR, #4 ;计算返回地址 ;/* ;* unction name 函数名称 : InitStack ;* Descriptions 功能描述 : 初始化堆栈 ;* Created by 作 者 : 吴友强 ;* Created Date 日 期 : 2009/07/20 2009 年 7 月 20 日 ;*/ ;初始化堆栈,此时禁止 IRQ 和 FIQ 中断,处于 ARM 状态 InitStack MOV R0, LR ;Build the SVC stack ;设置

16、管理模式堆栈 MSR CPSR_c, #0xd3 LDR SP, StackSvc ;Build the IRQ stack ;设置中断模式堆栈 MSR CPSR_c, #0xd2 LDR SP, StackIrq ;Build the FIQ stack ;设置快速中断模式堆栈 MSR CPSR_c, #0xd1 Brucewoo 西南科技大学创新基金 项目 第 6页 LDR SP, StackFiq ;Build the DATAABORT stack ;设置中止模式堆栈 MSR CPSR_c, #0xd7 LDR SP, StackAbt ;Build the UDF stack ;设置

17、未定义模式堆栈 MSR CPSR_c, #0xdb LDR SP, StackUnd ;Build the SYS stack ;设置系统模式堆栈 MSR CPSR_c, #0xdf ;切换到系统模式,之后将在系统模式下运行 LDR SP, =StackUsr ;除非进行模式切换 MOV PC, R0 ;/* ;* unction name 函数名称 : ResetInit ;* Descriptions 功能描述 : 复位入口 ;* Created by 作 者 : 吴友强 ;* Created Date 日 期 : 2009/07/20 2009 年 7 月 20 日 ;*- ;*/ Re

18、setInit BL InitStack ;初始化堆栈 BL TargetResetInit ;目标板基本初始化 B _main ;跳转到 c 语言入口 ;/* ;* unction name 函数名称 : _user_initial_stackheap ;* Descriptions 功能描述 : 库函数初始化堆和栈,不能删除 ;* Created by 作 者 : 吴友强 ;* Created Date 日 期 : 2009/07/20 2009 年 7 月 20 日 ;*/ _user_initial_stackheap LDR r0,=bottom_of_heap ; LDR r1,=

19、StackUsr MOV pc,lr StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4 ;管理模式堆栈 StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4 ; IRQ 模式堆栈 StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4 ; FIQ 模式堆栈 StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4 ;中止模式堆栈 StackUnd DCD UndtStackSpace

20、 + (UND_STACK_LEGTH - 1)* 4;未定义模式堆栈 ;/* ;* unction name 函数名称 : CrpData ;* Descriptions 功能描述 : 芯片加密,代码保护 ;* input parameters 输 入 : None 无 ;* Returned value 输 出 : None 无 ;* Used global variables 全局变量 : None 无 ;* Calling modules 调用模块 : None 无 ;* Brucewoo 西南科技大学创新基金 项目 第 7页 ;* Created by 作 者 : 吴友强 ;* Cr

21、eated Date 日 期 : 2009/07/20 2009 年 7 月 20 日 ;*/ IF :DEF: EN_CRP IF . = 0x1fc INFO 1,“nThe data at 0x000001fc must be 0x87654321.nPlease delete some source before this line.“ ENDIF CrpData WHILE . #include #pragma import(_use_no_semihosting_swi) int _rt_div0(int a) a = a; return 0; Brucewoo 西南科技大学创新基

22、金 项目 第 10页 int fputc(int ch,FILE *f) ch = ch; f = f; return 0; int fgetc(FILE *f) f = f; return 0; int _sys_close(FILEHANDLE fh) fh = fh; return 0; int _sys_write(FILEHANDLE fh, const unsigned char * buf, unsigned len, int mode) fh = fh; buf = buf; len =len; mode = mode; return 0; int _sys_read(FILEHANDLE fh, unsigned char * buf, unsigned len, int mode) fh = fh; buf = buf; len =len; mode = mode; return 0; void _ttywrch(int ch) ch = ch; int _sys_istty(FILEHANDLE fh) fh = fh; return 0; int _sys_seek(FILEHANDLE fh, long pos) fh = fh;

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。