摘要: 我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图 1,当左端的输入为“0”时,前面的三极管截止(即集电极c跟发射极e之间相当于断开),所以5v电源通过1k电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开)。我们将图1简化成图2的样子。图2中的开关受软件控制,“1”时断开,“0”时闭合。很明显可以看出,当开关闭合时,输 出直接接地,所以输出电平为0。而当开关断开时,则 阅读全文
posted @ 2012-11-29 14:38 c_cloud 阅读(561) 评论(0) 推荐(0) 编辑
摘要: Virtually every embedded system uses interrupts; many support multitasking or multithreaded operations. These sorts of applications can expect the program's control flow to change contexts at just about any time. When that interrupt comes, the current operation gets put on hold and another funct 阅读全文
posted @ 2012-11-15 17:11 c_cloud 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 调用链如下,后面是文字解说:reset -> cpu_init_crit -> lowlevel_init (板子相关) -> relocate (将U-boot重定位到RAM) -> stack_setup -> clear_bss -> start_armboot() (C程序) -> main_loop()系统上电复位后首先跳转到一个指定的地址,ARM的话是0x00000000地址,即通常所说的复位异常向量地址。然后在这里存放了一条指令b reset,即跳转到reset过程执行。至于怎么把这条指令放在这里则是链接过程指定的。reset过程会将首先 阅读全文
posted @ 2012-11-12 22:51 c_cloud 阅读(1280) 评论(0) 推荐(0) 编辑
摘要: 1. __attribute__机制GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。__attribute__语法格式为:__attribute__ ((attribute-list))其位置约束为:放于声明的尾部“;”之前。我们只讨论类型属性。其他信息参考 阅读全文
posted @ 2012-11-06 11:25 c_cloud 阅读(493) 评论(0) 推荐(0) 编辑
摘要: #include_next仅用于特殊的场合.它被用于头文件中(#include既可用于头文件中,又可用于.c文件中)来包含其他的头文件.而且包含头文件的路径比较特殊:从当前头文件所在目录之后的目录来搜索头文件.比如:头文件的搜索路径一次为A,B,C,D,E.#include_next所在的当前头文件位于B目录,那么#include_next使得预处理器从C,D,E目录来搜索#include_next所指定的头文件.gcc 在编译时如何去寻找所需要的头文件 :header file的搜寻会从-I开始然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJ 阅读全文
posted @ 2012-11-05 09:59 c_cloud 阅读(2502) 评论(0) 推荐(0) 编辑
摘要: __LINE__ 当前语句所在的行号, 以10进制整数标注.__FILE__ 当前源文件的文件名, 以字符串常量标注.__DATE__ 程序被编译的日期, 以”Mmm dd yyyy”格式的字符串标注.__TIME__ 程序被编译的时间, 以”hh:mm:ss”格式的字符串标注, 该时间由asctime返回.__STDC__ 如果当前编译器符合ISO标准, 那么该宏的值为1__STDC_VERSION__ 如果当前编译器符合C89, 那么它被定义为199409L, 如果符合C99, 那么被定义为199901L.__STDC_HOSTED__如果当前系统是”本地系统(hosted)”, 那么它被 阅读全文
posted @ 2012-11-02 16:56 c_cloud 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标准头文件都有类似以下的结构?#ifndef __INCvxWorksh#define __INCvxWorksh#if... 阅读全文
posted @ 2012-10-26 11:45 c_cloud 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 好的工具并不能保证好的设计,但它能在正确完成设计工作时,大大减轻你的劳务数字电路具有模拟特性知道何时要考虑,以及何时不考虑数字设计的模拟特性要随时做好你的设计文档,以方便自己和他人对设计的理解用信号名称来理顺和联系作用层次的关系,并逐层逐块进行逻辑设计懂得使用标准功能构件在系统级进行最小成本的设计(要把你自己的工程劳务也包括进成本中去)状态机设计类似于程序设计,按程序的步骤进行使用可编程逻辑来简化设计,减少成本,也适用于后期阶段的修改避免异步设计,找到一种比较好的方法来实现同步设计如果某些异步接口是不可避免的,要慎重而精心地设计不同子系统与外界系统之间的异步接口,并提供可靠地同步电路及早解决一 阅读全文
posted @ 2012-07-30 13:42 c_cloud 阅读(158) 评论(0) 推荐(0) 编辑