
linux
苏西守护者
我希望大家都能把自己的感悟记录下来,分享出来,其实我这里做的很多别人一样做过,但是没有留下资料,非常遗憾,这样会拖累整个人类的进步的,毕竟后来者需要更快学习才能掌握更新的知识
展开
-
新路程------GDB 调试(1)
首先下载gdb-7.12.tar.gz(在我的资源中可以直接下载) 然后解压到任意目录,我解压在Document里matt@ubuntu:~$ tar -zxvf gdb-7.12.tar.gz 然后cd gdb-7.12然后matt@ubuntu:~/Documents/gdb-7.12$ ./configure在此之前我安装了texinfo,libncurses5-de原创 2017-05-24 09:54:40 · 533 阅读 · 0 评论 -
新路程------imx6 uboot环境变量的初始化(1)
今天导入lcd屏的参数,却发现屏幕显示不正常于是fbset -s看了一下当前framebuffer的参数是否正确,果然错误,也就是cmdline没有传入正确的lcd参数,所以cat /proc/cmdline查看了一下,然后需要修改cmdline。追了一下uboot中环境变量的初始化按照linux手册上的说法,环境变量定义在mx6q_sabresd.h中我们用的是lvds则原创 2017-05-05 14:21:43 · 2126 阅读 · 0 评论 -
新路程------windows虚拟机用cutecom注意事项
我的虚拟机版本是11,接上usb转串口之后发现打开cutecom没有log,奇怪了。于是看了一下虚拟机第一行的虚拟机选项里的可移动设备,那个us232r没选勾上,勾上之后还得再cutecom界面里修改Device: /dev/ttyUSB0 (这个usb要大写),重新启动板子发现log出现,ok原创 2017-04-24 14:46:02 · 1113 阅读 · 0 评论 -
新路程------编译海思代码遇到的问题
问题如下,解决方案就在问题下方,我的ubuntu版本是14.04**********************************************************************“mkimage” command not found – U-Boot images will not be builtsudo apt-get install u-原创 2017-04-10 10:49:13 · 1954 阅读 · 0 评论 -
新路程--------安装海思Hi3516A/Hi3516D SDK出现问题
搞板子首先要配置开发环境,这个编译的要求不高,所以虚拟机就可以搞定了,于是我就在windows上装了vm然后安装了虚拟机vm的版本是11,ubuntu的版本是14.04,别的我没试过,至少可以保证这两个是ok的。 然后装sdk,根据使用说明来,先copy sdk到home目录下(哪个目录应该无所谓,为了方便起见放在了home里),然后点击那个sdk.unpack,结果出问题了解决如原创 2017-04-06 12:06:29 · 5259 阅读 · 0 评论 -
8953系列----在aboot中读取boot version
在aboot.c中void get_image_version(unsigned char *buf){unsigned long long ptn = 0;int index = INVALID_PTN;char *src_ptr;char *dest_str;uint32_t ret = 0,blocksize;src_ptr = malloc(PAGE原创 2017-01-09 18:02:47 · 1277 阅读 · 0 评论 -
8953n的user获取权限以及remount
8953n的user 想要root的话 不太方便,当需要push文件到system下时,需要执行如下步骤:1. 先使用FDSS signature Unlock机台,通过此方式解锁机台,便能够获得root权限(a).在fastboot下使用 fastboot_89xx getvar cpusn ,获得CPUID(b).将该CPUID发给PM,说明需要原创 2016-12-17 16:18:50 · 2150 阅读 · 0 评论 -
msm8953-dtsi的编译
首先在/kernel/arch/arm64/boot/dts目录下有makefile文件dts-dirs += apmdts-dirs += armdts-dirs += caviumdts-dirs += qcomsubdir-y := $(dts-dirs)看看qcom文件夹下的makefiledtb-$(CONFIG_ARCH_MSM8953)原创 2016-12-13 17:26:28 · 4732 阅读 · 1 评论 -
8916系列------system reboot kernel篇
首先到sys.c中看void kernel_restart(char *cmd){kernel_restart_prepare(cmd);printk( "matt-Restarting system with command '%s'.\n", cmd);migrate_to_reboot_cpu();syscore_shutdown();if (!cmd)pri原创 2016-10-17 14:38:38 · 1289 阅读 · 0 评论 -
Ubuntu------挂载分区
首先看看自己有啥分区matthew@matthew:/etc$ df -h文件系统 容量 已用 可用 已用% 挂载点/dev/sda8 273G 61G 199G 24% /udev 3.9G 4.0K 3.9G 1% /devtmpfs 1.6G 40M 1.6G 3% /原创 2016-10-13 16:32:35 · 310 阅读 · 0 评论 -
Python系列脚本
今天看了点log,发现累的慌,写了个脚本解析一下过滤出来import stringf=file('20160923_160206_F5AZCY04F095_logcat.txt')w = open('111.txt', "w") info='distance (x,y,x_pre,y_pre)'lines=f.readlines()s=')'for line原创 2016-09-26 11:37:40 · 507 阅读 · 0 评论 -
lk里的经典c函数
lk里有很多经典的c语言函数,下面就是其中一些第一个是将char* 类型转换成unsigend long类型int isdigit(int c){ return ((c >= '0') && (c <= '9'));}int isxdigit(int c){ return isdigit(c) || ((c >= 'a') && (c = 'A') && (原创 2016-08-25 11:38:48 · 644 阅读 · 0 评论 -
android lk解读 (6)--shell环境的准备
基本上机台在开机转圈圈 的时候,shell环境就好了,那这个环境是什么时候准备的呢,下面看一看APP_START(shell) .init = shell_init, .entry = shell_entry,APP_END也是在app 里做static void shell_init(const struct app_descriptor *app){ console_init原创 2016-08-24 15:40:45 · 707 阅读 · 0 评论 -
android lk解读 (6)--panel的点亮
还记得之前的kmian函数中有个app start么,马上就有一个现成的例子也就是panel在lk中是如何点亮的首先看APP_START(aboot) .init = aboot_init,APP_END看看initvoid aboot_init(const struct app_descriptor *app){ unsigned reboot_mode = 0; boo原创 2016-08-24 14:33:44 · 3378 阅读 · 1 评论 -
android lk系列 (5)------thread 阻塞机制
之前对线程关注较少,只是简单用了api,现在看看具体的实现void thread_block(void){#if THREAD_CHECKS ASSERT(current_thread->magic == THREAD_MAGIC); ASSERT(current_thread->state == THREAD_BLOCKED);#endif enter_critical_sec原创 2016-08-23 15:55:07 · 977 阅读 · 0 评论 -
android lk解读 (4)---线程的等待执行
接下里的函数void bs_set_timestamp(enum bs_entry bs_id){ addr_t bs_imem = get_bs_info_addr(); uint32_t clk_count = 0; if(bs_imem) { if (bs_id >= BS_MAX) { dprintf(CRITICAL, "bad bs id: %u, max: %原创 2016-08-23 15:11:11 · 1204 阅读 · 0 评论 -
android lk解读 (3)------uart的初始化
接下来看void target_early_init(void){#if WITH_DEBUG_UART uart_dm_init(2, 0, BLSP1_UART1_BASE);#endif}然后看void uart_dm_init(uint8_t id, uint32_t gsbi_base, uint32_t uart_dm_base){ static uint8_t原创 2016-08-23 11:21:27 · 2023 阅读 · 0 评论 -
android lk解读 (2)
看看void platform_clock_init(void){ if (platform_is_msm8939() || platform_is_msm8929()) msm8939_clock_override(); clk_init(msm_clocks_8916, ARRAY_SIZE(msm_clocks_8916));}先判断平台然后void msm8939原创 2016-08-23 10:45:02 · 1314 阅读 · 0 评论 -
android lk解读 (1)
第二个函数void arch_early_init(void){ /* turn off the cache */ arch_disable_cache(UCACHE); /* set the vector base to our exception vectors so we dont need to double map at 0 */#if ARM_CPU_CORTEX_A8原创 2016-08-23 10:29:22 · 3167 阅读 · 0 评论 -
android lk解读
之前看过lk但是都是零散,也记不住,这次好好记录一下,就当自己的随笔看看lk的第一个函数void kmain(void){ // get us into some sort of thread context thread_init_early(); // early arch stuff arch_early_init(); // do any super early原创 2016-08-23 10:16:05 · 1842 阅读 · 1 评论 -
android linux kernel debug技术
动态调试功能就是你可以决定在程序运行过程中是否要 pr_debug(), dev_dbg(), print_hex_dump_debug(), print_hex_dump_bytes() 这些函数正常运行起来。 echo –n 'file suspend.c line 340 +p' > /sys/kernel/debug/dynamic_debug/control 让 kern原创 2016-08-16 13:56:57 · 1227 阅读 · 0 评论 -
shell脚本------aging state
#!/bin/bashnum=0adb rootadb wait-for-deviceadb remountadb wait-for-deviceadb push ZS570KL_Z016_00610010.keybox /dataadb shell syncwhile [ $num -le 30 ]doecho "==========$nu原创 2016-07-11 09:46:34 · 495 阅读 · 0 评论 -
shell系列------查看storage下有没有某个文件目录
如果某个分区mount成功,那么storage下会长出两个目录文件来,那么用脚本怎么实现呢,如下代码即可#!/system/bin/sh //要注意不同的解释器需要不同的shnum=`ls /storage | wc -l` //wc是为了获取文件里的行数if [ $num -gt 2 ]thenecho "1"elseecho "0"fi原创 2016-06-06 16:01:18 · 1029 阅读 · 0 评论 -
c tool系列------如何在C文件中获取property
找到一段代码作为以后的参考:char *propertyvalue = "no";void load_tty_properties(void){char supportDevice[PROP_VALUE_MAX];char countryCode[PROP_VALUE_MAX];property_get("ro.product.device", supp原创 2016-05-25 14:53:22 · 1250 阅读 · 0 评论 -
shell系列------循环解析脚本的参数
记录一下monkey的参数解析流程useage() { echo "useage : monkey_test [--case # ]" echo " [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]" echo原创 2016-05-25 11:25:01 · 2476 阅读 · 0 评论 -
GT9xx系列------从lk里传递gpio的value到kernel中
目前由于要针对多种屏幕,所以需要在lk里读取panel id信息传给kernel使用,也就是通过cmd line来做首先获取gpio信息lcd_id = (gpio_get(41)这里获取了当前gpio的电平状态sprintf(cmd_lcd_id, " LCD_ID=%d ", lcd_id);把值写到cmd_lcd_id里然后到Aboot.c (bootlo原创 2016-04-06 15:04:11 · 1615 阅读 · 0 评论 -
GTxxxx系列------irq电压偏低
在proting GT系列touch的时候遇到了touch的irq gpio在system 醒着的时候电压只有1.2v,正常是1.8v,于是觉得很奇怪,通常的irq gpio被配置成input,但是到底是pull up还是down还是别的状态需要ic厂商来确认,没有办法参考别的touch的配置,厂商告诉我需要配置成float+input,于是就在lk里干了先定义好要用的irq#de原创 2016-03-10 18:42:57 · 535 阅读 · 0 评论 -
kernel boot的时候如何抓取dtsi
首先在aboot.c里的int boot_linux_from_mmc(void){struct boot_img_hdr *hdr = (void*) buf;#if DEVICE_TREEstruct dt_table *table;struct dt_entry dt_entry;unsigned dt_table_offset;uint32_t dt原创 2016-03-02 16:57:32 · 2305 阅读 · 0 评论 -
快速定位是否是kl文件问题
今天调试了一下touch,发现back 和menu key都正常,但是home不能用,于是追了一下,发现可以快速定位问题在inputdispatcher.cpp里void InputDispatcher::notifyKey(const NotifyKeyArgs* args) {//#if DEBUG_INBOUND_EVENT_DETAILS ALOGD("matt-no原创 2016-03-01 17:17:49 · 1461 阅读 · 0 评论 -
GT9xx_Driver系列------如果修改config
刚把driver加入kernel,发现touch的点击报点不准,厂商给出了解决方案:将附件里对应的cfg贴到GT9xx.h里的CTP_CFG_GROUP2即可,然后我们很傻很天真的把cfg放到了h文件中,结果发现还是那个样子,于是就得看看代码到底咋回事了哦 先看h文件里的#define CTP_CFG_GROUP2 {\ } 然后看这个在哪里用了在c文件原创 2016-02-29 10:13:59 · 5518 阅读 · 3 评论 -
如何从机台中抓取数据库文件并且解析
android的数据库文件可以用sqlite3解析,首先把busybox push到机台的system/bin/目录下,然后在data目录下执行busybox find -name "*.db" 。matthew@matthew:~/Pictures$ adb rootadbd is already running as rootmatthew@matthew:~/Pictures原创 2016-01-28 10:58:00 · 711 阅读 · 0 评论 -
linux cmd 缩写的解释
ar — archive library builderbzip2 — bzip2 command for distribution generationbunzip2 — bunzip2 command for distribution checkingchmod — change permissions on a filecat — output concatenation utilitycp原创 2016-01-11 10:06:54 · 984 阅读 · 0 评论 -
如何知道tp和panel是哪个厂商
首先进setting的about里的Hardware information里头有个Touch panel version0x0A-0x61-0xb1第一个参数是机种第二个参数里包含了tp和panel对应如下到code里可以找到static unsigned char CTPM_FW_ZE550KL_GIS_TM[] = {#include "ASUS_原创 2015-12-21 14:29:15 · 1114 阅读 · 0 评论 -
i2cdetect/i2cdump 查看系统的i2c bus数量以及i2c device挂载地址
ASUS的i2cdetect tool放在device/asus/Z00L/i2c-tools目录下,用mmm device/asus/Z00L/i2c-tools就会生成相应的bin文件,push到机台的system/bin文件目录下root@ASUS_Z00L_63:/system/bin # ./i2cdetect -l原创 2015-12-01 14:03:07 · 28297 阅读 · 6 评论 -
android 在kernel中获取启动kernel命令行的参数
比如说要获取project_id这个参数首先在kernel/init目录下的main.c中int asus_PRJ_ID = 0;EXPORT_SYMBOL(asus_PRJ_ID);static int set_project_id(char *str){ printk("prj_id = %s\n", str);if( strcmp("0", str) == 0 ){原创 2015-11-13 14:20:50 · 2022 阅读 · 0 评论 -
andrid linux kernel中植入一个文件节点
如何在andrid linux kernel中植入一个文件节点 首先 #define PROC_NAME "ftxxxx-debug" static struct proc_dir_entry *ftxxxx_proc_entry; 然后 int ftxxxx_create_apk_debug_channel(struct原创 2015-10-08 14:21:30 · 1356 阅读 · 0 评论 -
ft5x06的virtual key的实现
ft5x06 virtual key的实现首先#define FT5x06_KEY_HOME 172 //:#define FT5x06_KEY_BACK 158#define FT5x06_KEY_MENU 139 //这里看/frameworks/base/data/keyboards/Generic.kl里的各个按键的定义来然后static ssiz原创 2015-09-30 11:18:01 · 1060 阅读 · 0 评论 -
kernel中创建属性并且操作
在wakeup.c中发现有wakeup_source这个property,这个property在adb shell到机台中,然后cd d进去,ls就可以看到了。 既然有现成的例子,就一样模仿一个:1.建立一个static struct dentry *xxx2.xxx=debugfs_create_file("xxx_xxx",S_IRUGO,NULL,NULL,&xxx_fops原创 2015-07-06 10:04:49 · 1036 阅读 · 0 评论 -
安卓phone对通话状态的监听
首先是register了一堆需要监听的信号 private void registerForPhoneStates(CallManager cm) { cm.registerForPreciseCallStateChanged(mHandler, PHONE_STATE_CHANGED, null); cm.registerForDisconnect(mHand原创 2015-03-13 10:59:04 · 1120 阅读 · 0 评论 -
安卓app的service里的延时问题
今天在写app的service的延时任务的时候遇到一个很蛋疼的问题,一开始我用的是thread加上handle方法 handler = new Handler(); myThread = new Thread() { public void run() { // while (true) { handler.post(refr原创 2015-03-12 16:12:02 · 1273 阅读 · 0 评论