- 博客(207)
- 资源 (40)
- 收藏
- 关注
原创 写给我的2015—开启工作新旅程
前沿: 2015年的总结相比2014年来的晚了许多,原因一方面是今年呀的发现CSDN竟然没有了前两年写年终的活动,另一方面嘛还是自己太懒散了,一直恍恍惚惚的没有下手来总结。今天,在这小年夜里(ps:外面下完雪挺冷的),独自一个人坐在办公桌前,静下心,记录下消逝的2015,再不总结就是大年30啦。返回到2014年写下的些许愿望,有些逐渐的在实现了而有些依旧需要更努力。 过去的2015,一半
2016-02-01 23:53:54 4041 8
原创 我的一路走来@电子信息工程和嵌入式该怎么入门
嵌入式该怎么学,嵌入式从何学起,嵌入式入门需不需要报培训机构,哪个培训机构好点?.还有一些是咨询电子信息工程专业的情况等等?这些问题几乎每天都在我的”嵌入式的世界“百度知道团队会遇到和看到的一些问题,归根结底是咨询嵌入式该如何入门,电子信息工程专业如何等?
2014-04-11 22:29:32 7651 5
原创 写给我的2013
前沿:代码看的累了,在新的一年终于可以找点时间来回忆我的2013。想着要写点什么,可是又没有什么可以写。因为回忆无非就是夹杂着些许痛苦与欢乐。
2014-01-03 23:18:47 8266 21
原创 linux驱动开发经验逐步积累2
注:笔记多少会有问题,多多包涵。只是作为一个记录而已1. cdev_add的核心思想cdev_add允许添加一个字符设备到内核,其核心是kobj_map,也可以添加一个字符设备集合,他可以包含count个连续的子设备号,此时dev_t dev为该字符设备集的base设备号,如cdev_add(cdev, 81, 256)。int cdev_add(struct cdev *p, dev_t dev
2016-08-31 21:42:17 3064
原创 android编译时如何决定一个APK等Module是否被自动编译到system.img中
android在全局执行make时,编译目标的一个入口files是依赖于modules_to_install的 818 .PHONY: files 819 files: prebuilt \ 820 $(modules_to_install) \ 821 $(INSTALLED_ANDROID_INFO_TXT_TARGET)而modules_to_instal
2016-06-28 19:47:00 8379
原创 绝命中的一助linux程序加载器ld-linux.so中的LD_PRELOAD预加载库
偶然错误的将linux系统中的libc.so.6链接删除,导致busybox所有cmd命令失效,报load library error.最终的解决方法是采用预加载库的方式来解决这个问题:LD_PRELOAD=/lib/libc-2.6.1.so ln -s /lib/libc-2.6.1.so libc.so.6根据shell/exec加载elf程序的原理,是先解析ELF,定位并加载ld-li
2016-06-01 14:42:52 5589
原创 Android Logcat输出为何能自动换行输出的原因以及多\n的作用
1. Android Logcat的是建立在Android的日志系统之上的,日志系统包括内核驱动模块Logger(drivers/staging/android)和liblog.so(源码位于/system/core/liblog下),liblog.so主要提供日志数据的写入与读取接口,向下负责操作底层log驱动,向上一是提供ALOG功能给Native C与java提供log写入,另一方面是提供给
2016-05-13 17:35:15 10674
原创 PRODUCT_COPY_FILES的深入理解,为何不能在Android.mk使用
PRODUCT_COPY_FILES本质是和定义产品的AndroidProducts.mk(get-all-product-makefiles来获取系统中所有AndroidProducts.mk 文件路径)联系在一起,这个文件内部会定义所属的产品的PRODUCT_MAKEFILES,该变量可定义多个xxx.mk产品相关定义文件,在编译初始化环境时会将其include进来。如同PRODUCT_NAM
2016-04-18 19:33:24 21842
原创 AS import工程出现Gradle sync failed: Gradle version 2.2 is required. Current version is 2.10
原因在于SDK的版本默认导入工程时使用的Gradle是2.10版本,位于:D:\android-studio\gradle而导入的工程由于版本比较低,使用到的gradle还是2.2的版本,故出现sync失败,采用的方式是修改当前打开工程后FIle->setting->Builde,Execution后修改当前的local gradle的Grable home.由于工程是使用到2.2的版本,其会自动
2016-03-30 17:13:21 6650
原创 Linux驱动开发盲点笔记1
1. vim中在找到搜索目标后,使用n与N进行定位查找2. vim中使用gg到最好第一行,使用xxxG到某一行,否则G直接到最后一行;3. ln -s 产生的链接文件最终指向的目标文件src 新产生的当前软链接文件dst。ln -s project(磁盘上实际存在的文件或者目录) a.lnkln -s src dst(新产生的文件dst,dst链接到src)symlink功能类似4 tar -cz
2016-02-05 18:32:07 4015
原创 论dts中的of_platform_populate如何选择性加载device node为platform device
1. 在比较新的linux内核中,设备树dts已经取代了传统的machine board device description,dts在内核中以各种device node的形式存在,而这些device node对于大部分的内核驱动模块platform_driver来说,最终需要有对应的platform device来与他匹配才可以完成一次device和driver的probe过程。所有有必要将d
2016-01-21 14:26:13 9825
原创 Android.mk中LOCAL_MODULE_CLASS对LOCAL_MODULE_PATH 的影响
LOCAL_MODULE_CLASS用于制定LOCAL_MODULE_PATH的路径所在。如果在Android.mk没有直接明确LOCAL_MODULE_PATH 的话,需要通过以下规则来自动生成base_rules.mk:154 LOCAL_MODULE_PATH := $(strip $(LOCAL_MODULE_PATH))155 ifeq ($(LOCAL_MODULE_PATH),)
2015-12-21 10:36:15 28464
原创 Android系统编译环境初始化时Product产品的import-nodes过程
从执行make -f config,mk文件开始,config,mk作为当前的makefile文件,将会被make解析,一般make解析Makefile文件流程首先是加载其中include的各种其他mk文件,同时在加载的过程中会初始化自定义的变量,类似于预编译,在完成各种初始化后,确定目标以及依赖关系,最终执行目标输出动作。在config.mk中存在多个需要include的mk文件,这里关注pro
2015-12-18 22:14:49 4122
原创 Android集成一个新产品时,lunch的product name和device name注意事项
Android系统lunch一个当前的Product大概流程包含以下几个部分:1. lunch确定TARGET_PRODUCT,一般位于vendor/device/build/target/product中的vendorsetup.sh脚本来定义分别有user/eng/userdebug。2. 开发check product的合理性。通过加载vendor/device/build/target/p
2015-12-17 16:56:22 6407 2
原创 linux V4L2驱动中新旧版本下video buffer alloc与mmap的处理区别
首先需要说明目前在比较新的内核中已经采用了vb2_queue与vb2_buffer来替代旧版本内核中经常使用到的videobuf_queue与videobuf_buffer。两者主要用于对用户层申请VIDIOC_REQBUF时的使用。从用户层Request的Memory的类型区分,典型的两种是:V4L2_MEMORY_USERPTR以及V4L2_MEMORY_MMAP,前者的内存主动权位于用户层,
2015-11-25 18:45:51 5427
原创 putty绕过ssh认证方式来保存密码
考虑到远程服务器ssh服务没有开启SSH互相认证的方式,故这里通过Putty自带的session功能来建立一个和远程的链接方式,此外为了不每次都输入密码,在window建立putty的快捷方式后,添加如下的命令。-load putty上建立并登录成功后saved了的session名字 -ssh -l 用户名 -pw 密码上述过程其他不需要“”即可不需要再输入密码完成登录。
2015-11-24 21:33:20 3640
原创 Android Camera API2中采用CameraMetadata用于从APP到HAL的参数交互
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:gzzaigcn2009@163.comSoftware:系统源码Android5.1
2015-10-29 18:18:32 18864 15
原创 Android Camera API2.0下全新的Camera FW/HAL架构简述
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:gzzaigcn2009@163.comSoftware:系统源码Android5.1前沿: 前面博文大多少总结的是Camera HAL1到HAL3的系统架构,但这些架构对于Camera APP开发来说依旧还是处于Camera API1.0的标准。而随着Camera3、HAL3
2015-10-28 16:21:05 11477 5
原创 Android API Level最新版本到6.0Platform Codenames, Versions, API Levels, and NDK Releases
http://source.android.com/source/build-numbers.html#platform-code-names-versions-api-levels-and-ndk-releasesCode nameVersionAPI levelMarshmallow6.0API level 23Lollipop5.1API level 22Lollipop5.0API lev
2015-10-23 09:39:56 3963
原创 Android Camera HAL3中拍照Capture模式下多模块间的交互与帧Result与帧数据回调
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:gzzaigcn2009@163.comSoftware:系统源码Android5.1前沿: 之前的两篇博文算是比较详细的记录了整个Camera3 HAL3架构下完全不同于HAL1的preview预览处理过程,包括主要涉及到的控制流和视频流等。比较详细的阐述了Camera2Client
2015-10-21 18:17:03 12152
原创 记录几个C++多继承中,this指针与多虚表间编译与处理的疑问,看编译器的行为。
简单无理的的测试代码:#include #include using namespace std;class A{public: int x; int y;public: A(){ cout<<"构造函数A传入的this指针得值是:"<<std::hex<<std::showbase<<this<<endl;}
2015-10-19 14:58:31 4293
原创 Android Camera HAL3中预览preview模式下的数据流
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:gzzaigcn2009@163.comSoftware:系统源码Android5.1前沿: 为了更好的梳理preview下buffer数据流的操作过程,前一文中对surface下的buffer相关的操作架构进行了描述。本文主要以此为基础,重点分析再Camera2Client和Came
2015-10-12 18:12:33 17913 1
原创 Android5.1中surface和CpuConsumer下生产者和消费者间的处理框架简述
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:gzzaigcn2009@163.comSoftware:系统源码Android5.1
2015-10-12 10:44:59 11235
原创 Android Camera HAL3中预览preview模式下的控制流
Android Camera HAL3中预览preview模式下的控制流
2015-10-10 16:07:39 16127 4
原创 Android Camera从Camera HAL1到Camera HAL3的过渡(已更新到Android6.0 HAL3.3)
本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:gzzaigcn2009@163.comSoftware:Android5.11. Android系统中Camera模块的历史演变进度/**
2015-10-09 11:05:33 21641 6
原创 我心依旧之Android Camera模块FW/HAL3探学序
前沿: 目前对于Android Camera软硬件技术发展的主流方向是高像素、高帧率、多摄像头、超强的ISP以及各种视频图形处理算法等等。当前主流的Android系统中较为常见的Camera模块还均是采用HAL1.0的架构,但随着主处理器CPU/GPU/DDR/ISP/Sensor等硬件自身性能的不断提高,在复杂化软件架构的同时,可以为一些Camera应用增加新的用户功能且不会丢失原先的性能
2015-10-08 16:39:42 8637 1
原创 android HAL接口的编码小结
定义一个modulestruct xxx_module_t { hw_module_t common; xxx,这里的主要是一些在未open时就可以操作该模块的ops接口,有时候可以不填充}struct xxx_mdoule HAL_MODULE_INFO_SYM ={ 填充该结构体,以填充hw_module_t为主}//所有的hal模块的名字都一样,该结构在编译时会转为
2015-09-25 20:06:14 2863 5
原创 基于linux自动创建设备节点而引入的疑问
1. 自动创建设备节点时mknod做了哪些事情?mknod会在内部自动创建一个inode,代表设备文件节点的物理磁盘属性,该inode存在于devtmpfs或者tmpfs等ramfs文件系统中,inode会记录下建立时传入的设备文件节点char/block等类型以及相应的设备号等信息,通过父目录的ramfs_dir_inode_operations来决定,调用ramfs_mknod生成当前设备节点
2015-08-18 17:47:13 2108
原创 linux中断子系统:中断号的映射与维护初始化mmap过程
写在前沿:好久好久没有静下心来整理一些东西了,开始工作已有一个月,脑子里想整理的东西特别多。记录是一种很好的自我学习方式,静下来多思考多总结,三年的工作目标不能发生变化,作为职场菜鸟即将进入全世界半导体第一的Intel working,是机遇更是一种挑战,困难也是可想而知。脚踏实地、仰望星空,以结果为导向,以目标为准则,争取每天进步一点点。Linux内核版本:3.4.39一. linux中断子系统
2015-08-11 21:38:02 5983
原创 sysfs与ramfs、tmpfs、devtmpfs的一点区别
ramfs在挂载以后,其内部以dentry和inode为核心层次维护。sysfs在挂载后,一般只会把挂载点的dentry和inode进行创建,并初始化该sys目录的inode->i_op为sysfs_dir_inode_operations.这之后所有的sys下文件的读写访问操作,都需要经过look_up先找到文件路径,并逐一给每个目录建立inode与dentry,是个动态的过程,只有这个时候才会
2015-08-06 20:33:54 13440
原创 Android编译时TARGET_OUT_ROOT/TARGET_OUT变量的由来
TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)TARGET_COPY_OUT_ROOT := root则首先确定PROUDCT_OUT = $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE);TARGET_DEVIC是我们check出来的目标设备full_xxxTARGET_PRODUCT_OU
2015-08-05 20:07:19 8436 2
原创 Android repo sync能否指定目录,貌似没找到解决方案?
这个问题比较疑惑尝试考虑在一个新建目录project下repo init后,貌似就不能repo sync同步到其他的目录中去。而且有一个规律是project多个下级目录下执行repo sync最终还是能够在project目录下同步到代码,这说明repo sync在执行时,会去逐一的返回上一目录,看是否有.repo目录相关的内容,查询如果最近一级目录下存在一个.repo则执行同步该repo sync
2015-08-04 21:00:13 8654 1
原创 sourceinsight 添加quicker.em生效
起初以为只需要将quicker.em放到base工程下面即可,但Macro等宏始终不出来,原来是需要在base工程下add这个em才可以。这里记录下。
2015-07-15 14:40:30 8244
原创 OV Camera AE相关的寄存器学习配置记录
自动AEC相关的寄存器配置的原理如上图。主要设置如下: {0x3a0f, 0x40}, {0x3a10, 0x38}, {0x3a1b, 0x48}, {0x3a1e, 0x30}, {0x3a11, 0x90}, {0x3a1f, 0x10}, band_step60 = preview_sysclk * 100/preview_HTS * 100/1
2015-03-30 20:58:49 6848 1
原创 volatile能解决cache的数据一致性吗?答案是不能
以前对volatile的了解,都是可以防止被编译器优化,从而从内存中都读写数据。但当ddr中的数据被cache了以后,然后又是被命中了,那么下次你去读写数据时,CPU还是中cache中去操作的。这就引来了和硬件的不一致性,但简单的volatile也不能解决cache的一致性。因为CPU会认为当前的数据就是从内存中去读写的(cache也属于内存级别)。所以只能通过专门的cache一致性的writeb
2014-12-08 17:31:38 6532 1
原创 Window下git和github下的代码版本多人开发维护
Window下比较常见的窗口模式的操作,相对而言比Linux的命令模式来的更为简洁命令。git软件TortoiseGit-1.8.4.0-32bit:主要用于ssh-key的生成,GitBash可执行类似Linux终端下的命令TortoiseGit软件Git-1.8.3-preview20130601:主要是window下可视化的操作。包括clone/pull/push/commit/sync等。
2014-11-29 14:30:28 2470
原创 我的嵌入式寻工之旅(截止2014年10月31日)
写在这里的题外话,嵌入式这个行业,在找工作的过程中,逐渐的认可为他越来越像是一个穷三代的职业啊(工资实在是就这样了),这和当下的互联网过热、过高的薪资形成了鲜明的对比。 下面就说说大概陆陆续续10月份的寻工之旅吧:PS:本人找工作前,因为项目紧,基本没有前期的准备过只是看过面试宝典的一些题,所以在后期的笔试中还是吃了一定的亏的,所以如果你有时间,是该好好准备相关行业公司的笔试要求。 找工作,定位好
2014-10-28 19:16:49 3263
Android5.0+ Camera Preview based-Gralloc with ION.pdf
2021-06-16
install_flash_player_11_linux_i386.tar.gz
2012-11-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人