在文件OS_CPU.H
中,通过定义#define OS_STK_GROWTH 的值来确定栈增长方向。
但是问题来了
参考网上大家移植到AVR单片机时,写的是
#define OS_STK_GROWTH 1
然后看任哲老师编剧的《嵌入式实时操作系统UCOS-II原理及其应用》(第2版)
P207——在51单片机上移植写的也是
#define OS_STK_GROWTH 1
但是AVR的堆栈是向下增长
51单片机的堆栈是 向上增长
定义的值怎么会一样呢?
原因:具体原因是51的指令集问题,采用外部模拟堆栈,参看
http://yunandwei.blog.163.com/blog/static/322879012007733225396/
ucos-II 移植
如果堆栈从内存高地址向低地址方向增长, 常量 OS_STK_GROWTH 应设为 1, 这在 OS 里是很明确的 51单片机的堆栈是 向上增长的,不应该设为1。 但是 由于 51 内部的RAM 太小, ucos51 使用外部 xdata 模拟 stack。采用向下方式处理任务栈。 所以, OS_STK_GROWTH 应该为 1 |