ucos---1

堆栈

基本汇编指令寄存器

  1. ebp—基地址指针
  2. esp—栈顶指针
  3. esi/edi----内存空间的段内偏移量
  4. eax-------累加寄存器
  5. lea---------取有效地址(便宜地址)
  6. PUSH, ESP = ESP - x;
  7. POP , ESP = ESP + x;
  8. PUSH,EBP =EBP-10h;
  9. POP ,EBP = EBP+10
    上面的x可以是4或者2
    00F013C0 push ebp
    00F013C1 mov ebp,esp
    00F013C3 sub esp,0CCh
    框架中的三行汇编代码表示函数开辟一个栈空间
    sub esp occh中occh表示栈空间的大小

    00F013EC pop ebx
    00F013ED mov esp,ebp
    00F013EF pop ebp
    框架中的三行代码表示了一个函数结束后恢复到进入函数前某个函数的栈空间。

RTOS中的任务就是一个个函数它们需要在RAM上的空间开辟栈来进行数据的运算交互,可以将RAM看做一个固定大小的数组多少个task就在上面分割成若干个小的数组这些数组的首尾地址编译器应该会进行分配确定硬件物理存储空间这个首尾地址也可以看做ebp~esp的活动范围因此如果一个任务函数的局部变量比较多的话也会造成栈空间溢出这也是为什么51核单片机不太好做RTOS的原因它的RAM比较的小而32的比较大

3:RTOS的任务的切换

将任务运行态的数据地址进行保存后让cpu 索引到下个任务的地址并进入它分配相应的资源给这个任务让他去完成相应的功能

4:相应的函数栈描述的博主

  1. 主函数调用子函数的栈空间情况
  2. 函数调用栈理解
  3. 函数栈的动态解析
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
说 明:本例程是基于STM32_V3.4固件函数库的uCOSII网络通讯实例,在MDK4.12中编译通过。(版本V1.0) 操作过程:1、打开APP文件夹的MDK工程文件,编译后下载到开发板; 2、打开“串口调试程序”,选择串口1,波特率9600,打开串口; 3、打开网络调试助手,设置主机IP地址为192.168.0.0~255网段,设置本地通信端口为1004,设置目标IP地址为192.168.0.100端口为2004: 4、在网络调试助手发送框输入"sky:c=1"点击发送,进行网络连接,连接成功调试助手会连续收到网络数据。 5、默认每秒发送一个数据包。网络调试助手发送框输入"sky:c=0"发送,暂停发送。网络调试助手发送框输入"sky:c=?"发送,恢复发送。 6、串口每秒发送一串字符,串口助手发送任意字符重新初始化网卡芯片。 7、可以使用ping 192.168.0.100进行验证IP应答,输入arp -a验证地址应答。 8、网卡芯片为enc28j60,使用中断方式接收,具体引脚定义请看程序。 9、接收任务挂起,接收中断函数中将接收任务恢复读取数据包。 本例程由微芯简易协议修改而来,添加了UDP主动发送函数,并在uCOSII系统下运行。 该版本更改了任务堆栈,添加了网卡芯片检测函数监控网卡状态如果出错则重新初始化网卡芯片,做了网卡芯片临界资源保护。该版本网络收发稳定性有了较大提高,并且对函数进行了封装,只需添加文件和路径即可移植。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值