11 2019 档案
摘要:1、前言 CoM-P6UL是盈鹏飞科技有限公司基于NXP原厂I.MX6UL芯片生产研发的核心板,本文将对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码的过程进行介绍。 2、开发环境 目标板:CoM-P6UL(RAM:256MB,Nand Flash:256MB) 主机
阅读全文
摘要:1、修改板级文件 $ cd AOSP $ vim device/qcom/msm8909/BoardConfig.mk 如下所示: 2、修改defconfig文件 $ cd kernel/arch/arm/configs/ $ vim msm8909_defconfig or $ vim msm89
阅读全文
摘要:1、前言 原子操作指的是该操作不会在执行完毕之前被任何其它任务或事件打断,它是最小的执行单位,不会有比它更小的执行单位,原子实际上使用了物理学中物质微粒的概念,在Linux内核中,原子操作需要硬件的支持,和架构相关,使用汇编语言去实现,它在Linux内核中主要应用于资源的引用计数 2、原子操作 3、
阅读全文
摘要:1、前言 众所周知,Linux系统是一个多任务的操作系统,当多个任务同时访问同一片内存区域的时候,这些任务可能会相互覆盖内存中数据,从而造成内存中的数据混乱,问题严重的话,还可能会导致系统崩溃。 2、相关概念 了解一下Linux内核中并发与竞态的相关概念,如下: 并发与竞争:并发指的是多个执行单元同
阅读全文
摘要:1、前言 在嵌入式Linux开发中,对嵌入式SoC中的GPIO进行控制非常重要,Linux内核中提供了GPIO子系统,驱动开发者在驱动代码中使用GPIO子系统提供的API函数,便可以达到对GPIO控制的效果,例如将IO口的方向设置为输入或输出,当IO口的方向为输入时,可以通过调用API函数获取相应的
阅读全文
摘要:1、前言 Linux内核中的定时器是一个很常用的功能,某些需要周期性处理的工作都需要用到定时器。在Linux内核中,使用定时器功能比较简单,需要提供定时器的超时时间和超时后需要执行的处理函数。 2、常用API接口 在Linux内核中使用全局变量jiffies来记录系统从启动以来的系统节拍数,当系统内
阅读全文
摘要:1、前言 在Android开发中可能会遇到添加新的按键的需求,本文将简单介绍如何在Android系统中完成一个新的按键的添加。 当系统有新的按键需要添加时,Linux内核下的键码到Android系统中键码是如何进行转换映射的? 2、内核添加设备节点 首先,我们需要在Linux内核添加新的按键值,在L
阅读全文
摘要:1、前言 Android系统使用HAL这种设计模式,使得上层服务与底层硬件之间的耦合度降低,在文件: AOSP/hardware/libhardware/include/hardware/hardware.h 中描述了HAL的编写规范,并且给出了标准接口,本文将通过一个简单的实例讲解HAL的编写。
阅读全文
摘要:在Linux内核中,设备树节点中的status属性的值决定了是否开启设备,当status属性没有在设备节点中定义时,默认设备是开启的。 关于设备树节点中status属性的处理的代码位于drivers/of/base.c文件中,有两个函数,如下所示: /** * __of_device_is_avai
阅读全文
摘要:1、前言 Android系统硬件抽象层(Hardware Abstraction Layer),简写为HAL,是连接Android Framework与Linux内核设备驱动的重要桥梁。HAL存在的意义有以下两个方面: (1)HAL层屏蔽掉不同硬件设备的差异,为Android提供了统一的设备访问接口
阅读全文
摘要:1、前言 Android系统中,应用程序一般是使用Java语言进行开发的,但是通过C语言也可以进行Android中的可执行程序开发,接下来,将简单介绍在Android系统中如何通过C程序来访问内核中sysfs的属性文件,也可以理解为驱动设备节点。 2、添加kernel驱动设备节点 做过Linux内核
阅读全文
摘要:1、前言 Android.mk用于向编译系统描述源文件和共享库,它实际上是编译系统解析一次或多次的微小GNU makefile片段。它的语法支持将源文件分组为模块,模块是静态库、共享库或独立的可执行文件。 2、简单示例 首先来看一个最简单的Android.mk的例子,如下所示: # A simple
阅读全文
摘要:Android Init Language Android初始化语言 The Android Init Language consists of five broad classes of statements,which are Actions, Commands, Services, Optio
阅读全文
摘要:1、前言在嵌入式系统中,许多SoC的内部都包含了pin控制器,通过芯片内部的pin控制器,我们可以配置一个或者一组引脚的状态和功能特性,Linux内核为了统一各SoC厂商的引脚管理,提供了pinctrl子系统。 2、引脚功能分类嵌入式芯片手册往往有一个GPIO控制的章节来描述SoC的引脚如何进行配置
阅读全文
摘要:1、Android的开机启动流程 Android的层次框架图,如下所示: 图片清晰地展示了Android的五层架构,从上到下依次是:应用层、应用框架层、库层、运行时层以及Linux内核层。Android的启动流程是自下向上的,大体上可以分为三个阶段:1、BootLoader引导启动内核;2、启动Li
阅读全文
摘要:(1)getprop 在Android系统中,使用getprop命令可以从系统中读取一些设备信息,属性的文件例如: init.rc default.prop /system/build.prop 查询Android设备的所有配置信息: adb shell getprop 在Android终端上运行上
阅读全文