调通STM32F103RCT6 与W5500网卡芯片的PING程序

接到一个任务,验证硬件同事的一块板子,网卡芯片W5500的功能是否正常,MCU使用的是STM32F103RCT6 ! 从了解到的信息看,W5500和MCU之间使用SPI接口进行通信,跟最近调了好久的DW1000的使用方法相同,驱动是厂家提供的,也就是只需要调通SPI通信,基本上就能驱动W5500工作!
阅读全文

近期工作小结

近期在做Android双系统开发和维护工作,可能以后也不会涉及到这块了,做个记录!刚接触还是很难的,所以以后有同学如果能做到这块,不要着急,任何技术都是需要时间积累,就这么三两个月能开始修改内核的代码,多少还是觉得有些意思的!
阅读全文

PCM文件添加WAV头

在asr平台实现pcm格式录制的文件增加wav头,发现根据网上给的方法添加wav头的wav文件播放异常,播放没有声音!后来发现问题出现在下面几个地方的问题:1、samplerate和bitrate转换不正确;     int bit_rate = sample_rate * channels *&
阅读全文

property_set/property_get源码解析

昨天和同事花了近半天才梳理出来一个rc文件中set_prop的流程,足见android底层服务设计之复杂!
阅读全文

读书笔记|Linux内核设计与实现

这本书还是蛮基础性的对Linux内核的设计原理进行了说明,也有具体实现部分的介绍,结合源码能很好的理解Linux内核;在翻了一遍之后,带着如下几个疑问,整理了下:1、内核是什么时候加载运行的;2、应用程序、内核和硬件的关系;3、进程管理、内存管理和进程地址空间;内核是什么时候加载运行的?bootloader复制压缩内核到内存空间;内核自解压;运行内核;init/main.c中的start_kern
阅读全文

给应用添加Selinux配置的完整记录

公司人力吃紧,特别缺少C开发的同学,只能是我是一块砖,哪里需要哪里搬!记录一次Android系统完整的配置开启启动应用,并配置Selinux权限的过程!Selinux的概念甚多,理解起来还是很费劲的!并且需要有Linux内核的基础知识,总归来说是打通任督二脉的一件事,多多学习总是没有坏处的!
阅读全文

JNI使用内存相关问题记录

最近给服务器提供协议编解码库,出现较多内存相关的问题,做个记录,顺便给有相同需求的同学提供参考!
阅读全文

JNI使用过程记录,Java调用C++函数,JNI层使用和实例化Java对象

近期提供给JAVA应用使用的编解码协议库,需求就是编码的字符串,需要解码为Java对象;回应消息的Java对象,需要编码为指定格式的字符串,把模板代码总结下,主要涉及几个点:1、在JNI层找到Java对象,及其属性变量的值,然后转换为JNI层的内存数据;2、在JNI层实例化Java对象,并设置这个Java对象的属性变量,并返回这个Java对象;示例代码如下:Java对象 public&n
阅读全文

结合多种系统api来理解堆栈的概念

数据结构中栈具有后进先出的特点,我们提到堆和栈空间的时候,指的是数据在内存中的概念,对栈空间,基本的认知包括:1、栈空间通常用来存放临时变量、参数,寄存器等数据;2、栈空间不能被多个函数共享,只能使用堆内存进行不同函数间的数据共享;3、栈空间有限,所以编码规范中通常定义函数的形参建议不超过6个,多了建议使用数据结构;      临时变量也不能想创建多少就创建多少,特别
阅读全文

从KMIP编解码库libkmip的代码学到的编解码代码框架

所谓的编码,就是将数据结构的结构体对象编码为指定协议标准的二进制流,而所谓解码,则是将二进制流解析出对应的结构体对象;比方RTP Payload一直都长的一样,所以一个数据结构就能定义了;如果需要同一套协议,承载不同结构的payload的情况,KMIP的实现提供了一套通用的代码框架,值得参考和学习;
阅读全文