在高通lk中添加自定义源文件
在高通lk中添加自定义源文件
背景
在lk开发中,需要添加一个自定义功能,但是又不希望代码污染无关的文件(把无关代码添加到某个源文件中是一种罪)。
以添加一个aw9523b.c的驱动为例,在aboot.c中调用aw9523b.c中的有关接口。
步骤
创建目录与文件
先看看目录结构
$ pwd
.. /bootable/bootloader/lk
$ ls
AndroidBoot.mk app arch dev include kernel lib LICENSE make makefile platform project scripts target
由于aw9523b是一个驱动,一般来说,在dev下面创建文件,头文件都放在include中是比较规范的。同时,我们还需要一个rules.mk。
## 创建目录
$ mkdir dev/leds/aw9523b -p
## 创建 文件
$ touch dev/leds/aw9523b/aw9523b.c
$ touch dev/leds/aw9523b/rules.mk
$ touch include/dev/aw9523b.h
实现代码
假设现在已经完成了aw9523b.c的编写,并且打算对外提供aw9523b_config这个接口。
aw9523b.c
路径:dev/leds/aw9523b/aw9523b.c
#include <arch/arm.h>
#include <platform/gpio.h>
#include <platform/timer.h>
#include <string.h>
#include <stdlib.h>
#include <i2c_qup.h>
#include <blsp_qup.h>
// 引用头文件
#include <dev/aw9523b.h>
// ...
#define API
API void aw9523b_config(void)
{
aw9523b_i2c1_init();
aw9523b_reset();
aw9523b_read_chipid();
aw9523b_led_feature_init();
aw9523b_light_yellow_led_invert();
}
aw9523b.h
路径:include/dev/aw9523b.h
#ifndef __AW9523B_H__
#define __AW9523B_H__
void aw9523b_config(void);
#endif /* ifndef __AW9523B_H__ */
aboot.c
假设要在app/aboot/aboot.c中调用aw9523b_config,那么直接:
- 引入
#include <dev/aw9523b.h> - 在恰当的时候调用
aw9523b_config即可。
diff --git a/bootable/bootloader/lk/app/aboot/aboot.c b/bootable/bootloader/lk/app/aboot/aboot.c
@@ -83,6 +83,7 @@
#include <menu_keys_detect.h>
#include <display_menu.h>
#include <platform/gpio.h>
+#include <dev/aw9523b.h>
@@ -3913,6 +3914,10 @@ void aboot_init(const struct app_descriptor *app)
read_device_info(&device);
read_allow_oem_unlock(&device);
+ aw9523b_config();
+
/* Display splash screen if enabled */
#if DISPLAY_SPLASH_SCREEN
dprintf(SPEW, "Display Init: Start\n");
修改编译规则
aw9523b的rules.mk
路径: dev/leds/aw9523b/rules.mk
LOCAL_DIR := $(GET_LOCAL_DIR)
INCLUDES += \
-I$(LOCAL_DIR)/include
OBJS += \
$(LOCAL_DIR)/aw9523b.o
顶层makefile
路径:lk/makefile,添加一行规则include dev/leds/aw9523b/rules.mk,即可。
diff --git a/bootable/bootloader/lk/makefile b/bootable/bootloader/lk/makefile
index ea33eb6ee1..2afb8c303c 100644
--- a/bootable/bootloader/lk/makefile
+++ b/bootable/bootloader/lk/makefile
@@ -139,6 +139,7 @@ include platform/rules.mk
include target/rules.mk
include kernel/rules.mk
include dev/rules.mk
+include dev/leds/aw9523b/rules.mk
include app/rules.mk
在高通lk中添加自定义源文件的更多相关文章
- 高通ASOC中的codec驱动
ASOC的出现是为了让codec独立于CPU,减少和CPU之间的耦合,这样同一个codec驱动就无需修改就可以匹配任何一款平台. 在Machine中已经知道,snd_soc_dai_link结构就指明 ...
- 高通ASOC中的machine驱动
ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...
- 高通Audio中ASOC的machine驱动(一)
ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...
- 高通lk屏幕向kernel传参
LK把相关参数报存到cmdline上: 在Bootable\bootloader\lk\dev\gcdb\display\gcdb_display_param.c上gcdb_display_cmdli ...
- 【转】高通平台android 环境配置编译及开发经验总结
原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...
- 高通android开发摘要
一部分是开源的,可以从codeaurora.org上下载,还有一部分是高通产权的,需要从高通的网站上下载. 将高通产权的代码放到:vendor/qcom/proprietary 1. 设置bms一些参 ...
- 高通、猎户机型Android典型bootloader分析
1.bootloader是什么? 简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一 ...
- 高通平台msm8909 LK 实现LCD 兼容
前段时间小米出现红米note2 换屏门,现在我们公司也要上演了:有两个供应商提供不同IC 的LCD panel. 软件区分的办法是读取LCD IC 的ID 寄存器,下面解析高通平台LK中LCD兼容的过 ...
- 高通spi 屏幕 -lk代码分析
lk SPI驱动 1. 初始化时钟 在lk中,我们是从kmain开始执行下来的,而执行顺序则是先初始化时钟,也就是在platform_early_init函数中开始执行的: 在这里我们需要修改这个函数 ...
- 高通移植mipi LCD的过程LK代码
lk部分:(实现LCD兼容) 1. 函数定位 aboot_init()来到target_display_init(): 这就是高通原生lk LCD 兼容的关键所在.至于你需要兼容多少LCD 就在whi ...
随机推荐
- LVGL SCROLL循环滚动
一.案例测试 这里我使用LVGL的版本是8.3.3 运行案例 lvgl_examples\scroll\lv_example_scroll_6 效果如下所示 二.现象 这里先描述一下现象,当我们使用 ...
- SpringMVC学习五(resultful风格/异常处理/注解)
resultful风格 异常处理 1.Restfule风格 Restfule风格是一种软件架构风格,而不是标准,只是提供了一种设计原则和约束条件.主要适用于客户端和服务器端交互的软件.是基于http协 ...
- 【保姆级Python入门教程】马哥手把手带你安装Python、安装Pycharm、环境配置教程
您好,我是 @马哥python说 ,一枚10年程序猿. 我的社群中小白越来越多,咨询讨论的问题很多集中在python安装上,故输出此文,希望对大家起步有帮助. 下面开始,先安装Python,再安装py ...
- 6、Samba 文件共享服务
1.Samba 服务基础 SMB(Server Message Block),服务消息块 CIFS(Common Internet File System),通用互联网文件系统 Samba 项目:ht ...
- 面向教师的OBS直播速成教程
引言 本文是面向教师讲述的如何使用OBS软件进行课程直播的速成教程. 本文配套视频链接如下️ 面向教师的OBS直播教学速成教程_哔哩哔哩_bilibili 环境准备 1. 下载对应本机系统版本的并安装 ...
- 鸿蒙HarmonyOS实战-ArkUI事件(单一手势)
一.单一手势 应用程序的手势操作是指在移动设备上使用手指或手势进行与应用程序交互的方式.手势操作可以包括点击.滑动.双击.捏合等动作,用于实现不同的功能和操作. HarmonyOS中常见的手势操作及其 ...
- Nginx 常用的基础配置(web前端相关方面)
文章出处:https://juejin.cn/post/7196859948554715195 基础配置 user root; worker_processes 1; events { worker_ ...
- pageoffice6 实现提取数据区域为子文件(Word拆分)
在实际的开发过程中,有时会遇到希望提取Word文档中部分内容保存为子文件的需求,PageOffice支持提取Word文档数据区域中的内容为一个Word文件流,在服务器端创建PageOffice的Wor ...
- ansible功能实现
模糊匹配远程主机文件并拉取到本地服务器 又熬夜加班了.花很长时间研究出来.如何实现模糊匹配到的远程文件批量拉取到本地的剧本.使用copy模块的*,shll模块的* ls|grep XX都没有实现,貌似 ...
- 2024 CISCN WEB 部分wp
前言 第二天的revenge真是绷不住,出的很好,下次多出点revenge. ezjava 简要介绍 sqlite jdbc...真的没想到,写文件覆盖写了半天,结果是个CVE...,给的很多东西都是 ...