随笔分类 - uc/os
嵌入式ucos学习
摘要:程序控制块 1. 程序控制块 从代码上看,程序控制块就是一个结构体.例如: 操作系统可以通过这个结构体控制与之相关联的代码,因此把这种结构叫做程序控制块. 例子: c include include //TCB定义 typedef struct tcb{ char task_name; //任务名字
阅读全文
摘要:结构数组 对于大小相同但是类型不同的数组,定义结构体数组对其很有帮组.例如: 这两个数组大小相同,因此 可以用另一种不同的组织方式,也就是结构数组.形如: 因此两个数组用一个结构体数组即可定义.
阅读全文
摘要:位字段(bit field) 在存储空间很宝贵的情况下,有可能需要将多个对象保存在一个机器字中,一种常用的方法是:使用类似于编译器符号表的单个二进制位标志集合,外部强加的数据格式(如设备接口等寄存器)经常需要从字的分值中读取数值. 通常采用的方法是:定义一个于相关位的位置对应的"屏蔽码"集合,如:
阅读全文
摘要:过程调用 1. 栈帧结构 说明: 返回值在相对%ebp偏移量为4的位置; 第一个参数放在相对于%ebp偏移量为8的位置; 支持过程调用和返回的指令: 一个过程调用的整个汇编流程示意:
阅读全文
摘要:Big Endian大端模式和Little Endian小端模式 定义 1. Little Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 2. Big Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 3. 网络字节序:TCP/IP各层协议
阅读全文
摘要:内存对齐 1. 为何要内存对齐 1. 平台原因(移植原因) :不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 2. 性能原因 :经过内存对齐后,CPU的内存访问速度大大提升。 2. 内存对齐的规则 许多实际的计算机系统对基本类型
阅读全文
摘要:AT&T汇编指令学习(GCC) 1. 寄存器命名原则: 相比inter语法,AT&T语法格式要求所有的寄存器都必须加上取值符"%". 2. 操作码命令格式: 1. 源/目的操作数顺序: Intel语法格式中命令表示格式为:"opcode dest, src"; "操作码 目标, 源" AT&T语法格
阅读全文
摘要:编译连接 目标文件的格式 可重定位文件: 包含代码和数据 可被用来链接成执行文件或者共享目标文件 linux(.o) windows(.obj) 可执行文件: 包含可以执行的程序 系统可以直接执行的文件 linux (ELF文件,无后缀) windows (.exe) 共享目标文件: 包含代码和数据
阅读全文
摘要:ucos ii system 文件结构 上层: 应用软件,用户代码 中层: 与处理器无关代码 与应用程序相关配置文件 与处理器有关代码 下层: 硬件(cpu,interupt,timer,gpio,iis…) 内核结构 ucos的内核机构可以从以下的代码可以看出,应用支持10个事件控制块,5个事件标
阅读全文
摘要:转自http://www.amobbs.com/thread-5462878-1-1.html 自学uCOS-II源码,在论坛上上看到大神在WIN7 Visual Studio 2010环境下调试uCOS-II 2.91。故转载过来跟着调试学习。 1. 下载uCOS-II 2.91 官方下载地址:h
阅读全文
摘要:MIPS汇编 MIPS指令集 MIPS指令集属于精简指令集 MIPS的所有指令都是32位,指令格式简单,而X86的指令长度不是固定的。 简单的指令和格式易于译码和流水线操作,但是代码密度不高,导致二进制文件大 MIPS有32个通用寄存器REG,为什么是32个而不是更多呢? 因为更多的寄存器需要更多的
阅读全文
摘要:实时系统概念 前后台系统 后台是各种面向硬件的程序,如中断,定时器,gpio等。 前台是: main() { while(1) { ; } } 循环中不断调用各种函数实现功能。 代码临界段 指处理时不可分割的代码,一旦这部分代码运行就不可以打断、 为了确保代码能正常运行,进入临界段代码钱需要关中断,
阅读全文
摘要:实际上,do{…}while(0)的作用远大于美化你的代码。 总结起来这样写主要有以下几点好处: 1. 辅助定义复杂的宏 避免引用的时候出错: 举例来说,假设你需要定义这样一个宏: #define DOSOMETHING()\ foo1();\ foo2(); 这个宏的本意是,当调用DOSOMETH
阅读全文
摘要:问题 任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4 这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有
阅读全文
摘要:进程是指具有私有空间的任务,线程是指共享空间的任务
阅读全文
摘要:1.简介 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性。 为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理
阅读全文
摘要:bss段: bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。 bss是英文Block Started by Symbol的简称。 bss段属于静态内存分配。 data段: 数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区
阅读全文