Add new device

本文介绍如何为特定Android设备mydevice创建必要的配置文件,包括AndroidProducts.mk、full_mydevice.mk、vendorsetup.sh及BoardConfig.mk等,并展示了如何设置编译目标、指定硬件特性以及构建过程。

Add the configuration files for the new device mydevice of the company mycompany.

Create AndroidProducts.mk

mkdir -p device/mycompany/mydevice
nano device/mycompany/mydevice/AndroidProducts.mk
PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/full_mydevice.mk

Create file full_mydevice.mk
Example is build/target/product/full.mk

nano device/mycompany/mydevice/full_mydevice.mk
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/board/generic/device.mk)

# Overrides
PRODUCT_NAME := full_mydevice
PRODUCT_DEVICE := mydevice
PRODUCT_BRAND := Android
PRODUCT_MODEL := Full Android on mydevice

Create file vendorsetup.sh

nano device/mycompany/mydevice/vendorsetup.sh
add_lunch_combo full_mydevice-eng

Create file BoardConfig.mk

Examples are
build/target/board/generic/BoardConfig.mk
device/samsung/crespo/BoardConfig.mk 
device/samsung/crespo/BoardConfigCommon.mk

mkdir -p device/mycompany/mydevice
nano device/mycompany/mydevice/BoardConfig.mk
# config.mk
#
# Product-specific compile-time definitions.
#

# The generic product target doesn't have any hardware-specific pieces.
TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := true
TARGET_CPU_ABI := armeabi
HAVE_HTC_AUDIO_DRIVER := true
BOARD_USES_GENERIC_AUDIO := true

# no hardware camera
USE_CAMERA_STUB := true

# Set /system/bin/sh to mksh, not ash, to test the transition.
TARGET_SHELL := mksh

# CPU
TARGET_ARCH_VARIANT := armv7-a-neon
ARCH_ARM_HAVE_TLS_REGISTER := true

Configure Android for mydevice

. build/envsetup.sh 
including device/htc/passion/vendorsetup.sh
including device/mycompany/mydevice/vendorsetup.sh
including device/samsung/crespo4g/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
lunch
You're building on Linux

Lunch menu... pick a combo:
     1. full-eng
     2. full_x86-eng
     3. simulator
     4. full_passion-userdebug
     5. full_mydevice-eng
     6. full_crespo4g-userdebug
     7. full_crespo-userdebug

Which would you like? [full-eng] 5

============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=AOSP
TARGET_PRODUCT=full_mydevice
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================

Build Android for mydevice

make -j4
Combining NOTICE files: out/target/product/mydevice/obj/NOTICE.html
Target system fs image: out/target/product/mydevice/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/mydevice/system.img
Installed file list: out/target/product/mydevice/installed-files.txt
`i2c_master_bus_add_device`是用于在I2C主总线中添加设备的函数。 ### 使用方法 以下是一个使用`i2c_master_bus_add_device`的示例代码: ```c #include "driver/i2c_master.h" i2c_master_bus_config_t i2c_mst_config = { .clk_source = I2C_CLK_SRC_DEFAULT, //I2C总线时钟源 .i2c_port = TEST_I2C_PORT, //I2C端口号,‘ -1 ’为自动选择 .scl_io_num = I2C_MASTER_SCL_IO, //I2C SCL信号的GPIO号,内部上拉 .sda_io_num = I2C_MASTER_SDA_IO, //I2C SDA信号的GPIO号,内部上拉 .glitch_ignore_cnt = 7, //如果线路上的故障周期小于此值,则可以过滤掉,通常值为7(单位:I2C模块时钟周期) .flags.enable_internal_pullup = true,//启用内部拉起。注意:这不足以在高速频率下拉起buses。如果可能的话,建议适当的外部引体向上 }; i2c_master_bus_handle_t bus_handle; ESP_ERROR_CHECK(i2c_new_master_bus(&i2c_mst_config, &bus_handle)); i2c_device_config_t dev_cfg = { .dev_addr_length = I2C_ADDR_BIT_LEN_7, //选择从设备的地址长度 .device_address = 0x58, //I2C设备原始地址。(7/10位地址,不含读写位) .scl_speed_hz = 100000, //I2C SCL线路频率 }; i2c_master_dev_handle_t dev_handle; ESP_ERROR_CHECK(i2c_master_bus_add_device(bus_handle, &dev_cfg, &dev_handle)); ``` 在这个示例中,首先配置了I2C主总线的参数,然后创建了主总线句柄。接着配置了要添加的I2C设备的参数,最后调用`i2c_master_bus_add_device`将设备添加到主总线上,并获取设备句柄。 ### 功能 `i2c_master_bus_add_device`的主要功能是将一个I2C从设备添加到已经配置好的I2C主总线上。它会根据传入的设备配置参数,在主总线上识别并注册该从设备,为后续与该从设备进行通信做准备。 ### 原理 从原理上来说,当调用`i2c_master_bus_add_device`时,函数会根据传入的`i2c_master_bus_handle_t`类型的总线句柄,找到对应的I2C主总线。然后,依据`i2c_device_config_t`类型的设备配置参数,如从设备的地址长度、设备地址、SCL线路频率等,在主总线上发起对该从设备的识别操作。如果识别成功,会在系统中注册该从设备,并生成一个`i2c_master_dev_handle_t`类型的设备句柄,用于后续与该从设备进行通信。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值