嵌入式学习
文章平均质量分 87
liusandian
纯技术工科男,擅长归纳各个工学领域的知识
展开
-
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少,平常在项目中见到的CRC的代码多数都是那种效率非常低下的实现方式。其实,在网上有一篇介绍CRC 算法的非常好的文章,作者是Ross Williams,题目叫:转载 2016-06-13 10:44:30 · 556 阅读 · 0 评论 -
16道嵌入式C语言面试题
预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值转载 2016-08-12 09:31:29 · 325 阅读 · 0 评论 -
句柄与指针的区别与联系
原帖地址(http://mahanyang94.blog.163.com/blog/static/25498051200911176212455/)句柄其实就是指针,但是他和指针最大的不同是:给你一个指针,你可以通过这个指针做任何事情,也许是好事,也许是通过这个指针破坏内存,干一些捣乱的事情。这个我想大家都会碰到过,因为乱用指针导致程序崩溃 句柄就没有这个缺点,通过句柄,你只能干一些转载 2016-08-12 10:30:54 · 714 阅读 · 0 评论 -
华为嵌入式C面试题
(1)什么是预编译,何时需要预编译:答案:1、总是使用不经常改动的大型代码体。2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。(2)char * const p char const *p const char *p上述三个有什么区别?答案:char * const p; /转载 2016-08-12 10:35:04 · 984 阅读 · 0 评论 -
进程和线程的关系与区别
1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系转载 2016-08-12 10:46:56 · 202 阅读 · 0 评论 -
进程死锁的危害、导致原因和解决方法
在多个程序同时执行的情况下,多个进程可能出现竞争一定数量的资源。若某个进程申请资源,且此时资源不可用,那么该进行将进入等待状态。如果所申请的资源被其他等待进程占有,那么该等待进程有可能永远处于等待状态而无法改变该状态。——这种情况即为死锁。 或许你认为进程死锁就死锁呗,那又能怎么样?那么先说出它的危害吧! 当出现死锁时,进程永远不能完成,转载 2016-08-12 10:49:16 · 1323 阅读 · 0 评论 -
C语言中static详细分析
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之。 C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果转载 2016-08-12 11:09:16 · 245 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2016-08-12 11:22:38 · 186 阅读 · 0 评论 -
给嵌入式工程师的一封信
最近经常有用人单位给我打来电话,问我这有没有嵌入式Linux方面的开发人员,他们说他们单位急需要懂得在嵌入式linux环境下的软件开发人员,我回答说,现在每年毕业的大学生那么多,还招不到合适的软件开发人员吗?他跟我说,毕业大学生虽然多,但大部分都能力不够,不能达到他们的工作的要求。 该公司HR的一句话说出来我们现在的大学教学和大学生就业的现状:一方面每年那么多大学生毕业找不到合适的工作,转载 2016-08-13 10:48:35 · 912 阅读 · 0 评论 -
extern 关键字用法
随笔- 65 文章- 0 评论- 72 博客园 首页 新随笔 新文章 联系 管理 C/C++中extern关键字详解1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它转载 2016-08-11 23:09:27 · 266 阅读 · 0 评论 -
详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;vo转载 2016-08-11 22:54:11 · 175 阅读 · 0 评论 -
CRC校验算法讲解
CRC算法是在通讯领域广泛采用的校验算法。原理我就不说了,这里说一下简单的程序实现。以下均采用CRC多项式为0x1021即:g(x) = x16+x12+x5+x0;CRC的基本原理就不说了,那个搜一下就有了。 最基本的算法应该是按位计算了,这个方法可以适用于所有长度的数据校验,最为灵活,但由于是按位计算,其效率并不是最优,只适用于对速度不敏感的场合。基本的算法如下:uns转载 2016-06-14 09:37:51 · 1584 阅读 · 0 评论 -
嵌入式编程之模块化编程
原文出处:http://blog.csdn.net/wanruoqingkong/article/details/24286625当你在一个项目小组做一个相对较复杂的工程时,意味着你不再独自单干。你需要和你的小组成员分工合作,一起完成项目,这就要求小组成员各自负责一部分工程。比如你可能只是负责通讯或者显示这一块。这个时候,你就应该将自己的这一块程序写成一个模块,单独调试,留出接口供其它模块转载 2016-06-14 16:42:37 · 2351 阅读 · 0 评论 -
嵌入式开发调试学习与思考
截至今天,自己负责的一个项目算是告一段落,前前后后5个多月时间。该项目是对公司设计的基于powerpc的处理器进行FPGA仿真阶段的软件验证,以及bootloader和kernel移植,以便芯片进行投产,主要完成的工作如下:(1)调试环境的搭建(2)处理器核功能验证,如异常 cache TLB等(3)bootloader以及kernel中处理器基本外设驱动调试,如USB SPI I转载 2016-07-24 12:51:36 · 486 阅读 · 0 评论 -
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导前言CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。可是,我认识的嵌入式程序员中能真正掌握CRC算法的人却很少,平常在项目中见到的CRC的代码多数都是那种效率非常低下的实现方式。其实,在网上有一篇介绍CRC 算转载 2016-08-16 15:30:58 · 634 阅读 · 0 评论 -
CRC校验详解
循环冗余校验码(CRC)的基本原理是:在K位信息;编辑本段;几个基本概念;1、多项式与二进制数码;多项式和二进制数有直接对应关系:x的最高幂次对应;多项式包括生成多项式G(x)和信息多项式C(x);如生成多项式为G(x)=x^4+x^3+x+1,;2、生成多项式;是接受方和发送方的一个约定,也就是一个二进制数,;在发送方,利用生成多项式对信息多项式做模2除生循环冗余校验码(CR转载 2016-08-16 16:15:26 · 1902 阅读 · 0 评论 -
嵌入式通讯协议设计
公司里做项目,嵌入式系统大大小小,到处都是。因为都是一个系统里的,所以都需要通讯,既然通讯就涉及到协议问题。谈及协议,很多工程师觉得协议的设计相对简单,主要是报文的设计。大多数时候,协议的应用场景简单,没有复杂的交互。这么做的确也是没什么太大的问题。然而,就是这么简单的场景,仍有一些协议会在实际中发生意想不到的问题。归根结蒂,还是没有把握协议涉及的规律。下面我们简单的聊聊协议设转载 2016-07-21 22:35:20 · 368 阅读 · 0 评论 -
纹理映射技术
第六集 纹理映射技术 为使建立的3D模型更接近现实世界中的物体, 简单的颜色变换已经无能为力, 这时我们就需要纹理映射技术了. 这一集我们讲解基础的纹理映射技术的数学模型, 对于在粒子系统使用的过程纹理技术在高级部分讲解. 6.1 二维纹理映射 6.1.1 纹理映射的简单建模 二维纹理映射就是从二维纹理平面转载 2016-08-17 15:48:17 · 4154 阅读 · 0 评论 -
D/A与A/D转换器
!D/A转换器一、D/A转换器的基本原理及分类T型电阻网络D/A转换器 :二:输出电压与数字量的对应关系 三:D/A转换器的主要性能指标1、分辨率分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。分辨率与输入数字量的位数有确定转载 2016-09-09 16:33:13 · 2781 阅读 · 0 评论 -
linux makefile教程
最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记,看完发现这篇文章和《Linux环境下的C编程指南》的makefile一章所讲述的惊人的相似,只是这篇文章从一个实例切入,在有些地方比较好理解转载 2016-08-15 10:57:17 · 468 阅读 · 0 评论