嵌入式积累
Suagr
这个作者很懒,什么都没留下…
展开
-
学写嵌入式系统(一) 环境搭建
郁闷的一天,参考《一步步写嵌入式操作系统》这本书来实现第一节环境的搭建,可事实并不是一帆风顺。早上安装Cygwin,因为校园网的问题,安了有些时间。安装完后开始配置交叉编译环境armgcc,然后按照书上一步一步做,可是爆出一大堆关于汇编的错误,网上搜了半天没找出原因。最终值得放弃这个蛋疼的cygwin,用虚拟机的Linux。然后又是一晚上,期间遇到各种问题,最终排除万难,一一解决,一天总算有点成果原创 2011-12-10 23:38:28 · 6233 阅读 · 6 评论 -
C语言内存地址基础
从计算机内存的角度思考C语言中的一切东东,是挺有帮助的。我们可以把计算机内存想象成一个字节数组,内存中每一个地址表示 1 字节。比方说我们的电脑有 4K 内存,那这个内存数组将会有 4096 个元素。当我们谈论一个存储地址的指针时,就当相于我们在谈论一个存储着该内存数组某个元素索引的指针。逆向引用某个指针,将会得到数组中该索引所指向的值。这一切当然都是谎言。操作系统对内存的管理要远比这复杂。内存不一转载 2015-07-17 16:37:17 · 2413 阅读 · 1 评论 -
C/C++头文件一览
#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include转载 2015-07-17 10:37:34 · 892 阅读 · 0 评论 -
C语言程序的内存如何布局
一:C语言程序的存储区域 由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。 C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域: 1.转载 2015-07-17 11:16:03 · 808 阅读 · 0 评论 -
细说单片机晶振电路中22pf或30pf电容的作用
刚学单片机的学长告诉我单片机的晶振电路中就是用22pf或30pf的电容就行,听人劝吃饱饭吧,照着焊电路一切ok,从没想过为什么,知其所以然而不知其为什么所以然,真是悲哀,最近状态好像一直不太好,也难以说清楚为什么,前几天跟着老师去别的实验室听课,其实也就是听一听老师和师傅给别的实验室的同学讲嵌入式的种种,还有就是那天师傅单独和谈了挺长时间,我从心底感谢他们,他们让我懂得反思,调整,我对自己持有怎么的转载 2015-07-16 21:30:54 · 15166 阅读 · 2 评论 -
Keil优化代码大小方法
如图 1,未进行任何优化时,keil编译生成的文件大小为:9668字节。 第一步:project >> Option for Target “**” 打开如图 2界面。选择“target”,勾选上“Use MicroLIB”再编译。分析:microLIB是缺省的C库,而且microLIB进行了高度优化。如果不勾选“Use MicroLIB”,keil会连接标准C库。所以勾选“Use Mic转载 2015-07-17 10:27:36 · 24319 阅读 · 1 评论 -
KEIL中为自己的关键字着色
KEIL中有个功能,可以为自定义的关键字着色,这样看起来就比较明显,不然就是默认黑色,看着很不爽。比如:typedef unsigned char u8我们为unsigned char 类型定义了别名,然后如果想让它像C语言默认关键字那样显示颜色的话,我们可以如下设置。第一步:第二步:这样自己的关键字也可以显示颜色了,看起来就比较舒服了。原创 2012-12-17 22:47:34 · 11448 阅读 · 0 评论 -
SDRAM工作原理
SDRAM的工作原理 SDRAM之所以成为DRARM就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。那么要隔多长时间重复一次刷新,目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。这样刷新速度就是:行数量/64ms。我们在看内存规格时,经常会看到4096 Refresh C转载 2012-12-18 17:08:29 · 1155 阅读 · 0 评论 -
递归求解字符串长度
今天看了个有意思的程序,用递归就能求解字符串长度。然后自己敲敲代码试试看。#include #include #include #define MAXSIZE 50int mystrlen(const char *strDest){ assert(NULL != strDest); //assert宏入口检测 if('\0' == *strDest)原创 2012-12-28 21:29:59 · 2703 阅读 · 0 评论 -
指针,其实很危险
我们知道,指针是指向一个地址的。而指针的类型则表明了指针指向内容的大小,即包含字节数,这在对于指针的自增和自减中体现的很明确。比如下面一段代码,我们分别定义了3个不同类型的指针,指向相同的地址,然后赋予不同的值。这样一下我们就明了了。//解释代码char *p_char;short *p_short;long *p_long;p_char = (char*)0x100原创 2011-12-26 10:37:27 · 1713 阅读 · 0 评论 -
关于变量类型与代码效率
最近又看到一本好书《删繁就简——单片机入门到精通》,里面讲的很多都是我不知道的或者没有注意的。单片机处理与它等位宽的数据时是最快的。让8位单片机和32位单片机去处理一个32位的数据自然是32位的单片机快。另外在文中,还给出了一个例子,关于数据的复制,有两段代码。一个是没有经过优化的代码,另一个是考虑到不同处理器不同位宽的代码。//代码一:void Copy_TestFunc(char原创 2011-12-24 10:52:18 · 1187 阅读 · 2 评论 -
关于int
在进行单片机编程时,我们经常用Int定义变量。以前学C语言时,我知道int它表示的位数跟具体的硬件结构有关。不过看了一本书中“慎用int”这节后,我对int又有了更一步的认识。原来C语言并没有进一步明确不同硬件平台下int位宽由硬件平台决定这一点,从而导致了对int不同的理解。实际上int并没有具体的位宽限制,是由所用硬件平台(MCU)和编译器共同决定位宽为多少,通常情况下编译器会将int的位原创 2011-12-24 11:34:22 · 935 阅读 · 0 评论 -
如何在winhex里面将一个文件转成C语言数组存储
1.winhex打开所选文件2.选中要选择的第一个数据,点击右键,选择——选块开始(alt+1)3.选中要选择的最后一个数据,点击右键,选择——选块结束(alt+2)4.左键点击编辑->全部复制-->C源码(此时已把C数组文件粘贴到了剪贴板)5.将文本复制到一个文件,文本会以数组形式展现。原创 2012-06-25 20:32:34 · 3941 阅读 · 1 评论 -
嵌入式必知的10个基本问题
这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60转载 2012-11-06 10:37:25 · 1895 阅读 · 0 评论 -
嵌入式C面试题后的玄机
1、 int a=2,b=11,c=a+b++/a++; 则c值为多少?【考点】编码规范。表面上考察你对运算符优先级的掌握程度,但实际上优先级这些玩意很难死记硬背得住?大家的疑惑不就是运算符的结合顺序么?那么如何去避免呢?c=a+((b++)/(a++))不就行了么,其实问题背后考察的是你的编码规范,如何写清晰易懂的代码,如何在一个团队中让自己的代码狠容易毫无偏差的让新人看懂~2、 S转载 2012-11-06 09:56:19 · 1132 阅读 · 0 评论 -
笔试经历
前段时间考一个公司就有这个题,无奈只回答出前两点。中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。__interrupt double compute_area (double原创 2012-11-06 10:14:20 · 824 阅读 · 0 评论 -
C语言写CGI 程序简要指南
CGI概述 CGI(Common Gateway Interface: 公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传转载 2015-08-03 14:48:27 · 7066 阅读 · 2 评论