最后在运行时加参数-Djava.library.path=[dll存放的路径]
###############################################################################
MStar Android网络机代码组成
从代码结构上分,MStar Android网络电视包含MBoot、PM、Kernel、Supernova、ICS、TvApp和Local MM这7个部分,以MSD6A801的代码包为例,如图所示:
上面7个部分跟Android架构的关系图:
下面针对这7个模块进行详细描述,内容主要涉及启动流程和代码结构等,最后将对各
模块的相互关联做个总结。
MBoot概述
MBoot是MStar Boot Loader的缩写,由SBoot和UBoot两部分组成。MBoot用于系统的启动引导,它会初始化硬件,然后从NAND flash加载Linux内核(kernel)和应用程序(applications)到DRAM。(说明:其实标准的UBoot程序已经做了MBoot的全部工作,MStar引入SBoot的概念,是沿用了MStar非网络机的用法)
以下是上面提到的几个名词的对比: Acronym MBoot SBoot UBoot Description MStar Boot loader Small Boot loader Universal Boot loader MBoot存储在flash,该flash一般采用16M/32M bit容量的spi flash,里面存放系统的引导程序及部分系统、用户数据。系统上电后首先通过Mboot引导启动,Mboot完成启动后再启动系统主程序。系统的主程序存放在NAND Flash中。不管是spi flash还是Nand flash,任何一个有故障,都会导致整机无法启动。
MBoot主要包含sboot和uboot两部分:
说明:标准的GPL UBoot代码放在目录u-boot-1.1.6里面,经过MStar移植的UBoot代码放在u-boot-2011.06。
SBoot介绍
SBoot代码结构树
SBoot是MBoot启动系统的入口点,用于初始化CPU(ARMv7),Cache,寄存器等。初始化工作完成后,MBoot将跳到UBoot的入口点。
SBoot的目录结构主要包括下面子目录:bin, inc, scripts, out, src。 bin: 存放PM.bin,关于PM在后面会介绍;
inc:board文件,如MSD6A608对应的BD_MST038B_10AHT_EAGLE.h;
scripts:存放脚本文件,用于配置相关参数,即输入make menuconfig后弹出的menu configuration window;
out:存放MBoot编译生成的bin; src:SBoot的源代码.
SBoot启动流程
启动入口和地址在sboot.lds(lds文件是决定一个可执行程序的各个段的存储位置,以及入口地址,这也是链接定位的作用)文件里描述:
下面以MSD6A608为例进行说明:
? 入口点即ENTRY(_vector),在/sboot/src/eagle/boot.S有实现代码,boot.S
会生成对应的boot.o;
? 启动地址:0x00000000;Ram的地址,这里的Ram指的是DSP Ram; 需要注意的是,启动代码即boot.o应该放在第一个section上并且boot.o不能大于8Kbytes。如下是SBoot的section定义,同样在/sboot/src/eagle/sboot.lds里能找到实现。
入口Entry执行完后,执行/sboot/src/eagle/bootrom.S,这一步进行寄存器设置,注意一点是,这一步还会进行Uart的初始化工作,具体实现在/sboot/src/eagle/include/Drv_uart.inc
接着执行/sboot/src/eagle/bootram.S,在这一步会跳到UBoot执行,过程:? BOOT_CopyBootRAM? BOOTRAM_Entry?UBoot entry.
SBoot完整的流程如下:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Mstar理论及实践篇(2)在线全文阅读。
相关推荐: