搜索
bottom↓
回复: 8

AVR MCU移植UCOS的几个关键点

[复制链接]

出0入0汤圆

发表于 2009-3-15 10:50:32 | 显示全部楼层 |阅读模式
在本站可以下载到MICRIUM官方的UCOS在AVR MCU的移植范例,此例程是针对ATMEGA128芯片的,不修改不能适合其他AVR芯片,
移植时有以下几个关键点要注意:

文件名:vector.s
.area   OSTickISR(abs)
//.org    16*4                                  //ATMEGA128
.org    9*4                                  //ATMEGA16 timer0 overfolw interrupu vector
//.org    4*4                                  //ATMEGA16 timer2 overfolw interrupu vector
JMP     _OSTickISR
此为中断向量定义文件,不同的AVR MCU中断向量可能不同,如果发现CPU启用中断就发生复位首先就是这里错了。

文件名:os_cpu_a.s
                .macro  PUSH_ALL                            ; Save all registers
                ST      -Y,R0
                ST      -Y,R1
                ST      -Y,R2
                ST      -Y,R3
                ST      -Y,R4
                ST      -Y,R5
                ST      -Y,R6
                ST      -Y,R7
                ST      -Y,R8
                ST      -Y,R9
                ST      -Y,R10
                ST      -Y,R11
                ST      -Y,R12
                ST      -Y,R13
                ST      -Y,R14
                ST      -Y,R15
                ST      -Y,R16
                ST      -Y,R17
                ST      -Y,R18
                ST      -Y,R19
                ST      -Y,R20
                ST      -Y,R21
                ST      -Y,R22
                ST      -Y,R23
                ST      -Y,R24
                ST      -Y,R25
                ST      -Y,R26
                ST      -Y,R27
                ST      -Y,R30
                ST      -Y,R31
                //IN      R16,RAMPZ
                //ST      -Y,R16
                .endmacro

                .macro  POP_ALL                             ; Restore all registers
                //LD      R16,Y+
                //OUT     RAMPZ,R16
                LD      R31,Y+
                LD      R30,Y+
                LD      R27,Y+
                LD      R26,Y+
                LD      R25,Y+
                LD      R24,Y+
                LD      R23,Y+
                LD      R22,Y+
                LD      R21,Y+
                LD      R20,Y+
                LD      R19,Y+
                LD      R18,Y+
                LD      R17,Y+
                LD      R16,Y+
                LD      R15,Y+
                LD      R14,Y+
                LD      R13,Y+
                LD      R12,Y+
                LD      R11,Y+
                LD      R10,Y+
                LD      R9,Y+
                LD      R8,Y+
                LD      R7,Y+
                LD      R6,Y+
                LD      R5,Y+
                LD      R4,Y+
                LD      R3,Y+
                LD      R2,Y+
                LD      R1,Y+
                LD      R0,Y+
                .endmacro
此程序段为寄存器进出栈,有些AVR MCU没有RAMPZ寄存器,如没有应该取消该寄存器的进出栈,
否则RAMPZ被指向错误的地址,会发生不可预料的错误。

文件名:os_cfg.h
//#define OS_TASK_STK_SIZE        256    /* Default size for each task stack (Total stack size)          */
#define OS_TASK_STK_SIZE        128                 //Default size for each task stack ATMEGA16
#define OS_TASK_HARD_STK_SIZE    32    /* Default size for the hardware stack                          */
此处定义了每个任务可使用的堆栈空间,不同的AVR MCU的RAM大小不同,要根据不同的RAM大小调整堆栈的大小。

以上是本人在AVR MCU上移植UCOS总结的几个关键点,不尽之处,欢迎高手跟贴。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2009-3-28 01:51:55 | 显示全部楼层
是没人用这个么,还是汇编太晦涩,自己顶一下。

出0入0汤圆

发表于 2009-3-28 17:07:44 | 显示全部楼层
官方的移植文件那里有下载,我下了几个都编译不了,我用的是winavr2007+avrstudio4.13,编译老说找不到elf文件,你有可以使用的例子吗,上一个

出0入0汤圆

发表于 2009-3-28 17:20:24 | 显示全部楼层
AVR就得MEGA128这类资源多点
对MEGA32这类,uCOS必须裁剪
还不如自己写个迷你的RTOS简单用的实在

出0入0汤圆

发表于 2009-4-10 21:26:05 | 显示全部楼层
LZ不错,有时觉得汇编还是不错的

出0入0汤圆

发表于 2009-12-4 13:14:55 | 显示全部楼层
收藏,有空自己移植下

出0入0汤圆

发表于 2009-12-4 13:55:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-13 12:47:43 | 显示全部楼层
先前也遇到过类似的问题。LZ讲的不错。
呵呵,其实汇编也没不太难看。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 20:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表