- 博客(26)
- 问答 (1)
- 收藏
- 关注
原创 Linux 执行脚本时&和&&
&表示在后台执行脚本,比如 ./ppp & 。&&表示前一条指令执行成功后再运行下一条指令,如果前一条指令执行失败,则后面的指令不执行。
2018-04-18 14:03:31
3451
原创 GIT使用备忘
一、GIT服务器地址IP:192.168.12.21用户名:git密码:123456 二、如何上传一个新的GIT仓库以RK3128为例:服务端:1、使用git用户登录GIT服务器,在根目录下新建目录:mkdir rk312x_android6.0_v1.00.gitGIT仓库通常以.git结尾。2、执行初始化命令:git init --bare rk312x_android6.0_v1.00...
2018-03-19 09:34:49
273
转载 Linux设备模型(3)_Uevent
原文:http://www.wowotech.net/device_model/uevent.html1. Uevent的功能Uevent是Kobject的一部分,用于在Kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到这样的事件后,会做相应的处理。该机制通常是用来支持热拔插设备的,例如U盘插入后,USB相关的驱动软件会动态创建用于表示该U盘的device结构(相应...
2018-02-27 14:33:02
299
原创 详解container_of
container_of宏在linux中的应用非常广泛,几乎随处可见,它的作用是通过一个结构体成员的地址来获得这个结构体的首地址。先来看一下定义:#undef offsetof#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)/** * container_of - cast a member ...
2018-02-27 14:31:17
323
原创 Android 电池管理系统-驱动部分
硬件平台:RK3128Android版本:6.0Kernel版本:3.10.92 Android电池管理,基于linux Power Supply架构,Battery驱动程序需要通过sys文件系统向用户空间提供接口,Linux标准的Power Supply驱动程序所使用的文件系统路径问/sys/class/power_supply,其中的每个子目录表示一种能源供应设备的名称。一、Power ...
2018-02-23 16:41:38
1841
原创 [RK3128][Android 6.0] OTA编译错误
使用make otapackage命令编译ota包时出现以下错误:Package target files: out/target/product/rk312x/obj/PACKAGING/target_files_intermediates/rk312x-target_files-user.wintec.20180130.164651.zipbuilding image from targ
2018-01-31 10:48:12
996
原创 Ubuntu 16.04 android 5.1编译错误
硬件平台:RK3288android版本:5.11、编译遇到如下错误:libnativehelper/JniInvocation.cpp:45: error: unsupported reloc 43libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43libnativehelper/Jn
2018-01-23 16:20:47
1693
转载 Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一般我们会用到 kmalloc()、kzalloc()、vmalloc() 等,下面我们介绍一下这些函数
2018-01-23 13:08:53
563
转载 linux内核中的likely()和unlikely()宏的作用
在看linux内核代码的时候,经常会看到likely(x)和unlikely(x)宏的使用。那这两个宏有什么作用呢?这两个宏在内核中的定义如下:# define likely(x) __builtin_expect(!!(x), 1)# define unlikely(x) __builtin_expect(!!(x), 0)可见这里使用了gcc的内建函数__builtin
2018-01-23 13:06:52
542
1
原创 内核regmap机制
内核版本:3.10.92内核3.1引入了一套新的API机制:regmap,主要为I2C,SPI,IRQ等操作提供统一接口,提高代码可重用性,减少重复逻辑。以I2C为例:要让设备跟I2C通信,以前的办法是调用i2c_transfer接口,其实regmap最终还是调用到i2c_transfer,只不过中间加了一层缓冲,这样统一了接口,减少了底层I/O的操作次数。在初始化之前,要先填充r
2018-01-15 14:11:49
4109
2
原创 SC16IS752调试
硬件平台:RK3128Android版本:6.0Kernel版本:3.10.92I2C转UART芯片SC16IS752,支持I2C转接成双UART口,ttySC0和ttySC1,调试时发现,ttySC0可用,但ttySC1始终不可用,代码是kernel 3.16内核代码,后来找到原因,是因为在读写寄存器时有问题。原代码:regmap_raw_read(s->re
2018-01-15 10:48:51
3891
原创 [RK3128][Android 6.0] 3G模块调试
硬件平台:RK3128Android版本:6.0Kernel版本:3.10.92模块名:UC-15 3G模块一、驱动配置:1、添加PID,VID。修改kernel/drivers/usb/serial/option.c,添加:{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9090)}, //UC-152、上电使能:Dt
2017-12-18 16:47:40
1518
原创 [RK3128][Android 6.0] PWM backlight注册及调用流程
硬件平台:RK3128Android版本:6.0Kernel版本:3.10.92 首先来看pwm配置: pwm1: pwm@20050010 { compatible = "rockchip,rk-pwm"; reg = ; #pwm-cells = ;
2017-12-18 16:16:35
2558
原创 [RK3128][Android 6.0] u-blox GPS芯片 MAX-7Q调试记录
硬件平台:RK3128Android版本:6.0Kernel版本:3.10.92 最近调试一款gps芯片,u-blox的MAX-7Q,支持I2C及UART接口,由于UART口不够用,只能用I2C接口,之前没有接触过I2C接口的gps芯片,并且在hardware层调用I2C也是第一次接触,故记录在此。 1、在hardware目录下新建文件夹u-blox,将客户提供的hal层源
2017-12-01 16:24:36
3947
转载 [转]mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系
原文:http://blog.youkuaiyun.com/bmw7bmw7/article/details/45876487 我们先来看一个公式:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2即mipi 屏的传
2017-11-30 09:20:11
3877
原创 [RK3128][Android 6.0] RTC芯片PCF8563调试记录
硬件平台:RK3128Android版本:6.0Kernel版本:3.10.92 任务描述:Rk3128 Android 6.0平台调试rtc芯片PCF8563,本以为很容易,结果碰到一些问题,在此记录下来。 一、添加设备信息Dts中添加I2C设备: rtc@51 { compatible = "nxp,pcf8563";
2017-11-24 11:29:44
5940
原创 [RK3128][Android 6.0] 新增一个CIF Camera
硬件平台:RK3128Android 版本:6.0Kernel 版本:3.10.92本文以 gc2145 为例。一、添加驱动将要添加 camera 的驱动文件 gc2145.c 复制到 kernel/drivers/media/video/下,修改Makefile。二、添加宏定义在 kernel/arch/arm/mach-rockchip/
2017-11-22 15:36:25
2871
原创 使用adb调试串口
最近在rk3128上调试一颗I2C转UART芯片:SC16IS752,由于手上只有一块开发板,hdmi输出又搞坏了,无法连接屏幕,怎么验证调试效果呢,无奈之下用adb试试吧,果然有办法。准备工具:busybox,下载地址:https://busybox.net/downloads/binaries/ 按照自己的平台下载,我是很久之前随便下了一个,挺好用。然后:adb rootad
2017-09-14 15:03:30
9887
转载 【转】MIPI Generic和DCS指令的区别
在读/写指令时,Generic指令 是不区分 Index 和 parameter 的,而 DCS 会默认把 data0 作为Index 然后计算 parameter 数目。原文:http://blog.youkuaiyun.com/qwaszx523/article/details/62884052
2017-09-11 16:09:22
5060
原创 编译Android 7.0遇到的问题
硬件平台:rk3128Android版本:7.0kernel版本:3.10.104ubuntu版本:ubuntu 16.04一、问题描述:编译kernel时错误:/bin/sh: 1: lzop: not found解决方法:这个碰到过好多次了,安装即可:sudo apt-get install lzop二、问题描述:编译android报错Out
2017-07-27 10:28:50
2968
原创 ubuntu 16.04 samba服务器快速配置
1、安装sambasudoapt-getinstallsambasamba-common2、备份配置文件sudocp/etc/samba/smb.conf/etc/samba/smb.conf.bak3、建立共享目录mkdir /home/share添加权限 sudo chmod -R a+rwx /home/share3、添加samba用户添加用户:
2017-07-27 10:07:55
328
原创 我的vim配置
vim是相当强大的文本编辑器,下面是我的vim配置。在根目录下新建文件.vimrc,复制以下代码到该文件即可。"搜索时高亮set hlsearch" 随着键入即时搜索 set incsearch"tab 键设置4个空格set tabstop=4set shiftwidth=4set expandtab"显示当前的行号列号:set rulerset show
2017-07-25 16:59:09
240
原创 Linux下i2c设备的注册过程
在linux内核下,我们通过i2c_add_driver注册i2c设备,注册成功之后会调用我们写好的probe函数,下面就来梳理一下i2c设备从注册到调用probe的过程。注册i2c设备,传入的参数是i2c_driver结构体指针。static int __init bq24296_battery_init(void){ int ret; ret = i2c_add_
2017-07-17 15:31:29
2376
1
原创 Android HAL调用流程
此文目前为半半半成品,待完善。本文以light为例,分析android调用底层驱动的流程,今天先从LightsService开始,应用的调用部分后面再补充。平台:rk3128android版本:android 5.1内核版本:3.10一、LightsService服务源码路径:frameworks/base/services/core/java/com/
2017-07-10 16:21:24
1522
空空如也
嵌入式Linux如何获取局域网内所有设备IP和MAC?
2021-08-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人