文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院程序开发其他语言uC/OS-II在S3C44B0X微处理器上的移植
精品广告
推荐TOP10
·控制面板知多少
·给你十条学习Ruby语言的理由
·分页管理机制
·Perl 语言的重要价值体现
·经验技巧:分享两条Delphi开发经验
·Java编程思想:面向对象的逻辑思维方法
·Samba系统简介
阅读TOP10
·分页管理机制
·Perl 语言的重要价值体现
·图象处理中的边缘检测------canny算子
·Java编程思想:面向对象的逻辑思维方法
·Samba系统简介
·经验技巧:分享两条Delphi开发经验
·uC/OS-II在S3C44B0X微处理器上的移植
·通过Rational的工具来实现SOA治理
·Servlet和Filter的url匹配url-pattern
·Readme for the MontaVista* Linux* 3.1 OpenSSL*/OCF and Intel? IXP400 Software v1.4 Integration

uC/OS-II在S3C44B0X微处理器上的移植

日期:2007年9月2日 作者: 查看:[大字体 中字体 小字体]


  设置includes.h中与处理器&编译器相关的代码

  
以下是引用片段:
#define INT8U unsigned char
  #define INT16U unsigned short
  #define INT32U unsighed long
  #define OS_STK unsigned long
  #define BOOLEAN int
  #define OS_CPU_SR unsighed long
  #define INT8S char
  extern int INTS_OFF(void);
  extern void INTS_ON(void);
  #define OS_ENTER_CRITICAL() { cpu_sr = INTS_OFF() }
  #define OS_EXIT_CRITICAL() { if(cpu_st == 0) INTS_ON(); }
  #define OS_STK_GROWTH 1
  #define STACKSIZE 256
  INTS_OFF
  mrs r0, cpsr ;当前CSR
  mov r1, r0 ;复制屏蔽
  orr r1, r1, #0xC0 ;屏蔽中断位
  msr CPSR, r1 ;关中断(IRQ and FIQ)
  and r0, r0, #0x80 ;从初始CSR返回FIQ位
  mov pc, lr ;返回
  INTS_ON
  mrs r0, cpsr ;当前CSR
  bic r0, r0, #0xC0 ;屏蔽中断
  msr CPSR, r0 ;开中断(IRQ and FIQ)
  mov pc, lr ;返回
  用C语言编写与OS相关的函数(OS_CPU_C.C)

  
以下是引用片段:
OSTaskStkInit——初始化任务堆栈
  OS_STK * OSTaskStkInit(void (*task) (void *pd), void *pdata, OS_STK *ptos,
  INT16U opt)
  {
  unsighed int *stk;
  stk = (unsighed int *)ptos; /*装载堆栈指针*/
  opt++;
  /*为新任务建立堆栈*/
  *--stk = (unsigned int) task; /*pc*/
  *--stk = (unsigned int) task; /*lr*/
  *--stk = 12; /*r12*/
  *--stk = 11; /*r11*/
  *--stk = 10; /*r10*/
  *--stk = 9; /*r9*/
  *--stk = 8; /*r8*/
  *--stk = 7; /*r7*/
  *--stk = 6; /*r6*/
  *--stk = 5; /*r5*/
  *--stk = 4; /*r4*/
  *--stk = 3; /*r3*/
  *--stk = 2; /*r2*/
  *--stk = 1; /*r1*/
  *--stk = (unsigned int) pdata; /*r0*/
  *--stk = (SUPMODE) /*cpsr*/
  *--stk = (SUPMODE) /*spsr*/
  return ((OS_STK *) stk);
  }
  void OSTaskCreateHook(OS_TCB *ptcb) 创建任务
  void OSTasdDelHook(OS_TCB *ptcb) 删除任务
  void OSTaskSwHook(void) 切换任务
  void OSTaskStatHook(void) 任务执行状态
  void OSTimeTickHook(void) 时钟节拍
  用汇编与处理器相关的函数(OS_CPU.ASM)

  1.OSStartHighRdy( ); 运行优先级最高的就绪任务

  
以下是引用片段:
OSStartHighRdy
  LDR r4, addr_OSTCBCur ;得到当前任务TCB地址
  LDR r5, addr_OSTCBHighRdy ;得到最高优先级任务TCB地址
  LDR r5, [r5] ;获得堆栈指针
  LDR sp, [r5] ;转移到新的堆栈中
  STR r5, [r4] ;设置新的当前任务的TCB地址
  LDMFD sp!, {r4} ;从栈顶获取新的状态
  MSR SPSR, r4
  LDMFD sp!, {r4} ;从栈顶获取新的状态
  MSR CPSR, r4 ;CPSR处于SVC32Mode模式
  LDMFD sp!, {r0-r12, 1r, pc} ;运行新的任务
  2.OS_TASK_SW( ); 任务级的任务切换函数

  
以下是引用片段:
OS_TASK_SW
  STMFD sp!, {pc} ;保存pc
  STMFD sp!, {1r} ;保存1r
  STMFD sp!, {r0-r12} ;保存寄存器&返回地址
  MRS r4, CPSR
  STMFD sp!, {r4} ;保存当前的的PSR
  MRS r4, SPSR
  STMFD sp!, {r4} ;保存SPSR
  ; OSRrioCur = OSPrioHighRdy
  LDR r4, addr_OSPrioCur
  LDR r5, addr_OSPrioHighRdy
  LDRB r6, [r5]
  STRB r6, [r4]
  ;得到当前任务地址
  LDR r4, addr_OSTCBCur
  LDR r5, [r4]
  STR sp, [r5] ;保存sp在被占先的任务的TCB
  ;得到最高优先级任务TCB地址
  LDR r6, addr_OSTCBHighRdy
  LDR r6, [r6]
  LDR sp, [r6] ;得到新任务堆栈地址
  ; OSTCBCur = OSTCBHighRdy
  STR r6, [r4]
  ;保存任务方式寄存器
  LDMFD sp!, {r4}
  MSR SPSR, r4
  LDMFD sp!, {r4}
  MSR CPSR, r4
  ;返回到新任务的上下文
  LDMFD sp!, {r0-r12, 1r, pc}
  3. OSIntCtxSw(); 中断级的任务切换函数

  
以下是引用片段:
OSIntCtxSw
  Add r7, sp, #16 ;保存寄存器指针
  LDR sp, =IRQStack ;FIQ_STACK
  mrs r1, SPSR ;得到暂停的SPR
  orr r1, r1, #0xC0 ;



上一篇:C++ builder 的文件读写操作总结

下一篇:正确使用字体和颜色 让网页内容更易阅读


相关软件: 相关文章:
·钢琴 江天《上海梦》ape
·张宇-钻石金选集 台湾上华原版精选[320K]
·office2003中文专业版上海市政府版 ISO
·拨号上网定时工具V1.0.1
·被亵渎的青春—上山下乡女知青惨遭蹂躏录
·真正能在光盘上直接运行的XP
·史上最强全功能Win98精简版 39MB 能够在U盘运行的win98
·那一夜我被他压到在了床上
·色谜语256个 有答案!网上泡MM你肯定用得着
·网络上人气最旺最酷论坛排名
·如何判断你是否已经爱上他?
·40岁的我竟然爱上15岁女孩
·jsp Smart Upload上传下载全攻略
·色情视频网站“女主持”网上脱衣表演被逮捕

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号