嵌入式学习
文章平均质量分 62
JianqunXu
驱动自己,驱动人生
展开
-
Linux Pinctrl
在求量的心态下,我同时兼职了pinctrl的工作,从开始的头疼到后来的游刃有余,直到今日...Pinctrl是对SoC的所有IO pin的管理,包括IO的复用(MUX)、IO的配置(Config)以及IO的通用功能(GPIO)。SoC的ballmap可以看到,除了电源、地、特定功能脚之外,还有很多的IO pin,他们分散在各个电源域,并且在芯片设计阶段已经被规划好了各种复用场景,而pinctrl驱动做的就是让各个模块驱动很简洁地完成复用配置,完成IO配置(如驱动强度、上下拉、斯密特触发器、边沿速率)原创 2022-01-29 13:59:34 · 1615 阅读 · 0 评论 -
Linux内存分配、内存管理的一点分享
五年前从待机及功耗中,被迫接触ION(Android的内存分配接口)一直不觉得有资格写分享文档。今天是公司春节假期第一天,我搬回到这十年前位置,公司四周依旧如初那样空无一人,回荡的是键盘的声音。...先大概写能记得的,年后来完善...1. ION最早期的ION我不及的很清楚,开始的时候更多是在适配接口,看到的是内核这部几个heap name,heap id,连框架我都没想明白。真正认识ION的时候,是内核4.19版本(Android 9?)的时候,ION做大幅度修改,我才从这个删除过程看到I原创 2022-01-29 13:18:19 · 3810 阅读 · 1 评论 -
视频解码和硬解码
首先视频都是有经过编码的,为什么要编码呢?因为视频信号数字化后带宽很高,通常在20M/S以上,计算机很难对之进行保存和处理。为了减小带宽即减小视频数据量,需要对视频进行压缩,压缩过程即叫做编码。那么在播放的过程中需要把数字信号转化为模拟信号,这个过程就叫做视频解码。视频编码分为三个步骤:动态补偿,正余弦变换和熵(Entropy Encoding)。相应的视频解码就是视频编码的反过程。转载 2013-11-12 11:45:16 · 4654 阅读 · 0 评论 -
Ubuntu 12 下构建模拟TPM环境
Ubuntu 12 下构建模拟TPM环境1.安装CMake下载网址:http://www.cmake.org/我下载的版本是cmake-2.8.8.tar.gz解压:#tar -zxf cmake-2.8.8.tar.gz安装:(1)#cd cmake-2.8.8 (2)#./bootstrap (3)#make (4)#mak原创 2014-04-01 11:06:28 · 8132 阅读 · 1 评论 -
Linux 3.14 待机流程分析
内核不断在升级,从内核3.0开始分析待机流程,最近在3.14检查待机方面问题,发现流程有一些改进这篇文章就是着重在改进部分的分析原创 2015-06-12 15:35:23 · 5075 阅读 · 0 评论 -
Linux reserved memory分析
Linux需要预留内存,满足设备对连续物理内存,已经有一套reserved-memory原创 2017-11-17 15:39:10 · 10747 阅读 · 0 评论 -
CMA debug
学习CMA,Linux kernel有个很好用的CMA DEBUG,本文介绍它的使用方法1. 代码位置CMA DEBUG文件位置在mm/cma_debug.c;Linux kernel默认是关闭,需要打开CONFIG_CMA_DEBUG=y CONFIG_CMA_DEBUGFS=y2. 代码解读很常见的是以late_initcall(cma_debugfs_init原创 2017-11-28 09:43:12 · 2418 阅读 · 0 评论 -
ion_mmap
ion_mmap: buffer->heap->ops->map_user(buffer->heap, buffer, vma);-> struct ion_heap_ops ion_cma_ops: .map_user = ion_cma_mmap,-> ion_cma_mmap: dma_mmap_coherent(dev, vma, info->cp...原创 2018-02-23 11:15:30 · 878 阅读 · 0 评论 -
函数解读:ioremap / ioremap_nocache / ioremap_wc / ioremap_wt
arch/arm/include/asm/io.h#define ioremap(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))#define ioremap_nocache(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))...原创 2018-06-08 09:47:35 · 10826 阅读 · 0 评论 -
常用命令
查看分区内存使用情况df循环拷贝目录下所有文件for i in `ls /mnt/sdcard/music/`do busybox dd if=/mnt/sdcard/music/$i of=/mnt/sdcard2/mus原创 2013-10-07 10:52:07 · 2318 阅读 · 0 评论 -
Android 自带 apk 的查看与删除
1、启动Android模拟器2、运行dos,我的android是放在F盘,所以输入 F:,然后enter3、输入adb shell,以#开始,可以输入命令4、找到apk所在目录# cd system/app # ls可以看到所原创 2011-08-19 16:23:37 · 3485 阅读 · 0 评论 -
arm-linux-gcc-4.3.2安装配置
<br />1.arm-linux-gcc-4.3.2下载地址:<br /> (http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.3.2.tgz)<br /><br /><br /><br />2.<br /><br /><br /> <br />Arm-linux-gcc-4.3.2安装步骤:<br /> <br />1.关于这个编译好的工具的安装:<br /> <br />下载arm-linux-gcc-4.3.2.tgz大约84m<br /转载 2011-04-20 09:49:00 · 2443 阅读 · 0 评论 -
./HelloWorld line 1: syntax error: "(" unexpected问题解决
<br />在pc机上编译的程序,linux下执行时出现了这个错误:<br /><br /><br />#./HelloWorld<br />./HelloWorld line 1: syntax error: "(" unexpected<br /><br /><br />这个错误是由于编译程序所使用的编译器是gcc,使用gcc编译的程序可以在pc机上运行而不能在开发板上运行;<br /><br />而要想程序在开发半上运行就需要使用编译器arm-linux-gcc进行编译<br /><br /><br原创 2011-04-20 09:15:00 · 10809 阅读 · 0 评论 -
包含子目录的makefile例子
最近在看makefile和gcc方面东西,对于庞大的多级目录文件系统,如果要生成一个可执行文件,需要很好掌握包含子目录的makefile的写法#=============================================# 下面是 testmake/makefile 文件内容#=============================================SOURCES = $(wildcard *.c)#当前目录下所有.c为源文件OBJS = $(patsubst %.c, %.o原创 2011-04-21 20:12:00 · 15098 阅读 · 2 评论 -
property_get/property_set
<br />每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。<br /> <br />在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system/init。“init”守护进程将启动一个属性服务。<br /> <br />属性服务在“init”守护进程中运行。每一个客户端想要设置属性时,必须连转载 2011-04-26 09:42:00 · 73271 阅读 · 7 评论 -
getopt_long(argc, argv, "", OPTIONS, NULL)分析
static const struct option OPTIONS[] = { { "factory_test", no_argument, NULL, 'f'+'t'}, { "send_intent", required_argument, NULL,原创 2011-08-02 11:09:03 · 2348 阅读 · 0 评论 -
JDK not found on Installing Android SDK
安装Android SDK的时候,会看到错误提示“Java SE Development (JDK) not found”,但是明明已经安装了好几遍JDK了!!这是在64bit win7的一个问题,系统注册表项并没有正确识别到JDK所在目录,修改注册表项就行了原创 2011-08-02 08:45:31 · 3389 阅读 · 1 评论 -
AudioHardware::AudioStreamOutALSA::write
以数据为导向,分析代码,音频流程ssize_t AudioHardware::AudioStreamOutALSA::write(const void* buffer, size_t bytes){ // LOGV("AudioStreamOutALS原创 2011-09-06 15:30:42 · 3843 阅读 · 0 评论 -
AudioFlinger::MixerThread::threadLoop
1、进程的创建int AudioFlinger::openOutput(uint32_t *pDevices, uint32_t *pSamplingRate,原创 2011-09-05 19:57:59 · 7676 阅读 · 1 评论 -
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start'问题解决
<br />自己写了一个简单的hello.c<br /> <br /> <br />#include "stdio.h"<br /> <br /> <br />void<br />hello (const char * name)<br />{<br />printf ("Hello, %s!/n", name);<br />}<br /> <br />$gcc hello.c<br />就会出现/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1原创 2011-04-19 14:47:00 · 36405 阅读 · 1 评论