自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 jni中native通过adb输出

本文主要实践了如何在jni中打印log,贴源码:Android.mk主要是巴拉的android源码中的appLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)#TARGET_PLATFORM := android-3#LOCAL_SDK_VERSION := 19LOCAL_MODULE := libnativeLOCAL_SRC_FILES := FactoryTestjni.cppLOCAL_MODULE_TAGS := opt..

2020-06-12 10:20:09 320

原创 linux中断&poll&selcet按键处理机制

在上一篇linux按键中断处理中,我们采用按键中断处理获取按键,在read函数中阻塞读取,当按键发生时,read自动解除阻塞,实现应用层读取到相应的按键值。在上一节中如果没有按键到来,应用层会一直阻塞等待在read 函数中。本博客页尝试使用按键中断加poll和selcet机制的方式这个处理。实现在应用层,阻塞指定的时间,如果没有信息返回,就主动退出阻塞等待。先贴一段代码:#include

2020-05-20 13:35:06 252

原创 linux中断&poll&selcet按键处理机制

在上一篇linux按键中断处理中,我们采用按键中断处理获取按键,在read函数中阻塞读取,当按键发生时,read自动解除阻塞,实现应用层读取到相应的按键值。在上一节中如果没有按键到来,应用层会一直阻塞等待在read 函数中。本博客页尝试使用按键中断加poll和selcet机制的方式这个处理。实现在应用层,阻塞指定的时间,如果没有信息返回,就主动退出阻塞等待。先贴一段代码:#includ

2020-05-20 13:33:31 317

原创 linux设备驱动之按键外部中断

老习惯先贴一波代码再仔细分析消化。#include #include #include #include #include #include #include #include #include #include #include static struct class *thirddrv_class;static struct class_device *thirdd

2020-05-20 13:32:43 193

原创 nuc972的ramfs的配置yaffs2,ubi文件系统

按照技术支持的推荐,使用ramfs文件系统。那么就可以在uboot的nuc970_evb.h中将JEFS yaffs ubi 的相关支持去掉就可以了。这样理应能减少很大部分的uboot大小。剩下就是配置内核中的ramfs配置。General setup ---> [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) suppor

2020-05-20 13:32:21 579

原创 c如何返回数组给java

jintArray c_hello(JNIEnv *env, jobject cls, jintArray arr){ jint a[4]={12,13,14,15}; jintArray arry; arry =(*env)->NewIntArray(env,4); (*env)->SetIntArrayRegion(env,arry,0,4,a); return arry;}实际上也就是...

2020-05-19 14:05:23 235

原创 java jni ubuntu 环境搭建时遇到的坑

1:版本不一致遇到的坑javah的版本需要同javac的版本一致。如果版本的问题搞不定,直接用andorid source build之后的环境即可2:javah使用遇到的坑jni中字段描述符可以使用javah生成javah -jni -classpath . JNIdemo其中 -classpath . 表示从当前目录搜索class 如果不添加会爆出来各种不太相关的错误3:执行class时遇到的坑如果执行class时候,需要调用 so仅仅直接执行 java JNIdemo.

2020-05-19 09:45:28 283 1

原创 loop 伪设备 挂在文件系统

dd if=/dev/zero of=./test.img bs=1M count=512losetip /dev/loop1 test.imgmkfs.ext3 -L ingben /dev/loop1dumpe2fs /dev/loop1tune2fs -l /dev/loo1mount /dev/loop1 /mnthexdump -C /dev/loop1 >...

2020-04-22 14:12:50 186

原创 第一章 处理器体系结构

1.请简述精简指令集RISC和复杂指令集CISC的区别2.请简述数值 0x123456789 在大小端字节序处理器的存储器中的存储方式3.请简述在你所熟悉的处理器(比如双核Cortex-A9)中一条存储读写指令的执行全过程4.请简述内存屏障(memory barrier)产生的原因5.ARM 有几条memory barrier的指令?分别有什么区别?6.请简述cache的工作方...

2020-04-08 13:55:43 131

原创 奔跑吧Linux内核初识

断更新博客有一段时间了。入职两年了一家创业公司,那是真心的累,当然了获得了技术上很大的提升。搞了两年的vr产品,唯一遗憾的是,平台是ST单片机,远离了系统级别的知识。回看刚出校园时的三年计划,和第一年的辛勤付出。再看目前的成就,感觉有愧于自我。我们总是要先生存,然后再去谈发展。我要成为linux内核大牛。是的,开启我的旅程吧。Linux 内核奔跑卷第一章 处理器体系结构。简单的介绍ARM3...

2020-04-07 15:59:12 612

原创 LCD显示深究day01 mmap知识补充

Linux中的mmap的使用 原创 2016年03月26日 16:36:57 标签:

2020-03-31 22:21:50 590

原创 linux字符设备驱动之字符之异步通知

在前面的博文中记录的都是应用层主动查询读取驱动按键状态。驱动可不可以在有信号之后,主动上报通知应用层事件呢?当然可以,linux如此博大精深。我们使用异步通信机制,signal的办法实现该功能。所谓的异步,就是进程可以在信号没到前干别的事情,等到信号到来了,进程就会被内核通知去做相应的信号操作。进程是不知道信号什么时候来的。First of all,我们学习一下,应用层是怎样使

2020-02-16 15:30:48 98

原创 网络IPC非阻塞和异步I/O

通常,recv函数没有数据可用时会阻塞等待。同样地。当套接字输出队列没有祖公空间用来发送消息时,函数send会阻塞。在套接字非阻塞模式下,行为会改变。这种情况下,这些函数不会阻塞而失败,设置errno为EWOULDBLOCK或者EAGAIN。当这些发生时,可以使用poll或者select来判断何时能接受或者传输数据。套接字机制有自己的方式来处理异步I/O.一些文献中吧经典的基于套接字的异步I/O

2020-02-16 15:26:55 190

原创 I/O多路转换 select

Linux驱动部分我们曾经使用了poll机制完成了在应用层代码读取按键值。这节课介绍的select也很相似。当我们要监控好几个文件描述符的读写呢?如果我们阻塞的去处理其中一个,那第二个怎么办呢?下面我们一起想想办法。 方法一:使用fork将一个进程变成两个进程,每个进程处理一套数据通路,如果使用多个进程,每一个进程就可以阻塞处理read,write函数。但是这也产生了问题:操作什么时候终止?如果

2020-02-16 15:11:37 104

原创 nfs牛b的使用

2018-10-02 17:12:07 97

转载 Linux内存管理段页

2018-09-23 20:52:57 197

转载 认识repo

任何一个学习Android开发的开发者如果想要深入学习Android,一定要看Android源码,网上关于下载Android源码的教程有很多,如果你已经翻墙了,你可以直接参考Google官网的教程或者老罗最新出的教程,如果你还没有翻墙,你可以用清华大学的Android源码镜像。我一开始没有用他们所推荐的Ubuntu下载,而是在听闻Windows 10专业版里内置了一个Ubuntu子系统以后,我...

2018-09-17 01:19:50 257

转载 如何使用repo sync

我們知道 repo 是 Google 為 Android source tree 的管理而寫的一個 script,以方便處理 Android 源碼包含的上百個 git repositories。要取得 upstream 最新的 code,只要下 repo sync 就行。它相當於對每個 project 做 git pull 的動作。不過如果你曾對 source tree 做一些修改,repo sy...

2018-09-17 01:17:59 12734

转载 模拟IIC

void IIC_Init(void){                             GPIO_InitTypeDef GPIO_InitStructure;    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOB, ENABLE );               GPIO_InitStructure.GPIO_Pin...

2018-08-06 09:07:45 460

转载 分隔符字符串处理(strtok与strsep区别)

1、strtok原型与应用原型:char *strtok(char *src, const char *delim);功能:将src(原字符串)根据delim(分隔符串)分解为不同子串(连续算一个)返回:属于当前分割的子串,当前没有分割的子串时返回NULL#include <stdio.h> #include <string.h> int main(void) { ...

2018-07-12 17:28:13 620

转载 getopt和getopt_long函数

平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。 在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。 #include <unistd.h> int get...

2018-07-12 14:00:45 136

转载 dup和dup2的使用方法

/*本文通过标准输出的重定向和恢复的过程来解释dup和dup2的使用方法*/#include <stdio.h>#include <unistd.h>#include <fcntl.h>//STDIN_FILENO标准输入描述符(0)//STDOUT_FILENO标准输出描述符(1)//STDERR_FILENO标准错误描述符(2)int main(void){...

2018-07-05 09:49:45 1210

转载 YUV视频格式分析

Andrew Huang <[email protected]> 转载请注明作者及联络方式  在摄像头之类编程经常是会碰到YUV格式,而非大家比较熟悉的RGB格式. 我们可以把YUV看成是一个RGB的变种来理解.   YUV的原理是把亮度与色度分离,研究证明,人眼对亮度的敏感超过色度。利用这个原理,可以把色度信息减少一点,人眼也无法查觉这一点。  YUV三个字母中,其中"Y"表示明亮度(...

2018-07-04 13:51:57 2778

转载 kmalloc/kfree,vmalloc/vfree函数用法和区别

1.kmalloc1>kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.< tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请的内存进行清零。> 2>kamlloc函数原型:#include<Linux/slab.h>Void *kmalloc(size_t size, int f...

2018-06-28 15:32:18 2515

原创 make -j32 2>&1 | tee show.log

2. 2>&1是什么意思?2>&1应该分成两个部分来看,一个是2>以及另一个是&1,其中2>就是将标准出错重定向到某个特定的地方;&1是指无论标准输出在哪里。所以2>&1的意思就是说无论标准出错在哪里(哪怕是没有?),都将标准出错重定向到标准输出中。   3. 这里为什么还用到了管道?管道的作用是提供一个通道,将上一个程序的标准...

2018-06-28 10:13:04 2236

转载 linux内核源代码分析----内核基础设施之klist

概述     klist是list的线程安全版本,他提供了整个链表的自旋锁,查找链表节点,对链表节点的插入和删除操作都要获得这个自旋锁。klist的节点数据结构是klist_node,klist_node引入引用计数,只有点引用计数减到0时才允许该node从链表中移除。当一个内核线程要移除一个node,必须要等待到node的引用计数释放,在此期间线程处于休眠状态,为了方便线程等待,klist引入等...

2018-06-25 17:44:30 1463

转载 sysfs接口函数的建立_DEVICE_ATTR

最近在弄Sensor驱动,看过一个某厂家的成品驱动,里面实现的全都是sysfs接口,hal层利用sysfs生成的接口,对Sensor进行操作。说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_##_name = __...

2018-06-22 16:18:02 349

转载 1.the linux device model--kobject kset学习笔记

http://blog.chinaunix.net/uid-22547469-id-4590385.html?utm_source=jiancoolLinux设备模型就是一栋规模宏大的建筑,为了构建它,需要基本的建筑材料钢筋:kobject、若干钢筋组成的钢架结构:kset,还需要一种机制sysfs,来向外界(用户空间的程序)展示其内部构造。并且通过文件接口的方式实现与外界沟通与互动。 设备文件...

2018-06-22 10:02:26 168

转载 linux设备:cdev和kobj_map

先看kobj_map相关的代码涉及到的文件<linux/kobj_map.h><drivers/base/map.c>[objc] view plain copy print?typedef struct kobject *kobj_probe_t(dev_t, intint *, voidvoid *);  struct kobj_map;  int kobj_map(s...

2018-06-21 18:34:31 414

转载 Linux设备驱动之Kobject、Kset

LDD3中说,Kobject的作用为:    1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobject, 它和内核交互来创建它的可见表述。    2、热插拔事件处理 :kobject 子系统将产生的热插拔事件通知用户空间。    3、数据结构关联:整体来看, 设备模型是一个极端复杂的数据结构,通过其间的大量链接而构成一个多层次的体系结构。kobject 实现了该结构并将其聚...

2018-06-20 15:28:50 141

转载 linux 函数学习--kzalloc()

使用 include <linux/slab.h> void *kmalloc(size_t size, int flags); static inline void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | __GFP_ZERO); } 123456说明给...

2018-06-20 10:41:36 274

转载 关于头文件中的 static inline函数

关于头文件中的 static inline函数    头文件中常见static inline函数,于是思考有可能遇到的问题,如头文件经常会被包含会不会产生很多副本?网上说法不一。于是自己验证。经过arm-none-eabi-gcc下测试后得出结论。    inline 关键字实际上仅是建议内联并不强制内联,gcc中O0优化时是不内联的,即使是O2以上,如果该函数被作为函数指针赋值,那么他也不会内联...

2018-06-20 09:50:00 135

转载 Android卷一全文 第一章 阅读前的准备工作

本章主要内容本章简单介绍Android系统架构、编译环境的搭建以及一些工具的使用。1.1  系统架构1.1.1  Android系统架构Android是Google公司推出的一款手机开发平台。该平台本身是基于Linux内核的,图1-1展示了这个系统的架构:图1-1  Android系统架构从上图中可以看出,Android系统大体可分为四层,从下往上依次是:Linux内核层,目前Android2.2...

2018-06-15 10:48:20 193

转载 mdev详解

mdev是busybox提供的一个工具,用在嵌入式系统中,相当于简化版的udev,作用是在系统启动和热插拔或动态加载驱动程序时, 自动创建设备节点。文件系统中的/dev目录下的设备节点都是由mdev创建的。在加载驱动过程中,根据驱动程序,在/dev下自动创建设备节点。以下内容摘自busybox-1.23.1的mdev.txt文件:Mdev has two primary uses: initial...

2018-06-14 10:45:37 1573

转载 简单聊一下makefile中的 =, :=, ?=和+=

   最容易混淆的是 =和:=, 我们先来看看makefile:[plain] view plain copy x = hello  y = $(x)  x = world  test1: test1.cpp      @echo $(y)         执行make后, 结果为world,  再看改动后的makefile:[plain] view plain copy x = hello  ...

2018-06-09 19:12:49 110

转载 autoconf.mk详析

uboot的顶层Makefile中有如下的一段代码[plain] view plaincopy  #  # Auto-generate the autoconf.mk file (which is included by all makefiles)  #  # This target actually generates 2 files; autoconf.mk and autoconf.mk....

2018-06-04 16:09:59 626

原创 project下查看那些文件夹是空的

git不能追踪空文件夹。我们在空文件夹下添加readme.txt文件来解决。有时候我们不知道project下到底有那些文件夹是空的。使用 find -type d -empty 就能列出来。

2018-06-01 14:46:26 374

原创 Nandflash希尔特编程器烧录带来的一些点知识信息

1.NAND FLASH的特殊性1)存在坏块。NAND FLASH由于其生产工艺的原因,出厂芯片中会随机包含坏块。坏块在出厂时已经被初始化,并在特定区域中存在标记,如果在使用过程中出现坏块,也需要进行标记。2)易出现位反转。NAND FLASH易出现位反转的现象,如果位反转出现在关键位置上,则会导致系统挂机。所以在使用NAND FLASH的同时,建议使用ECC以

2018-06-01 14:46:06 4174

原创 NFS调试linux内核启动卡死在DHCP和RARP上

手头有两块板子。第一块有两个网卡phy,第二块一个网卡phy。为了驱动的统一使用,在内核中都配置如下Device Drivers ---> [*] Network device support ---> *>Dummy net driver support*> Nuvoton NUC970 Ethernet MAC 0*> Nuvoton NUC970 Ethernet MAC 1

2018-06-01 14:45:40 591

转载 串口VMIN VTIME 详解

以前跟着做过VxWorks的开发,主要通信方式是串口,因为底层BSP包已经做好了,串口通信非常简单。后来接触Linux,在一块OK6410上跑Linux串口通信,才发现原来天真的以为甚是简单的串口变得如此的不简单。#include <termios.h>1、串口的操作1.1打开:fd = open("/dev/ttySAC1", O_RDWR | O_NOCTTY | O_NDELAY...

2018-06-01 14:45:22 1834

空空如也

空空如也

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

TA关注的人

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