RP4412开发板在Android编译生成ramdisk-uboot.img

合集下载

嵌入式开发板学习从零建立Linux最小系统

嵌入式开发板学习从零建立Linux最小系统

嵌入式开发板学习从零建立Linux最小系统iTOP-4412开发板不仅可以运行Android,还可以运行简单的Linux最小文件系统。

最小Linux 系统“麻雀虽小,五脏俱全”,它不带图形界面的Linux 系统,剔除干扰因素便于理解,用来学习Linux系统编程非常合适。

另外,Linux最小系统占用的内存空间很小,也经常用于不带图形界面的项目。

1.最小Linux系统简介制作文件系统需要使用到Busybox工具。

BusyBox是一个集成了一百多个最常用Linux命令和工具的软件。

BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。

有些人将BusyBox 称为Linux 工具里的瑞士军刀。

简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux 的许多工具和命令,也包含了Linux 系统的自带的shell。

Busybox的下载网址是/,这是一个开源的程序,并且一直在更新中,这里使用的版本是busybox-1.21.1.tar.bz2。

2.配置最小系统在虚拟机的Ubuntu的目录“/home”下新建目录“mkdir minilinux”,这个目录可以根据个人习惯建立,并不是强制要求。

拷贝busybox-1.21.1.tar.bz2(这个软件在对应的实验视频目录文件下)到虚拟机的Ubuntu系统上的目录“/home/minilinux”下,然后在目录“/home/minilinux”下,执行解压命令“tar -xvf busybox-1.21.1.tar.bz2”解压,进入解压出的busybox-1.22.1目录中。

Busybox的编译配置和Linux内核编译配置使用的命令是一样的,下面配置Busybox,如下图所示,使用命令“make menuconfig”,会出现Busybox的配置界面,如下图所示。

uboot框架熟悉(一)itop4412-uboot2015引导阶段程序在各存储介质的分布

uboot框架熟悉(一)itop4412-uboot2015引导阶段程序在各存储介质的分布

uboot框架熟悉(⼀)itop4412-uboot2015引导阶段程序在各存储介质的分布 本⽂分析itop4412开发板在uboot引导启动阶段,程序在各存储介质的分布情况,为理解uboot代码框架提供基础。

以uboot2015为例,以外部SD/MMC作为启动介质。

⽬录⼀、itop4412-uboot2015镜像⽂件组成⼆、itop4412-uboot启动流程1>> 开机运⾏iROM中的代码2>> BL1阶段3>> BL2(SPL)阶段4>> uboot第⼆阶段代码⼀、itop4412-uboot2015镜像⽂件组成 在ubuntu中将uboot镜像烧写到SD卡的命令如下,功能是将uboot镜像⽂件itop4412-uboot.bin⽂件烧写到SD卡第1个扇区开始的地⽅: dd iflag=dsync oflag=dsync if=itop4412-uboot.bin of=/dev/sdb seek=1 其中itop4412-uboot.bin由如下⽂件制作成: cat E4412_N.bl1.SCP2G.bin bl2.bin env.bin u-boot.bin > itop4412-uboot.bin 其中, E4412_N.bl1.SCP2G.bin :8KB,三星提供的bin⽂件,没有源码,下⽂称为BL1 bl2.bin :16KB,uboot启动第⼀阶段代码,在uboot2015中称为SPL阶段,下⽂称为BL2 env.bin :8KB,内容是全0的bin⽂件,在SD卡中占位8KB⽤于存储uboot的环境变量 u-boot.bin :⼩于512KB,uboot启动第⼆阶段代码 因此,itop4412 uboot2015镜像组成⽂件中,bl2.bin和u-boot.bin是移植uboot2015编译⽣成,其他⼏个是现成的bin⽂件,直接从讯为提供的SDK 中获取。

4412开发板 使用手册

4412开发板 使用手册

4412开发板使用手册4412开发板使用手册一、引言4412开发板是一款基于SAMSUNG S5PV4412处理器的开发板,具有强大的计算能力和丰富的外设功能。

本手册旨在为用户提供详细的使用说明,帮助用户快速上手和开发。

二、产品概述4412开发板采用ARM Cortex-A9架构的S5PV4412处理器,主频可达1.4GHz。

板载2GB DDR3内存和16GB eMMC闪存,以及多种外设接口,如USB、HDMI、以太网、SD卡等。

此外,开发板还支持Android、Linux等多种操作系统。

三、主要硬件配置1. 处理器:SAMSUNG S5PV4412 Cortex-A9 Quad Core 1.4GHz2. 内存:2GB DDR33. 存储:16GB eMMC闪存4. 外设接口:USB、HDMI、以太网、SD卡、串口等5. 屏幕:7英寸TFT触摸屏,分辨率1024*600四、系统启动1. 准备一张TF卡,将预先制作好的系统镜像文件写入TF卡。

2. 插入TF卡到开发板TF卡插槽上,连接电源和显示器。

3. 开机后,系统会自动从TF卡中启动,进入操作系统。

五、开发环境搭建1. 下载并安装ARM交叉编译工具链,使用该工具链进行代码编译。

2. 配置开发环境的路径和变量,将工具链添加到系统的环境变量中。

3. 配置开发板的网络连接,以便与开发机进行通信和代码烧录。

4. 安装ADB工具,用于连接和调试Android系统。

六、开发工具介绍1. Eclipse:集成开发环境,用于开发和调试应用程序。

2. Android Studio:用于Android应用程序开发的IDE。

3. GNU工具链:用于编译和调试嵌入式应用程序的开发工具。

4. DDMS:Android调试桥,用于监视设备状态和日志。

七、开发步骤1. 配置开发环境:安装和配置Eclipse、Android Studio、GNU工具链等开发工具。

2. 创建项目:在开发环境中创建一个新的Android或Linux项目。

三星Exynos4412开发板RP4412升级烧写切换inand后按开机键5秒左右

三星Exynos4412开发板RP4412升级烧写切换inand后按开机键5秒左右

三星Exynos4412开发板RP4412升级烧写时注意按开机键5秒左右注意:RP4412开发板升级烧写换到inand启动时一定要按开机键5S左右。

问:用的荣品三星Exynos4412开发板,我把RP4412的iNAND内容清空后,按照升级方法所说的在命令行运行writer_4412_file.bat,升级完后开发板不能从iNAND启动。

什么原因?答:烧写的文件是1G内存的还是2G内存的。

确定下烧对文件。

问:好像是1G,我在试试看试了还是不行呢怎么办,现在都没法启动了。

答:你确认下有没有严格按照步骤来烧写文件容易犯的一个错误是烧写的时候还处于SD启动模式。

问:现在只能从SD卡启动然后烧录?答:不是的。

问:但是inand没法启动了。

答:用SD卡启动,然后清空 inand后需要把拨码开关,调到 inand启动保持SD卡不拔出。

把拨码开关调到off off on on,是iand/sd 启动方式。

问:是说用SD卡启动后,把开关调到iNAND启动,然后执行fastboot烧录?答:是的。

问:中途不断电,直接拨动开关不会烧板么?答:需要断电,断电后再调拨码开关。

问:有点糊涂了,是不是这样操作:1.拨动开关到SD卡启动2.擦入SD卡启动3.断电,拨动开关到iNAND答:是的。

不要拨到SD启动,关键就是烧写的时候拨码开关应该处于inand/sd 状态就行了。

问:不拨到SD卡inand启动不了啊,现在iNAND内容都清空了答:可以的,你没看到启动方式是inand/sd。

Sd卡二级启动。

问:我选择12 off,34 on 根本启动不了。

如果选择124 on,3 off 就可以启动。

答:你可以重新做一遍SD卡,你应该选择2G内存文件,重新做一遍SD卡,然后重新严格按照文档做一次。

问:是啊,要不然选择SD/USB 模式根本启动不了。

答:我在这个步骤上也遇到你一样的问题,所以你应该再仔细试试换了3张SD卡,都是把开关拨到124 on 就能启动问:开关拨到12off,34on就不能启动答:换到inand启动后,长按电源键5秒左右才够时间。

迅为4412开发板实验Menuconfig

迅为4412开发板实验Menuconfig

迅为4412开发板实验Menuconfig
3.1 本章导读
驱动工程师一定要把握 Linux 内核的编译办法,也就是将 Linux 内核源码,编译成针对特定硬件的二进制镜像。

在前面入门视频“01-烧写、编译以及基础学问视频”→“试验 10-搭建编译环境uboot_linux_”中,容易的介绍过如何将 Linux 源码编译生成二进制 zImage在本章中,将越发具体的介绍这部分内容,然后介绍 Kconfig 配置文件,Kconfig 文件是和编译的 Makemenuconfig 工具协作用法的。

最后还需要把握“.config”文件的作用。

3.1.1 工具
3.1.1.1 硬件工具
1)PC 机
3.1.1.2 软件工具
1)虚拟机 Vmware 2)12.04.2
3)Ubuntu 系统下解压生成的 Linux 源码
3.1.2 准备课程
入门视频“01-烧写、编译以及基础学问视频”→“试验 10-搭建编译环境uboot_linux_Android”或者用法手册“五 Android 开发环境搭建以及编译”
3.1.3 视频资源
本节配套视频为“视频 03_Menuconfig_Kconfig”
3.2 学习目标
本章需要学习以下内容:
把握 Menuconfig 的使用
理解 Kconfig 文件并把握修改 Kconfig 的办法
理解配置文件“.config”
Linux 内核配置裁减
第1页共4页。

RP4412开发板烧写Ubuntu系统时卡住

RP4412开发板烧写Ubuntu系统时卡住

荣品RP4412开发板烧写Ubuntu系统时卡住原因
问:荣品4412开发板烧写Ubuntu系统的时候,执行fastboot flash bootloader 4412/u-boot.bin,卡在<wating for divice&get;什么原因呢?
答:没有进入fastboot。

问:我先用Xshell执行fastboot命令,命令行显示已经连接上了。

然后才执行上面的烧写命令。

答:安装一下USB驱动。

指定驱动目录。

问:在没烧写之前,我已经安装了USB驱动,然后当我进入烧写状态的时候,电脑又无法识别USB驱动。

答:fastboot 是一种状态。

当然也要让pc机知道它是啥才能操作,装个360 全部搞定。

问:还有个问题,为什么我已经装过USB驱动,为什么在烧写的时候还要提示无法识别
答:fastboot和你正常启动的时候是不一样的。

我这次用的是XP,用Win8的时候,系统可以自动寻找安装驱动。

android img 的编译过程

android img 的编译过程

android img 的编译过程
Android img的编译过程通常包括以下步骤:
在Android源码根目录下执行初始化环境命令:source build/envsetup.sh。

使用lunch命令选择需要编译的版本,如:lunch full-eng。

执行make命令进行编译,如:make bootimage,这个命令会编译生成boot.img。

boot.img的生成过程主要是将kernel、ramdisk、dtb打包到一起。

在这个过程中,需要用到dtb.img,如果dtb.img过大导致编译不过,那么需要分析dtb.img的生成过程。

dtb.img实际上是将kernel下的dts文件重新命名后拷贝到out目录下生成的。

此外,编译Android系统时,make命令实际上是在执行Makefile文件。

Android系统的Makefile文件在源码根目录下,并且这个Makefile文件会包含另一个主要的Makefile文件,即main.mk。

在main.mk中,定义了一个默认目标droid,这个目标依赖于droid_targets。

droid_targets又依赖于droidcode和dist_files两大伪目标。

当执行make命令时,make工具会检查并解析这些依赖关系,然后按照依赖顺序生成目标文件。

iTOP-4412以模块的方式编译内核驱动

iTOP-4412以模块的方式编译内核驱动

iTOP-4412以模块的方式编译驱动大家好,本章节我们将向大家讲解如何在linux下实现以模块的方式加载内核驱动。

我们以内核里面蜂鸣器的驱动为例来讲解。

1)首先打开内核的源码,如下图所示:2)使用命令“cd drivers/char/”,进入到蜂鸣器驱动所在的目录,如下图所示:3)然后使用命令“vi Kconfig”打开当前目录下的内核配置文件,如下图所示:4)然后找到“config BUZZER_CTL”所在的位置,如下图所示:5)然后把“bool "Enable BUZZER config"“一行改成”tristate "Enable BUZZER config"“,如下图所示:6)然后保存并退出,如下图所示:7)然后回到内核源码的根目录下,如下图所示:8)然后输入命令”make menuconfig“配置内核,如下图所示:9)选择” Device Drivers “->"Character devices"->"Enable BUZZER config",如下图所示:10)然后把” Enable BUZZER config “左边的”*“改成”M“,如下图所示:11)然后保存并退出配置界面,如下图:12)然后使用命令” vi arch/arm/mach-exynos/mach-itop4412.c“打开mach-itop4412.c,如下图所示:13)然后找到” struct platform_device s3c_device_buzzer_ctl “一行,如下图所示:14)把这一行前面的” #ifdef CONFIG_BUZZER_CTL“改成”#if defined(CONFIG_BUZZER_CTL) || defined(CONFIG_BUZZER_CTL_MODULE) “,如下图所示:15)然后找到” &s3c_device_buzzer_ctl“一行,如下图所示:16)把这一行前面的” #ifdef CONFIG_BUZZER_CTL“改成”#if defined(CONFIG_BUZZER_CTL) || defined(CONFIG_BUZZER_CTL_MODULE) “,如下图所示:17)然后保存并退出,返回到linux内核源码的根目录下,如下图所示:18)然后输入命令”make“,开始编译内核,如下图所示:19)编译完成后会在内核的” arch/arm/boot“目录下生成镜像文件”zImage“,如下图所示:20)在内核的” drivers/char“目录下生成了蜂鸣器的驱动模块” itop4412_buzzer.ko “,如下图所示:21)下一步我们烧写生成的zImage到开发板上,然后开发板启动进入到android系统。

exynos4412-uboot移植笔记

exynos4412-uboot移植笔记

Exynos4412 uboot移植笔记一、准备原料三星原厂提供的UBOOT代码-u-boot-samsung-dev.二、在4212平台代码基础上修改成自己的平台YYGY44121.用户目录下新建文件夹yygy4412-uboot cd, mkdir yygy4412-uboot2.进入yygy4412-uboot文件夹,将三星平台代码压缩文件拷贝至此。

解压,重命名为:yygy4412-uboot tar -vxf u-boot-samsung-dev.tar.gz mv u-boot-samsung-dev yygy4412-uboot3.拷贝迅为的CodeSign4SecureBoot文件夹到当前目录。

至此当前目录结构为:4.进入文件夹yygy4412-uboot cd yygy4412-uboot 进入三星平台cd board/samsungcp -rf smdk4212 yygy4412 cd yygy4412Mv clock_init_smdk4212.S clock_init_yygy4412.SMv mem_init_smdk4212.S mem_init_yygy4412.SMv smdk4212.c yygy4412.cMv smdk4212_val.h yygy4212_val.hMv smdk4412_val.h yygy4412_val.hVi lowlevel_init.S#ifdef CONFIG_EXYNOS4412#include "smdk4412_val.h" //改为#include "yygy4412_val.h"#else#include "smdk4212_val.h" //改为#include "yygy4212_val.h"#endifVi clock_init_yygy4412.S#ifdef CONFIG_EXYNOS4412#include "smdk4412_val.h" //改为#include "yygy4412_val.h"#else#include "smdk4212_val.h" //改为#include "yygy4212_val.h"#endifVi Makefile33行:COBJS-y := smdk4212.o //改为:COBJS-y := yygy4412.o37行;SOBJS += mem_init_smdk4212.o //改为:SOBJS += mem_init_yygy4412.o38 ;SOBJS += clock_init_smdk4212.o //改为:SOBJS += clock_init_yygy4412.oCd , cd yygy4412-uboot/yygy4412-uboot修改boards.cfg 添加yygy4412 arm armv7 yygy4412 samsung exynos Cp -av include/configs/smdk4412.h include/configs/yygy4412.hVi include/configs/yygy4412.h265: #define CONFIG_SYS_PROMPT "SMDK4412 # "改为:#define CONFIG_SYS_PROMPT "YYGY4412 # "319:#define CONFIG_IDENT_STRING " for SMDK4412"改为;#define CONFIG_IDENT_STRING " for YYGY4412"Vi u-boot.ldsboard/samsung/smdk4212/libsmdk4212.o (.text)修改为:board/samsung/yygy4412/libyygy4412.o (.text)5.编译make yygy4412_config make6.制作UBOOT因CPU exynos_4412的启动过程是BL0 //BL0固化在iram中的程序(关闭看门狗,关闭中断及MMU,时钟设置,检测om决定启动方式,拷贝bl1到iram中BL1 <8k /*BL1 初始化化环境(中断初始化,设置堆栈等),搬移bl2代码到RAM中,并允许它,BL1是三星提供的,无源码,见CodeSign4SecureBoot/E4412_N.bl1.SCP2G.bin| 如果想看源码,可以反汇编分析,如arm-none-linux-gnueabi-objdump -D -b binary -m arm E4412_N.bl1.SCP2G.bin > b1.asmBL2 <14k //bl2 完成基本硬件初始化(Low_init.s 时钟串口内存flash等)u-boot.bin所以我们单独运行u-boot是不行的,需使用三星提供的BL1 BL2进行打包加密校验cp -rf sdfuse_q ./ //sdfuse_q 三星提供的加密处理(checksum)Cp mkuboot ./ //拷贝SD卡制作UBOOT脚本。

【嵌入式学习笔记二】烧录制作好的镜像到4412开发板中

【嵌入式学习笔记二】烧录制作好的镜像到4412开发板中

【嵌入式学习笔记二】烧录制作好的镜像到4412开发板中说明:本来打算第二份笔记作开发环境搭建的,但是整个开发环境的搭建比较复杂,所以学到后面的时候再回过来系统的讲述一下如何搭建开发环境,这一节内容就讲如何烧录制作好的镜像到开发板中。

一、Android4.0.3的烧写(OTG烧写)1.准备工作(1)硬件准备:iTOP-4412开发板、电源、串口线、OTG线(2)软件及驱动准备:ADB驱动、串口驱动、超级终端(3)安装镜像(压缩包):u-boot-iTOP-4412.bin(uboot,通用引导程序)zImage(kernel,内核)ramdisk-uboot.img和system.img(rootfs,根文件系统)2.烧写过程(1)连接电源、串口线和OTG线(2)打开超级终端,连接开发板(3)打开开发板电源,超级终端下立刻按下回车,进入uboot引导程序(4)分区和格式化操作:(5)第四步:格式化eMMC并创建分区,注:此步骤可以跳过!不必每次都格式化分区;2、格式化命令不会删除uboot文件和Linux 内核文件fdisk -c 0按照默认方式给EMMC分区Linux内核镜像文件为5MAndroid镜像文件为300MData和Cache文件为1G临时文件为300M剩下的为用户区,例如使用手机的时候下载的电影小说都是放在这个区域。

如果想更改Linux 内核镜像文件区域的大小,只能更改u-boot文件a)fatformat mmc 0:1格式化Fat文件系统,也就是默认最大的用户存储空间b)ext3format mmc 0:2格式化Android镜像文件c)ext3format mmc 0:3格式化Data和Cache分区d)ext3format mmc 0:4格式化临时文件保存区(5)输入fastboot 连接主机,这时候超级终端应该不能动了,切到cmd注:如果正常连接的话,输入fastboot应该会有音效,设备管理器也可以看到相应的驱动。

4412开发板android入门篇_Linux内核时间管理

4412开发板android入门篇_Linux内核时间管理

Linux内核定时器的使用linux内核中定时器的使用,定时器是很重要的内容,在调试TP或者其他许多程序时都涉及到定时器的使用,因此掌握定时器的运用是必备的。

下面将介绍定时器驱动的常用函数。

对于具体的驱动后面的文档会以蜂鸣器驱动为例,并介绍框架层及应用怎样去控制蜂鸣器。

1.linux系统时间频率定义系统定时器的时钟频率HZ 定义在 arch/arm/include/asm/param.h#define Hz 100 //ARM构架基本都是1002.节拍总数(jiffies)全局变量jiffies用来记录自系统启动以来产生的节拍总数,根据这个节拍总数可以获得系统自启动以来的时间,linux系统启动时,会将jiffies初始化为0,3.访问jiffies变量jiffies总是无符号长整数,该变量定义在linux/jiffies.h文件中内核定时器使用内核定时器的步骤1. 定义内核定时器结构体变量内核定时器需要一个timer_list结构体(#include<linux/timer.h>),该结构体指定的内核定时器处理函数等struct timer_list {struct list_head entry; //定时器链表入口unsigned long expires; //以jifffies为单位的定时值(过期时间)struct tvec_base *base; // 定时器内部值,用户不要使用void (*function)(unsigned long); // 定时器处理函数unsigned long data; //传给处理函数的长整形参数值int slack; //与expires组合成新的expires,在第二部会初始化这个变量#ifdef CONFIG_TIMER_STATSint start_pid;void *start_site;char start_comm[16];#endif#ifdef CONFIG_LOCKDEPstruct lockdep_map lockdep_map;#endif};2.初始化内核定时器(实际初始化timer_list 结构体)初始化内核定时器需要使用init_timer宏(#include<linux/timer.h>),该宏原型如下:#define init_timer(timer) init_timer_key((timer), NULL, NULL)其中timer就是timer_list的指针,init_timer主要调用了init_timer_key函数void init_timer_key(struct timer_list *timer, const char *name, struct lock_class_key *key){debug_init(timer);__init_timer(timer, name, key);}static void __init_timer(struct timer_list *timer,const char *name,struct lock_class_key *key){timer->entry.next = NULL;timer->base = __raw_get_cpu_var(tvec_bases);timer->slack = -1;#ifdef CONFIG_TIMER_STATStimer->start_site = NULL;timer->start_pid = -1;memset(timer->start_comm, 0, TASK_COMM_LEN);#endiflockdep_init_map(&timer->lockdep_map, name, key, 0);}3.实现定时器处理函数定时器处理函数原型如下:void timer_handle(unsigned long arg) //arg就是 timer_list .data的值4.对timer_list 成员变量的进一步初始化初始化function函数和expires的值,到达过期时间expires时执行function函数。

使用TF卡烧写系统(iTop4412)

使用TF卡烧写系统(iTop4412)

一、制作可以下载的TF卡第一步:给TF卡分区把TF卡插入开发板上,连接开发板串口到电脑,EMMC启动方式(0101),开发板启动。

注意:只有在烧写了错误的uboot到EMMC时才需要用到SD卡启动方式。

超级终端(SecureCRT)返回数据中出现倒计时,输入任意命令,进入uboot。

输入下列命令(同EMMC,只是把0换成1)1) fdisk -c 12) fatformat mmc 1:13) ext3format mmc 1:24) ext3format mmc 1:35) ext3format mmc 1:4注:如果是2G卡,fdisk -c 1改为fdisk –c 1 300 300 300第二步:烧写u-boot1、从开发板取下TF卡,使用读卡器连接TF卡或者SD卡到Ubuntu系统。

2、拷贝光盘中Android源码中的iTop4412_uboot_xxx压缩包到Ubuntu系统中,解压。

拷贝镜像u-boot-iTop-4412.bin到解压的文件夹中。

(注意:如果搭建了Android 环境,则在uboot中有解压的文件夹,也生成了镜像)3、在解压的文件夹(iTop4412_uboot)中,执行:df –l (查看盘符)./mkuboot /dev/sdb(可能是sdc;注意mkuboot后面有空格)二、使用TF烧写第一步:TF卡连接到PC,新建sdupdate文件夹,文件夹名字是固定的。

第二步:拷贝镜像到sdupdate中。

镜像在光盘文件夹image中。

第三步:TF卡插到开发板上,重新启动开发板。

在SecureCRT中输入任意字符进入uboot。

第四步:执行:sdfuse flashall也可以分开烧写:sdfuse flash bootloader u-boot-iTOP-4412.binsdfuse flash kernel zImagesdfuse flash ramdisk ramdisk-uboot.imgsdfuse flash system system.img第五步:烧写完成后,输入重启命令:reset(大概半个小时)。

ramdisk.img及boot.img的生成过程

ramdisk.img及boot.img的生成过程

ramdisk.img及boot.img的生成过程ramdisk.img及boot.img的生成过程ramdisk.imgramdisk.img是组成boot.img的重要部分,从Android/build/core/Makefile中可以看到ramdisk.img的生成该过程.# the ramdiskINTERNAL_RAMDISK_FILES := $(filter $(TARGET_ROOT_OUT)/%, \ $(ALL_PREBUILT) \ $(ALL_COPIED_HEADERS) \$(ALL_GENERATED_SOURCES) $(ALL_DEFAULT_INSTALLED_ MODULES))BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET) $(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) | $(MINIGZIP)...$(hide) $(MKBOOTFS) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $@ramdisk.img是用mkbootfs工具从out/target/product/tcc8900/root目录制作得到,所以,需要把注意力转移到out/target/product/tcc8900/root 目录及其内容是如何生成的这一主题上来。

其实,ALL_PREBUILT包含了root目录中的大多数内容,另外的ALL_COPIED_HEADERS,ALL_GENERATED_SOURCES暂时不予以考虑。

以下列表列出了与out/target/product/tcc8900/root生成相关的文件:/init.goldfish.rc------------------->Android/system/core/rootdir/etc/init.goldfish.rc/init.rc ------------------->device/telechips/tcc92xx-common/init.rc如果device/telechips/tcc92xx-common/init.rc不才存在,将使用Android/system/core/rootdir/etc/init.rc文件/sbin(create)-------------------------------->Android/system/core/rootdir/Android.mk/dev(create)--------------------------------->Android/system/core/rootdir/Android.mk/proc(create)-------------------------------->Android/system/core/rootdir/Android.mk/sys(create)--------------------------------->Android/system/core/rootdir/Android.mk/system(create)------------------------------>Android/system/core/rootdir/Android.mk/data(create)-------------------------------->Android/system/core/rootdir/Android.mk/sbin/adbd(compile)-------------------------->Android/system/core/adb/Android.mk/init(compile)------------------------------->Android/system/core/init/Android.mk/sbin/timetest(compile)---------------------->Android/system/core/extras/timeinfo/Android.mk /lib/modules/tcc92x_nand.ko(copy)------------>Android/hardware/telechips/nand/Makefile/lib/modules/ufsd.ko(copy)------------------->Android/telechips/tcc92xx-common/Android.mk/lib/modules/viqe.ko(copy)------------------->Android/telechips/tcc92xx-common/Android.mk至于其他的诸如/config , /cache, /nand,/inand,/mnt,/mnt/nand,/sata,/scisi,/app-cache等目录都在init.rc中被创建。

如何修改Android系统地Ramdisk以及boot镜像

如何修改Android系统地Ramdisk以及boot镜像

文章介绍的内容在这个wiki上都有。

说实话一开始我不大想写的,想直接介绍没有很多现成资料的ROM的制作,但后来考虑到最好还是层层推进,所以最终还是把这些内容写出来,作为中文参考吧。

下一篇文章再介绍ROM的制作。

如果你已经知道相关方法了,就没必要看了,没有什么新技术。

如果经常看我blog的朋友,应该记得前年我曾经写过一些关于Android的文章,其中一篇是对Android启动过程的进一步研究。

现在要做的事情呢,就是对两年前这篇文章的一个实践了:)当然,当年的文章只能作为参考,因为那是针对模拟器的,Ramdisk.img就在Tools 工具下。

而现在,我们是针对真机提取Ramdisk,修改相关文件,再将其放回去,这样以后Android设备启动时,加载的都是已经修改过的Ramdisk镜像了。

我们不会去直接用Tools目录下的Ramdisk,因为很可能你的Boot镜像是已经修改过的,你只不过想在其基础上进行进一步修改而已。

1提取好,进入正题,本文主要以修改boot.img中的ramdisk为例,但是其他的修改原理都是相通的。

首先,我们要把boot镜像从设备中提取出来,方法就是在上一篇文章中谈到的,先去adb shell中cat /dev/mtd/mtd2 > /sdcard/root.img然后adb pull /sdcard/root.img ./这样就把root.img拷贝到本地目录下了。

好,接下来的步骤,可要看仔细了,错了一点,就完全不对路了。

我们已经介绍过,boot.img的组成结构是+—————–+| boot header | 1 page+—————–+| kernel | n pages+—————–+| ramdisk | m pages+—————–+| second stage | o pages+—————–+那我们要做的就是把这几个部分分别分离出来。

具体的分离原理并不是很难,就是特别麻烦。

【转】编译android之后生成的img文件介绍

【转】编译android之后生成的img文件介绍

【转】编译android之后生成的img文件介绍编译android 之后生成的 img 文件介绍在编译android 之后,会生成几个image 文件,这些文件是:1。

ramdisk.img : 一个分区影像文件,它会在kernel 启动的时候,以只读的方式被 mount ,这个文件中只是包含了 /init 以及一些配置文件,这个ramdisk 被用来调用init,以及把真正的root file system mount 起来。

2。

system.img:是包含了整个系统,android 的framework,application 等等,会被挂接到 "/" 上,包含了系统中所有的二进制文件system|-- app| |-- Browser.apk| |-- Contacts.apk| |-- ContactsProvider.apk| |-- Development.apk| |-- Fallback.apk| |-- GoogleApps.apk| |-- GoogleAppsProvider.apk| |-- Home.apk| |-- ImProvider.apk| |-- Maps.apk| |-- MediaProvider.apk| |-- Phone.apk| |-- SettingsProvider.apk| |-- TelephonyProvider.apk| |-- XmppService.apk| `-- XmppSettings.apk|-- bin| |-- AudioHardwareRecord | |-- AudioInRecord| |-- RecursiveMutexTest | |-- SRecTest| |-- SRecTestAudio| |-- UAPI_PortabilityTest | |-- UAPI_SrecT est| |-- UAPI_test| |-- am| |-- app_process| |-- busybox| |-- cat -> toolbox| |-- chmod -> toolbox| |-- cmp -> toolbox| |-- crasher| |-- dalvikvm| |-- date -> toolbox| |-- dbus-daemon| |-- dd -> toolbox| |-- debuggerd| |-- dexdump| |-- dexopt| |-- df -> toolbox| |-- dmesg -> toolbox| |-- drm1_unit_test| |-- drm2_unit_test| |-- dumpstate| |-- dumpsys| |-- exists -> toolbox| |-- getevent -> toolbox| |-- hd -> toolbox| |-- ifconfig -> toolbox | |-- input| |-- insmod -> toolbox | |-- install_boot_image | |-- ioctl -> toolbox| |-- kill -> toolbox| |-- linker| |-- ln -> toolbox| |-- log -> toolbox| |-- logcat| |-- ls -> toolbox| |-- lsmod -> toolbox | |-- mem_profiler| |-- mkdir -> toolbox | |-- mkdosfs -> toolbox | |-- monkey| |-- mount -> toolbox | |-- mtptest| |-- netcfg| |-- netstat -> toolbox | |-- notify -> toolbox | |-- ping -> toolbox| |-- powerd -> toolbox | |-- pppd| |-- printenv -> toolbox | |-- ps -> toolbox| |-- pv| |-- r -> toolbox| |-- reboot -> toolbox| |-- renice -> toolbox| |-- resetradio -> toolbox | |-- rild| |-- rm -> toolbox| |-- rmdir -> toolbox| |-- rmmod -> toolbox| |-- ro.xml| |-- ro2.xml| |-- roerror.xml| |-- rotatefb -> toolbox | |-- route -> toolbox| |-- runtime| |-- sdutil| |-- sendevent -> toolbox | |-- service| |-- setconsole -> toolbox | |-- setkey -> toolbox| |-- setprop -> toolbox | |-- sh| |-- showmap| |-- showslab| |-- sleep -> toolbox| |-- smd -> toolbox| |-- sqlite3| |-- ssltest| |-- start -> toolbox| |-- stop -> toolbox| |-- su| |-- sync -> toolbox| |-- syren -> toolbox| |-- system_server| |-- toolbox| |-- umount -> toolbox| |-- usbd| |-- watchprops -> toolbox | |-- webgrab -> toolbox | `-- wipe -> toolbox|-- build.prop|-- etc| |-- event-log-tags| |-- favorites-default.xml | `-- gservices.xml|-- fonts| |-- DroidSans-Bold.ttf| |-- DroidSans.ttf| |-- DroidSansFallback.ttf | |-- DroidSansMono.ttf| |-- DroidSerif-Bold.ttf| |-- DroidSerif-BoldItalic.ttf | |-- DroidSerif-Italic.ttf| `-- DroidSerif-Regular.ttf |-- framework| |-- am.jar| |-- core.jar| |-- ext.jar| |-- framework-res.apk| |-- framework-tests.jar| |-- framework.jar| |-- input.jar| |-- monkey.jar| `-- ssltest.jar|-- lib| |-- libFFTEm.so| |-- libUAPI_jni.so| |-- libaes.so| |-- libandroid_runtime.so | |-- libaudioflinger.so| |-- libc.so| |-- libcorecg.so| |-- libcrypto.so| |-- libctest.so| |-- libcutils.so| |-- libdbus.so| |-- libdl.so| |-- libdrm1.so| |-- libdrm1_jni.so| |-- libdvm.so| |-- libembunit.so| |-- libevent.so| |-- libexpat.so| |-- libhardware.so| |-- libicudata.so| |-- libicui18n.so| |-- libicuuc.so| |-- libm.so| |-- libmedia.so| |-- libmedia_jni.so| |-- libnativehelper.so| |-- libopengles_cm.so| |-- libpim.so| |-- libpixelflinger.so| |-- libpv.so| |-- libreference-ril.so| |-- libril.so| |-- libsgl.so| |-- libsonivox.so| |-- libsqlite.so| |-- libssl.so| |-- libstdc++.so| |-- libsurfaceflinger.so| |-- libsystem_server.so| |-- libthread_db.so| |-- libui.so| |-- libutils.so| |-- libwebcore.so| |-- libz.so| `-- security| `-- cacerts.bks|-- lost+found|-- media| `-- audio| `-- ringtones| |-- em_ringtone1.mp3 | |-- em_ringtone2.mp3 | |-- ring3.mp3| `-- ringer.mp3|-- sounds| `-- test.mid`-- usr|-- keychars| |-- qwerty.kcm.bin| |-- qwerty2.kcm.bin| `-- tuttle2.kcm.bin|-- keylayout| |-- qwerty.kl| `-- tuttle2.kl|-- share| |-- bsk| | |-- V_FD_speed_101.bsk | | `-- V_FD_std_101.bsk| `-- zoneinfo| |-- zoneinfo.dat| `-- zoneinfo.idx`-- srec`-- config|-- | |-- audio| | `-- v139| | `-- v139_113.nwv| |-- baseline.par| |-- baseline11k.par| |-- baseline8k.par| |-- dictionary| | `-- basic.ok| |-- g2p| | |-- en-US-15k.dictionary | | |-- en-US-60k.dictionary | | |-- en-US-90k.dictionary| | `-- en-US-ttp.data| |-- grammars| | |-- VoiceDialer.g2g| | |-- bothtags5.g2g| | |-- dynamic-test.g2g| | `-- enroll.g2g| `-- models| |-- generic.lda| |-- generic.mul| |-- generic.swiarb| |-- generic.swimdllst| |-- generic_f.swimdl| `-- generic_m.swimdl|-- shared| `-- sigmoid_param`-- speech_prompt.mp33。

四核RP4412开发板的root问题

四核RP4412开发板的root问题

四核RP4412开发板的root问题
问:荣品四核RP4412开发板的板子是root权限吗?
或者怎么root?
答:su 。

android 我们提供的是root用户
问:root以后的授权管理器没法运行。

我需要root,我要在android程序中调用一个shell命令执行system下的一个程序,所以需要root权限。

安卓程序要用高级权限的时候会弹出一个窗口请求授权,我用adb shell 下执行/system/ffmpeg 是可以是执行的,但是这时我是用cmd-&get;adb shell 下执行的,现在我想在我的android程序中调用/system/ffmpeg,返回的问题是权限问题
答:到串口下面mount执行结果看看。

问:
比如,我要做一个应用,修改手机的时间。

但是编译的时候不能用eclipse直接生成APK因为普通用户没有权利修改系统时间。

答:apk获取系统权限:1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserIdandroid.uid.system这个属性。

2. 修改Android.mk文件加入LOCAL_CERTIFICATE : platform这一行
3. 使用mm命令来编译生成的apk就有修改系统时间的权限了。

问:RP开发板这板子,我这怎么总显示没root,re文件管理里也看不到system 里的文件
答:电脑上的腾讯管家/应用宝,
装好,打开,工具箱,文件管理。

tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中

tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中

tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中tiny4412学习笔记-将uboot、zImage、文件系统烧到emmc中1、首先还是要将u-boot写入SD卡中从SD卡启动。

使用读卡器将SD插入电脑中,使用umount卸载u盘,fdisk -l 显示其挂载点为 /dev/sdb1切换到/home/bunfly/images/uboot_tiny4412/sd_fuse/tiny4412目录下,执行./sd_fusing.sh /dev/sdb拨动最右边开关选择从SD卡启动。

附加编译过程:1.进入开发板提供的源码文件包,解压uboot源码包。

cd /home/bunfly/source_code/tar xf uboot_tiny4412-20130729.tgz2.进入uboot文件夹,更改uboot中tiny4412的配置文件。

将225 中的Tiny4412更改为bunfly。

cd uboot_tiny4412vim include/configs/tiny4412.h更改255行为#define CONFIG_SYS_PROMPT "bunfly # " 3.回到u-boot文件夹,编译u-bootmake tiny4412_configmake4.进入sd_fuse文件夹编译cd sd_fusemake5.此时目录/home/bunfly/images/uboot_tiny4412/sd_fuse/tiny4412再执行./sd_fusing.sh /dev/sdbOK!2、将uboot写入emmc,并通过EMMC驱动,不再只用SD卡启动0: 前奏mmcinfo 0 : 查看mmc卡信息。

0 表示SD卡; 1表示emmc卡,如下图 fdisk-p 0 : 查看mmc卡分区信息1: 格式化emmc卡(一般分四个区) fdisk -c 1 320 809 524 :可以参考前面查看的信息格式化fatformat mmc 1:1 ext3format mmc 1:2 ext3format mmc 1:3 ext3format mmc 1:4 2: 将bl1.bin, bl2.bin, u-boot.bin, tzsw.bin烧录到eMMC中emmc open 1 :打开emmc文件 dnw 0x40000000 <--------------> dnwE4412_N.bl1.bin mmc write 1 0x40000000 0 0x10 dnw 0x40000000<--------------> dnw bl2.bin mmc write 1 0x40000000 0x10 0x1C dnw0x40000000 <--------------> dnw u-boot.bin mmc write 1 0x400000000x30 0x21D dnw 0x40000000 <--------------> dnw E4412_tzsw.bin mmc write 1 0x40000000 0x2c0 0xB8 emmc close 1bin文件路径/home/bunfly/images/uboot_tiny4412/sd_fuse/tiny4412 和/home/bunfly/images/uboot_tiny44123: 启动方式拨到emmc启动Uboot就成功4: 写入Linux镜像4412开发板端先搭好NFS网络文件系统保证能正常启动:#set bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.10:/home/kernel ip=192.168.1.20 #save 开发板:PC端:fastboot <--------------> fastboot -w (注意:fastboot 这个命令是我主机上的命令,如果不能运行要先安装再用./fastboot) fastboot flash kernel zImage (先进入zImage目录/home/bunfly/source_code/linux-3.5/arch/arm/boot)fastboot rebootmovi read kernel 0 40008000bootm 40008000启动linux成功!(此时还是网络文件系统)5: 写入文件系统通过nfs挂载网络文件系统后 mount /dev/mmcblk0p3 /mnt 将文件系统拷贝进去,然后解压cp /rootfs_qtopia_qt4-20131130.tar.gz /mnt 进入mnt目录并解压,将里面的文件mv出来。

车联网终端产品解决方案荣品RP4412支持Android系统

车联网终端产品解决方案荣品RP4412支持Android系统

车联网终端产品解决方案荣品RP4412支持Android4.4系统什么是车联网?车联网必须是即符合车、联、网三者各自的本质规律和本质特性的复合体,同时又是符合三者跨界融合、与创新规律的科学体系。

车联网终端第一个必要功能是解决车辆内部互联和外部互联(内部与车域网互联,外部与各种泛在网络、包括卫星定位网络的互联)。

为什么需要车联网终端解决方案?因为汽车本身是没有感知的,需要人为的加上“眼睛”(摄像头)、“耳朵”(音频输入)、“与人交流’(显示器)等等功能。

此时选择一个成熟有经验的车联网终端产品方案公司进行定制就比较节省成本和时间。

荣品RP4412除了支持Android系统还有什么功能?可采用两种方案来进行定制开发,高稳定性版本方案和低成本方案,均可进行方案定制。

以下介绍RP4412高稳定版本。

硬件配置:CPU 三星Exynos 4412四核Cortex-A9,主频为1.4GHzDDR3 1~2GB存储 4G~16 eMMC系统 Android 4.4 Linux常见功能、接口及基本配置:液晶屏最大可以点到1920*1080分辨率的液晶屏4路 USB_HOST 输出1路USB OTG 2.0搭载WCDMA 3G模组或4G模组2路Camera接口可进行前后视摄像头切换,一路摄像头30万像素以上,另一路摄像头500WHDMI接口 带有防静电、热插拔保护,标准HDMI v1.4,1080p高清分辨率LCD接口 连接RGB信号的LCDTP接口 多点触摸(大于5点)WIFI 802.11b/g,802.11n(1x1)BT 2.1 + EDR / Bluetooth 3.0TF卡接口 1个TF卡接口SD卡接口 1个标准SD卡接口以太网口 10M/100M自适应网口支持耳机输出支持MIC输入板载 GPS 模块或GPS+北斗模块串口 2个,防静电、热插拔RS485 1个重力感应地磁+陀螺仪带纽扣电池的RTC实时时钟带有电量计和充电管理的锂电池接口,支持USB、AC两路电源输入充电 开发平台需要有便携性,硬件与显示屏通过结构件固定在一起。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档