- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UCOS II 在 51 单片机运行成功
以下是我的移植过程:
1、新建一个文件夹 aduc845ucosii 来存放整个工程,再在
aduc845ucosii 下建立两个目录:
aduc845ucosii 下建立两个目录:
os 和 out。 os 存放所有源代
码, out 存放编译链接产生的中间文件和最终的输出文件。
2、建立 KEILC 工程,芯片选择 ADUC845 并且加入默认的 启动代码 START_AD.A51
3、把所有用到的源文件都复制到 OS 文件夹内, 也就是现在 在 OS 内所有文件。
4、在 KEIL 的 WORKSPACE 下 Source Group 1 右击, 把 OS
文件夹内以下文件加入源码:uCOS_II.C
文件夹内以下文件加入源码:
uCOS_II.C 、 OS_CPU_C.C 、
OS CPU A.ASM、test.c、serial.c、serial.h。然后还得把 KEIL
安装目录下的 XX\KEIL\C51\LIB 下的 C51BFPC.LIB 和
C51L.LIB 加入源码组。这里要解释一下: uCOS_II.C 是内核 文件, OS_CPU_C.C 、 OS_CPU_A.ASM 是移植文件, test.c
是 main 函数文件, serial.c、 serial.h 是 test.c 里用到串口才把 它们加进源码, 而 C51BFPC.LIB 和 C51L.LIB 这两个文件据 果子说是因为用到了浮点运算,要加入这两个库文件。加入 的文件最好是按顺序加入,特别是两个库文件,如果反了, 就可能出现运行不了或者不正确。
5、打开 Options for Target Target 1,切换到 Target 选项卡, 把 Memory Model 改为 Large: variables in XDATA 。再切换到
Output 选项卡,点击 Select Folder for Objects, 选择 out 文件 夹,勾选Create hex File,按OK确定,再切换到Listing选项卡,
点击Select Folder for Listings,选择 out 文件夹,按 OK 确定。
确定关闭。
6、在 Source Group 1 右击,打开 Options for GroupSource
Group 1, 在 Properties 选项卡下激活 Genrate Assembler SRC
File 和 Assemble SRC File 这两个选项, 并且在它们前打对号。
确定关闭。
7、因为只本移植只须用到 ADUC845 片上 2K 的 XRAM ,故 修改 START_AD.A51 文件的以下内容:
XRAMEN EQU 1 ;
XDATALEN EQU 0x800 ;
XBPSTACK EQU 1 ;
XBPSTACKTOP EQU 0x07FF+1;
如果是果子的源文件移植过来的话,要进行下列改动,以便 链接文件:
1)打开 test.c 把#include lt;includes.hgt;改为 #include
includes.h” 2)把 #include lt;os_core.cgt;
#include lt;os_flag.cgt;
#include lt;os_mbox.cgt;
#define LenTxBuf
#define LenTxBuf 200
#define LenRxBuf
#define LenRxBuf 30
#include lt;os_mem.cgt;
#include lt;os_mutex.cgt;
#include lt;os_q.cgt;
#include lt;os_sem.cgt;
#include lt;os_task.cgt;
#include lt;os_time.cgt;
改为 #include os_core.c #include os_flag.c #include os_mbox.c #include os_mem.c #include os_mutex.c #include os_q.c #include os_sem.c #include os_task.c
#include os_time.c
为了适合小于 2K
为了适合小于 2K 的内部
XRAM ,须改下列两点
3
3)把 serial.h 里的
#define LenTxBuf2000#define LenRxBuf50#define MaxLenStr100
#define LenTxBuf
2000
#define LenRxBuf
50
#define MaxLenStr
100
改为:
改为:
#define M
原创力文档


文档评论(0)