
linux
文章平均质量分 51
丁香树下丁香花开
丁香树下,丁香花开!
展开
-
Can't find ext4 filesystem(EXT4-fs:Bad magic number in super-block)
针对目前市面上主流的android系统的嵌入式设备,都是使用的emmc的flash存储,相应的使用的是ext4的文件系统,当ext4的system分区无法挂载的时候,我们改如何分析呢?何种操作导致的ext4分区无法挂载呢? 我们出问题的设备的启动log如下:[ 1.868201@2] fs_mgr: Warning: unknown flag format[ ...原创 2019-03-11 17:43:13 · 6893 阅读 · 1 评论 -
factoryreset恢复出厂设置测试
#/bin/shrm -rf /cache/recovery/commandecho "--wipe_data" > /cache/recovery/commandecho "--wipe_cache" >> /cache/recovery/commandsyncsyncsleep 1syncsyncreboot recoveryandroid系统进入reco...原创 2018-03-30 19:36:45 · 6081 阅读 · 0 评论 -
remote测试
#/bin/shecho 1 > /sys/class/remote/amremote/debug_enablefor i in {1,2,3,4,5}do dmesg | grep scancode=0x19 if [ $? = 0 ];then dmesg | grep scancode=0x1a if [ $? = 0 ];then ...原创 2018-03-30 19:34:12 · 528 阅读 · 0 评论 -
mem内存测试
下载源码: http://pyropus.ca/software/memtester/old-versions/memtester-4.2.2.tar.gzlinux下移植参考:https://blog.youkuaiyun.com/vc66vcc/article/details/56009538android下移植参考:http://blog.youkuaiyun.com/csh86277516/article/det...原创 2018-03-30 19:30:25 · 1785 阅读 · 0 评论 -
led测试
#/bin/shfor i in {1,2,3}do echo 0 > /sys/class/leds/sysled/brightness sleep 1 echo 255 > /sys/class/leds/sysled/brightness sleep 1done循环点亮led灯,跟平台相关。原创 2018-03-30 19:24:50 · 406 阅读 · 0 评论 -
usb接口测试
#/bin/shusb_num=$(cat /proc/scsi/scsi | grep "Vendor" | wc -l)if [ $usb_num = 2 ];then echo "test usb success"else echo "test usb failed"fi判断USB接口是否有设备插入,usb_num为检查到的USB设备个数。...原创 2018-03-30 19:10:50 · 5236 阅读 · 0 评论 -
怎样配置android configfs gadgets
怎样配置android configfs gadgets 目录1.简介2.内核配置3.从安卓界面使能USB gadgets 3.1 针对AOSP的主分支 修改init.${ro.hardware}.rc 3.2 针对android-L(5.1.1) 修改init.rc 修改in...翻译 2018-03-19 17:33:26 · 5317 阅读 · 4 评论 -
android adb 流程原理代码分析(一)
由于要用到adb的知识,但是对adb啥也不了解,看了下android的代码,adb的源码在system/core/adb下面,然后网上搜下了资料,发现很多大神的源码分析,瞬间信心爆棚,把大神写的博客都浏览了一遍,然后手动运行了下adb命令,顺便跟踪了下过程,发现原来还是很好的理解,源码的各种线程创建,函数回调,对于我这种基础不咋好的,,还是看的晕晕呼呼,现在把我自己的理解给大家分享,有理解错误的还原创 2018-02-01 20:48:48 · 8659 阅读 · 10 评论 -
编译报错R_ARM_THM_MOVW_ABS_NC against `a local symbol
我们在编译动态库的时候,会遇到如下错误:/opt/gcc-linaro-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.3/../../../../arm-linux-gnueabihf/bin/ld: adb.o: relocation R_ARM_THM_MOVW_ABS_NC against `a local symb原创 2018-01-03 15:09:04 · 7464 阅读 · 0 评论 -
wifi测试
不通过android UI操作,直接命令打开wifi,测试wifi功能,适用于amlogic平台的android O之后的版本。1. hardware/amlogic/wifi/multi_wifi/config/wpa_supplicant.conf 加入:ctrl_interface=/data/misc/wifi/wpa_supplicant2.shell脚本:#/bin/shsvc w...原创 2018-03-30 19:47:22 · 3685 阅读 · 0 评论 -
button按键测试
#include <stdio.h>#include <unistd.h>#include <linux/input.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include原创 2018-03-30 19:54:15 · 1758 阅读 · 0 评论 -
wpa_supplicant-2.6交叉编译及错误解决
最近项目上需要使用wpa_supplicant与wpa_cli相关的工具测试wifi,网上百度了下,好像要下载wpa_supplicant的源码编译,虽然网上已经有人下载交叉编译过,但是每个人的编译环境不一样,那么也会遇到各种各样的问题,那么解决方法也不相同,在交叉编译过程中,也遇到了问题,记录下编译过程及解决方法。1.openssl-1.0.0交叉编译下载:https://www.open...原创 2018-05-18 20:19:26 · 4462 阅读 · 0 评论 -
linux下可执行bin程序提示not found/no such file or directory/not executable
我们经常在执行二进制bin程序时,会遇到提示not found/no such file or directory/not executable等错误信息,在什么情况下会出现这种问题呢,我们一起罗列下几种常见的几种场景:1.可执行bin程序确实不存在这个错误就比较低级了,你的可执行bin没有打包或者拷贝进来,执行的时候,自然找不到了2.可执行bin程序的路径不对我们...原创 2018-12-28 16:00:43 · 9754 阅读 · 0 评论 -
一个exfat U盘引起的systen crash
最近遇到一个奇葩的问题,客户反馈,在Android 系统的TV上,插入exfat格式的U盘,然后就system crash了,经过一系列分析后,我们找到了原因,把分析过程分享下,希望对有类似的问题的朋友参考: 由于kernel打印的信息比较多,我们截取比较重要的信息分析:这里out_of_memory了, 内存耗尽了,我们继续看看下面的打印,看看是哪个进程导致的内存消耗...原创 2018-12-06 19:59:18 · 1268 阅读 · 0 评论 -
把png图片资源转换为framebuffer可显示数据
我们都知道,我们是通过framebuffer来显示图片的,但是我们有不能直接把png图片显示到framebuffer,因为framebuffer是不能直接识别png图片的。 我们如何把一个1.png图片转换为framebuffer需要的格式呢?1. 了解framebuffer的大小# cat /sys/class/graphics/fb0/window_axis ...原创 2018-11-30 20:17:23 · 2219 阅读 · 0 评论 -
一种通过printf打印的调试程序的方法
我们在写代码的时候,有时候需要调试程序的时候,对于初学者,可以通过简单的增加printf函数打印,这样能够来跟踪程序的踪迹,举个很简单的代码:#include<stdio.h>#include<stdlib.h>int main(){ int a = 4; int b = 2; int c = 5; int d = 800; ...原创 2018-10-22 20:19:51 · 1458 阅读 · 0 评论 -
查看服务器编译android/linux后台线程个数
由于日常开发中,我们都是公用的服务器编译,这样有时服务器会变的异常缓慢,我们就需要查看下,是谁使用了大量的多线程编译: 对于编译android系统,使用的是make otapackage -j*编译:我们可以使用如下命令查看 ps -ax | grep "j" | grep "otapackage"即可查看到其他人使用的线程个数。...原创 2018-09-28 11:22:57 · 834 阅读 · 3 评论 -
sha1 sha256 md5 crc32几种摘要签名算法的效率,及实现对比及分析
sha1/sha256/md5/crc32这几种算法都是目前比较常用的摘要算法,在我们实际开发中,经常会需要使用,我们该如何选择呢,哪个算法的速度更快呢? 我们选择了一个差不多1G大小的system.img来分别计算下这四种不同的摘要信息,我们写了一个脚本来计算,更方便我们查看对比结果:date -u +%rsha256sum system.imgdate -u +%r...原创 2018-07-31 19:59:00 · 14291 阅读 · 0 评论 -
Bluez调试工具hcitool与gattool的使用实例
转载:https://blog.youkuaiyun.com/talkxin/article/details/50610984作者:PaulYoung_BlogBluez协议栈在安装完以后,会提供两个命令行调试工具,hcitool与gattool,我们可以根据提供的工具来轻松的调试我们的蓝牙设备。 当然 需要注意的是,在调试BLE设备时,需要获得root权限。蓝牙设备的开启与关闭首先,查看在使用hci工具时...转载 2018-05-30 16:55:45 · 3702 阅读 · 0 评论 -
编译出错Relocations in generic ELF (EM: 62)
今天在交叉编译libnl的时候,出错了,信息如下:编译出错aarch64-linux-gnu-gcc -L/mnt/nfsroot/frank.yu/android-O/factorytest/wifi/out/lib --static -o wpa_supplicant config.o notify.o bss.o eap_register.o ../src/utils/common.o ....原创 2018-05-18 20:16:36 · 19034 阅读 · 0 评论 -
__attribute__((constructor))和__attribute__((destructor))
gcc为函数提供了几种类型的属性,其中包含:构造函数(constructors)和析构函数(destructors)。 程序员应当使用类似下面的方式来指定这些属性:__attribute__((constructor)) // 在main函数被调用之前调用__attribute__((destructor)) // 在main函数被调用之后调12#include __attribu原创 2017-12-14 16:13:06 · 1390 阅读 · 0 评论 -
recovery&linux系统升级数据更新分析总结
毕业工作到现在,作为码农,主要的工作核心都围绕着升级展开,渐渐的对升级也有了一部分自己的认识,见解。大致总结下对升级理解及实现。有错误或者不全面的地方,还请各位多多指导。 先说说对升级的理解吧。系统升级是软件更新及BUG修复的主要方式,升级的主要原理就是数据搬移的过程,把我们需要的数据,从某个地方,更新到另外的一个地方。这个过程就叫做升级。一般是当我们系统有了新的功能增加,或者是现原创 2017-12-09 17:21:19 · 974 阅读 · 2 评论 -
Linux编程gcc编译器禁止所有警告和显示所有警告
原文出处:http://www.cjjjs.com/paper/czxt/201711222273782.html编译程序的时候,经常会出现警告。不过对于很多经过,程序员经常无视它的存在,甚至觉得警告挺烦人的。在linux编译程序时,我们可以很方便的禁止所有警告和显示所有警告。 gcc编译器命令选项-Wall 用来显示所有警告信息,而-w则用来禁止所有警告的显示。默认是显转载 2017-08-17 14:21:29 · 4211 阅读 · 0 评论 -
makefile下$^,$@,$?,$<,$(@D),$(@F)定义使用详解
每次看makefile的时候,总会遇到一些变量记不住,就需要去查找资料,今天有时间,就顺便把几个常用的变量学习了下,顺便总结了下记忆方法,感觉记住它们并不难,特把方法分享给大家。变量定义:$^所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。 $@表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,原创 2017-07-03 15:01:07 · 4444 阅读 · 0 评论 -
fatal error: linux/compiler-gcc6.h: No such file or directory
原文出处:http://blog.youkuaiyun.com/baicaiaichibaicai/article/details/60330484 作者:白菜爱吃白菜在交叉编译i.MX6UL的Kernel代码时出现这个错误CHK include/config/kernel.release Using .. as source for kernel GEN ./Makefile CH转载 2017-05-26 16:36:29 · 5854 阅读 · 0 评论 -
ubifs烧写到nand flash中的几种方法
原文出处:http://blog.chinaunix.net/uid-20729605-id-2386476.html 作者:niutao.linux折腾了好几天,突然柳暗花明,继而思之,发现原来是出门就走错了路,悲剧之余,写下此笔记,以省自己,警他人。正题,关于UBIFS的介绍在此就不多说,详见:http://www.linux-mtd.infradead转载 2017-05-26 14:40:34 · 6635 阅读 · 0 评论 -
Linux下tar bz gz等压缩包的压缩和解压
原文出处:阳光岛主 http://blog.youkuaiyun.com/ithomer/article/details/5918185Linux下用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩,本文是对压缩和解压命令的大致总结.tar.gz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf Fil转载 2017-05-05 16:38:41 · 1977 阅读 · 0 评论 -
基于mtd的nandflash的擦写nanderase与nandwrite
对于nand平台更新,我们有两个常用工具可用,一个是nanderase擦除的命令,一个是nandwrite写数据的命令,我们先了解一下nand的基本特性。 Nand flash只有一种操作,就是把1写为0,不能把0写为1,所以我们在写入之前,先要把所有的位置1,也就是擦除动作。Nand擦除是以block块大小为最小单位,写入是以page页为最小单位。 由于工作需求,需要封装原创 2017-05-24 17:06:03 · 13010 阅读 · 0 评论 -
fread fwrite之后文件指针位置
在调用fread fwrite之后,文件指针,会根据读写的长度,相应的往后偏移:#include #include #include int main() { char *tmp = "hhhh"; FILE *p = fopen("aa.txt", "r+"); char *buf = (char *)malloc(128); fread(buf, 1原创 2017-04-28 12:43:06 · 15672 阅读 · 0 评论 -
linux 静态库的链接 undefined reference
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(转载 2017-04-12 18:19:56 · 5603 阅读 · 1 评论 -
linux下执行bin不加./怎么直接运行
在linux平台下,我们编译的可执行bin文件,如果需要运行,则直接./test 即可运行, 如果我们不想加上./怎么直接运行test这个bin呢? 我们先来分析下这个./test是啥意思,首先test是可执行bin的名字,./表示是当前目录,那么简单了,其实./就是告知test的路径。 我们可以echo $PATH, 可以查看当前设置的环境变量,我们吧test的路原创 2017-08-14 14:07:24 · 12772 阅读 · 0 评论 -
dd 命令详解
dd命令是Linux/Unix下的一个很常见的文件拷贝工具。我们先列下dd命名的常用的参数,再详细分析: bs=BYTES read and write up to BYTES bytes at a time cbs=BYTES convert BYTES bytes at a time conv=CONVS convert the原创 2017-08-25 19:17:12 · 7257 阅读 · 0 评论 -
嵌入式 Linux 软件更新机制及架构汇总
原文链接:http://os.51cto.com/art/201610/519221.htm 作者:Michael Larabel 原文标题:概览最有前景的下一代嵌入式 Linux 软件更新机制 多个 Linux 软件商使用增量原子更新方式来传递更可靠的发行版更新,通过二进制差异实现更小体积的更新,假如出现意外状况也运行回退。这些新的发行版升级机制包含了 SWUp转载 2017-09-14 11:15:50 · 2180 阅读 · 0 评论 -
linux下使用diff制作补丁,使用patch打补丁
我们使用diff命令制作补丁,使用patch命令打补丁。(1)对单个文件操作,例如有如下两个源文件: test1.c:#include #include int main () { int a = 1; printf("value a: %d\n", a); return 0;} test2.c:#include #incl原创 2017-10-11 15:14:05 · 824 阅读 · 0 评论 -
linux下查找bin依赖的动态库之readelf使用
有时候我们需要查找可执行程序的依赖的动态库,我们可以使用readelf,废话不多少,直接上例子:kevin.yu@droid11-sz:/mnt/nfsroot/kevin$ readelf -d /bin/ls | grep "Shared library" 0x0000000000000001 (NEEDED) Shared library: [libselinu原创 2017-09-22 16:20:44 · 5817 阅读 · 0 评论 -
linux下查找bin依赖的动态库之ldd使用
ldd是什么?ldd如何使用?ldd什么场景使用? 本文尽量的把上面的上个问题解释清楚,有理解不到位的地方还请多多指正。 ldd是什么? ldd不是命令,是一个shell脚本,保存路径/usr/bin/ldd,可以直接cat或者vi查看具体的实现。 ldd的全称是list dynamic dependencies,意思是,列出动态库依赖关系,我们原创 2017-09-22 15:51:33 · 4508 阅读 · 0 评论 -
ubootenv工具fw_printenv及配置文件fw_env.config
原文出处:http://blog.youkuaiyun.com/qq_29729577/article/details/50580727希望朋友们多多指点,好的技术或心得一起分享: uboot向kernel传参机制以及kernel如何解析cmdline参数大家可以参考其他前辈的博文,这方面的讲解十分详尽。 在这里我总结以下自己在uboot自定义一个参数并从kernel中取得的方法:转载 2017-10-09 17:36:07 · 6379 阅读 · 0 评论 -
ubifs分区挂载及信息查看
ubi挂载操作:(1)格式化ubi分区 ubiformat /dev/mtd* 格式化mtdblock*(2)与ubi建了连接 ubiattach /dev/ubi_ctrl -m * mtdblock*与ubi建立连接(3)创建volume ubimkvol /dev/ubi* -s 100MiB -N my_ubi_vol 在ubi原创 2017-10-17 19:25:22 · 6151 阅读 · 0 评论 -
Makefile编译时怎么打印出变量值
1、输出打印信息的方法是:$(warning xxxxx)2、输出打印变量值的方法是:$(warning $(XXX))转载 2017-09-25 19:43:08 · 1368 阅读 · 0 评论 -
open函数返回值为0
open函数是我们开发中经常会遇到的,这个函数是对文件设备的打开操作,这个函数会返回一个句柄fd,我们通过这个句柄fd对设备文件读写操作。 我们在对这个fd作判断的时候,经常会用到: fd = open(filename, O_RDONLY); If (fd Printf(“open %s error!\n”, fi原创 2017-08-30 15:07:26 · 25772 阅读 · 0 评论