自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yolanda的专栏

探讨技术上遇到的问题,掌握相关的知识。

  • 博客(70)
  • 资源 (2)
  • 收藏
  • 关注

原创 热敏传感器模块开发

这是今年年初时候写的一篇文章,当时刚刚接触IAR、MQX。从一个初学者的视角去探索开发、解决问题。

2013-12-19 08:58:53 2470

原创 第三个项目接近尾声

目前为止,已经基本完成了3个项目的研发。当前的第三个项目,通过专用的SPI FLASH烧写工具烧写文件的话,已经完工。不过,为了预防万一,双保险,还是需要把通过串口工具传文件的问题解决。针对当前所用串口工具的缺陷,让实习生开发了一款上位机串口工具。通过串口发送一定的数据后,等待下位机回复,上位机收到回复后,继续发送接下来的数据。由于通用性较好,结构设计较合理,亮度较高,换个项目只需要修改很少量

2013-08-23 11:36:33 963

原创 最近在搞SPI Flash的驱动,有一个问题迟迟不能解决

背景:主芯片:MK60DN512ZVLQ10 / MK60DN512VLQ10flash芯片:winbond 25Q64FV明媚心(415741500)  11:10:44请教一个spi FLASH的问题。我最近在搞SPI flash的驱动。所有的操作都OK了,只有读操作还有一点问题。问题是这样的:我在读操作的函数里合适的地方设置断点,则每次读到的数据都是正确的。但是如

2013-08-16 11:31:06 5039 4

原创 Kinetis ARM Cortex-M4 的一些常见问题

1、Kinetis ARM Cortex-M4使用哪些仿真器?回答:OSBDM、PE、Jlink2、程序存储区和PC指针的使用:回答:0x00000000处放置的是堆栈起始地址;0x00000004处存放的是PC指针,可以是标号也就是开机上电后,把0x00000000出的内容给SP,把0x00000004处的内容给PC,然后就从那个地址开始执行指令了

2013-07-08 09:09:20 1106

原创 芯片风波

现在,新芯片在板子上终于可以跑起来了!过程如下:旧芯片型号:MK60DN512ZVLQ10新芯片型号:MK60DN512VLQ10在旧芯片板子上,执行了一个“erasememory”的操作后,芯片便被锁上了。通过从网上、从芯片供应商处均未获得有效解决办法。芯片供应商那里只有新芯片。只能在此前提下考虑问题。前些天,主管已经用新芯片试过了,但是程序跑不起来。他试图从芯片供应商那

2013-07-05 17:02:07 1012 1

原创 单元板之间的差异 及 扫描方式的计算

单元板是否能点亮,与以下因素有关:1)高电平点亮,还是低电平点亮2)OE控制亮度,是高电平亮,还是低电平亮3)扫描方式,是16扫,还是8扫,还是其他4)接线是否正确。有多种hub板,接口是否一致今天碰到一块板子,OE是低电平屏幕亮,屏幕LED则是低电平点亮。在行扫描衔接的地方,让OE置高几个周期。这个周期居然能影响到走线??严重怀疑啊。但是现象确实是,周期的长短影响到了哪些

2013-06-19 18:00:23 1014

原创 20130607 近期遇到的SPI问题及分析

杜邦线多了,引起led屏幕的抖动。特别是频率高的时候,几乎不能使用杜邦线。漆包线,连接先对稳定。SPI的时钟线和MOSI线使用杜邦线的时候,使用逻辑分析仪测到正确数据较小。将这两根线用漆包线代替,其他线仍用杜邦线,连接稳定了许多,使用逻辑分析仪采集到的数据,能做到大部分时候是正确的。能够让字符正确显示到LED屏幕上,但是屏幕的抖动比较厉害,因此,不能做研发用途。启用ARM与CPLD

2013-06-07 20:04:10 1881 2

原创 20130527 进度汇报 & CPLD

CPLD朝着低功耗方向发展,而FPGA则向着高性能方向发展。二者的发展理念上有差异,并没有简单的优劣之分。目前,我的LED屏幕上,已经可以有字符的立即显示、左移、右移、上移、下移等多中特效显示,并可以调节特效移动的速度。关于图形部分,算法与字符的一样。代码部分已好,未测试。等待硬件。上周的最后两天,补齐了需求分析和可行性方案。本来,需求文档也是有的,详细设计文档也是有的。只是,老板对于

2013-05-27 16:01:43 649

原创 SPI Flash

今天网上查了相关的资料,又查看了datasheet和I/Odriver 相关的资料,总算把这一块基本搞清楚了。原来对于SPI的了解,是概念性的。目前设计的系统,需要用到SPI Flash,于是今天详细了解了一下。详细的程序,已经可以使用了。

2013-04-03 15:31:00 965 1

转载 SPI接口 介绍

SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的。但正因为没有确切的版本协议,不同家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法直接互连(需要软件进行必要的修改)。虽然SPI接口的内容非常简单,但本文仍将就其中的一些容易忽视的问题进行讨论。SPI ( Serial Peripheral Interface )SP

2013-04-03 15:08:05 1866

原创 软件开发人员需要不断的技术沉淀和总结

两个月来,不断地针对知识点进行学习,并与以往项目中的语言知识、项目知识进行验证和相互加深理解,我对不少知识点的掌握已经比较熟练,并能够灵活运用到实际中。不像原来那样,对很多知识点都知道,但是大部分都是似是而非,掌握得并不牢固,感觉是漂浮在空中,脚没有沾地感觉。目前,在新的工作中,能够将学到的知识灵活应用,触类旁通,真的让我惊奇。在繁忙的工作中,不妨停下匆匆的脚步,喝杯茶,小憩一下,总结一下

2013-03-22 14:07:33 2859

原创 单网卡设置双IP(ubuntu,debian)

# This file describes the network interfaces availableon your system# and how to activate them. For more information, see interfaces(5).#/etc/network/interfaces# The loopback network interface

2013-02-06 18:55:39 5946

原创 自动分割日志

假定test程序已经安装,并在启动选项中配置好,日志文件test.log也已配置好。为了限制log文件大小,并能保存日志,将日志文件设置为2M大小,每天一个版本,保留30个文件。debian下:#在/etc/logrotate.d/下创建文件test,或者在/etc/logrotate.d/rsyslog文件中添加:/var/log/test.log {

2013-02-06 18:10:31 929

原创 vim 常用命令

vi/vim 命令繁多,专门介绍vi的书可以写到四五百页,但本文档主要是介绍常用和实用的一些vi操作。另外,对vi配置文件.vimrc的适当配置可以使vi更易用更强大,所以随本文档也提供一份vi配置的安装说明。0、vi的三种模式三种模式是命令模式(command mode)、输入模式(input mode)、末行模式(last line mode)。命令模式就是在vi打开一个文

2013-01-04 17:19:08 529

原创 c语言单链表的各种操作<未完>

#include#includestruct Node{ int val; Node* next;};Node* Create(){ bool bFlag=true; Node *pHead=NULL; Node *pCur=NULL; Node* pTemp=NULL; int nVal; pHead=(Node*)

2013-01-04 16:06:16 653 2

原创 如何求一个字符串表达式的值?

假定一个字符串表达式是有效的,如何求表达式的值?例如:表达式35+2*3+6/4=42.5暂时把题目写在这里。//假定表达式是有效的float getValue(char* exp);先通过逐个取字符,将各个数字和运算符存入一个字符串数组和字符数组里通过atoi函数转换,将各个字符串转换为整数(或者通过atof将字符串转换为浮点型数)然后,再将各个数字和运算符的结果计算

2013-01-01 16:19:13 1472

原创 将一个地址中的值复制进另一个地址

题目:将地址0x1111中的数值复制到地址0x2222中。解题:char* pSrc=0x1111;* pSrc =35;char* pDes=0x2222;memcpy(pSrc, pDes, 1);上述代码输入后,提示错误:warning:initialization makes pointer from interger without a castw

2012-12-31 17:14:50 1697

原创 常见排序方法(c语言)---冒泡法,选择法

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。/*用选择法对10个数进行排序*/#includevoid main(

2012-12-31 12:18:30 42100 8

原创 20121027 如何解决在android平台上apk的覆盖安装问题

背景:一步步摸索着开发走来,本着能走通就继续往前走的原则,将dlna项目做到了现在,做到了出产品。可是一直有一个问题困扰着我,为什么我们的程序不能覆盖安装?其他的android应用程序,无论带不带动态库,都可以实现覆盖安装,不用很麻烦地一步步进行手动清除数据/手动卸载/然后才能安装的问题。否则,如果直接安装,可能会导致so包更新失败的问题,会继续使用旧的so包。更搞笑的是,即便把某个so包

2012-10-27 16:08:48 12821 1

转载 开发者成功应聘的二十六条建议

摘要:面试是求职者成功应聘的关键一步,除职业技能外,也将考查求职者的职业素养。本文是对Dzone网站中《A Developer's Guide to Getting Hired》一文的编译,作者分享了开发者成功应聘的二十六条建议,值得参考。发现一个好工作不容易,但成功应聘又会面临一系列的挑战。一种建议是多参加面试,提高自己的面试技巧,另一种则是花钱进行模拟面试指导,并制作专业简历。虽然这些

2012-10-23 09:06:18 701

原创 20121022 用sysctl调整linux内核选项

需求:在我们的dlna程序运行期间,发现有丢包的现象,有的NOTIFY包丢失,有的M-SEARCH包丢失。更极端的是,有次使用电信msm7627a手机,通过抓包,在出现了3此NOTIFY之后,M-SEARCH一直都没有出现。而通常情况下,两个广播包在开始是交替出现的。这样,就导致这款只能发送广播不能接收广播的手机一直不能发现其他设备。还有一次丢包的例子,是使用HTC的一款手机。这块手机

2012-10-22 17:54:54 9602

原创 20121019 一些工具和linux命令的备忘记录

记性不好,有的东西记录在这里备查。比较工具:meld diff串口工具:minicom 串口设置:minicom -s选中serial port setup选项进入,修改A - Serial Device的值为/dev/ttyS0,F - Hardware Flow Control的值为No然后保存即可。局域网通讯工具:iptuxsudo apt-g

2012-10-19 15:31:21 913

原创 20121018 关于广播和组播

有的手机型号,屏蔽了广播和组播,其他设备发出的广播和组播,它接收不到。它本身则可以发送广播和组播。如果两部这样的手机,由于都不能接收到广播,则会导致永远不能发现对方。如果一部这样的手机,一部DTB,则:DTB先启动,手机后启动,双方都能及时发现对方;手机先启动,DTB后启动,则过一段时间(小于手机上dmc M-SEARCH频率间隔),手机会发现DTB上的设备;

2012-10-18 15:44:33 626

原创 20121017 ubuntu下,adb device: Permission denied解决方法

1. lsusb命令找到对应设备的vendorId和productId$ lsusb$ Bus 002 Device 023: ID 0bb4:0cd4 High Tech Computer Corp.2.更改/etc/udev/rules.d/70-android.rules  sudo gedit /etc/udev/rules.d/50-Android.rules

2012-10-17 10:41:46 4597

转载 ReferenceTable overflow (max=512)

问题来源:写了一个较为复杂的Native so库,里面使用了链表,从链表中取出数据,装载到Java LinkedList中。当测试数据较小的时候还没有问题,当测试数据达到一定规模的时候就出现了ReferenceTable overflow (max=512)错误。 解决问题:1.我们通过阅读JNI的文档,对于FindClass 返回的一定需要调用DeleteLocalRef,还

2012-08-20 19:24:41 1210 1

原创 20120815如何使用arm-linux-androideabi-addr2line

1.将ndk中的arm-linux-androideabi-addr2line可执行文件的路径加入配置文件~/.bashrc中,例如:export PATH=$PATH:~/dlna/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin2.使配置生效:source ~/.bashr

2012-08-15 20:19:38 2378

原创 Android中如何使用 address2line

原文地址:http://stackoverflow.com/questions/5314036/how-to-use-addr2line-in-android I was stuck with my app, as i am unable to debug as it is a multithreaded one and crashes with error SIGSEGV. I get

2012-08-14 09:27:14 6513

原创 C++中的虚函数(virtual function) (细节,决定成败) (写得很好)

1.简介     虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public:    virtual void foo() { cout };class B: public A{public:    virtual void foo() { cout

2012-08-08 14:16:07 18679 6

原创 《转》svn命令

SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。SVN 官方网址:Apache Sub

2012-07-19 09:26:42 646 1

原创 20120711 dmc到dmr以及dmr与上层的交互

dmc发起一个action,dmr针对这个action作出反映,或者设置变量,或者给变量赋值。dmc这边得到action的response,即可获取其中变量的值。开源代码中,dmc-->dmr,  dmr--->dmc这两部分的数据通道都已经有了。我们要做的主要工作,是在dmr端设置变量或者给变量赋值。思路如下:c++提供读写数据的接口,读写数据都要设置标记,java写数据,c++

2012-07-11 08:13:51 2333 10

原创 20120711我的JNI编程小结

这段时间很忙,一直没有机会来记录和总结一下。在dmr这端,需要的本地方法有nativesetup,来通知java层建立环境。主要代码在dmrJNI.cpp中实现。c++层,则使用notify()函数将事件通知给java层。这里用到了回调函数。dmrJNI.cpp文件中的全局变量:NPT_SET_LOCAL_LOGGER("platinum.media.renderer")s

2012-07-11 07:51:05 935

原创 dmrJNI

HELLO, need to modify:#include #include "PltUPnP.h"//#include "PltMediaRenderer.h"#include "dmrJNI.h"#include "HoperunMediaRenderer.h"NPT_SET_LOCAL_LOGGER("platinum.media.renderer")#define L

2012-06-20 19:33:17 1123 2

原创 JNI回调函数

简单地说:被调用者回头调用调用者的函数(够咬嘴的),故称其为回调使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。至于如何定义回调函数,跟具体使用的API函数有关,一般在帮助中有说明回调函数的参数和返回值等

2012-06-14 12:39:10 4062 1

转载 JNI函数调用

http://blog.csdn.net/kangyaping/article/details/6584027关于函数类型在c/c++与java之间的转换。

2012-06-08 13:22:12 636

原创 20120604今天dms全部调通!

前些日子的代码,去掉printf打印部分,已经OK。之前之所以运行不起来,是由于同事做的java部分未开通网络功能。java的manifest中添加下面这句话即可: 共享一个文件夹后,在浏览器端输入:ip:port/if.mp3,即可播放该文件。调试程序过程中还出现了一个小插曲:dms可以启动起来,可是却不能停掉。后来发现是因为把一个变量重新赋值的时候,居然重新定义了一个局部变

2012-06-04 17:24:40 725

原创 线程通信的参考代码

觉得这段代码在最近可能有参考价值。#include #include #define BUFFER_SIZE 16 // 缓冲区数量struct prodcons{ // 缓冲区相关数据结构 int buffer[BUFFER_SIZE]; /* 实际数据存放的数组*/ pthread_mutex_t lock; /* 互斥体lock 用于对缓冲区的互斥操作 */ in

2012-06-03 17:51:26 505

原创 20120603命令行下线程调用代码----OK

dms_lib.cpp:#include "dms_lib.h"#include #include "PltUPnP.h"#include "PltFileMediaServer.h"NPT_SET_LOCAL_LOGGER("platinum.media.server")PLT_UPnP upnp;PLT_DeviceHostReference device;pthread

2012-06-03 11:23:10 824 2

原创 pthread

//-----------------------------------------/* * thread: 线程标识符 * attr:线 程属性设置,通常取为NULL * start_routin: 线程函数的起始地址,是一个指向void的指针作为参数和返回值的函数指针。 * arg: 传递给start_routin的参数 * retval: 成功则为0. * *///在线程

2012-06-03 10:58:26 1073 3

原创 20120603命令行下线程调用代码

刚才用命令行下创建线程,生成的dms device运行正常。代码附后。

2012-06-03 09:55:25 526

原创 20120531 dms命令行 又添log

又添加了一些log。这些添加的log说明,upnp.start之后,就可以任意写代码了。 /*---------------------------------------------------------------------- | includes +---------------------------------------------------

2012-05-31 21:36:12 1292

传感器模块开发过程

描述了从元器件选型,到最后软件完工的整个过程。

2013-03-22

tcpdump抓包工具

tcpdump是Linux中强大的网络数据采集分析工具,可以将网络中传送的数据包的“头”完全截获下来提供分析。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的 FreeBSD系统中,由于它需要将网络接口设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

2012-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除