- 博客(66)
- 收藏
- 关注
原创 AOSP与Ninja
AOSP与NinjaAndroid N中,使用了ninja作为整个AOSP的编译工具build/core/config.mk通过包含clang/versions.mk和clang/config.mk确定CLANG_CXX = /prebuilts/clang/host/linux-x86/clang-2690385而main.mk中包含了ninja.mk,该文件确定KATI_CXX和MA...
2020-12-26 11:48:37
804
原创 Andoid NDK编译分析
MSM8909交叉工具链使用:LittleKernel : prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/Kernel : prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/Framework : clang+llvmClang的发展libc++.so是针对Clang编译器特别重...
2020-12-26 11:48:29
615
原创 CMake使用例子
目录结构.├── armgcc.cmake├── build│ ├── build_all_debug.sh│ ├── build_all_release.sh│ ├── clear.sh│ └── readme.txt└── CMakeLists.txtCMakeLists.txtcmake_minimum_required(VERSION 2.8)#AD...
2020-12-26 11:48:20
483
原创 JNI接口
JNI接口1.使用JNIEXPORT、JNICALL和包名限定native方法,这样jvm在加载so的时候,能够找到对应的成员方法JNIEXPORT void JNICALL Java_com_midea_xiexb4_nativetest_JniUtil_getStringFromJNI (JNIEnv * env, jobject obj);如果对包名路径或者参数不熟悉,可以先编...
2020-12-26 11:44:14
934
原创 Android下Java语法点
非静态匿名内部类会保留外部类的引用,可能会导致外部类(如Activity)内存不能正常回收,解决方法:1.使用非匿名类private Handler handler = new Handler(new Handler.Callback() { public boolean handleMessage(Message msg) { if (msg.what == 1) {...
2020-12-26 11:38:32
192
原创 MSM下LCM驱动
MIPI相关知识D-PHY的物理层支持HS(High Speed)和LP(Low Power)两种工作模式HS模式:低压查分信号 功耗大 高速率(80M -1Gbps) 信号幅值(100mv-300mv)LP模式:单端信号 功耗小,速率低(< 10Mbps) 信号幅值(0-1.2V)在高速模式下,通道状态是差分的0或1,定义P比N高时定义为1,P比N低时定义为0,此时线上典型电压为差...
2020-12-26 11:37:22
259
原创 MSM下串口扩展wk2114
wk2xxx_probe setup_timer(&rx_timer, timer_function, 0); timer_function //每2s统计一次接收字节数 uart_register_driver alloc_tty_driver tty_set_operations //初始化操作函数为serial_core.c中的uart_ops,设置波特率9600,...
2020-12-26 11:36:57
820
原创 AndroidStudio使用技巧
1.添加第三方so或者jar库1.1 直接将so或者jar放置在/src/main/jniLibs目录1.2 将so或者jar放在/app/libs目录,并且在app/build.gradle的android根节点下添加sourceSets { main { jniLibs.srcDirs = ['libs'] }}这种方法程序安装完,so会自动添加到a...
2020-12-26 11:36:22
249
原创 Linux的硬件实时性
1.任务的实时性Linux内核(linux-2.6以前) 是不可抢占的,但支持用户抢占它的调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度。非自愿的强制性调度只能发生在每次从系统调用返回的前夕以及每次从中断或异常处理返回到用户空间的前夕(这种强制性调度又叫用户抢占)。但是,如果在系统空间发生中断或异常是不会引起调度的。这种方式使内核实现得以简化。Linux内核(linu...
2020-12-26 11:34:42
316
原创 MSM下pinctrl笔记
参考文档:Documentation/pinctrl.txtDocumentation/devicetree/bindings/pinctrl/pinctrl-bindings.txtDocumentation/devicetree/bindings/pinctrl/msm-pinctrl.txtinclude/linux/pinctrl/pinconfig-generic.hmsm_t...
2020-12-26 11:33:11
375
原创 Python语法
1.基本语法1.1 下横线开头的函数如_init代表不能直接访问的类属性,不可通过from xxx和import *导入,需通过类提供的接口进行访问1.2 双横线开头的函数如__init代表类的私有成员1.3 前后双横线为特殊方法的专用标志,比如 __ init__() 代表类的构造函数1.4 Python的代码块不使用{},使用缩进来写模块,相同代码块必须使用相同的缩进空白数1.5 每...
2020-12-07 19:03:16
255
原创 C++语法点
函数1.带默认形参值的函数,默认形参值必须按从右向左定义,实参从做到右初始化int add(int x, int y=5, int z=6){} add(1); //y和z使用默认形参值默认形参值可以通过函数声明在不同作用域中设置不同的值2.函数模板template <typename T>函数定义eg:template <typename T>T ...
2019-08-18 23:45:17
482
原创 Linux内核常用API
参考书籍:嵌入式Linux驱动开发教程(华清远见 姜先刚 刘洪涛)1.模块驱动1.1 modulemodule_init(xxx)module_exit(xxx)MODULE_LICENSE(“xxx”)MODULE_AUTHOR(“xxx”)MODULE_DESCRIPTION(“xxx”)MODULE_ALIAS(“xxx”)1.2 module parammodule_p...
2019-08-04 22:23:02
1416
原创 JAVA语法点
运算符op1 instanceof op2 :当op1指示的对象或数组属于op2给出的引用类型,运算结果返回true比如“Hello” instanceof String 返回truefinal作为常量修饰符数组在Java中,数组是一个动态创建且属于Arrays的类对象,因此它又属于引用类型,数组一旦创建长度不可修改,变长数组需要使用ArrayListint[] myArray;或者 ...
2019-07-21 22:48:10
265
原创 GitLab安装与使用
使用清华镜像服务器进行下载,可以参考https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/首先信任 GitLab 的 GPG 公钥:curl https://packages.gitlab.com/gpg.key 2&amp;amp;amp;amp;amp;amp;gt; /dev/null | sudo apt-key add - &amp;amp;amp;amp;amp;amp;amp;&amp;
2019-02-02 10:27:55
394
原创 常用技巧
1.define中的#和## #是将后面的内容进行串化; ##是连接两串字符,形成新的字符串; 详见https://zhidao.baidu.com/question/425382312987430932.html 2.二级串化,可以将数字宏定义转化为字符串,详见: http://blog.youkuaiyun.com/happen23/article/details/50602667
2019-01-26 15:48:28
168
原创 Android应用反汇编
一般的apk重命名为.zip后打开,可以看到根目录下有class.dex和class.odex(对class.dex进行优化后的可执行代码) 使用一些工具,可以将odex去优化成dex,dex文件可以通过反编译成jar,再通过工具可以将jar转换成java。1.一般的apk可以使用smali2java进行反汇编查看; 2.有一些apk使用了混淆编译,可以使用 安卓逆向助手 进行反编译,编译成sm
2017-03-17 18:02:00
1175
原创 Android源码下device目录的分析
一般源码的编译前都会执行lunch命令,选择编译目标: source build/envsetup.sh lunch BUILD_BUILDTYPE 其中BUILDTYPE可以为user、userdebug、eng,排行越靠后,调试信息越多,权限越大,而其中的BUILD编译目标就是build目录下产品配置信息决定的。vendorsetup.shbuild目录一般结构为: build-> co
2017-03-17 17:04:07
7931
原创 网络协议栈相关
TCP/IP相关常用调试cmd: ping 不解释 routert 查看路由表 arp -a 查看ARP表各数据帧包头长度 以太网包头(MAC地址): 14Bytes IP包头: 20Bytes+0 TCP包头: 20Bytes+0三次握手 发起端发送SYN包与自己的ISN(初始序号)
2017-02-23 22:40:31
661
原创 程序的路径
编译路径 通过-I制定头文件绝对路径,-L制定动态库路径 -l指定使用的库名,可以在系统默认库路径(/lib、/usr/lib、/usr/local/lib)或者-L指定路径中查找 运行时路径 编译时使用-Wl,-rpath可以为目标程序指定运行时的额外库路径 vim /etc/ld.so.conf 可以编辑动态库运行时查找路径,修改后,sudo ldconfig刷新系统查找路径 当上述
2017-02-23 22:29:49
709
1
原创 Linux下的内存分配方式简述
1.内存的最小单位为页(4KB),在此基础上使用“伙伴系统算法”协助管理不同连续长度的内存段,将1,2,4,8,16,32,64,128,256,512和1024个连续页框的页框块分类管理。 2.在伙伴系统上还有slab协助内存管理,其原理大致为,先统一获取大内存段并且切割分配,当用户需要特定大小内存的时候,从其中取出初始化好的内存返回。 3.各种api函数: 3.1 alloc_pages,
2017-02-16 18:09:20
1147
原创 Android常用修改
1.设置系统默认语言 1)进入build/target/product目录,修改文件core_base.mk的PRODUCT_PROPERTY_OVERRIDES 值,例如,欲修改为默认中文,则增加语句如PRODUCT_PROPERTY_OVERRIDES := \ro.config.notification_sound=OnTheHunt.ogg \ro.config.alarm_al
2016-12-19 11:17:45
3714
1
原创 Android 调试
打开调试信息 #define LOG_TAG “AndroidRuntime” #undef NDEBUG //打开LOGV/LOGI/LOGD #define LOG_NDEBUG 0 //打开LOGV,为1时表示禁止 #define LOG_NIDEBUG 0 //打开LOGI,为1时表示禁止 #define LOG_NDDEBUG 0 //打开LOG
2016-12-19 11:17:26
802
原创 RK驱动小结
1.摄像头 ①rk3128_cif_sensor.dtsi中有“rockchip,sensor”的设备描述符,主要描述IIC地址、通道、cif时钟频率等等信息; rk312x.dtsi中有”rockchip,cif”的设备描述符,主要描述rk312x的时钟名、中断号等; ②rk_camera.c中主要就是“rockchip,sensor”和”rockchip,cif”的驱动,其中rk_dts
2016-12-19 11:12:44
5478
原创 Qt5环境搭建
Windows下的Qt Creator安装1.首先登陆Qt官网下载页面,https://www.qt.io/download/,不用理会页面前面的“Get Started with Qt”问卷调查,直接拖动滚动条到页面中部,可以看到有两个分支: 左面的是应用软件开发的环境,Embeded Qt的应用程序开发也属于这个分支;右边的是专门为设备定制开发的环境,这个是只有商业付费版的,显然我们
2016-12-19 11:12:12
524
原创 Linux启动脚本执行顺序
1.一般内核启动后。①先识别存储器分区,根据root=/dev/block/mtd/mmcblk0p6这样的的参数挂载文件系统 ②运行文件系统中的init=/sbin/init执行启动脚本 ③一般这个时候脚本中可能会有分区识别脚本,将分区再识别一次,或者重新挂载nfs(当然,直接在root=nfs,让内核去挂载网络文件系统也是可以的)2.一般Linux的RunLevelLinux系统有7
2016-12-08 23:23:10
3021
原创 Android镜像与启动流程
对于RK平台上电提供了2K自动搬运到SRAM的机制,方便初始化DDR,并且进行后续代码引导,同时厂商还提供了一级boot(MiniLoader),方便从nand启动:MiniLoader.bin(单独更新Loader的时候,需要连parameter.txt一起更新)rk312x.parameter.txt(记录了单板ATAG、CMDLINE、分区信息等,Uboot从中获得信息传递给Kernel)ub
2016-12-08 23:21:42
2248
原创 Shell脚本常见问题
1.定义变量时, =号的两边不可以留空格. eg: gender=femal————right gender =femal———–wrong gender= femal———–wrong2.条件测试语句 [ 符号的两边都要留空格. eg: if [ $gender = femal ]; then——-right. echo “you are femal”; fiif[ gender…
2016-12-05 21:10:37
771
1
原创 设备树相关知识
先参考: http://blog.youkuaiyun.com/21cnbao/article/details/8457546后续自行补充:
2016-10-19 18:03:06
466
原创 SQLite中的SQL
常规语法字符串常亮建议使用单引号,虽然支持双引号; 二进制数据使用(x‘0fff’)这样的十六进制形式; 注释建议使用(– This is comment),虽然支持C段注释(/* This is comment */);DDL表的创建 create [temp] table table_name (column_definitions [,constraints]);其中
2016-09-25 22:24:17
583
1
原创 SD卡移植
首先在mach-mini6410.c中添加sdio控制器:static struct platform_device *mini6410_devices[] __initdata = { &s3c_device_hsmmc0, &s3c_device_hsmmc1,};同时,由于我们的开发板硬件上面的hsmmc0接口连接的是SD卡,而SDIO WIFI连接在hsmmc1上面,但是根
2016-09-07 15:12:21
709
原创 dhcp的安装与使用
dhcp的编译安装解压源码:tar zxvf dhcp-4.2.5-P1.tar.gzcd dhcp-4.2.5-P1/配置:./configure --host=arm-linux ac_cv_file__dev_random=yes修改Makefile:cd bindvim Makefile +55添加配置 :./configure BUILD_CC=gcc ac_cv_file__dev_
2016-09-07 10:43:23
2185
1
原创 Hostapd的安装与使用
hostapd编译安装:解压源码包:tar zxvf hostapd-2.0.tar.gzcd hostapd-2.0/hostapd/cp defconfig .config修改配置文件:vim .config加一行: CONFIG_LIBNL32=y修改Makefile vim Makefile将ifdef CC=gccendif改成CC=arm-linux-gccmakemak
2016-09-07 10:35:57
8092
1
原创 Mdev 热插拔
inittab: 调用rcS { rcS: mount -a 挂载fstab中的文件系统(dev、sys等) { fstab: 挂载 /dev /proc /sys
2016-09-06 21:34:02
832
原创 wpa-supplicant安装与使用
libopenssl安装tar xzvf openssl-1.0.1d.tar.gzcd openssl-1.0.1d/./config shared no-asm --prefix=$PWD/tmp修改Makefile:CC= arm-linux-gccAR= arm-linux-ar $(ARFLAGS) rRANLIB= arm-linux-ranlibNM= arm-linux
2016-09-06 14:42:03
3889
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人