针对amlogicAB升级-编译流程优化

中兴B860AV2.1-T刷机教程加固件 第一步:拆开中兴B860AV2.1-T盒子,取出主板。 第二步:下载刷机工具AmlogicUSBBurningTool_v2.1.6.8 下载工具:链接:https://share.weiyun.com/qf0pU7Tx密码:3k3pt7 第三步:下载固件aml_upgrade_package.img 下载地址:链接:https://share.weiyun.com/yzJ7lU2w密码:ju6gf7 第四步:打开软件AmlogicUSBBurningTool_v2.1... 阅读详情

一、问题描述

最近处理了一个amlogic 7.1 AB项目,升级出现system不匹配的问题,对比发现刷机包中的system与obj包中的不一致,那么就要从编译流程方面排查,将刷机和做包使用的固件进行同步

二、解决思路

说实话一开始其实没什么思路,从编译log入手也看的不是很明白,所以最好的办法就是拆分问题,1、了解make otapackage的大致流程 2、amlogic刷机包的大致生成流程,这两个方面确认好后,再回来看问题,有了些自己的想法去处理

1、make otapackage流程

总体流程其实应该是两个:

$(BUILT_TARGET_FILES_PACKAGE)      生成obj下的target文件

$(INTERNAL_OTA_PACKAGE_TARGET) 生成ota整包文件

 

otapackage 执行从build/core/Makefile 开始

$(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE)
    @echo "Package OTA: $@"
    $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH MKBOOTIMG=$(MKBOOTIMG) \
       ./build/tools/releasetools/ota_from_target_files -v \
       --block \
       $(UPDATE_DTB) \
       -p $(HOST_OUT) \
       -k $(KEY_CERT_PAIR) \
       $(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
       $(BUILT_TARGET_FILES_PACKAGE) $@
       
.PHONY: otapackage
otapackage: $(INTERNAL_OTA_PACKAGE_TARGET)

otapackage依赖 $(INTERNAL_OTA_PACKAGE_TARGET) 通过ota_from_target_files 生成ota整包

而$(INTERNAL_OTA_PACKAGE_TARGET) 仅依赖$(BUILT_TARGET_FILES_PACKAGE)

$(BUILT_TARGET_FILES_PACKAGE): \
        $(HOST_OUT_EXECUTABLES)/bsdiff \
        $(INSTALLED_BOOTIMAGE_TARGET) \
        $(INSTALLED_RADIOIMAGE_TARGET) \
        $(INSTALLED_RECOVERYIMAGE_TARGET) \
        $(INSTALLED_SYSTEMIMAGE) \
        $(INSTALLED_USERDATAIMAGE_TARGET) \
        $(INSTALLED_CACHEIMAGE_TARGET) \
        $(INSTALLED_VENDORIMAGE_TARGET) \
        $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) \
        $(INSTALLED_ANDROID_INFO_TXT_TARGET) \
        $(SELINUX_FC) \
        $(APKCERTS_FILE) \
        $(HOST_OUT_EXECUTABLES)/fs_config \
        | $(ACP)
    @echo "Package target files: $@"
    
   ......
   ......
    
    $(hide) (cd $(zip_root) && zip -qX ../$(notdir $@) META/*filesystem_config.txt)
    $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH MKBOOTIMG=$(MKBOOTIMG) \
   ./build/tools/releasetools/add_img_to_target_files -a -v -p $(HOST_OUT) $@

 

$(BUILT_TARGET_FILES_PACKAGE)需要很多依赖关系,其中$(INSTALLED_SYSTEMIMAGE) 就是重新打包system.img的,方法最后会调用add_img_to_target_files生成target文件中的IMAGES

 

注意:我们再次梳理下这里

$(INSTALLED_SYSTEMIMAGE)生成了out下的刷机固件

$(BUILT_TARGET_FILES_PACKAGE)文件拷贝到target后通过add脚本生成了做升级包需要的IMAGES/system.img

 

make otapackage完之后,如果不加任何的脚本或者其他流程,刷机包跟差分包使用固件是不一样的

 

2、amlogic刷机包的大致生成流程

[ 99% 194/195] Package: out/target/product/p212/aml_upgrade_package.img
cp device/amlogic/p212/upgrade/aml_sdc_burn.ini out/target/product/p212/upgrade/aml_sdc_burn.ini
cp device/amlogic/p212/upgrade/u-boot.bin.sd.bin out/target/product/p212/upgrade/u-boot.bin.sd.bin
cp device/amlogic/p212/upgrade/u-boot.bin.usb.bl2 out/target/product/p212/upgrade/u-boot.bin.usb.bl2
cp device/amlogic/p212/upgrade/u-boot.bin.usb.tpl out/target/product/p212/upgrade/u-boot.bin.usb.tpl
cp device/amlogic/p212/upgrade/platform.conf out/target/product/p212/upgrade/platform.conf
cp device/amlogic/common/products/mbox/upgrade/aml_upgrade_package_AB.conf out/target/product/p212/upgrade/aml_upgrade_package_AB.conf
ln -sf out/target/product/p212/boot.img out/target/product/p212/upgrade/boot.img
ln -sf out/target/product/p212/u-boot.bin out/target/product/p212/upgrade/u-boot.bin
ln -sf out/target/product/p212/dtb.img out/target/product/p212/upgrade/dtb.img
ln -sf out/target/product/p212/system.img out/target/product/p212/upgrade/system.img
ln -sf out/target/product/p212/userdata.img out/target/product/p212/upgrade/userdata.img

./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r out/target/product/p212/upgrade/aml_upgrade_package_AB.conf 
out/target/product/p212/upgrade/ out/target/product/p212/aml_upgrade_package.img

[Msg]Pack Item[USB         ,              DDR] from (out/target/product/p212/upgrade/u-boot.bin.usb.bl2),sz[0xc000]B,
[Msg]Pack Item[USB         ,            UBOOT] from (out/target/product/p212/upgrade/u-boot.bin.usb.tpl),sz[0xb4000]B,ft[normal]    
[Msg]Pack Item[PARTITION   ,         _aml_dtb] from (out/target/product/p212/upgrade/dtb.img),sz[0x16000]B,ft[normal]   
[Msg]Pack Item[VERIFY      ,         _aml_dtb] from (out/target/product/p212/upgrade/dtb.img),vry[sha1sum dccc4db852e30f2c3383e332e1ec1995a3a916e7] 
[Msg]Pack Item[UBOOT       ,     aml_sdc_burn] from (out/target/product/p212/upgrade/u-boot.bin.sd.bin),sz[0xc0200]B,ft[normal] 
[Msg]Pack Item[ini         ,     aml_sdc_burn] from (out/target/product/p212/upgrade/aml_sdc_burn.ini),sz[0x25a]B,
[Msg]Pack Item[PARTITION   ,           boot_a] from (out/target/product/p212/upgrade/boot.img),sz[0x8f4800]B,ft[normal] 
[Msg]Pack Item[VERIFY      ,           boot_a] from (out/target/product/p212/upgrade/boot.img),vry[sha1sum d285ec4aab9676e8b20323c0f622e8572f98de56]    
[Msg]Pack Item[PARTITION   ,       bootloader] from (out/target/product/p212/upgrade/u-boot.bin),sz[0xc0000]B,ft[normal]    
[Msg]Pack Item[VERIFY      ,       bootloader] from (out/target/product/p212/upgrade/u-boot.bin),vry[sha1sum e1bc055fd718d28ca17dad577fcb148d1aef95dc]  
[Msg]Pack Item[PARTITION   ,             logo] from (out/target/product/p212/upgrade/logo.img),sz[0x52a5e0]B,ft[normal] 
[Msg]Pack Item[VERIFY      ,             logo] from (out/target/product/p212/upgrade/logo.img),vry[sha1sum ca14e1dab9f71ca762317ee7f4ed1fd211e1b657]    
[Msg]Pack Item[xml         ,         manifest] from (out/target/product/p212/upgrade/manifest.xml),sz[0x17688]B,ft[normal]  
[Msg]Pack Item[dtb         ,           meson1] from (out/target/product/p212/upgrade/dtb.img),Duplicated for _aml_dtb.PARTITION

[Msg]Pack Item[conf        ,         platform] from (out/target/product/p212/upgrade/platform.conf),sz[0xca]B,
[Msg]Pack Item[PARTITION   ,         system_a] from (out/target/product/p212/upgrade/system.img),sz[0x46d0911c]B,ft[sparse] 
[Msg]Pack Item[VERIFY      ,         system_a] from (out/target/product/p212/upgrade/system.img),vry[sha1sum 023134dd6d1b72d3c0593f05ddcf7397bc2d516e]  
[Msg]version:0x2 crc:0x0f9baa07 size:1205436956 bytes[1149MB]
Pack image[out/target/product/p212/aml_upgrade_package.img] OK
 out/target/product/p212/aml_upgrade_package.img installed

以上是编译部分的log,可以看出生成aml_upgrade_package.img的大致流程

1、创建upgrade目录

2、将需要刷机的img文件拷贝入upgrade

3、执行脚本进行pack

 

这个工作所有的代码都由一个文件完成./device-amlogic/common/factory.mk,那么问题来了,怎么跑起来这个mk文件的

在devce  和 build 下 grep之后发现 只有这么一句

device-amlogic/p212/AndroidBoard.mk:20:include device/amlogic/common/factory.mk

 

这里运行机制也是从otapackage 开始,可以看出有两个依赖

droidcore: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML)

otapackage: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML)

.PHONY:aml_upgrade
aml_upgrade:$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET)
$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET): \
    $(addprefix $(PRODUCT_OUT)/,$(BUILT_IMAGES)) \
    $(UPGRADE_FILES) \
    $(INSTALLED_AML_USER_IMAGES) \
    $(INSTALLED_AML_LOGO) \
    $(INSTALLED_MANIFEST_XML) \
    $(TARGET_USB_BURNING_V2_DEPEND_MODULES)
    mkdir -p $(PRODUCT_UPGRADE_OUT)
    $(hide) $(foreach file,$(UPGRADE_FILES), \
        echo cp $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \
        cp -f $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \
        )
    $(hide) $(foreach file,$(BUILT_IMAGES), \
        echo ln -sf $(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \
        ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \
        )
ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
    $(hide) rm -f $(PRODUCT_UPGRADE_OUT)/u-boot.bin.encrypt.*
    $(hide) $(ACP) $(PRODUCT_OUT)/u-boot.bin.encrypt.* $(PRODUCT_UPGRADE_OUT)/
    ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/dtb.img $(PRODUCT_UPGRADE_OUT)/dtb.img
    ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/u-boot.bin.encrypt.efuse $(PRODUCT_UPGRADE_OUT)/SECURE_BOOT_SET
endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
    $(security_dm_verity_conf)
    $(update-aml_upgrade-conf)
    $(hide) $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \
        $(call aml-user-img-update-pkg,$(userPartName),$(PACKAGE_CONFIG_FILE)))
    @echo "Package: $@"
    @echo ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \
        $(PACKAGE_CONFIG_FILE)  $(PRODUCT_UPGRADE_OUT)/ $@
    ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \
        $(PACKAGE_CONFIG_FILE)  $(PRODUCT_UPGRADE_OUT)/ $@
    @echo " $@ installed"
else
#none
INSTALLED_AML_UPGRADE_PACKAGE_TARGET :=
endif

 

$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET)还存在有别的依赖,直到最后生成aml_upgrade_package.img刷机包

 

3、定位问题

从上述两个流程可以看出,amlogic把这两个流程合并为了 同一个命令 make otapackage 中执行,但是从完整的编译log可以看出目前的流程大致分为了:

1、编译kernel

2、编译system

3、打包刷机镜像

4、执行obj包的生成

 

这样编译倒是省条命令,但是刷机的跟做包的不一致,尝试调整了几次执行的顺序,先执行完make otapakcage 在进行打包,但是因为都是由otapackage目标发起,没找到具体可以更改顺序的方法

既然不好换,换一种思路,把两个流程分开执行,既然factory.mk 里面是以otapackage 为目标的,那么可以换成别的么,实际测试发现可以

更换为

pack: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML)

执行make pack -j 可以编出刷机包

但是编译的时候会从新对system.img进行打包,这个就不是我们需要的了,对于我这种修改问题的方法,卡在解决的关键就是怎么去除pack时候的system打包

三、解决方法

对这个mk文件不是很了解,去除system打包这一步折腾了比较长的时间,从$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET)依赖关系入手,最后找到了$(BUILT_IMAGES)相关

 

ifeq ($(AB_OTA_UPDATER),true)

BUILT_IMAGES += system.img userdata.img

else

BUILT_IMAGES += system.img userdata.img cache.img

endif

 

更改为BUILT_IMAGES += userdata.img 发现不再单独生成system.img 变成了简单的拷贝和打包的动作了

 

那么到这里也就更改完成

1、make otapackage 通过自己的拷贝脚本 把中间包里的system拷贝到out下

2、make pack  通过脚本对out下的固件进行打包,这样upgrade out obj 理论上 system 都是一摸一样的

 

Android OTA升级包制作和验证 几个概念 **整包升级:**即整个Rom的数据都升级,所以升级包较大,但对要升级的目标系统的版本没有限制 **增量升级:**即只升级有变化的部分,所以升级包较小,但只能针对做比对的俩个系统版本之间来升级。 【完整升级包】:全量包,可直接用于整包升级使用。make otapackage命令后,会生成到out/target/product/{product_name}/{product_name}-ota-eng.{name}.zip 【原始升级包】:过程包,该包会包含更详细的信息。make otapacka 阅读详情

相关推荐

ZedBoard REV_C的BOOT.BIN、devicetree.dtb、logo.bin、zImage、led_test.sh、oled_test.sh

针对ZedBoard REV_C开发板配套的HDMI显示Linaro Ubuntu系统界面需要的BOOT.BIN、devicetree.dtb、logo.bin、zImage文件,测试LED、OLED的可执行文件。

OTA整包的制作流程

我们知道,在android根目录下,敲击make otapackage,out目录下就会生成ota package包,那么makefile是如何工作的呢? 当用户敲击make otapackage后,我们看下Makefie的依赖关系:otapackage依赖INTERNAL_OTA_PACKAGE_TARGET目标,INTERNAL_OTA_PACKAGE_TARGET又依赖BUILT_TARGE......

baron-周贺贺-代码改变世界ctw 2636

a ml_upgrade_package.img

中兴B860AV2.1-T刷机固件包,下载固件 a ml_upgrade_package.img 本人花钱购买学习测试有效

make otapackage

我们知道,在Android源码整编后执行make otapackage命令即可生成OTA整包,但除此之外它还完成了哪些功能?具体又是如何完成的呢?事实上,在OTA升级过程中命令make otapackage完成了三件事情: 重新对system.img文件进行了打包; 生成差分资源包,路径为out/target/product//obj/PACKAGING/target_files_

南柯一梦 6982

中兴B860AV2.1-T固件包 a ml_upgrade_package.rar

中兴B860AV2.1-T 第三方固件包可装app,下载刷机固件 a ml_upgrade_package.img 亲测有效

aml-linux-usb-burn:Linux版本的Amlogic USB刻录工具

Linux版本的Amlogic USB刻录工具 这只是可以在Amlogic Openlinux 上找到的文件的“副本”。 安装 为Amlogic设备创建新的u-dev规则(在/etc/udev/rules.d中)。 我的文件称为70-persistent-usb-amlogic.rules文件内容为: SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="1b8e", ATTR{idProduct}=="c003", MODE:="0666", SYMLINK+="worldcup" 创建规则时,请重新加载udev规则或重新启动计算机。 确保此存储库的根文件夹在您的PATH变量中(我只是将其放在我的〜/ bin文件夹中),这样我可以在不指定路径的情况下从任何地方调用它。 该工具取决于libusb和libusb-c

OTA升级包制作

1.差分升级 差分包(版本A差分升级到版本B,要先分别制作版本A的资源包A,和版本B的资源包B)的制作步骤 source build/envsetup.sh  lunch MULTILANGUAGE_SUPPORT=true make 在device/sprd/工程/modem_bins(无此目录请新建)下放入wcnmodem.bin/wcnnvitem.bin/wdsp.b

Benny-Q的专栏 3738

安卓机型ROM解包打包工具MIK解压版

安卓机型ROM解包打包工具MIK解压版 说明: 是一个允许用户使用 Windows 重新打包 Android 分区的工具。该工具支持 更多功能,您可以在下面查看。 特征: 拆包和打包分区:System、Vendor、Product、ODM、SOCKO、ELABLE(RAW、SPARSE) 带扩展名的拆包和打包分区:* .img; * .fex; * 。分割; * .new.dat;* .new.dat.br; * .lz4; * .exT4;* 。柏油; * .md5 拆包包装logo分区:logo.img、logo.partition 解包和打包:_aml_dtb.partition (Single, Multi, Multi / Gzipped) 从 PAYLOAD.BIN 文件节文件中提取 从 Super.img 文件分区中删除 资源分区的解包打包:resource.img SOC Amlogic固件、瑞芯微、全志拆包打包 拆包和组装服务包:* .zip (Update.zip) 反编译和编译应用程序 (* .apk) 将程序文件夹放在任何位置,靠近磁盘根目录,路径不应包含

Android Recovery OTA升级(一)—— make otapackage

概述make otapackage是Android Build系统支持的命令,用来生成Recovery系统能够进行升级的zip包。因此,想要了解Android的OTA升级机制,我们首先需要学习make otapackage命令的执行过程。为了防止泄密,以下源码内容都是基于Android4.4.2_r1分支进行分析。make otapackagemake otapackage是一个.PHONY伪目标。

小一的专栏 1万+

OpenEarthMap 与 xBD 数据集合并

整合好的数据:链接: https://pan.baidu.com/s/1uJ_Zg6n-s3u1D49OW52D7Q?pwd=2vwx 提取码: 2vwx完整整合步骤与代码如下。

qq_60293814的博客 1594

黑马程序员Pink的javaScript课程APIday4

本文摘要:介绍了JavaScript中日期对象的实例化方法(有参/无参)及三种获取时间戳的方式。讲解了DOM节点操作,包括节点查找(父、子、兄弟节点)、增加/克隆/删除节点的方法。详细说明了移动端touch事件和Swiper插件的使用,包括自动播放和小圆点配置。最后提及学成在线案例中表单验证和取消默认跳转的实现。

JLY19970726的博客 825

linux怎么刷机教程,刷机教程

1.1. 刷机说明1.1.1. Amlogic芯片Android 系统如果您的开发板是 Android 系统,请参考Android 刷机文档来了解 Android 系统生成的系统镜像的位置。Linux 系统如果您的开发板是Linux系统,镜像位置及各img文件简单说明如下,该示例仅保证Amlogic/A113开发板有效。output//images├── aml_upgrade_package.c...

weixin_39935092的博客 3104

ArcGIS中地理坐标系与投影坐标系以及投影转换

简单介绍arcgis软件中坐标系定义、设置和常见问题。

weixin_41399650的博客 8万+

Android otapackage流程分析一

分析下 Android SDK 中制作OTA升级包的流程,详细说明全量和增量升级包的过程 制作OTA全量和增量的过程而言差异其实就是最后执行命令参数不同,全量升级包是先做出一个完整包含所有需要文件的目录 然后根据每个平台的基本配置去提取出需要的东西打包成一个升级包,下面来看如何做出一个完整包含所需文件的目录流程 执行 make otapackage 是制作全量升级包的命令 // build

yexiang优快云的专栏 3973

2. Android_逆向的历史与发展

学完本节,希望你能够:了解 Android 逆向工程的发展历程,从早期 APK 破解到现代应用保护;入门先把这几类「在干啥」搞清楚,后面学脱壳、反反调试会顺很多。(反编译 APK 得到的类汇编代码,相当于程序的「菜谱」)就能绕过验证,到后来混淆、加固、反调试一起上,逆向难度越来越高。(第三节 什么是 CPU 指令集),帮你搞清楚「反汇编看到的那些指令」是从哪来的、和 Android 逆向有啥关系。有必要——先搞清「没加固时怎么玩」,再学脱壳和对抗,思路才顺。读起来费劲,但逻辑还在,耐心一点还能跟。

长沙火山 1390

深入解析:AndroidManifest.xml 与 Qt 6.7.0 的整合

本文探讨了在Qt 6.7.0和CMake构建Android应用时,AndroidManifest.xml未被正确识别的问题。通过分析CMake配置错误、文件路径问题等可能原因,提出了在CMakeLists.txt中明确指定路径、确保目录结构正确等解决方案,并给出了示例项目演示。文章强调正确配置AndroidManifest.xml对获取权限和应用功能的重要性,为Qt开发者提供了实用的调试建议。

2501_90323865的博客 110

linux差分包升级流程,OTA 差分升级包的制作

OTA升级是Android系统提供的标准软件升级方式。它功能强大,提供了完全升级、增量升级模式,可以通过SD卡升级,也可以通过网络升级。那如何生成差分升级包呢?Android源码的根目录下有以下两个命令:1、make——会生成系统的img文件,system.img,boot.img,userdata.img,recovery.img2、makeotapackage——会生成sd卡用的...

weixin_35676877的博客 2972

(二)使用VS2022克隆下载C++自制植物大战僵尸游戏教程

本文将介绍如何使用VS2022克隆下载《植物大战僵尸C++自制版本》。Gitee项目地址:Gitee仓库地址Github项目地址:Github仓库地址游戏官网地址(下载可直接运行)游戏官网。

尔灵尔亿的博客 4933

Linux网络机顶盒rom,Amlogic 电视盒子修改Rom包,升级

第一次接触电视盒子的开发,遇到一些坑,这里记录下Rom包修改和升级的方法。这边使用的硬件是:Amlogic S905x 2GBx16GB准备工作:1、ROM包(aml_upgrade_package.img)2、Customization Tool(aml解压包工具)3、USB_Burning(烧入工具)修盖Rom包:第一步:解压打开Customziation tool工具:Customziati...

weixin_34520664的博客 6960

【C++PCL】点云文件读写

本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。

weixin_45196569的博客 42

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android OTA 升级之一:编译升级包

前言        OTA 升级是 Android 系统提供的标准软件升级方式。 它功能强大,提供了完全升级、增量升级模式,可以通过 SD 卡升级,也可以通过网络升级。        这里,我们先研究最简单的情况,通过 SD 卡进行完全升级。        如何执行升级就不多说了,网上有很多资料。(比如,介绍HTC手机如何升级)。我们感兴趣的是它是如何实现的,作为开发者,如何修改它以符合我们

tronteng的专栏 1500

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android OTA升级(1):编译升级全包

Android原生系统中就已经支持OTA升级。所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件。一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级。      OTA升级首要是生成OTA升级包,升级包又分为升级全包和升级差分包(或要增量包)。升级全包是编译当前系统得到的软件包,这个包很大,有上百兆,但是不依赖与当前手机里的软件版本;升级差分包是对手机两个软件版

Android系统攻城狮 1579

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

浅谈Amlogic S905L3A L3AB L3B 盒子桌面和系统移植

In this blog post, we explore the process of transferring an Android TV launcher and system environment from one Amlogic S905L3-based TV box to another with identical hardware. Whether you're aiming to replace a buggy default launcher or achieve a full sys

weixin_62598385的博客 2415
上一篇: Android Q动态分区相关初步整理
下一篇: 六、Android recovery升级断电保护机制
李标标
博客等级 码龄11年 124粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值