随笔分类 - Embedded
技术让梦想更伟大
摘要:ADS是一款强大的软件,应用程序不能直接操作硬件,而ADS程序是无操作系统支持的,可以直接操作硬件,下面来介绍一下ADS的基本使用方法。编辑本段基本简介: ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。ADS 是全套的实时开发软件工具,包编译器生成的代码密度和执行速度优异。可快速低价地创建ARM 结构应用。 编辑本段包括种类 ADS包括三种调试器: 1.AXD(ARM eXtended Debugger):ARM扩展调试器 2.armsd(ARM Symbolic Debugger):ARM ...
阅读全文
摘要:RealView MDK可以对各种嵌入式处理器的软件开发工具。这么高端,着实很吸引我,ADS12还不知道怎么搞,居然还有这么高端的,但是还是得了解一下唉。洗这个自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20% 。 代码密度:比ADS 1.2编译的代码尺寸小10%; 代码性能:比ADS 1.2编译的代码性能高20%。 这样说来的话,随着realview mdk中文版在中国的使用,那么realview mdk在不久的将来将会取代ADS等软件,值得期待...
阅读全文
摘要:1.首先要准确的弄清楚指针的含义,指针就是地址。 这个比较容易,前面也有提到,就不多解释了。2.什么叫“指向”? 地址就意味着指向,因为通过地址能找到具体该地址的对象。但是应该注意,并不是任何类型数据的地址都可以存放在同一个指针变量中的,只有与指针变量的基类型相同的数据的地址才能存在相应的指针变量中。例如:int a,*p; //p是int*型的指针变量,基类型是int型float b;p=&a; //a是int型,合法p=&b; //b是float型,类型不匹配3.要深入掌握在对数组的操作中正确使用指针一位数组名代表数组首元素的地址,如:int *p...
阅读全文
摘要:指针和函数的关系 可以把一个指针声明成为一个指向函数的指针。intfun1(char*,int);int(*pfun1)(char*,int);pfun1=fun1;........inta=(*pfun1)("abcdefg",7);//通过函数指针调用函数。可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为实参。 例十三:intfun(char*);inta;charstr[]="abcdefghijklmn";a=fun(str);......intfun(char*s){intnum=0;for(inti=0;i{num+=*s;
阅读全文
摘要:C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象。与之相反,指针用来存储单个内存地址。数组和指针不是同一种结构因此不可以互相转换。而数组变量指向了数组的第一个元素的内存地址。一个数组变量是一个常量。即使指针变量指向同样的地址或者一个不同的数组,也不能把指针赋值给数组变量。也不可以将一个数组变量赋值给另一个数组。然而,可以把一个数组变量赋值给指针,这一点似乎让人感到费解。把数组变量赋值给指针时,实际上是把指向数组第一个元素的地址赋给指针。12345678int myarray[4] = {1,2,3,0};int *ptr = myarray;printf("*ptr=%
阅读全文
摘要:就像数组一样,指向结构体的指针存储了结构体第一个元素的内存地址。与数组指针一样,结构体的指针必须声明和结构体类型保持一致,或者声明为void类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 struct person { int age; char *name; }; struct
阅读全文
摘要:一个指针可以被声明为void类型,比如void *x。一个指针可以被赋值为NULL。一个指针变量声明之后但没有被赋值,叫做未初始化指针。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 int *uninit; // int指针
阅读全文
摘要:指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。 根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个
阅读全文
摘要:从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量。 另一个角度,从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。 静态存储方式:是指在程序运行期间分配固定的存储空间的方式。 动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。 用户存储空间可以分为三个部分: 1) 程序区; 2) 静态存储区; 3) 动态存储区; 全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放;动态存储区存放以下数据:1) 函数形式参数;2) 自动变量(未加 sta
阅读全文
摘要:一、c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内
阅读全文
摘要:1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用"::"局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义过的全局变量?答:extern可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的
阅读全文
摘要:函数,我之前也提到过一点点内容。其实函数是很好理解的,但是写起来又十分麻烦。 一、 函数引入 我们知道,C源程序是由函数组成的。请看下面的简单函数例子 #include <stdio.h> main() { printf(“Hello World!”); } 在这个C程序中,main函数是一切程序的
阅读全文
摘要:C语言位运算符:与、或、异或、取反、左移和右移 位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表:运算符含义描述 &按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 |按位或两个相应的二进制位中只要有一个为1,该位的结果值为1 ^按位异或若参加运算的两个二进制位值相同则为0,否则为1 ~取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0 >右移将一个数的各二进制位右移N位
阅读全文
摘要:一、CGI概述 CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl、Fortran、Pascal、C语言等。但是用C语言编写的CGI程序具有执行速度快、安全性高(因为C语言程序是编译执行且不可被修改)等特点。 CGI接..
阅读全文
摘要:我们在学习C语言的32个关键字时,大家都不太注意volatile这个关键字,volatile是一个类型修饰符。volatile的中文意思是“易变的”。那么在程序中我们在什么情况下才使用他呢?我们在分析内核时经常看到这个关键字的使用。举例如下:view plaincopy to clipboardprint?structtask_struct{volatilelongstate;/*-1unrunnable,0runnable,>0stopped*/void*stack;atomic_tusage;unsignedintflags;/*perprocessflags,definedbelo
阅读全文
摘要:现在学嵌入式的话,最主要是要把C语言熟悉,比如指针,链表,共用体,结构体等,还是得听老师的话。。 在学习单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,呵呵我们这里就不讨论这个了。我们是不是在写程序的时候错误很多就算编译通过了也达不到我们预期的结果,完了自己是不是也很难找到错在哪儿吧?我绝得语言之所以能称之为语言,它肯定是一种工具一种相互交流相互通信相互传达之间的意图的工具,作为语言那肯定得有自己的语法,要想相互交流肯定得先学好它的语法吧(比如像表达式,函数,循环,指针)我称之为C语言的语法。C语言虽然很强大但是他也有不少陷...
阅读全文
摘要:Linux系统对你的硬件要求不是很高,你可以参照你的系统上面的参数进行对照,Linux系统的初衷就是以最低的配置完成最高的性能,随意,现在的计算机都可以安装这个系统的,你不要顾虑多了,但是分区你不用系统自己给你的分区,那样,,你有很多东西就会在安装系统的时候掉了,但是如果你的计算机不是用来全部安装L
阅读全文
摘要:一切皆Socket! 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?3、socket的基本操作3.1、socket()函数3.2、bind()函数3.3、listen()、connect()函数3.4、accept()函数3.5、read()、write(...
阅读全文
摘要:1. OSI网络分层参考模型 网络协议设计者不应当设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议。这样做使得每个协议的设计、分析、时限和测试比较容易。协议划分的一个主要原则是确保目标系统有效且效率高。为了提高效率,每个协议只应该注意没有被其他协议处理过的那部分通信问题;为了主协议的实现更加有效,协议之间应该能够共享特定的数据结构;同时这些协议的组合应该能处理所有可能的硬件错误以及其它异常情况。为了保证这些协议工作的协同性,应当将协议设计和开发成完整的、协作的协议系列(即协议族),而不是孤立地开发每个协议。 在网..
阅读全文
摘要:如何避免win7自动创建200M隐藏分区1安装win7到选择安装到哪个分区的时候,不能选择 unallocated diskspace ,也不能选 delete 已有的分区(例如C盘)安全的做法是:格式化(format)已有的分区再安装,不喜欢格式化的童鞋可以选一个已经格过的分区安装。2如何跳过200mb 主分区的微软系统数据保护锁呢?答案其实很简单,就是在安装的时候不要让W7系统光盘为你的硬盘进行分区而应该是安装W7系统前事先把硬盘分区做好后再安装W7系统。特别提示:3安装时建议在百度中搜一下“如何删除win7 中200M隐藏分区”关键字:强烈建议童鞋们不要将200MB的隐藏分区安装到你的硬
阅读全文