嵌入式
文章平均质量分 89
d海阔天空
将来的你会感谢现在拼命的自己!!!
展开
-
MTK 9.0平台上zigbee_bm023模块的调试
MTK 9.0平台上zigbee_bm023模块的调试zigbee_bm023模块:默认3.3v供电为: 低电平,复位引脚 为高电平;使用uart1:节点为ttyS1操作节点:3.3v供电引脚:/sys/class/zigbee_bm023_by_elink/zigbee_bm023_by_elink/zigbee_power_gpio_control复位引脚:/sys/class/zigbee_bm023_by_elink/zigbee_bm023_by_elink/zigbee_rst_gp原创 2020-06-30 17:19:27 · 660 阅读 · 0 评论 -
不使用jni方式,为上层应用提供接口,实现led灯的开关
为上层应用提供接口,实现led灯的开关客户需求需要提供4个接口使用4个led灯的开关分析:不使用jni方式,只需要编写驱动为客户提供4个操作节点,让客户在上层通过写1或者0方式控制这4个节点实现4个灯的开关操作节点:led1:/sys/class/led_contorl_by_elink/led_contorl_by_elink/led_one_controlled2:/sys/class/led_contorl_by_elink/led_contorl_by_elink/led_two_cont原创 2020-06-30 16:09:45 · 737 阅读 · 0 评论 -
mtk 5.1版本霍尔开关驱动的调试
mtk 5.1版本霍尔开关驱动的调试1.原理当一块通有电流的金属或半导体薄片垂直地放在磁场中时,薄片的两端就会产生电位差,这种现象就称为霍尔效应2 项目要求:利用霍尔开关实现亮屏灭屏功能(盒盖灭屏,开盖亮屏)3 原理图 (中断引脚)这里看到霍尔开关的引脚对应是AG26这个引脚映射查看引脚映射看到霍尔开关的中断脚是GPIO94配置dws文件(5.1版本的只需配置dws文件不用配置...原创 2019-01-02 17:15:00 · 1870 阅读 · 0 评论 -
mtk 实际电池测试存在一些电量跳变问题,对一些由于电池特性引起的跳变
mtk 实际电池测试存在一些电量跳变问题,对一些由于电池特性引起的跳变[DESCRIPTION] 实际电池测试存在一些电量跳变问题,对一些由于电池特性引起的跳变,做如下解释。 [SOLUTION] 1. 多次连续开关机或者recovery,导致电量跳变。– 这是因为电池的特性,电池恢复回原始电压需要30min.– 多次开关机会造成电...原创 2018-12-25 17:14:44 · 2925 阅读 · 0 评论 -
mtk 使用HW_FG出现电量1x%每10s减1%快速往下掉到1%又能维持很久后才关机
mtk 使用HW_FG出现电量1x%每10s减1%快速往下掉到1%又能维持很久后才关机现象:使用HW_FG出现电量1x%每10s减1%快速往下掉到1%又能维持很久后才关机问题分析:1,对于电量1x%每10s减1%快速往下掉问题,需要校准CAR_TUNE_VALUE和调试Qmax这里不做讨论;2,如下code V_0PERCENT_TRACKING 默认值是3450mV,当bat_vol小于...原创 2018-12-25 17:13:47 · 834 阅读 · 0 评论 -
mtk 手机低电无法关机,电池容量一直显示1%
mtk 手机低电无法关机,电池容量一直显示1%[DESCRIPTION] 手机低电无法关机,电池容量一直显示1%,但是kernel log中可以看到soc = 0;vbat 已经小于3.4V。 [SOLUTION] 修改mt_battery_update_EM()函数: #ifdef CONFIG_MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIM...原创 2018-12-25 17:12:30 · 1721 阅读 · 0 评论 -
mtk平台充电器检测
mtk平台充电器检测平台:mt6735 5.1首先来看BAT_thread()。void BAT_thread(void){ static kal_bool battery_meter_initilized = KAL_FALSE; if (battery_meter_initilized == KAL_FALSE) { battery_meter_initial(); /* m...转载 2018-12-25 17:08:50 · 1056 阅读 · 0 评论 -
MTK驱动移植相关路径
MTK驱动移植相关路径一、Flash兼容bootable/bootloader/preloader/tools/emigen/MT6735/MemoryDeviceList_MT6735.xlsbootable/bootloader/preloader/tools/emigen/MT6735/MemoryDeviceList_MT6735M.xlsbootable/bootloader...转载 2018-12-25 17:06:58 · 676 阅读 · 0 评论 -
Linux设备模型——设备驱动模型和sysfs文件系统解读笔记
Linux设备模型——设备驱动模型和sysfs文件系统解读笔记原文:https://blog.csdn.net/yj4231/article/details/7799245将对Linux系统中的sysfs进行简单的分析,要分析sysfs就必须分析内核的driver-model(驱动模型),两者是紧密联系的。在分析过程中,本文将以platform总线和spi主控制器的platform驱动为例来...转载 2018-12-25 17:05:35 · 958 阅读 · 0 评论 -
MTk kernel启动流程
MTk kernel启动流程late_initcall所有的__init函数在区段.initcall.init中还保存了一份函数指针,在初始化时内核会通过这些函数指针调用这些__init函数指针,并在整个初始化完成后,释放整个init区段(包括.init.text,.initcall.init等)。 注意,这些函数在内核初始化过程中的调用顺序只和这里的函数指针的顺序有关,和1)中所述的这些...转载 2018-12-25 11:02:19 · 1278 阅读 · 0 评论 -
mtk LK流程简介
mtk LK流程简介一、LK简介Lk的主要功能:1、初始化硬件模块,比如时钟,中断,UART,USB,LCD,PMIC,eMMC等。打开MMU,使能I/D-cache,加速lk执行,显示logo、充电相关。2、从emmc的boot分区取出boot.img解压,将根文件系统(ramdisk)、zImage 加载到DRAM;3、解析dtb,写入到DRAM指定区域;4、关闭MMU、irq /...转载 2018-12-25 10:28:02 · 4332 阅读 · 2 评论 -
mtk preloader流程简介
mtk preloader流程简介一、preloader流程简介1、启动流程(1)设备上电起来后,跳转到Boot ROM(不是flash)中的bootcode中执行把pre-loader加载起到ISRAM, 因为当前DRAM(RAM分SRAM跟DRAM,简单来说SRAM就是cache,DRAM就是普通内存)还没有准备好,所以要先把pre-loaderload到芯片内部的ISRAM(Inter...转载 2018-12-25 10:19:03 · 2264 阅读 · 0 评论 -
mtk codege-----gpio口的定制
mtk codege-----gpio口的定制如果需要定制GPIO口呢,需要使用mediatek/dct/DrvGen.exe或者alps\kernel-3.18\tools\dct/DrvGen.exe工具,点击Open,选择mediatek/custom/project_dir/kernel/dct/dct/codegen.dws文件,点击Edit,将出现如图所示的一个窗口:EintMo...转载 2018-12-25 10:14:45 · 407 阅读 · 0 评论 -
mtk HL707使用的是FAN5405驱动充电ic出现电流慢慢减少到0
mtk HL707使用的是FAN5405驱动充电ic出现电流慢慢减少到01 把 电池log等级提高打印更多的log信息路径为的 \alps\kernel-3.18\drivers\power\mediatek\battery_common.c中将电池log等级提高打印更多的log信息#if defined(CONFIG_MTK_DUAL_INPUT_CHARGER_SUPPORT)#inc...原创 2019-01-08 17:33:45 · 1134 阅读 · 0 评论 -
RK3288 编译不过遇到的问题
配置ssh链接后sync 一下 执行命令repo sync -j2把源码拉下来后编译遇到一些问题mkdir rk3288_Android_7.0cd rk3288_Android_7.0repo sync -j2**## build1)u-boot build**cd rk3288-android-7.0/u-boot///./mkv7.sh表示arm是32位的 ,如果是64...原创 2019-04-01 16:21:23 · 1654 阅读 · 0 评论 -
Android 9.0 MTK8765uart串口不打印log信息
Android 9.0 MTK8765 uart串口不打印log信息mtk uart串口信息是包含pl lk kernel层log信息本次项目的包含两组uart口 uart0,uart1客户要使用uart用于通信功能1 配置好GPIO口信息1)配置dts文件查看原理图和GPIO映射表配置GPIO口信息从原理图和GPIO口映射表中可以看出uart0 Rx口是gpio20引脚,uart...原创 2019-03-28 15:37:52 · 2154 阅读 · 0 评论 -
RK3288[android 7.0]调试笔记 去掉Android 7.0设置里的电池管理选项
去掉Android 7.1设置里的电池管理选项wangxd@build-server-100:~/work/dsy/rk3288-Android-7.0/packages/apps/Settings((465d84e...))$ git diffdiff --git a/AndroidManifest.xml b/AndroidManifest.xmlindex 3578d24..828a8...原创 2019-06-27 11:39:25 · 1037 阅读 · 0 评论 -
RK3288[android 7.1]调试笔记 Android 7.1 去掉设置里状态信息中的电池状态和电池电量选项
Android 7.1 去掉设置里状态信息中的电池状态和电池电量选项diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xmlold mode 100644new mode 100755index a0b7590..ab23690--- a/res/xml/device_info_status....原创 2019-06-27 14:19:10 · 2152 阅读 · 0 评论 -
Linux内核中Makefile、Kconfig和.config的关系
Linux内核中Makefile、Kconfig和.config的关系转载 2019-06-11 17:13:13 · 322 阅读 · 0 评论 -
make menuconfig出现curses.h: No such file or directory
在 执行make menuconfig 命令下出现错误In file included from scripts/kconfig/lxdialog/checklist.c:24:0: scripts/kconfig/lxdialog/dialog.h:31:20: fatal error: curses.h: No such file or directory #include CURSES...原创 2019-06-11 17:10:40 · 1528 阅读 · 0 评论 -
RK3399Pro 8.1 编译遇到问题
mkdir rk3399protar zxvf Rk3399Pro_Android8.1_SDK_Beta_V0.1_20181225.tgz -C rk3399pro/cd rk3399pro///同步更新代码.repo/repo/repo sync -l############## Uboot build ############cd u-bootmake rk3399pro_d...原创 2019-04-02 17:58:55 · 1148 阅读 · 0 评论 -
linux下执行scp命令时,不需要输入用户密码
在两台机器的两个用户之间建立安全的信任关系后,可实现执行scp命令时不需要输入用户密码。例子:client IP:192.168.2.100server IP: 192.168.2.99实现从ip是192.168.2.99的服务器中执行SCP命令远程复制文件md5.txt到我本机192.168.2.100 客户端而不需要输入用户密码。192.168.2.99信息如下:步骤:1...原创 2019-04-02 17:56:08 · 4591 阅读 · 2 评论 -
解决/bin/sh: lz4c: 未找到命令
LZ4是一种压缩算法,解决方法如下:安装lz4:sudo apt-get updatesudo apt-get install liblz4-tool重新编译 ok解lz4文件:lz4 -d 文件名转载 2019-04-02 15:52:14 · 2239 阅读 · 0 评论 -
linux下tar解压缩文件时出现的问题
执行tar zxvf Rk3399Pro_Android8.1_SDK_Beta_V0.1_20181225.tgz -C rk3399Pro/ 命令后解压出现 gzip: stdin: unexpected end of file tar: Unexpected EOF in architar: Unexpected EOF in archiveve tar:...原创 2019-04-02 11:54:40 · 6972 阅读 · 0 评论 -
liunx压缩解压命令
liunx压缩解压命令Linux 上的压缩包文件格式,除了 Windows 最常见的*.zip、*.rar、.7z 后缀的压缩文件,还有 .gz、.xz、.bz2、.tar、.tar.gz、.tar.xz、tar.bz2文件后缀名 说明*.zip zip 程序打包压缩的文件*.rar rar 程序压缩的文件*.7z 7zip 程序压缩的文件*.tar tar 程序打包,未压缩的文件...转载 2018-12-24 14:25:58 · 578 阅读 · 0 评论 -
Android M版本中gpio几种常见设定的pinctrl配置----------dts文件配置
Android M版本中gpio几种常见设定的pinctrl配置----------dts文件配置Android M版本中gpio几种常见设定的pinctrl配置[DESCRIPTION]pinctrl的配置file是.dts备注:配置是以mt6735上gpio84举例的1.配置成输入上拉&pio {test_pull_up: test_pull_up {pins_cmd_...转载 2018-12-24 14:25:04 · 1607 阅读 · 0 评论 -
mtk 电池驱动流程详解
mtk 电池驱动流程详解充电算法,充9S停1S电池温度高于50,充电器电压为>6.5V 停止充电,充电电压最大值是6500mV 最小值是4400mV 3.4V为开机电压,电压大于3.4V才能开机 // 获得 BATSNS 引脚电压 bat_vol = battery_meter_get_battery_voltage(KAL_TRUE);/* 获得 PMIC 的 ISENSE ...原创 2018-12-19 18:34:48 · 4826 阅读 · 0 评论 -
mtk8735b 低电(电压小于3.4V)充不亮充电图标
mtk 低电(电压小于3.4V)充不亮充电图标查看log知道亮低电充电图标是在lk层MTK启动流程`bootroom(加载pl 可USB下载) ------->pl(加载lk)----------->lk(加载内核)-------->kernel(驱动(GPL认证),内核态init进程启动)--------->Android系统(Android Framework层初...原创 2018-12-19 18:23:20 · 1192 阅读 · 0 评论 -
repo Git 用法
repo Git 用法建立新分支 wangxd@buildserver-100:~/work/MTK8163_H863/alps$repo forall -c git checkout -b xxx mtk=============== 特别注意 切换分支和新建分支要先提交代码到仓库里 =====================================rep...原创 2018-12-19 17:44:43 · 405 阅读 · 0 评论 -
LINUX中的七种文件类型
在liunx下一切皆文件。 LINUX中的七种文件类型 d 目录文件。 l 符号链接(指向另一个文件,类似于window下的快捷方式); s 套接字文件; b 块设备文件,二进制文件; c 字符设备文件; p 命名管道文件; - 普通文件。l 符号链接的分类 1,硬链接 (通过设备节点inode创建的) 硬链接就是同一个文件使用了多个别名(他们有共同的 i...原创 2018-08-13 10:16:18 · 8160 阅读 · 0 评论 -
笔试题
用预处理指令#define声明一个常数,用来表示一年有多少秒?#define SENCOND_PER_YEAR (365*24*60*60)UL注意几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 3). 如果你在你的表达...原创 2018-08-11 14:39:13 · 336 阅读 · 0 评论 -
volatile变量
volatile变量的几个例子: 1) 并行设备的硬件寄存器(如:状态寄存器) 2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3) 多线程应用中被几个任务共享的变量 回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volat...原创 2018-08-11 12:05:56 · 201 阅读 · 0 评论 -
关键字static、Const、Volatile的作用是什么
程序的局部变量存在于栈(.stack)中,全局变量存在于静态区(.bss,.data)中,动态申请数据存在于堆(heap)使用(malloc函数申请内存空间)中 预处理指令#define声明一个常树,用以表明1年中有多少秒#define TIME (365x24x60x60)sc语言中的死循环 在C语言的循环中,无论是何种循环结构,都会在循环中指明退出条件,这个条件会是一个逻辑运算...原创 2018-08-11 12:05:17 · 1031 阅读 · 0 评论 -
ARM体系结构
ARM体系结构首先,ARM体系结构是ARM公司设计,并授权其合作伙伴生产的占嵌入式市场份额最大的一种RISC(精简指令集)的CPU,它具有高性能、低功耗、低成本的特点。 ARM体系结构从工作模式、工作状态,指令集几个方面简述以下ARM: ARM体系支持7种工作模式,包括系统(Sys)、未定义指令(und)、数据存取异常(abt)、 管理(SVC)、中断(IRQ)、快速中断(FIQ)、用户模...原创 2018-08-11 10:52:55 · 2677 阅读 · 0 评论 -
c 语言基础笔试题2
局部变量、 全局变量、 堆、 堆栈、 静态和全局 一个由C/C++编译的程序占用的内存分为以下几个部分 (1)栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。 (2)堆区(heap) — 由程序员分配和释放,若程序员不释放,程序结束时可能由OS回收。 (3)全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量 和静态变量...原创 2018-08-10 21:15:45 · 423 阅读 · 0 评论 -
c 语言基础笔试题1
笔试题const用法 int const *p 表示限制指针P不可变 int * const p 表示 限制p值不可变 int const * const p 表示限制指针P和 p值不可变 osi七层 网络协议osi的分层,路由器在哪一层 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 路由器在网络层 jni java本地接口 在android系统...原创 2018-08-10 21:10:49 · 18274 阅读 · 0 评论 -
linux驱动poll机制 mmap的实现 中断下半部的实现
内容:1,多路复用——poll机制的实现 2,mmap的实现 3,中断的下半部一,多路复用——poll机制的实现应用空间: #include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout); struct pollfd { ...原创 2018-08-10 18:29:13 · 651 阅读 · 0 评论 -
ioctl在内核驱动中的实现及gpio接口函数的使用, 硬件初始化----中断申请, 阻塞IO和非阻塞IO的在驱动中实现
内容:1,ioctl在内核驱动中的实现及gpio接口函数的使用 2,新的申请设备号的方法 3,分析应用程序调用底层驱动过程中几个重要的结构体 4,硬件初始化—-中断申请5,阻塞IO和非阻塞IO的在驱动中实现**一,ioctl在内核驱动中的实现及gpio接口函数的使用** 1,ioctl在内核驱动中的实现 实例: 用ioctl控制led点灯: 两盏灯同时...原创 2018-08-10 16:14:03 · 1620 阅读 · 0 评论 -
LED驱动程序的编写
内容:1,模块传参和模块调用——模块的特征 2,完整的驱动程序组成 **3,在应用空间和内核空间(驱动)之间的数据交换 ===============================================**一,模块传参和模块调用1,模块传参——-在加载模块时,同时给模块传参数1&amp;gt; 在编写代码时,需要对模块中的参数进行声明: module_par...原创 2018-08-10 14:51:08 · 2776 阅读 · 0 评论 -
一个简单的驱动程序
一个简单的驱动程序———模块框架1,基本的模块的框架 1&amp;gt;头文件 #include &amp;lt;linux/init.h&amp;gt; #include &amp;lt;linux/module.h&amp;gt; 2&amp;gt;模块加载函数和模块卸载函数 static int __init hello_init(voi原创 2018-08-10 11:54:00 · 1441 阅读 · 0 评论