【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译
可根据用户需求更换,百变定制,高端产品无忧!
迅为IMX6Q兼容四核商业级 、双核商业级、四核工业级 、更可提供i.MX6Q家族PLUS版本核心板。
核心板采用十层PCB沉金盲埋设计,更能保证电磁兼容与系统稳定。
公众号:迅为电子
-----------------------------------------

第十四章 非设备树 Android4.4 系统编译
设备树简单理解就是描述设备信息(资源)的一棵树,如下图所示。那么本章节编译的 Android4.4 描述设备信息不是采用设备树的形式,而是采用传统的方式描述设备。

Android4.4 源码在网盘目录“iTOP-i.MX6Q 开发板\IMX6Q 非设备树内核光盘资料(刻盘)\V2.6 底板\20200703(最新日期)\imx6q android4.4 光盘资料\04 源码_android 4.4 文件系统”下。
本章节是在迅为提供的“搭建好的 Ubuntu12.04 环境。”基础上进行编译的,如果您使用的 Ubuntu 编译环境不是迅为提供的,请参考第十三章节进行搭建或者自行百度。
14.1 整体编译 Android4.4
本节介绍如何将 Android 4.4 源码整体编译,即将 uboot,kernel,Android 镜像一次性全部编译出来。
注意的问题编译 Android 系统必须保证给 Ubuntu 系统提供 4G 以上内存。这里“提供 4G 以上内存”的意思,不仅仅是指在 VMware Workstations 虚拟机中设置分配 4G 内存。例如,用户在编译的时候,PC 机的内存一共是 6G,在虚拟机中设置分配 4G 内存,但是在 Windows 系统下,开着 QQ,杀毒软件,音乐播放器,浏览器等等,这样在 Windows 下占用的内存就快 2G 了,那么虚拟机会自动调整到只占用 2G,甚至不到 2G 的内存,这样就有可能没法编译通过。
正确的分配内存方法是,首先给虚拟机分配 4G 以上内存,然后在 Windows 下关掉尽量多的不必要的应用,关掉尽量多应用的后台程序。
1 输入以下命令查看 java 的版本,如果显示版本是 1.6 版本则设置 jdk 版本成功,如果设置失败请参考第十 三章 13.2.3 章节安装 jdk ,java -version
2 Android4.4 压缩包要先在 windows 下解压,解压之后得到单独的压缩包
iTOP-iMX6_android4.4.2_20200703.tar.gz,如下图所示:

3 将账户切换为 root 用户,将“iTOP-iMX6_android4.4.2_20200703.tar.gz”压缩包(使用最新日期的 压缩包即可)解压到 Ubuntu 下,作者放在了 Ubuntu 的/home/topeet/imx6 目录下,
4 使用以下命令解压源码,如下图所示:
tar -vxf iTOP-iMX6_android4.4.2_20200703.tar.gz
5 解压之后得到“iTOP-iMX6_android4.4.2”文件夹,
6 如下图所示,使用 ls 命令,可以看到编译脚本“create.sh”。

create.sh_imx6q 是编译 ITOP-IMX6Q(工业级 1G+8G)和 TOP-IMX6Q(商业级 2G+16G)的脚本,
create.sh_imx6dl 是编译 ITOP-IMX6D(商业级 1G+8G)的脚本。
我们在编译之前要根据自己手里核心板的型号选择对应的编译脚本,然后覆盖掉编译脚本 create.sh,如下表所示:

7 ITOP-IMX6Q(商业级 2G+16G) 整体编译 Android4.4
8 ITOP-IMX6D(商业级 1G+8G) 整体编译 Android4.4
9 ITOP-IMX6Q(工业级 1G+8G) 整体编译 Android4.4
10 编译完成之后,
11 输入以下命令进入镜像目录,使用 ls 命令,可以看到生成了“u-boot.bin”,“boot.img”,“system.img”, “recovery.img”等镜像文件,cd out/target/product/topeet_6dq
ls
14.2 单独编译 uboot
1 进入源码解压得到的“/iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx/”目录下,如下图所示,可以看到脚本“build_uboot.sh”。
2 请大家工具自己手里的核心板型号,输入编译命令,如下表所示,一种颜色的代码代表一条命令:

3 ITOP-IMX6Q(商业级 2G+16G)单独编译 uboot,
4 ITOP-IMX6D(商业级 1G+8G)单独编译 uboot,
5 ITOP-IMX6Q(工业级 1G+8G)单独编译 uboot,
6 编译完成,如下图所示,生成了“u-boot.bin”文件,就是 uboot 的镜像。
14.3 单独编译 Android4.4 内核
1 如果我们只需要单独编译 Android4.4 kernel,则进入源码解压的 iTOP-iMX6_android4.4.2/kernel_imx
目录下,
2 不区分核心板的型号,全部使用以下命令开始编译内核 。
./build_android_kernel.sh
3 如下图所示,开始编译。
4 如下图所示,编译完成。

5 如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目录下生成 uImage,即是内核镜像。
6 但是 iMX6 的内核烧写文件比较特殊,需要再次经过打包压缩,所以还需要重新运行整体编译 android 4.4的脚本,才能生成“boot.img”,android 编译一次之后,后面编译就非常快了。整体编译 android 4.4
请参考 14.1 章节整体编译 Android4.4。
14.4 单独编译 Linux 内核
编译出来的 Linux 内核镜像适用于 QT,最小文件系统,
Ubuntu12.04,Debian,Yocto 系统,和 Android4.4
公用一套源码。
1 如果我们需要单独编译 Linux 系统用的内核镜像,则进入源码“iTOP-iMX6_android4.4.2/kernel_imx”
目录下,
2 使用以下命令,开始编译内核,如下图所示:
./build_qt_kernel.sh
3 开始编译,
4 编译完成,
5 如下图所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目录下生成 uImage,即是内核镜像。

相关文章:
【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译
可根据用户需求更换,百变定制,高端产品无忧! 迅为IMX6Q兼容四核商业级 、双核商业级、四核工业级 、更可提供i.MX6Q家族PLUS版本核心板。 核心板采用十层PCB沉金盲埋设计,更能保证电磁兼容与系统稳定。 公众号:迅为电…...
测评造假?Mistral首个多模态模型Pixtral 12B发布
测评造假?Mistral首个多模态模型Pixtral 12B发布! 近日,法国人工智能(AI)初创公司Mistral于9月11日宣布推出其首款多模态AI大模型——Pixtral 12B,成功吸引了全球科技界的广泛关注。这款集图像与文本处理能…...
【Java-简单练习题】
1.”AABBBCCC“>>"A2B3C3" public class Test6 {public static void main(String[] args) {String ns "AABBBCCCC";String retcompress(ns);System.out.println(ret);}public static String compress(String str) {StringBuilder ret new StringB…...
Notepad++ 下载安装教程
目录 1.下教程 2.安装教程 1.下教程 Downloads | Notepad (notepad-plus-plus.org) 进入下载地址后选择最新版点击连接 点击链接后,向下滑动,下载适合自己电脑版本的安装包 这里大家没有梯子可能打不开页面,可以直接从本文开头下载。 2.安…...
shader 案例学习笔记之smoothstep函数
参考:smoothstep 用来生成0-1的平滑过渡值 smoothstep函数源码实现: float smoothstep(float t1, float t2, float x) {// Scale, bias and saturate x to 0..1 rangex clamp((x - t1) / (t2 - t1), 0.0, 1.0); // Evaluate polynomialreturn x * x *…...
大模型的第一个杀手级应用场景出来了
大家终于都意识到大模型首先改变的是软件行业自己,而软件的根基是代码生成。代码生成第一波就是AI辅助开发,这个会是大模型第一个杀手级应用。大家苦苦逼问自己的大模型杀手级应用,为什么会是辅助编程,这里说下什么: 必…...
不允许有程序员不知道这款AI代码扩写工具
01CodeGeeX编程大模型 在介绍什么是codeGeeX之前,先上图。 想象一下,自己写代码的时候旁边有个专家助手,随时跟你解释前面别人写的代码是什么意思,有什么缺陷。在你自己写的时候也可以每一步进行代码提示和代码扩写,是…...
java 的list集合排序自定义元素
在 Java 中,可以对包含自定义元素的List集合进行排序。通常可以使用Collections.sort()方法结合自定义的比较器来实现。 一、定义包含自定义元素的类 假设我们有一个表示学生的类Student: class Student {private int id;private String name;private …...
【数学建模】2024数学建模国赛经验分享
文章目录 一、关于我二、我的数模历程三、经验总结: 一、关于我 我的CSDN主页:https://gxdxyl.blog.csdn.net/ 2020年7月(大二结束的暑假)开始在CSDN写作: 阿里云博客专家: 接触的领域挺多的ÿ…...
Scala尾递归解决爆栈问题
引言 我在上篇中详细的讲了递归的一系列问题,多路递归,爆栈问题,尾递归优化等,今天就实际演示一下尾递归是如何解决爆栈问题的,以及它的原理是什么? 支持尾递归优化的语言 尾递归是一种特殊的递归形式,如果…...
【观察者】设计模式:构建灵活且响应式的软件系统
引言 在软件开发中,我们经常面临需要在多个对象之间进行通信的挑战。特别是当一个对象的状态发生变化时,我们希望所有依赖于这个状态的对象都能自动更新。这就是观察者设计模式大显身手的地方。 简介 观察者模式是一种行为设计模式,它定义…...
开源网安斩获CCIA中国网络安全创新创业大赛总决赛三等奖
近日,由中央网信办指导,中国网络安全产业联盟(CCIA)主办的2024年中国网络安全创新创业大赛总决赛及颁奖典礼在国家网络安全宣传周落下帷幕。开源网安“AI代码审核平台CodeSec V4.0” 凭借在AI方向的技术创新、技术突破及功能应用创…...
进程的同步与互斥
目录 一、进程同步 二、进程互斥 1.临界资源访问代码: ①进入区 ②临界区 ③退出区 ④剩余区 注: 2.互斥准则: ①.空闲让进。 ②.忙则等待。 ③.有限等待。 ④.让权等待。 三、进程互斥的软件实现方法 1.单标志法 2.双标志先…...
基础的八股
JS this 全局:this指向window 函数:this指向window 对象:this指向调用它的 get、post的区别 1、写的地方不同:get在地址栏里 地址栏有多长就只能写多少、post在请求体里 没有上限 2、关于回退和刷新:get回退和刷新没问…...
使用Python从头开始创建PowerPoint演示文稿
目录 一、环境搭建与基础知识 1.1 环境搭建 1.2 基础知识 二、创建演示文稿对象 三、添加幻灯片 3.1 选择幻灯片布局 3.2 设置幻灯片内容 3.2.1 设置标题和副标题 3.2.2 添加文本内容 3.2.3 插入图片 3.2.4 插入图表 四、高级应用:批量生成演示文稿 4.…...
【C++ Primer Plus习题】15.4
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "sales.h"…...
Pipeline Scheduling(UVA 690)
网址如下: Pipeline Scheduling - UVA 690 - Virtual Judge (vjudge.net) (第三方网站) 噫,好!我中了! 这题还是有点折磨的,刚开始我只会递归下一个程序运行的时间(范围在1~n&…...
萤石举办2024清洁机器人新品发布会 多维智能再造行业标杆
导言:作为智慧生活守护者,萤石今日发布了两款清洁机器人,AI扫拖机器人RS20 Pro Ultra 和AI洗地机器人RX30 Max ,标志着萤石在智能清洁领域的全新突破。RS20 Pro Ultra基于CutFree 2.0内切割滚刷专利,有效解决毛发缠绕难…...
企业级Ansible自动化运维项目案例:实战与技巧
在企业级的IT运维中,自动化已成为提高效率、减少人为错误和保证服务一致性的关键手段。Ansible作为一种简单但功能强大的自动化工具,广泛应用于配置管理、应用程序部署、任务自动化和IT编排。本文将通过一个企业级的Ansible自动化运维项目案例࿰…...
JavaSE-易错题集-005
1. 下面有关java object默认的基本方法,说法错误的是? A equals(Object obj) 指示某个其他对象是否与此对象“相等” B copy() 创建并返回此对象的一个副本 C wait() 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyA…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
