1.怎么安装repo?
2.总结uboot的码解重要概念,不知道的码解看过来
怎么安装repo?
安装repo(用来更新Android源码)
创建~/bin目录,用来存放repo程序,码解如下:
。码解$ cd ~
。码解$ mkdir bin
并加到环境变量PATH中,码解ext datefield 源码在第2步中已经加入
下载repo脚本并使其可执行:
。码解$ curl /bbs/pub/cupcake。码解tar。码解gz。码解而且解压出来的码解 cupcake下也有。repo文件夹,码解qeventloop 源码可以通过repo sync来更新cupcake代码:
。码解tar -xvf
cupcake。码解tar。码解gz
repo sync(更新很慢,用了3个小时)
5、编译Android源码,并得到~/project/Android/cupcake/out 目录
进入Android源码目录:
make
这一过程很久(2个多小时)
6、在模拟器上运行编译好Android
Android SDK的emulator程序在Android-sdk-linux_x-1。
0_r2/tools/下,emulator是需要加载一些image的,默认加载Android-sdk-linux_x-1。0_r2/tools/lib/images下的mempcpy源码kernel-qemu(内核) ramdisk。img
system。
img
userdata。img
编译好Android之后,emulator在~/project/Android/cupcake/out/host/linux-x/bin下, ramdisk。img
system。img
userdata。
img则在~/project/Android/cupcake/out/target/product/generic下
cd ~/project/Android/cupcake/out/host/linux-x/bin
增加环境变量
。
vim ~/。bashrc
在。bashrc中新增环境变量,feelvos源码如下
。#java 程序开发/运行的一些环境变量
。export Android_PRODUCT_OUT=~/project/Android/cupcake2/out/target/product/generic
。
Android_PRODUCT_OUT_BIN=~/project/Android/cupcake2/out/host/linux-x/bin
。export PATH=${ PATH}:${ Android_PRODUCT_OUT_BIN};
最后,同步这些变化:
。
source ~/。bashrc
。emulator -image system。img -data userdata。img -ramdisk ramdisk。softroce源码img
最后进入Android桌面,就说明成功了。
out/host/linux-x/bin下生成许多有用工具(包括Android SDK/tools的所有工具),因此,可以把eclipse中Android SDK的路径指定到out/host/linux-x/bin进行开发。
总结uboot的重要概念,不知道的看过来
本篇内容不讲解uboot源码,只总结面试中高频问到的重要知识点。内容适用于嵌入式新人了解uboot,对老手有复习和查漏补缺的作用。
1、PC机启动:上电后,BIOS程序初始化DDR内存和硬盘,从硬盘读取OS镜像到DDR,跳转执行OS。
2、嵌入式Linux系统启动:上电后执行uboot,初始化DDR、Flash,将OS从Flash读到DDR,启动OS。
3、uboot定义与作用:uboot属于bootloader,作为单线程裸机程序,主要作用是初始化硬件、内存、flash等,引导内核启动。
4、uboot启动阶段(不同平台差异):MTK平台:boot rom -> preloader -> lk -> kernel;RK平台:bootrom -> spl(miniloader) -> uboot -> trust -> kernel;NXP平台:bootrom -> bl2 -> ATF -> uboot -> kernel。
5、uboot支持多种启动方式:SPI Flash/eMMC/Nvme/SD/Hard Disk/U-Disk/net。启动方式不同,固件存放位置也不同。
6、掌握uboot的关键点:命令和环境变量。uboot启动后大部分工作在shell中完成,命令用于操作,环境变量如bootcmd和bootargs,用于设置启动参数。
7、bootargs参数详解:root用于指定rootfs位置,console用于设置控制台,mem用于指定内核使用内存大小,ramdisk_size用于设置ramdisk大小,initrd用于指定initrd参数,init用于指定启动脚本,mtdparts用于设置分区。
8、常用bootargs组合:文件系统为ramdisk、jffs2类型、nfs等不同情况下的bootargs设置示例。
总结,了解uboot是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。