- 博客(103)
- 资源 (6)
- 收藏
- 关注
原创 STM32F103V跑NuttX之一——下载nuttX及编译烧录
下载nuttX及编译1、NuttX官方链接2、NuttX及App工程下载3、编译NuttX中STM32F103V nsh测试例程4、在ubuntu下使用串口来烧录目录至STM32F103V4.1、ubuntu下stm32flash工具下载4.2、ubuntu下stm32flash工具编译及编译错误解决5、烧录nuttx.bin至STM32目标板6、重新启动系统进入NuttX shell模式1、NuttX官方链接官方门户:https://nuttx.apache.org/官方wiki:https://c
2022-04-14 10:07:07
2994
转载 Android Boot-time Readahead
Bottom line results were an approximate 5% (1.5 seconds) improvement in boot time, using readahead on only a single portion of the boot sequence. A 9% improvement was expected, given the area of the boot sequence that was optimized. So, it didn't help as m
2022-03-01 15:53:30
1109
2
原创 通过shell脚本选择ubuntu最佳更新源
相关shell脚本如下:#!/bin/bash# bionic is code of Ubuntu 18.04 if your ubuntu is not 18.04 please changeVERSION="bionic"TEST_NETCONNECT_HOST="8.8.8.8"SOURCES_MIRRORS_FILE="sources_mirrors.list"MIRRORS_SPEED_FILE="/tmp/mirrors_speed.list"#return avera
2021-07-16 16:41:40
332
转载 在linux系统中通过fw_printenv查看和设置u-boot中的环境变量
uboot下可以通过命令访问(printenv)和修改环境变量(setenv),但是如果需要在Linux系统下访问这些数据该怎么办呢?其实uboot早就帮我们想好了。1、编译fw_printenv工具source /opt/poky/environment...创建交叉编译环境。更改u-boot/tools/env/Make添加CCCC=aarch64-poky-linux-gcc -march=armv8-a -mtune=cortex-a57.cortex-a53 --sy...
2021-06-29 19:59:43
4016
转载 用户空间操作gpio出错echo: write error: Device or resource busy报错解决
使用echo 17 > /sys/class/gpio/export 时报错:-sh: echo: write error: Device or resource busy显示gpio被占用。查看占用状态:cat /sys/kernel/debug/gpio若无上述目录,则:mount -t debugfs debugfs /sys/kernel/debug
2021-06-29 19:52:59
8254
1
转载 Systemd 入门教程:实战篇
上一篇文章,我介绍了 Systemd 的主要命令,今天介绍如何使用它完成一些基本的任务。一、开机启动对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。$ sudo systemctl enable httpd上面的命令相当于在/etc/systemd/system目录添加一个符号链接,指向/usr/lib/systemd
2021-06-24 16:40:27
183
转载 Systemd 入门教程:命令篇
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。一、由来历史上,Linux 的启动一直采用init进程。下面的命令用来启动服务。$ sudo /etc/init.d/apache2 start# 或者$ service apache2 start这种方法有两个缺点。一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个
2021-06-24 16:38:42
163
转载 dlopen参数总结
void * dlopen(const char *pathname, int mode); 返回一个void *类型的handle,否则返回NULL。 pathname就是所要打开的动态库,如果这个库声明链接了其它库,即对其它库有依赖关系,那么所有相关有依赖关系的库都会被打开,这些打开的库称之为组(group)。 mode是打开方式,其值有多个,不同操作系统上实现的功能有所不同,在linux下,按功能可分为三类: 1、解析方式...
2021-03-24 20:13:15
2520
原创 ubuntu下如何查看crash日志
1、概述ubuntu下程序发生crash,有些能直接生成相应的strack日志,而有些则不行,比较jvm都挂掉的情况,这个时候就需要通过生成的crash文件生成相应的coredump,通过gdb来查看。2、ubuntu下程序crash位置在如下位置会保存crash日志/var/crash3、unpack coredumpcd /var/crashsudo apport-unpack /var/crash/_usr_lib_jvm_java-8-openjdk-arm64_jre
2021-03-24 20:12:21
5574
转载 USB:USB通信中的端点(endpoint)和四种传输模式
USB的传输模式有4种,分别是控制传输(Control Transfer)、中断传输(Interrupt Transfer)、批量传输或叫块传输(Bulk Transfer)、实时传输或叫同步传输(Isochronous Transfer)。每种传输方式都有其特点,其特点如下:端点(endpoint)端点位于USB 外设内部,所有通信数据的来源或目的都基于这些端点,是一个可寻址的FIFO。每个USB 外设有一个唯一的地址,可能包含最多十六个端点。主机通过发出器件地址和每次数据传输的端点号,向一个具
2020-11-06 10:18:09
3238
转载 Cgroup blkio简介和测试(使用fio测试)
因需要对docker镜像内的进程对磁盘读写的速度进行限制,研究了下Cgroup blkio,并使用fio对其iops/bps限速进行测试。Cgroup blkio简介Linux Cgroup(Control Groups)是Linux内核提供的用于限制、记录、隔离进程组可以使用的资源(cpu、memory、IO等)的一种机制。在/boot下面的对应config文件里查看Cgroup内核选项:CONFIG_BLK_CGROUP=yCONFIG_BLK_DEV_THROTTLING=yb
2020-10-22 17:39:39
1518
原创 Android开机优化之调整Launcher的加载时间
前言如前面两篇文章所描述的,1、Android开机速度优化简单回顾2、优化启动时间我们对Android系统的开机时间优化有了一个比较全面的了解,以及一些常用的调试手段(bootchart等),在这篇文章中我们先来看看如下这个问题,首先看一张图:如上图所示,1、在系统启动的时候,为什么像inputmethod、phone、systemUI及settings这些包加载启动的时候要比Launcher早个2秒多的时间呢?2、开机动画结束,到Launcher加载显示,这里存在一个2秒左
2020-09-21 16:24:55
4617
1
转载 优化启动时间
来自source.android.googlehttps://source.android.google.cn/devices/tech/perf/boot-times?hl=zh-cn本文档提供了有关改进特定 Android 设备的启动时间的合作伙伴指南。启动时间是系统性能的重要组成部分,因为用户必须等待启动完成后才能使用设备。对于较常进行冷启动的汽车等设备而言,较短的启动时间至关重要(没有人喜欢在等待几十秒后才能输入导航目的地)。Android 8.0 支持一系列组件的多项改进,因而可以缩短
2020-09-10 15:22:38
1264
原创 内核解析dts里面数组的方法
在内核驱动开发的时候,经常会需要在DTS里面定义数据,然后在驱动里面去解析获取相应的默认配置参数数据,这里记录一下如何在驱动代码里面去解析DTS里面的二维数据的方法。1、DTS里面数组定义二、驱动代码里面解析...
2020-09-09 10:53:57
1086
原创 存储设备IO优化向导(blkio)
1、概述虽然存储设备的恨不能在近年来一直在稳步提升,从raw nand到emmc,再到UFS都在进步,但和CPU相比它们依然是一个低俗的外设,并且IO是不可抢占的,所以应用程序在交互中等待IO会带来非常糟糕的用户体验,大部分程序员都意识到了这一点,所以绝大多数的程序尽量都会想办法改善这个问题,例如预读(readahead)和异步IO等。但是有些场景是很难规避IO的影响的。比如启动应用和本地音视频播放。如果在这两个场景中,还有其它的程序来竞争IO,那对用户体验来说可能无法接受。2、现有的优化设想有
2020-08-21 16:51:20
765
转载 Android开机速度优化简单回顾
Android的开机速度,基本上没人说快的,通常移植完系统后,马上要看的事情就是优化开机时间,以下是简单回忆以下以前做优化的那些事。开机时间都花在哪?优化开机时间,通常做的首先是那有有没有BUG,明显不合理的先解决,由于开发阶段稳定性问题,一些地方可能延时加的大,或者频率设的低,先记下来,后面定期还会再看。这些先不看的话,一般拿到机器,我们统计开机时间,主要看如下几个时间段分布:开机按键时间、亮屏时间(基本固定,除非弄错了,基本检查一遍确定) uboot启动时间 内核启动后到bootanim
2020-08-21 15:31:13
6485
2
转载 Binder Driver缺陷导致定屏问题分析
Binder Driver缺陷导致定屏问题分析引用一、背景知识点1.1 工具简介1.2 Binder简介二、初步分析2.1 问题描述2.2 初步分析三、ramdump分析3.1 结构体binder_thread3.2 binder_transaction结构体3.3 特殊的29163.4 binder_write_read结构体3.5 mOut && mIn3.6 疑难悬案四、真相大白4.1 案件侦破4.2 案卷解读4.3 总结引用本文讲解异步binder call是如何阻塞整个系统的,
2020-08-13 21:26:45
631
转载 kernel oops (Unable to handle kernel paging request at virtual address )三种内存访问异常
一、linux内核、用户空间的内存划分:如下图:32位系统内核空间划分0~3G为用户空间,3~4G为内核空间。详细请参考《Linux用户空间与内核空间》注意:内核地址空间的范围是0xC0000000 ~ 0xFFFFFFFF而对于64位系统,内核空间划分如下:ARM64架构处理器采用48位物理寻址机制,最大可以寻找到256TB的物理地址空间。对于目前的应用来说已经足够了,不需要扩展到64位的物理地址寻址。虚拟地址也同样最大支持48位支持,所以在处理器的架构设计上,把虚拟地址空间...
2020-07-27 10:28:17
18583
转载 linux中samba访问软连接文件和目录的方法
linux中samba访问软连接文件和目录的方法linux下创建连接命令:软连接: ln -s 源文件/源目录 目标文件/目标目录 (在目标位置上生成一个文件/目录的镜像,不会占用磁盘空间)硬连接: ln 源文件 目标文件 (在目标位置上生成一个和源文件大小相同的文件副本,不占用空间)无论是软链接还是硬链接,文件都保持同步变化。解决samba 无法访问软连接的问题:在配置文件的“[global]”节的最后,加上下面三条设置:follow symlinks = yeswide link
2020-06-29 21:01:12
1327
2
转载 192.168.0.1/27 表示什么
首先得明白 192.168.0.1 是个 IP 地址,更细一点的话,属于 C 类型的,后面的 /27 则表示 网络号 的长度,也叫 VLSM(Variable Length Subnet Mask,可变长子网掩码),192.168.0.1/27 属于 CIDR (无类别域间路由,Classless Inter-Domain Routing) 表述形式。IP 地址是以 点 分割为 四部分,每...
2020-03-31 21:11:03
8178
转载 Android Open Accessory 协议分析与开发
1. 背景介绍 2011年Google推出Android开放配件协议AOA(Android Open Accessory Protocol)及配件开发工具包ADK(Accessory Development Kit)。当时开源硬件和硬件创业都比较热,其中以Arduino平台为代表。Google想借着这个硬件平台开拓智能家具的市场,借此推出了AOA协议和对应的开发平台,以便打通Android手机...
2019-09-29 12:08:25
2303
转载 taskset的简单用法--进程绑核
什么是绑核所谓绑核,其实就是设定某个进程/线程与某个CPU核的亲和力(affinity)。设定以后,Linux调度器就会让这个进程/线程只在所绑定的核上面去运行。但并不是说该进程/线程就独占这个CPU的核,其他的进程/线程还是可以在这个核上面运行的。如果想要实现某个进程/线程独占某个核,就要使用cpuset命令去实现。其实,很多情况下,为了提高性能,Linux调度器会自动实现尽量让某个进程...
2019-07-30 14:58:07
3477
1
转载 adb client, adb server, adbd原理浅析
adb是什么? adb就是Android调试桥,很形象啊。 先来看adb原理的逻辑图:再来进行实际操作:我的pc的ip是192.168.1.102, 我的android手机的ip为192.168.1.1001. 在pc上执行:netstat -nao | findstr 5037发现结果是空白。2. 执行adb shell, 肯定...
2019-07-23 15:14:56
432
原创 android系统中区分UDisk和SDCard
因项目要求,需要将UDisk和SDCard挂载的名称区分开来,系统默认是将这些可移动存储设备的UUID作为其挂载的目录名称的,如下所示:818D-1319这些都是相应的移动存储器的UUID,这个目录名称在上层APP使用时让人会觉得很抓疯,所以这里通过本文的方法来修改这个挂载目录名。打开system/vold/PublicVolume.cpp这个文件,在doMount这个函数里有如下一段...
2019-02-22 18:25:45
2225
2
转载 Android设置里面默认存储器选项(default write disk)的实现
原生的Android设置里面没有默认存储器的选项,但是MTK偏偏加上了这个功能,可能MTK觉得这个比较有用吧,所以,他们在原生的基础上面做了修改,加上了这个功能。但是高通平台没有这个功能,相对MTK来说,高通比较严谨一点,不会随随便便加上一些功能,但是MTK平台优化了很多东西(有有点也有缺点),开发者这可能是很多山寨手机选择MTK平台的原因吧。 我给“默认存储器”做了一个简单的定义:一...
2019-02-15 20:24:17
789
转载 android下存储设备的使用
本文转自android官网,原文地址:https://source.android.google.cn/devices/storage1、概览1.1、存储Android 一直在不断发展,可支持各种存储设备类型和功能。所有 Android 版本均支持配有传统存储(包括便携式存储和内置存储)的设备。便携式存储是指物理介质(如 SD 卡或 USB 设备),用于进行临时数据传输/文件存储。...
2019-02-15 17:59:55
2406
转载 Linux内核中断引入用户空间(异步通知机制)
当linux内核空间发生中断后怎么使用户空间的应用程序运行相应的函数呢,当芯片有数据到来时内核会产生一个中断,但是怎样通知应用程序来取数据,以前这个问题一直困扰我很长时间,后来发现linux中有异步通知机制,在用户程序中用signal注册一个响应SIGIO信号的回调函数,然后在驱动程序中向该进程发出SIGIO信号便完成该功能,下面是该功能具体实施方法:1.在驱动中定义一个static stru...
2018-12-12 15:50:06
514
转载 android:persistent="true"相关--保证不被系统kill掉
转自:http://blog.youkuaiyun.com/zmyde2010/article/details/6756368总结:1、必须是System/app/下面的应用2、android:persistent="true"属性必须设置。3、查看方法:adb shell cat proc/进程id/oom_adj4、修改方法:write /sys/module/lowmemory...
2018-11-20 17:46:03
3642
原创 具有系统签名的APK实现APK静默安装
针对具有系统签名权限的APK(系统运用)要实现对其它第三方APK静默安装可用如下代码实现1、manifest中权限申请<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 2、实现方法public void installSilent(Context context, Str...
2018-09-28 11:11:13
1735
1
原创 android下将指定的进程/线程绑定到指定的CPU
针对平台优化的APP,需要根据具体的CPU型号来将一些任务重,占CPU资源多的线程绑定到CPU上处理能力更强的大核上,可参考如下代码:1、将整个进程中的各个线程绑定到指定CPU核#include <stdio.h>#include <stdlib.h>#include <math.h>#include <sched.h>#inclu...
2018-09-18 15:49:52
7156
转载 Android 核心技术
转至android官网https://source.android.com/devices/tech/欢迎访问本网站的 Android 核心技术部分。您可以在这里找到有关常用功能的信息,这些信息可帮助希望修改、移植 Android 软件或向其提供贡献的人员和组织。这是面向工程师的“后台级别”信息。ART 和 DalvikAndroid Runtime (ART) 是 Android 的...
2018-08-14 11:38:46
1578
转载 进程优先级
线程与进程的最大区别就是是否共享父进程的地址空间,内核角度来看没有线程与进程之分,都用task_struct结构体来表示,调度器操作的实体便是task_struct。一、 进程优先级进程可划分为普通进程和实时进程,那么优先级与nice值的关系图:优先级值越小表示进程优先级越高,3个进程优先级的概念:静态优先级: 不会时间而改变,内核也不会修改,只能通过系统调用改变nice值的方法区修改。优先级映射...
2018-07-11 15:17:00
1372
转载 一键分析Android的BugReport
在Android系统测试中,经常要抓取log,而内置的BugReport功能无异是最方便全面的。那么问题来了,BugReport包含的信息虽多,但分析起来就成了麻烦,当然觉得麻烦的不只我一个,还有space2。这位前辈为此写了一个名为chkbugreport的开源工具,可以直接把对BugReport进行分析,好吧,我的麻烦被别人解决了。同时受同事启发,把chkbugreport工具做了个强化,实现...
2018-06-14 09:17:21
3280
转载 Android让所有应用都竖屏显示或者横屏显示
1. 所有应用竖屏显示:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.javapublic int rotationForOrientationLw(int orientation, int lastRotation, boolean displayEnabl...
2018-05-08 17:23:00
6806
转载 Linux Shell 判断块设备节点是否存在
/************************************************************************* * Linux Shell 判断块设备节点是否存在 * 说明: * 能牌问shell脚本-f不能判断mmc设备节点的问题,查了一下资料,发现不能 * 使用-f来判断,要使用-e或者-b来判断才行。
2018-01-23 15:19:33
1945
转载 升级还是权谋?从USB PD 2.0到3.0
原文出处 http://www.eetop.cn/blog/html/43/n-433743.html 如同iPhone的出现,才让智能机真正主导手机市场一样,Type-C口发布后,USB PD才正式进入大众的视野。而事实上,USB PD 1.0的标准在2012年的7月份就已经发布。那个时候,USB接口是传统的TYPE-A和TYPE-B,所有的连线资源,都已经被VBUS、GND和
2018-01-09 11:46:02
8168
原创 一台电脑控制多台手机进行DDR压力测试
原创文章,转载请注明出处和作者出自:http://blog.youkuaiyun.com/xl19862005作者:Xandy使用如下bat批处理可以用一台电脑控制多台手机进行DDR压力测试@echo offset testTimeInsecond=1800set mbytes=512set threads=8@echo off echo 等待设备连接……:NOCONNECTED
2018-01-08 12:15:08
2018
转载 充电器适配器类型
充电器自动确定适配器类型,能够区分以下类型: DCP:500mA至1.5A CDP (主机或集线器):高速充电时达到900mA (啁啾期间为580mA);低速和快速为1.5A 低功率SDP (主机或集线器):100mA 大功率SDP (主机或集线器):500mA 所提供的电流支持电池充电或系统供电,或在它们之间进行分配。如果在长达10ms内未检测到
2017-12-23 17:44:43
1160
原创 将本地repo镜像推送到远程gerrit服务器
1、获取远程供应商的repo镜像repo init --mirror -u ssh://$username@$host_name:29418/manifests -b xx_branch --repo-url=ssh://$username@$host_name:29418/xx_repo -m $project_manifest.xmlrepo sync -j42、将获取的repo镜...
2017-12-18 16:34:05
4379
DTMF信号调制解调及正弦信号发生器
2014-12-25
android开机音乐DIY文件
2013-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人