您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > Android和linux基础知识笔记分享 有米分享
有米手机应用广告(优蜜信息科技):020-393408921/78Android和linux基础知识笔记分享试阅:。。。。。。内核启动时缺省执行`init'程序,内核将会到/sbin/,/bin/等目录下查找默认的init,如果没有找到那么就报告出错。而最后它会去试/bin/sh(可能在/etc/rc)。如果说,例如,如果你的init程序坏掉了,只要使用init=/bin/sh这个启动参数就能让你在启动时直接跳到解译环境(shell),使你能够换掉坏掉的程序。`ip='参数nfsaddrs=my-ip:serv-ip:gw-ip:netmask:name:dev:autoip=192.168.1.101:192.168.1.100:192.168.1.100:255.255.255.0::usb0:onip=192.168.2.175:192.168.2.56:192.168.2.201:255.255.255.0::eth0:onmy-ip--板子的ip使用何种协议端视配置核心时打开的选项以及auto参数而定。如果设定此参数,就不会使用反向地址解析协议或启动协议。serv-ip--网络文件系统服务端之互联网地址。gw-ip--网关(gateway),netmask--本地网络界面的网络掩码。如果为空白,则网络掩码由客户端的互联网地址导出,除非由启动协议接收到值。name--客户端的域名。如果空白,则使用客户端互联网地址之ASCII-标记法,或由启动协议接收的值。dev--要使用的网络设备域名。auto--用以作为自动配置的方法。参考文档。。。。。。正文:Android、linux基础知识总结1.Android编译系统分析2.文件系统分析3.制作交叉工具链4.软件编译常识5.设置模块流程分析6.linux系统启动流程分析7.linux下svn使用指南8.LFS相关9.linux内核的初步理解android系统开发指南(常用环境的搭建和使用)说明:有的步骤会用到脚本简化操作,脚本通过svn服务器获取:svncosvn://192.168.2.148/smartphone/td0901/release/images/scripts有米手机应用广告(优蜜信息科技):020-393408922/78用户名为各位的姓名拼音,密码与用户名相同一编译android源码,制作文件系统二ubuntu下烧录内核和文件系统一编译android源码,制作文件系统1.开发主线源码位置:svn://192.168.2.148/smartphone/td0901/trunk/cupcake-jianping//cupcake源代码svn://192.168.2.148/smartphone/td0901/trunk/linux-2.6.28-a1//内核源代码2.打标的源代码位置svnlistsvn://192.168.2.148/smartphone/td0901/tag我们可以通过svnlistsvn://192.168.2.148/smartphone查看svn版本库内核更多信息请参卡以下文档:://192.168.2.148/svn/smartphone/智能平台开发部资料管理手册V1.0.doc下svn操作指南及规范.doc用户名为各位的姓名拼音,密码与用户名相同3.编译源码进入cupcake工作拷贝的顶层目录,执行:../make_image15.sh部分执行结果:out/target/product/littleton/root/内核需要使用的initramfsout/target/product/littleton/system文件系统的系统分区out/target/product/littleton/data/文件系统数据分区4.编译内核此处内核编译主要针对驱动组之外的同事1设置工具链内核的linux-2.6.28-a1/Makefile中设定了:CROSS_COMPILE?=arm-linux-所以设置PATH环境变量,保证能找到正确的工具链假设工具链位于:/usr/local/marvell-arm-linux-4.1.1/设置为:exportPATH:=/usr/local/marvell-arm-linux-4.1.1/bin/:$PATH2更改编译选项(网络启动或者本机启动)内核顶层目录执行:makemenuconfigGeneralsetup---[*]InitialRAMfilesystemandRAMdisk(initramfs/initrd)support()Initramfssourcefile(s)(NEW)如果需要支持网络启动反选[]InitialRAMfilesystemandRAMdisk(initramfs/initrd)support如果需要支持本地启动选中[*]InitialRAMfilesystemandRAMdisk(initramfs/initrd)support设置()Initramfssourcefile(s)(NEW)为root拷贝cupcake编译结果out/target/product/littleton/root/到内核顶层目录3编译内核顶层目录执行makezImage有米手机应用广告(优蜜信息科技):020-393408923/78编译好的内核:arch/arm/boot/zImage5.搭建网络开发环境1安装nfs服务器sudoapt-getinstallnfs-kernel-servernfs-common2修改nfs服务器配置文件/etc/exports,确保有以下配置项/nfsroot/rootfs*(rw,no_root_squash,sync)我们在内核中已经固定,手机通过网络方式启动,默认从/nfsroot/rootfs读取文件系统,修改配置项后需要重启nfs服务器:sudo/etc/init.d/nfs-kernel-serverrestart3配置网络根文件系统拷贝out/target/product/littleton/root/内容到/nfsroot/rootfs目录拷贝out/target/product/littleton/system内容到/nfsroot/rootfs/system修改/nfsroot/rootfs/init.rc去掉几个mount命令为了使大家的过程,结果统一,可以使用脚本mkfs.cupcake完成在执行mkfs.cupcake.nfs脚本前先到cupcake-jianping目录下执行:../make_env15.sh设置环境变量,获取通过手动输入android源码的位置,让脚本来设置环境变量。二ubuntu下烧录内核和文件系统1.硬件:手机一台usb转串口线一根usb转网卡线一根2.软件环境1tftp服务器执行脚本:setup_tftpd.sh安装和配置tftp服务器,我们默认以/tftpboot为tftp服务器的根目录,需要下载的文件都放在该目录下。2获取待烧录的镜像文件svnlistsvn://192.168.2.148/smartphone/td0901/release/images查看服务器上的版本情况,通常我们下载最新的,例如,下载9月18号发布的版本:svncosvn://192.168.2.148/smartphone/td0901/release/images/images200909183烧录镜像文件用以下文件为例,示范通过tftp烧写内核和文件系统内核zImage0917系统分区:system0918.img数据分区data0918.img待烧写的以上文件必须存在于tftp服务器根目录/tftpboot下。具体步骤:首先连接好硬件设备进入blob下载模式1blob起来后按任意键Processingobmparameters...Can'tdetectmicco.SetPMICasnormalI2Cmode.NANDflash(Manu=0x98Device=0xba)detected!Slot0Found有米手机应用广告(优蜜信息科技):020-393408924/78getrelocationtableFoundMainBadblocktableataddress0x0f000000,version0x01FoundMirrorBadblocktableataddress0x0efc0000,version0x01ConsideryourselfBLOBed!blobversion2.0.5-pre3forMarvellLittletonCopyright(C)19992000200120022003Jan-DerkBakkerandErikMouwblobcomeswithABSOLUTELYNOWARRANTY;readtheGNUGPLfordetails.Thisisfreesoftware,andyouarewelcometoredistributeitundercertainconditions;readtheGNUGPLfordetails.lengthnotalignwithpagesize,changeto0x0Readflashfrom0x60000,length0x0DoneAutoboot(2seconds)inprogress,pressanykeytostop..AutobootabortedTypehelptogetalistofcommandsblob2通过tftp下载内核到pc内存0x80800000地址处blobtftpzImage0917Begininitetherusbnet!!!*****Plug-inUSBcable&configusbdnetnow******exitcheck_usb_connection:1TFTPingzImage0917*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^OK.received6144blocks(3145156bytes)tftp_cmd:file'zImage0917'loadedviatftptoaddress0x80800000.3擦除原来的内核分区,0x100000为分区起始地址,0x300000为分区长度blobnanderase-z0x1000000x400000thecurrentNANDchipdoesnotsupportBlockUnlocking.Erase0x300000lengthdatafromflash:0x100000Eraseflashfrom0x100000,length0x300000........................Done4烧写内存0x80800000开始实际长度为3145156的内核数据到起始地址为0x100000的内核分区blobnandwrite-z0x808000000x1000003145156thecurrentNANDchipdoesnotsupportBlock
本文标题:Android和linux基础知识笔记分享 有米分享
链接地址:https://www.777doc.com/doc-5057742 .html