- 博客(33)
- 资源 (8)
- 收藏
- 关注
原创 卡在Starting kernel...的原因分析
相信大家在开发嵌入式Linux系统时,一定遇到过卡在Starting kernel...而运行不下去的情况,这种类型的问题主要有两个原因,下面我们就一一了解下。 Device Tree出现之前 Device Tree出现之前,也就是kernel 3.0之前的版本,这种情况下,当bootloader将控制权移交给kernel时,kernel会将自身的Machine I
2017-11-07 21:43:02 32967 4
原创 nfs:server xxx is not responding, still trying
在通过NFS挂载rootfs时,遇到“nfs:server xxx is not responding, still trying"的错误,这种问题可以这样debug:1.可能是主机端NFS server出了问题,确认NFS server是否已启动;2.如果是在复杂的网络环境里可能会出现网络拥塞;3.可能是网卡丢包,可以通过tcpdump来查看。上面这几条也是我们在网络上常搜到的几
2016-09-25 19:37:54 1972
原创 MQTT浅析
出于工作需要,最近对MQTT进行了学习,在这里总结一下。MQTT是“Message Queuing Telemetry Transport"的英文缩写,是IBM开发的一个即时通讯协议,是一个轻量级的,基于代理的”发布/订阅“模式的消息传输协议,截至现在的发布版本为V3.1.1,支持多种编程语言,如PHP,JAVA,Python,Node.js,C,C++等,而且特别适合应用于物联网通信领域,目
2016-09-11 20:56:14 9716
原创 CC254X片上flash读写解析
如果在开发中,希望个别数据掉电不丢失,那么有几种方法可以考虑,一种是通过I2C或者SPI总线外接存储,比如E2PROM或FLASH,如果数据不大,第二种方便的方法就是操作片上flash了,要想操作片上flash,首先要搞清楚片上flash的存储结构以及寻址方式。 例如CC2541F256这个芯片,我们查一下技术手册,介绍片上flash存储组织结构的部分,截取如下:
2015-10-04 12:00:25 7157
原创 深入理解去耦电容
在做高速电路设计的时候,为什么要有那么多去耦电容?到底什么是去耦?为什么是很多个小电容并联而不是用一个大电容(值是一样大的啊)?为什么说小电容要靠近电源管脚而大电容可以远一些?这里的这些问题,涉及到很多信号完整性问题。
2015-07-12 21:22:24 5875 1
原创 BLE功耗问题
最近一直在做BLE相关的项目,关于功耗一直是一个比较重要的问题,在可穿戴设备尤其是纽扣电池供电的设备中尤为重要。现总结如下:1.更新连接参数 BLE的功耗很大一部分取决于connection interval 、 slave latency和timeout,实际开发中可能需要调节连接参数来优化功耗。这里要注意,当与IOS进行交互时,提出更新连接参数的请求可能会被拒绝,因为ios对这三
2015-05-26 13:00:09 5406 2
原创 BLE固件开发--更新连接参数
低功耗蓝牙里重要的三个连接参数:Connection Interval,Slave Latency,Supervision Timeout.这三个参数决定了BLE的功耗。 更新连接参数的相关api: /******************************************************************** * @fn GAPRole
2015-01-29 17:43:29 7232 2
原创 ADS如何修改默认工作目录
在ADS一开始软件安装过程中,如果没有指定默认安装目录,那么之后软件启动,默认目录会一直是C盘下user里的那个default目录,那么如何修改?(在这里,我用的是ADS2009,其它版本类似)。 有个小技巧可以更改默认路径,点击开始,找到ADS程序: 然后右键->属性: 在选项卡的起始位置,图中红框所示,改为自己期望的工作目录即可。
2015-01-28 17:57:02 12586 1
原创 BLE固件开发--如何获取当前连接状态
在一个 BLE开发项目中,我采用的是TI的CC2541蓝牙BLE SoC,为了防止主从设备连接断开时数据丢失,硬件上加了一个EEPROM,当蓝牙建立连接时,通过Notify发给主机,但当蓝牙连接断开时,采集的数据要存储到EEPROM中(I2C),要实现这一点,需要实时获取蓝牙的连接状态。 在TI的BLE协议栈中,periperal.h中有如下定义: /** * GAP Peri
2014-12-31 15:49:44 9183
原创 实例浅议linux设备驱动程序的编写
我是2012年2月份在亚马逊买了《Linux设备驱动程序》一书,期间断断续续的读了好几次,前几章都读烂了,最后终于在去年完整的读完了一遍,期间的感受就是难,主要难在对于一个初学者,不是那么容易去实践,可能也是由于linux kernel更新的太快了的缘故,有些差异还是很大的,另外书中的例子对于初学者也是稍显晦涩和小复杂,在理解上要下点功夫和耐心才行,并不是说不好,相反,一直觉得需要动脑才能理解的东
2014-02-08 15:32:16 3909
转载 关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地
除了正确进行接地设计、安装,还要正确进行各种不同信号的接地处理。控制系统中,大致有以下几种地线:(1)数字地:也叫逻辑地,是各种开关量(数字量)信号的零电位。(2)模拟地:是各种模拟量信号的零电位。(3)信号地:通常为传感器的地。(4)交流地:交流供电电源的地线,这种地通常是产生噪声的地。(5)直流地:直流供电电源的地。(6)屏蔽地:也叫机壳地,为防
2013-10-22 09:29:00 19652
转载 改进型时间触发嵌入式系统编程模式
目前,RTOS特别是抢先式RTOS在嵌入式系统中的应用越来越广泛,但是还有很大一部分产品使用是小型单片机。这些系统由于成本的限制,通常资源非常有限,比如ROM往往小丁32 KB,RAM小于2 KB,由于RTOS对每个任务都要开辟单独内存区域,存放任务的上下文和各任务独立的堆栈,所以在这种系统中使用RTOS非常勉强。对于这些低成本资源受限系统通常采用“前后台”(或者叫“超级循环”)结构进行编程,
2012-10-07 10:46:54 1173
原创 FriendlyARM tiny6410 一步一步学与思(4)---NFS搭建
之前我一直用的串口文件传输的方式,速度慢,也不方便,在学习tiny6410的过程中,我们往往会选择用NFS,来方便的在开发板和PC上共享数据,那么如何搭建NFS呢?(环境:Ubuntu) 1、安装NFS服务器端和客户端 sudo apt-get install nfs-kernel-server nfs-common portmap 2、配置portm
2012-10-03 18:09:50 2831
转载 操作系统引导探究(转)
前言 本篇文章并不旨在完整的讨论一个多引导系统程序怎样去引导不同的操作系统,而只打算从编写操作系统的角度出发,谈谈计算机怎样从加电开始,从无到有,将操作系统运行起来,在其中将尽量详尽的描述从实模式到保护模式的过渡,目的只在于能将所学与广大爱好者更享,为希望开发操作系统的朋友留下一点资料,也为自己留下一点心得。本篇文章将以开发中的 pyos 系统引导程序为例,pyos 是一个正在开发中的实
2012-08-13 18:31:21 1018
原创 网络知识之MAC
MAC---Media Access Control作用:用来定义网络设备的位置。由48比特长,12位的16进制数字组成,0到23位是厂商向IETF等机构申请用来标识厂商的代码,也称为“编制上唯一的标识符”(Organizationally Unique Identifier),是识别LAN(局域网)结点的标志。地址的24到47位由厂商自行分派,是各个厂商制造的所有网卡的一个唯一编号。第4
2012-08-08 11:14:25 854
原创 error: collect2: ld returned 1 exit status
今天用Qt写一个串口下载的程序,由于之前没写过串口的应用,故先摸索着来,还没写多少代码,测试的时候就出现了“error: collect2: ld returned 1 exit status”的错误,谷歌了一下,说这个错误是由于程序已经在运行引起的,可我这个都没开始运行过,排除这个因素后,我又仔细检查了一下代码,发现我在.h文件中声明了槽函数,但没有在.c文件中给出定义,于是赶紧补上,再运行,错
2012-05-22 14:49:45 1383
原创 (Qt) warning:control reaches end of non-void function
首先,Qt中槽函数可不可以带返回值?因为默认的槽函数(在GUI编辑页面中自动添加的)都是不带返回值的,但最近写的一个小程序中的一个槽函数需要返回值,主要是为了检测到某个错误就中止的功能,这样一来,我就不得不去动系统自动添加的槽函数,赋予它一个int型返回值,如果检测到某个错误就return 0,而不再继续检测下一个错误,写完之后发现好用,功能也实现了,可就是有个警告--如题目。就是说“控制结束在带
2012-04-24 09:34:20 2125
原创 第三篇---STM32灵魂塑造之呱呱坠地
之前我从宏观上介绍了CM3架构和STM32的相关内容,现在我们就开始正式进行STM32的灵魂塑造---程序编写。为什么说是塑造,因为整个代码是从无到有的而非利用官方库的开发,就好像新生的婴儿呱呱坠地。。。罗嗦止于此,切入正题! 在我的一篇文章《ARM寄存器C操作探讨》里,我曾详细的介绍了ARM通常采用的两种寄存器C操作的方式,现在我们就实际应用一下第二种方法。为了帮初学者形成ARM编
2012-03-30 22:29:06 1574 2
原创 创建Android模拟器问题解决
近来Android比较火,一直蠢蠢欲动纠结着想换一部Android,搞搞Android开发玩玩,想想刚毕业工作还不到一年啊,钱还是要省着点花的~于是就在电脑上搭了个Android模拟器,具体步骤这里不说了,百度或谷歌一下,介绍详细步骤的资料一堆堆的,我主要想把自己在创建过程中遇到的问题和解决方法在这里分享一下。 问题: PANIC: Could not open:
2012-03-27 12:37:28 856
原创 FriendlyARM tiny6410 一步一步学与思(3)---pwm_buzzer application
Success is the sum of small efforts, repeated day in and day out.成功就是日复一日那一点点小小努力的积累。 学习linux application program,和学习其它操作系统应用程序一样,API是和操作系统打交道的基础,纷繁复杂的函数会让人应接不暇,幸好有man的帮助,得以让我们在浩瀚的代码世界里有了
2012-03-26 16:12:41 2290
转载 关于上、下拉电阻的总结整理
在电路中,我们经常接触到上、下拉电阻的概念,它们到底有什么作用?为什么?这个问题并不单纯,因为这个问题本身就不够具体,因为不同的应用场合,它们的作用和使用的原因是不同的!下面我结合网上查阅的资料和自己的理解总结一下,大多取自网络,故特别标记为转载。 1、对于高阻态的情形 例如有些总线为三态总线,也就是高、低和高阻态,当总线置为高阻态时,电平是不确定的,对
2012-03-15 16:35:54 1771
原创 FriendlyARM tiny6410 一步一步学与思(2)---buttons application
今天开始编写按键程序,首先还是按友善提供的例程来学习,例程实现的功能是按下某个键,输出相应的按键序号UP,松开则输出相应的按键序号DOWN。运行完全没问题,输出也正常。例程源代码如下: /*******filename:test_buttons*******/#include #include #include #include #include #i
2012-03-12 16:39:19 2198
原创 第二篇---血肉之躯STM32
又迎来了周末,这个周是单周,只休一天,下午睡了一会儿,本来昏昏沉沉的状态好多了,那就开始干活吧,第一篇学习了CM3的架构,到此还只是理论,那么这第二篇就算正式进入实战了,因为我们开始接触真实的CM3架构的芯片了---STM32,意法半导体官方推出了STM32的开发库,如果用库开发的话,可能主要工作就是读库函数,调用库函数,当然得理清库的组织结构。这里,我想不采用库的方式开发,因为如果当你换用其它半
2012-03-11 22:11:17 5498 1
原创 Linux--打包、压缩和解包、解压缩命令小结
【1.打包与压缩】首先我们有必要区分一下“打包”和“压缩”这两个概念。在Windows平台用久了,很容易把这两个概念混在一起。Linux下的打包仅仅是把多个文件“捆绑”成一个文件(实际上可以理解为用一个文件夹来保存这些文件),但不降低这些文件总体的磁盘占用空间。而压缩则是通过诸如空白bit压缩等方式来减少这些文件所占用的磁盘空间。【2.gzip和zcat】gzip和zcat
2012-03-10 08:42:06 1179
转载 MARVELL电力线载波通讯芯片运用于家庭联网
MARVELL的电力线载波通讯芯片DSS9501是电力系统特有的、基本的通信方式,由于使用电力线作为载波信号的传输媒介,因此具有信息传输稳定可靠,路由合理、可同时复用信号等特点由于电力线和信号线合一,无须铺设信号线,人们原来使用和维护电器的习惯都不受影响,家电无须增加双绞线、红外线等接口,只要在内部配备电力线载波通信芯片、更新程序,便可实现对原有家电的改造。由于家电的信息量小,电力线载波速度慢的缺
2012-03-09 11:40:05 2624
原创 FriendlyARM tiny6410 一步一步学与思(1)---LED application
今天正式踏上我的tiny6410的实战学习旅程,希望在这里记录下学习的点点滴滴,包括学习中遇到的问题,解决过程和思考。 江湖背景: 宿主机环境:Ubuntu10.04 交叉编译工具:arm-linux-gcc-4.5.1 硬件环境:FriendlyARM tiny6410 开篇--张灯结彩
2012-03-08 16:14:34 3246
转载 ubuntu下设置PATH的三种方法
在 Ubuntu 系统中有两种设置环境变量 PATH 的方法。第一种适用于为单一用户设置 PATH,第二种是为全局设置 PATH。第三种方法适合于暂时修改,重新登录后失效。第一种方法:在用户主目录下有一个 .bashrc 文件,可以在此文件中加入 PATH 的设置如下:export PATH=”$PATH:/your path1/:/your path2/…..”注意:每一个 pa
2012-03-07 18:51:28 3760
原创 第一篇---CM3骨架show
CORTEX-M3是一个32位的处理器内核,32位结构(也有称32位机)描述了一个CPU具有下面几个方面的结构特性: &运算器(ALU)一次最多可以处理32位的数据; &寄存器的最大宽度为32位; &寄存器和运算器之间的通路为32位。 一句话,在CM3内部,能够一次性处理、传输、暂时存储的信息的最大长度是32位的。
2012-03-04 20:52:37 1678
原创 邂逅Cortex-M3---序
横看成岭侧成峰,远近高低各不同;不识庐山真面目,只缘身在此山中。 -----苏东坡 这里用了个词“邂逅”,是因为曾经在学校时候一直想学ARM,也一直久仰大名,却
2012-02-25 22:51:40 890
原创 ARM寄存器C操作探讨
乍从51过渡到ARM,很多人往往一时不能适应ARM的开发方式,其中一个困扰就是寄存器的访问,尤其是从屈指可数的51族寄存器一下子转到ARM纷繁复杂的寄存器,可能顿时会有种无从下手的感觉。面对这么多的寄存器,我们该怎么对其访问比较方便、科学和规范呢? 近期到手ARM11架构的S3C6410片子,寄存器可谓繁多,正好拿它开刀,给大家来个现场解牛,下面是S3C6410的GPIO配置的相关寄
2012-02-21 16:52:12 1941
基于5G技术的医院网络建设标准.pdf
2020-02-25
Building_bare-metal_ARM_with_GNU.pdf
2017-10-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人