其他
tietao
一切,都会云淡风轻的过去。
只为,心中不变的追求。
展开
-
什么是抽象《Code Complete 2》
抽象是一种能让你在关注某一概念的同时可以放心地忽略其中一些细节的能力——在不同的层次处理不同的细节。任何时候当你在对一个聚合物品(aggregate)工作时,你就是在用抽象了。当你把一个东西称为“房子”而不是由玻璃、木材和钉子构成的组合体时,你就在用抽象了。当你把一组房屋称为“城镇”时,你还是在使用抽象。以复杂度的观点看,抽象的主要好处就在于它使你能忽略无关的细节。大多数现实世界的物体都已转载 2012-11-14 09:43:48 · 1155 阅读 · 0 评论 -
STM8L编程问题之segment .text size overflow
#error clnk Debug\solar_charger.lkf:1 segment .text size overflow,提示代码段溢出,此时因为使用STM8L的固件库,造成一些不必要的函数被编译,可以尝试注释掉一些不必要的函数;如果已经没有可以注释的函数,可以尝试在project setting中,选择代码优化,压缩代码。 遇到最多的莫过于使用库的时候,提示代码超过内存范围。原创 2013-06-20 19:05:59 · 13725 阅读 · 1 评论 -
关于Matlab调用C函数的问题
在进行算法验证的时候,Matlab无疑是一把利器,如果将用C写的代码,在用Matlab实现一遍,确实很浪费时间。当对于Matlab不是特别熟悉的时候,尤其麻烦。关于Matlab调用C的方式,已经固定了,介绍也很多。但是有一个地方,还没有见到有很多介绍。如何在C中方便地使用Matlab传递过来的变量? 由于Matlab中常使用double型变量,而C中最常使用的是int型变量,当原创 2013-06-20 19:07:23 · 2831 阅读 · 0 评论 -
工作中关于合作一些的思考
关于在完成项目的过程中,很多时候需要团队内部或者团队间的合作。合作分三类,代码级合作,设计级合作,项目级合作。首先关于代码级合作,其次关于设计级合作,最后关于项目级合作。 代码级合作:根据《人月神话》的推论,当一个项目进行到后期,如果加入新人不仅可能无法缩减开发时间,还有可能增加开发时间。后来网上根据这个也有很多讨论,说这个推论有适用的前提。当一原创 2013-09-23 21:28:43 · 2897 阅读 · 5 评论 -
MCU上使用系统的理解
在系统中,有多线程或者多任务的概念,所以对于单一线程的操作,更倾向于使用同步方式操作,因为其他操作,可以放到其他线程或者任务中完成,而对于MCU裸机程序而言,由于没有操作系统提供的多线程并发模式,如果要实现多个任务间的并行操作,只有在完成单一功能时,使用异步操作(使用中断)。这样,可以同时处理多个功能,提高程序的性能。但是,相应而言,异步方式编程,考原创 2013-11-28 22:49:30 · 3978 阅读 · 0 评论 -
样板测试,电源很重要
最近一个样板在给芯片下载程序时出现问题,首先想到的是硬件的原因,其次是下载过程的原因,最后是芯片本身的原因(芯片可能被锁了)。首先使用同事M那里的工具进行下载,发现下载出现异常。提示Fail to get CPU status after retries。新板子最容易出现的是焊接问题,于是请硬件工程师将芯片重新修复。之后,下载发现现象依然。硬件工程师提示,由原创 2013-11-28 22:46:45 · 1118 阅读 · 0 评论 -
《嵌入式系统开发之道》总结
最近算是急促的把《嵌入式系统开发之道》给看完了,因为出差的缘故,顺便在出差的路上将《质量无泪》看完了。发现质量的概念是在1970年代就已经广为制造业届推广。而那个时候软件的编写还在很基础的层面上,C语言可能还是刚刚出现。汇编还大行其道。Microsoft应该还在1MB的芯片上宣扬其程序的优秀。面向对象的概念可能还没有出现。所以现在的软件工程中应该借鉴了当时很多制造业届的质量管控的概念,只是更多原创 2013-11-28 23:14:43 · 5720 阅读 · 0 评论 -
从实践理解设计
因为参与公司的一个项目对于一个产品的开发过程中的流程有了一个进一步的理解。对于电子产品设计的内容,包含软件设计,硬件设计,模具设计,各种元件的选择。设计是从一个产品的角度出发,进行各个部分分块后局部设计。对于设计这一段的理解如下:关于设计:从测试的角度做设计;从生产的角度做设计;从维护的角度做设计;从使用的角度做设计;设计是对各种需要元素原创 2013-12-22 22:41:04 · 1006 阅读 · 0 评论 -
关于MCU使用操作系统的一点看法(续)
因为在连接时,全局变量和局部静态变量都是在data区,所以在这里给放一起讨论了。在原文中自己的表述犯了一个错误,就是初始化的全局变量或者局部静态变量,是占用生成的可执行文件大小。而未初始化的全局变量和局部静态变量,不占实际文件大小,但是在执行时是分配RAM空间的。这一点,是原来写博文的时候,弄混淆的一点。所以对于RAM而言,局部静态变量和全局变量消耗是一样的。所以,就像你在回复中说的,预约了全局变原创 2013-12-23 21:46:08 · 4375 阅读 · 0 评论 -
为什么需要物联网和大数据?
一批产品,装配过程中,发现装配很慢。一开始想办法提高装配速度,但是发现究其原因是元件间的尺寸造成装配人员,装配过程消耗时间。由于,外壳,连接线,电池,以及电路板之间尺寸的配合有问题,使他们不能很顺利的完成一次装配。单独来看,每一个元件都是完好的,都是没有问题的。但问题就是它们之间,不能彼此配合很好。问题本源在于,设计时没有考虑到彼此间的协作。此时要求装配人员提高装配速度,只能是扬汤止沸,而不是釜底原创 2013-12-25 23:04:01 · 3011 阅读 · 0 评论 -
开发中的新理解——成长在2013
开发中的新理解——成长在2013今年在公司里,收获很多。从很多方面,都一个新的认识。因为参与公司的几个项目。有的是维护原有代码,有的是从需求开始,从0做起,有的做了一半,因为调整不做了,有的刚开了个头,因为其他项目需要暂停了。每一个项目,做的程度都不一样。但是每一个项目,都让自己对于完成一个项目,有了更深的认识。也慢慢在改变自己以前那种学校式的研发状态。由一开始想从每一个项目中学习新技术,原创 2013-12-28 10:15:38 · 3702 阅读 · 2 评论 -
否定自己
很多时候,我们发现原有的知识或者观点,很有可能错误。尤其是当徘徊于错误与正确之间的时候。如果这个时候我们还认为自己的观点是正确的,那么我们寻找证明正确的时候,就会选择性的屏蔽了有可能证明其错误的材料。于是当我们寻找了一段时间后发现我们看到的都是证明其正确的材料。因为我们在选择材料的时候,无意识的选择了一条路,而这条路上有的都是证明我们已有观点正确的材料。那么我们就会强化已有的观点,而这原创 2014-03-11 23:45:46 · 1058 阅读 · 0 评论 -
关于串口复用造成的意外及总结
前两天测试人员发现,在测试运行的产品中,有两个运行不正常。于是对出现异常的产品进行了重点检测。开始怀疑是产品中的无线模块信号不好,造成一段时间后就连接断掉。于是使用了一个测试好用的无线模块,测试发现测试产品运行效果和原来一样,还是比较异常。而且观察产品的数据通信指示灯,感觉闪灯很不正常。没有数据交互的情况下,485通讯指示灯经常闪烁。而且无线模块通讯指示灯反而长时间没有点亮。为了验原创 2014-03-15 10:04:17 · 4669 阅读 · 0 评论 -
毕业后的文理之思
引言:某日,与同学聊天,分享疑惑与理解,录于此,共勉之。A今天跟一个当总经理的朋友,去旁听一个会。本来说,让我介绍技术能在实际中上做些什么事情。我听了大半天,突然感觉公司上的事情,技术只是一个辅助吧。B嗯,这个倒是。技术都是他们在定了我们要做什么之后才会出现的。公司上的事情,我们一开始可能只是,最后才会出现的。我们做什么,只能由他们决定。A嗯,我有这个感觉。但是,科学技术是第一原创 2014-04-01 07:58:20 · 1325 阅读 · 0 评论 -
一个串口接收数据的状态机
关于串口接收转义字符状态机:S1——S2——S3——S4——S5S1空闲状态,收到第一个开始前导符,跳转到S2;S2收到第一个开始前导符状态,收到开始第二个前导符,跳到S3;收到其他数据,跳转到S1;S3收到第二个开始前导符状态,收到其他数据进行接收,跳转到S3;收到第一个结束前导符,跳转到S4;S4收到第一个结束符状态,收到其他数据进行接收,跳转到S3;收到第二个结束符,跳转原创 2013-06-20 19:08:22 · 8890 阅读 · 0 评论 -
关于SPI的小问题
以前常直接调用接口函数来使用,但这一次需要自己实现这些硬件的基本程序,发现对于SPI还是没有真正理解。做的过程中遇到了一些小问题,思考并记录下来。 SPI是由发送驱动时钟线工作的,在发送的同时,有数据移位进入接收寄存器,至少在STM8和STM32上是这样。所以无论是进行读或写,实际上硬件都操作了硬件中的发送和接收寄存器。 所以这中间,对于底层SPI而言只需要一个函数就可以实现数原创 2013-06-20 19:06:37 · 1437 阅读 · 0 评论 -
再探Connection Reset By Peer
对于Connectioin Reset的问题,困扰了好长时间,当逐步排除客户端出错的可能后,怀疑是服务端出现了问题。最终由tcpdump和windump一起监视数据,发现了以前一直困扰着的connection reset问题的根本原因。描述见:而造成这个问题的原因是,当客户端直接退出而没有发送FIN,同时很快再次连接时,能够重新申请到新的连接,而旧的连接已经不存在。这个时候服务原创 2013-05-11 08:14:37 · 1623 阅读 · 0 评论 -
CC2e:《代码大全(第2版)》集萃
转自:http://beifenggo.iteye.com/blog/1017133《代码大全(第 2 版)》是一本写得很有意思的书,既有生动的比喻,偶尔也有夸张的表达,另外作者还时不时开开玩笑,读起来一点也不枯燥。以下是从中摘录的一些有趣的话。这个版本略有删节,等书出版之后,我会扩充这里的内容。首先为人编写程序,其次才是为机器。傻子都会写让计算机理解的代码;而转载 2012-12-03 22:42:19 · 965 阅读 · 0 评论 -
GPRS常识整理
GSM07.10:关于多路复用的协议GSM07.07:GSM的GPRS AT指令集协议GSM07.05:GSM的短信息和广播服务协议1心跳功能1.1 防止掉线。运营商为了防止终端挂在网上不传数据,在一定时间(一般为2分钟)内检测到有终端没有传输数据时,将会把终端踢下线。1.2实现远程监控,可以知道终端的在线情况。2、在线时间设置目前应用中,一般使用40-原创 2012-12-23 10:45:18 · 9054 阅读 · 0 评论 -
软件开发与系统(CC2E)
最近在CC2E中看到,在软件开发中更多的是一种迭代式的开发。一开始我们没有合适的解决方案,但是我们会找一个解决方案。即使有缺陷,但是随着方案的执行,我们会看到方案中存在的优缺点,自己也会有根深的体会与经验。此时反而可以再重头来尝试问题的解决,这时所提出的方案,一定会比前一个更好,但是它也可能并不是足够好,但是它有很大可能比第一个好。在这个迭代中,我们会逐步提高我们自身的知识,同时会找到更好的解决方原创 2012-12-03 22:41:00 · 940 阅读 · 0 评论 -
Connection Reset By peer与Gprs
关于Connection Reset By peer在圣诞节的前一天,遇到了Reset,发现只要一有行动,就无情地碰到Reset后来实在没有办法,请来了Dump(tcpdump),先布置好环境,当Dump出场时,就得到了下边的记录。10:47:01.213878 IP 10.88.122.121.40928 > 222.44.121.49.9201: Flags [S],原创 2012-12-27 23:16:53 · 2010 阅读 · 0 评论 -
电子信息工程四年学习之思
毕业后,回顾四年学习历程发现,当时以为的明白,到现在都是那时的不明白。或许是自己的经历(参加比赛比较多)导致了现在的反思。但是,回顾那个时候的课程设置,却都是合理的,并没有什么不足,但是又为什么会现在才意识到它们之间的联系。最终的结果是,学了很多门课,很多门孤立的课。不知道它们之间有什么联系。那个时候,又有着要多做比赛,增加实践经验的想法。于是很多时间,放在实验室。真正对于原创 2013-01-13 00:22:02 · 13195 阅读 · 17 评论 -
关于协议组帧的想法
之前在组帧时,是定义一个帧结构的结构体,然后在各个函数中,依次填充各个帧结构体中的元素(即帧中的各个field字段),填充完毕后,调用一个函数将帧结构体中的元素的值再依次写入帧缓冲区的内存中。最近再次写一个协议的组帧函数,发现这样会造成多余的内存拷贝和内存访问,如果一开始就将数据写入帧缓冲区的内存中这样也避免了定义一个帧结构体的,省了一些内存。一举多得。使用帧结构的原创 2012-11-07 12:56:20 · 3108 阅读 · 2 评论 -
关于三大技术革命的自我理解
我理解的这几个概念:无线网络:无线传感器网络,通过传感器采集物理信息,将物理信息量化为数字信息,通过无线网络传递给互联网。大数据:是一个相对的概念。对于需要分析的对象,获取足够多的信息。数据多是表象,但是不一定就是多,数据丰富是本质。只要对于我们分析的对象,获取到了足够的丰富信息,就是大数据。1、对于智能车比赛,就是获取了车的速度,位置,电压,赛道等信息。2、对于智能机器人,就要多原创 2013-03-10 00:12:20 · 1274 阅读 · 0 评论 -
将要到来的三大技术革命与联系
http://www.csdn.net/article/2013-02-14/2814128 2013大数据 http://www.csdn.net/article/2013-02-15/2814135-bigdata-is-coming 大数据、智能制造和无线网络革命 三大革命 无线网络促进了大数据的到来。 智能创新驱动工业迈入智能制造 关于,无线网络,大数据,智原创 2013-02-28 19:13:18 · 1628 阅读 · 0 评论 -
关于单片机程序初始化硬件参数代码
一个单片机的程序,设置了一些初始化硬件后不会再遇到的参数,然后将这些程序注释掉了,这样对于调试来说固然很好。但是,对于以后的程序与维护,都是一个潜在的隐患。首先,对于以后再次使用的新设备,会出现意想不到的问题。因为偶然拿来一个新的设备,没有经过初始化,这个时候程序的参数都是要配置之后的,对于调试者是个灾难。要分析造成问题的原因,往往也不好分析,因为程序是好用的,硬件是新的。按常理是不应原创 2013-03-24 15:44:59 · 5491 阅读 · 0 评论 -
《大数据时代》之后
现在想想也不记得当时是怎么找到《大数据时代》这本书的,好像是在查找数据库方面的书,看到亚马逊推荐的书里有这本,发现最近才出版的就买一本回来看看。然而这个过程中,其实自己已经得到了大数据带来的影响。我的浏览记录被亚马逊监视着,根据这些记录它们寻找和我浏览记录相关(同类)的书籍,预测我会看它们的可能性比较大,于是在亚马逊给我的推荐书目里,就多了一本大数据时代。而我买了这本书,亚马逊就会原创 2013-03-24 15:48:48 · 2557 阅读 · 0 评论 -
Keil的常见编译警告
1、warning: #767-D: conversion from pointer to smaller integer解释:将指针转换为较小的整数影响:可能造成的影响:容易引起数据截断,造成不必要的数据丢失。如果出现bug,很难调试。改正:尽量避免这种转换,避免不了要确定转换的数据不会引起数据丢失。2、 warning: #177-D原创 2013-03-24 15:42:36 · 30587 阅读 · 0 评论 -
调试中的团队合作反思
周五查看一段代码,发现里边有一个计算式写作:p = 1 这里边num,p都是无符号字符型,如果num是8的倍数的时候,会怎么样呢?由于模除取余,得到的将是0 - 1,这会导致移位出错的(分析见注1)。这段代码,将会导致当num为8的倍数时,出错。准备修改这段代码,于是将这段代码的问题,告诉了原来实现这段代码的同事。同事看后认为没有错,因为这段代码已经跑很长时原创 2013-03-24 15:47:34 · 1874 阅读 · 0 评论 -
硬件改版引起的I2C异常
最近公司有一款新版硬件,在测试时发现原有的I2C通信测试程序运行失败,从I2C从设备RX8025中无法读取到数据。使用示波器的时候,也无法在时钟线SCL上看到时钟信号。但是在测试数据线SDA的时候,偶尔能看到一些数据。如果使用示波器表笔点在测试的信号线上,有时能读到正确的数据;如果不这样做,几乎看不到正确的数据。开始怀疑是否是因为测试程序本身可靠性有问题,因为在一段时间测试后发现,这种现象随机性比原创 2014-05-05 23:48:29 · 5079 阅读 · 0 评论