sd nand与nandflash的区分 大家知道目前主流的存储芯片大致可以分为NOR Flash和NAND Flash。容量需要大一点的话,就会用采用NAND Flash。但用NAND Flash会有哪些问题呢?第一,NAND Flash有坏块,要使用NAND Flash,就必须要进行坏块管理,还需要做EDC/ECC,如果需要使用寿命长,还需要做平均读写,垃圾回收等处理。第二,不同品牌之间的NAND Flash,由于Page,Bl...
nrf52x 移植spi fatfs记录 1 平台mcu nordic 52840 ,flash Macronix MX252 版本ff143 过程1)添加文件diskio.c diskio.h ff.c ff.h ffconf.h ffunicode.c (ffsystem.c 系统相关,不添加)2)修改内容/*****diskio.c*******/ //主要修改初始化接口以及读写接口定义spif...
nordic调试错误一 记录 1 编译报错编译路径:SDK\examples\peripheral内容:Error #544: Required Software Pack 'ARM.CMSIS.4.5.0' is not installedError #543: Device nRF52840_xxAA(Nordic Semiconductor) not found, pack 'NordicSemic...
cc2640- mma8452三轴传感器调试 说明有时候项目做好,时间长了就忘记,这边做一个总结,方便以后自己看。使用环境:IAR,协议栈 2_02_01_181 配置管脚在CC2650_LAUNCHXL.h文件中配置,另,如果有其他外设或者gpio占用了这两个脚,那么务必要将他们取消掉。 /* I2C */#define Board_I2C0_SCL0 IOID_6 // IOID_4...
推挽输出与开漏输出的区别 转自 http://blog.chinaunix.net/uid-23065002-id-3885199.html推挽输出:可以输出高,低电平,连接数字器件;开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候
vim配置及插件安装管理(超级详细) 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我
msp430在ccsv5下出现的问题总结 一、内存问题问题描述,报错:program will not fit into available memory. placement with alignment fails for section ".cinit" size 0x132 Available memory ranges:
QT的一些小知识 记录一下前段时间工作中用到的东西,包括开发工具和一些简单的技巧吧。也许对于大家来说耳熟能详了。 最开始学习QT记得是在Ubuntu12.04下用apt命令行的方式安装了QT4.8.4以及QT Creator等工具,QT算是Linux下比较好的C++ GUI开源框架了。然后使用了QT_SDK_Win_Offline_V1_2_en.exe版本,不过现在需要去诺基亚网址:http://d
Eclipse中Pull参数问题 ccs V5,4 push时,报错The current branch is not configured for pull No value for key branch.master.merge found in configuration一直以来被一个问题困扰就是我的项目不能Pull,我就很纳闷了,这个为啥呢...The current bra
EGit/User Guide 1 Getting Started1.1 Overview1.2 Basic Tutorial: Adding a project to version control1.2.1 Configuration1.2.1.1 Identifying yourself1.2.1.2 Setting up the Home Directory on Windows1
msp430 EEPROM调试记录 2015.1.27总结一下出现的问题1、使用1Mhz频率,并通过修改分频系数将主机频率降至100Khz左右,项目需要,将频率改成16Mhz,发现数据写入不成功,分频系数没有错误,判断应该是没有那么大的分频可以分(这个还未确定),通过选择ACLK,并在基础时钟上设置分频,分到最低2Mhz,再在usci_i2c中设置分频系数,就可以了2、读写数据不一致万思不得其解,写入一段数据,发现有
Msp430 1.22 今天调试msp430时犯的一个低级错误,导致一下午的时间卡在那里。大概说来,就是设置了这样一个数组uint8 read[MAX_SIZE];再定义一个用来寻找数组当前值的下表,static uint8 read_index=0;//最大不超过MAX_SIZE就是这个下标出了个问题我去取出这个值时,是用这样一种方法:get[0]=read[0];get[1]=re
msp430中断小结 2014.12.24首记,中断中不要过多的操作。今天调试led灯的时候,循环回显数码管与led灯,由于中断中过多除操作,导致中断处理异常缓慢,使部分中断丢失。影响十分严重,特此记录。
调试msp30uart记录 环境:windows xp,ccs5.4使用Ti官方的uart------------------------------------------------2014.12.18
windows下调试软件错误记录 2014.12.1 windows xp ,ccs 5.4windows xp专业版,使用ccs调试msp430,调试器为利尔达的usb调试设备LSD-FET430IF,使用调试器固件应该为V2,出现的错误:MSP430: Error initializing emulator: A firmware update is required for the MSP430 Debug In
申请堆空间时出现的错误 #include #include #include struct foo{ int a; //4 char b[6]; //8 char *p; //4 char c[0];};#define EXPAND_MEM 15int main(){ printf("size =%u",sizeof(struct foo)); struct foo *pf = (
编译OpenWrt Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站。为了参与测试或参与开发OpenWrt的工作;我们需要重新移植或者重新编译个一个openwrt 若想实现上述目的,其实很简单,按下述文字即可成功编译出一个您的Openwrt来。准备工作在开始编译O
linux应用编程之线程编程 1 线程创建#include #include #include void thread(void){ int i; for(i=0;i<3;i++) { printf("this is a pthread"); }}int main(void){ pthread_t id; int i,ret; ret = pthread_create(&id,N
linux软件中断机制 软中断原理浅析 Linux中的软中断机制用于系统中对时间要求最严格以及最重要的中断下半部进行使用。在系统设计过 程中,大家都清楚中断上下文不能处理太多的事情,需要快速的返回,否则很容易导致中断事件的丢失,所以这就产生了一个问题:中断发生之后的事务处理由谁来 完成?在前后台程序中,由于只有中断上下文和一个任务上下文,所以中断上下文触发事件,设置标记位,任务上下文循环扫描标记位,执行相应的动作,也
S5PV210平台下uboot移植 0. 准备工作1. 编译uboot2. 将uboot写入SD卡3. 编译kernel,设置其可以通过NFS挂载根文件系统4. 开发环境安装TFTP服务器5. 开发环境安装NFS服务器6. 目标环境设置uboot参数7. 制作根文件系统(optional)。8. 完整的启动LOG。 有几位网友发信问我uboot挂载文件系统的方法,其实这个部分也不是我原创
linux中断机制的处理过程 一、中断的概念中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。在实地址模式中,CPU把内存中从0开始的1KB空间作为一个中断向量表。表中的每一项占4个字节。但是在保
时间复杂度和空间复杂度详解 算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频
一个进程的一生 随着一句fork,一个新进程呱呱落地,但它这时只是老进程的一个克隆。然后随着exec,新进程脱胎换骨,离家独立,开始了为人民服务的职业生涯。人有生老病死,进程也一样,它可以是自然死亡,即运行到main函数的最后一个"}",从容地离我们而去;也可以是自杀,自杀有2种方式,一种是调用 exit函数,一种是在main函数内使用return,无论哪一种方式,它都可以留下遗书,放在返回值里保留下来;
8大排序算法图文讲解 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插入排序 插入排序示意图插入排序是一种最简单直
一个简单的对话机器人 使用java开发,需要添加三个包public class wether_req {public void weatherReq() throws ClientProtocolException, IOException{String INFO = URLEncoder.encode("杭州今日天气", "utf-8"); String requesturl = "h
字符编码笔记:ASCII,Unicode和UTF-8 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。1. ASCII码我们知道,在计
Linux进程地址空间的一步步探究 我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的应用程序,它是怎么做到的呢? 呵呵,这一切的一切都是个迷呀,下面我们就一步一步
机制与策略 Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。 区别对待机制(mechanism)和策略(policy)是Unix设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:“需要提供什么功能(机制)”和“怎样实现这些功能(策略)”。如果程序可以由独立的部分分别完成机制与策略的实现,那么开发软件就更加容易,也更加容易适应不同的需求。 开源--
从瀑布模型、极限编程到敏捷开发 从瀑布模型、极限编程到敏捷开发---软件开发管理者思维的变化Jack zhai 软件开发是一种对人类智慧的管理,对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元,这与冰冷的机器是不可比的,所以在中国的历史上,管理人是最难的工作;“学而优则仕”的观点就是让最聪明的人应该选出来做官,做官就是管理人的。软件开发不仅是代码编程,而是人员的有效组织,如何既发挥
java初学笔记之继承的原则与方法调用 IS-A原则:IS-A测试适用在继承层次的任何地方。图中,猫科动物类继承自动物,狼继承自猫科动物。那么可以说,狼是猫科动物,猫科动物是动物,狼是动物。(Canine IS-A Animal; Wolf IS-A Canine; Wolf IS-A Animal )调用的方法wolf类有四个方法,调用四种方法时,分别是调用哪种方法呢?这边有个原则,就是就近
一些资料书签(备份) 1 andriodandriod下低功耗开发http://developer.android.com/intl/zh-cn/guide/topics/connectivity/bluetooth-le.html2 TI msp430开发430开发官网http://bbs.eeworld.com.cn/forum-128-1.html3 BLE关于
c语言记录--关于验证时间的正确性 1、首先从输入的字符中提取出年、月、日,判断是不是大于0的数字,并且在月和日中小于10的数字填充‘0’ 变成长度为2的字符;2、将提取出的字符重组,使其组合成“YYYY-MM-DD”格式,并判断是否长度为10;3、判断年份是否为闰年,确定2月的天数;4、判断30,31天的月份的日是否正确;5、月份不能大于12.
IAR编译错误 Error[e104]: Failed to fit all segments into specified ranges. Problem discovered in segment XDATA_N. Unable to place 2 block(s) (0xc02 byte(s) total) in 0xbdf byte(s) of memory. The problem occurre
c内存理解 1、分配方式1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。3) 从堆上分配,亦称动态内存分配。程序在运行的时候用mal
cc2540特征值查找之同时查找两个特征值 static void simpleBLEGATTDiscoveryEvent( gattMsgEvent_t *pMsg ){ attReadByTypeReq_t req; if ( simpleBLEDiscState == BLE_DISC_STATE_SVC ) { // Service found, store handles
cc2540 communication 1 Find Information RequestThe Find Information Request is used to obtain the mapping of attribute handleswith their associated types. This allows a client to discover the list of attributesand
蓝牙API分析 一、GATT API 1)GATT服务程序 2)GATT子服务程序 1、GATT_ReadUsingCharUUID (uint16 connHandle, attReadByTypeReq_t *pReq, uint8 taskId)用于读取一个服务的handle,准确的说,可以用此handle读取保存在characteristic中的数据。This sub-proced
蓝牙问题总结 一、Base on the demo projects SimpleBLECentral and SimpleBLEPeripheral.Backgroud: http://e2e.ti.com/support/low_power_rf/f/538/p/318484/1108115.aspx#1108115(CC2540)Only 20 Bytes data can be tran
BLE一些重要点理解 1、关于每一个蓝牙attribute中的permission理解Attribute Permissions is part of the Attribute that cannot be read from or written to using the Attribute Protocol. It is used by the server to determine whether read...
msp430之IO口中断 MSP430中断嵌套机制 (1) 430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT。 (2) 当进入中断程序时,只要不在中断中再次开中断,总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行。 (3)若在中断A中开了总中断,刚可以响应后来的中断B(不管B的优先级比A高还是低),B执行完现继续执行。注意:进入中断B...
msp430学习之软件延时函数 #define CPU_F ((double)8000000)#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))CPU_F 为系统主时钟频率;delay_us(...
msp430学习之软件延时函数 #define CPU_F ((double)8000000)#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))CPU_F 为系统主时钟频率;delay_us(...
C语言嵌入式系统编程之软件架构篇(转自21IC) 模块划分 模块划分的“划”是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念: (1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;...
软件架构 软件架构设计的目的 对于外包业务类型的项目,软件架构设计的目的与产品类型的项目有所不同,在这里主要讨论外包类型项目的软件架构设计目的。 1、为大规模开发提供基础和规范,并提供可重用的资产,软件系统的大规模开发,必须要有一定的基础和遵循一定的规范,这既是软件工程本身的要求,也是客户的要求。架构设计的过程中可以将一些公共部分抽象提取出来,形成公共类和工具类,以达到重用的目的...
msp430学习之ADC12 msp430有一个12位的AD转换器,注意:ADC12是msp430f249模块的模数转换器,ADC10不是。12位的ADC将输入的模拟数据与参考电压比较,将比较的结果存入ADC12MEMx中。 首先,输入电源模块,可以使用内部参考电源或者外部参考电源。需要配置REFON,默认为1.5V,还有一档是2.5V(REF2_5V);当然也可以使用外部电源输入,看电路图应该是从Veref...