——参考08AW0840MP_TECHFAITH25_08A_PMWY_V1_gprs_MMI
1 2 3 4 5 6 7 8 9 10
编译环境 .................................................................................................................................... 3 Simulator生成和使用 ............................................................................................................... 5 MTK开机流程 .......................................................................................................................... 5 EMI配置(Flash,RAM等) ................................................................................................. 9 消息机制 .................................................................................................................................. 12 如何添加新的应用(如:Task) .......................................................................................... 13 Trace ......................................................................................................................................... 13 MTK异常处理 ........................................................................................................................ 13 PC工具 .................................................................................................................................... 13 Timer ........................................................................................................................................ 13
作者 zhudd zhudd zhudd
时间 2008.11.17 2008.11.20 2008.11.26 版本 0.9.0 0.9.1 0.9.2 修改内容 编译环境、Simulator的生成和使用 NorFlash和RAM的配置 添加MTK的底层开机流程 1. 编译环境
MTK环境搭建步骤
A)、MTK在Cygwin下不允许有sh.exe(当然也可以不装Cygwin)。更准确的说,只要Dos的环境变量PATH中没有sh.exe就可以了。
B)、MTK的ADS需要装到C:\\Program File\\ARM\\ADS1_2下,也可以直接Copy NXP系统安装的C:\\ ARM\\ADSv1_2 到C:\\Program File\\ARM\\ADS1_2。
C)、ADS安装完后需要经过升级,请参考《dragonfly编译环境的搭建以及编译方法.doc》说明,或者直接通过工具——ads12_latest_windows_patch.exe产生的Bin替换ADS1_2下的Bin文件夹进行升级。
D)、必须安装的软件参考《SOP_Third_Party_Package_Installation_20080403.pdf》,软件要按照步骤安装,因为GCC部分的更新有文件替换的动作。 E)、还必须安装——ActivePerl-5.6.1.626-MSWin32-x86-multi-thread.msi用于运行Perl脚本。
F)、系统必须安装Excel,并且在编译的时候不要运行Excel。
G)、环境搭建完成调用工程Tools下的chk_env.exe去查看环境是否设置OK。 H)、Tools下的Make的版本号更新到3.81,版本号可以通过make –v指令查看。Make-3.81的版本推荐不要按照文档描述的地址下载,目前网络上Make同版本还是有差异。请使用MTK提供的:
,(我会邮件提供给大家)。
编译方法
New:
是全新开始构建整个工程的ARM版,包括图片、声音、字符串等资源都要重做,依赖的其他动作最多,是最彻底也是耗时最长的一个动作,一般得到一个新的MTK发布版本后要做一次。 Update:
是重新更新整个工程的ARM版,该动作会扫描工程中文件和库的依赖关系,若依赖关系有变化会建立新的依赖关系,随后根据新的依赖关系重新编译链接有改动的部分,一般在增加或删除一些驱动或应用的情况下需要用update。 Remake:
是重新编译整个工程的ARM版,该动作只是简单的重新编译链接有改动的部分,不检查依赖关系,是耗时最短的一个动作,也是最常用的动作。 New_modis:
是全新构建整个工程的PC模拟版,其调用VC的编译器和链接器得到一个可以在windows上运行的PC模拟版。MMI应用软件工程师可以在没有硬件板的情况下在PC上检查和调试自己写好的应用。同样的Modis命令还有:【gen_modis】,【clean_modis】,【remake_modis】,【codegen_modis】。 [需要进一步了解]: @actions = qw(【new】【update】 【remake】 【clean】 【resgen】 【codegen】 【emiclean】 【emigen】 【sysgen】 【ckscatter】 【mmi_feature_check】 【mmi_obj_check】 【operator_check】 【viewlog】 【rel】 【c,r】 【c,u】 【ckcr】 【dummy_data_check】 【removecode】 【custpack】 【custpackini】 【scan】);
注意点:
1) 对应make目录下的xxx_GPRS.mak文件中,xxx为Project的名字。也就是编译时需
要输入的Project名字。例如:make xxx gprs new。
2) Make的版本问题
。
2. Simulator生成和使用
产生过程
方法一、通过plutommi\\mmi的VC++工程编译完成。需要设置,设置根据《PC Simulator
config--IME》文中的“06A&06B”章进行设置。例如工程:TECHFAITH25_06B_PMWY。
方法二、通过编译Modis来产生模拟器,例如TECHFAITH25_08A_PMWY。步骤如下: A)make xxx gprs new:编译MTK平台Source Code
B)make xxx gprs new_modis:编译模拟器所需要的window环境。 C)通过VC++ build工程,产生模拟器。 注意点:
1、 TECHFAITH25_06B_PMWY中,运行PC_Simulator.exe时,在相应VC工程的Debug
文件夹下或者C盘的System32文件夹下必须含有2个动态链接库,
。TECHFAITH25_08A_PMWY没有出现这样的情况。
2、 VC++的版本用的是VC6,在局域网的Share文件夹中有。目前VC2005同事反映
有问题。VC地址:(\\\\10.8.0.1\\share\\software\\public)
使用方法
请参考:《MoDIS_User_Manual_07A_MMI_Source.pdf》
3. MTK开机流程
概念介绍
1、 Boot ROM,Boot Code,Boot Loader
Boot ROM:内部0x4800 0000 位置,IC进行的Mask ROM,出厂即完成,用于Factory programming和Nand Boot,内部存储2K~32K的程序。
Boot Code:硬指令,和Memory Re-Mapping Mechanism一起存在EMC(External Memory Controller)中,总共包含2条两天指令:
Boot Loader:Boot Loader Code,存在Nand中,会先由Boot ROM中的Code中搬移到RAM中运行,通常Boot Loader在TCM中运行。由Boot Loader Code来启动
系统。Nand Boot一定需要Boot Loader Code,如果是基于NorFlash的系统,通常是不含有Boot Loader Code的。 2、 主要文件介绍
Bootarm.s —— 用于从NorFlash的启动(通过“Entry”进入) BL_bootarm.s —— 用于从NandFlash启动(通过“Entry”进入) Scat×××.txt —— memory map
×××.lis ,×××.sym,×××.log —— 编译信息 3、 BootLoader的功能以及结构
功能:
A) Enable PLL B) Initialize LPSDRAM C) Shadow Primary MAUI onto LPSDRAM
D) Switch PC toward the entry of Primary MAUI 结构:
4、 IC的内部结构(内部RAM,ROM,TCM)
MCU启动流程
流程图——NandBoot
说明:
1、 UART命令
通过读,写,跳转等命令进行数据验证,详细介绍请参考《BROM_Design_V2.10.pdf》 2、 MAUI ROM:Primary MAUI和Secondary MAUI。Primary是Boot-Up需要的部分,例
如RTOS,FS,Driver,L1,Modem,customization Codes等,其余的就在Secondary里面。两部分都有自己的RO-Code,RO-Data,RW和ZI。
3、 Third ROM:在06B和以后的版本中,NFB已经更新为ENFB,就有了Third ROM的概
念,用于存储Images,Strings,Audio等,并通过程序动态加载到RAM内。 4、 Reserve
流程图——NorBoot:
说明:
1、 Remapping
A) 预留320个Byte作为Exception Talbe使用,通过程序将Flash中Exception Talbe
复制到内部RAM。
B) EMI Read Latency默认为7,Remapping需要将CS0和CS1均设置为2。 C) Code的开始地址从0x0000 0000变为0x0800 0000。
其中,A和B在Bootarm.s中完成,并通过全局编译开关进行保护。
2、 Reserve 3、 Reserve
4. EMI配置(Flash,RAM等)
NorFlash&RAM配置的基本步骤:
1、 Option.mak:确认平台选用MCP或者LPSDRAM的Device list.(例如:MTK08A
选择的Device list为:MemoryDeviceList_Since08Aw0820.xls)
2、 Flash_opt.h:确认选择的外部Memory,并且确认型号,通过型号可以查看相应的
一些参数值,通过这些参数对程序的宏,变量,结构体等进行设置。
3、 通过Device list同样可以知道目前的系统Support哪些型号的MCP和LPSDRAM,
如果要更换不同的厂家,型号,容量等就可以从Device list中去查找,选择好Device型号后,通过对应型号的参数对对程序的宏,变量,结构体等进行设置。 4、 设置文件及内容如下:
设置方法一:自动
设置过程:Perl运行emiGenv5.pl,通过custom_memorydevice.h,去搜寻MemoryDeviceList_Since08Aw0820.xls,然后自动产生如下的五个文件。
flash_opt.h,custom_emi.h,custom_emi.c,custom_flash.c, custom_flash_norfdm5.c,
----------------------------------------------------------------------------------------------------------- #define MEMORY_DEVICE_TYPE NOR_RAM_MCP//Memory 类型 #define NOR_FLASH_TYPE_SPANSION_PL_N //memory 型号
const kal_uint32 EMI_EXTSRAM_SIZE = (()<<20)>> 3//外部RAM的大小 #define __MULTI_BANK_NOR_DEVICE__ //对应的Nor的属性 #define CS0_PART_NUMBER S71PL256NC0HAW5B//CS0 型号 #define CS1_PART_NUMBER S71PL256NC0HAW5B// CS1型号
#define FLASH_ACCESS_TYPE ASYNC_ACCESS //Flash Access的类型 #define RAM_ACCESS_TYPE ASYNC_ACCESS //RAM Acess的类型 -----------------------------------------------------------------------------------------------------------
默认情况:FAT 在Norflash的最后一个Bank(Last Bank)
#define FLASH_BASE_ADDRESS (0x01C00000)//文件系统开始地址 #define ALLOCATED_FAT_SPACE (0x00400000)//文件系统大小
#define NOR_FAT_PARTITION_SECTORS 0//Norflash文件系统中给USER使用的
//Sector数(512Byte/Sector)
#define PARTITION_SIZE (0) //Nanflash文件系统中给USER使用的Sector数,
//(512Byte/Sector),如果不是NandBoot就设置为0
FLASH_REGIONINFO_VAR_MODIFIER FlashRegionInfo RegionInfo[] = {
{0x40000,15}, {0x10000,4},
EndRegionInfo /* Don't modify this line */ }; //Last Bank的Block结构定义 #define TOTAL_BLOCKS 19//Region 的总的Block
----------------------------------------------------------------------------------------------------------- #define __PAGE_BUFFER_PROGRAM__//定义是否支持PBP(Page Buffer Program) #define BUFFER_PROGRAM_ITERATION_LENGTH (32)//program Buffer的大小 /*For low-cost (Flash size targetted at 16Mbits) single-bank NOR-flash solution, where partial of NVRAM is shadowed at RAM.*/
SINGLE_BANK_NOR_FLASH_SUPPORT = FALSE
/*For single-bank NOR-flash solution without shadowed NVRAM requirement.*/ ENHANCED_SINGLE_BANK_NOR_FLASH_SUPPORT = FALSE LOW_COST_SUPPORT = NONE // 是否支持小容量Memory
----------------------------------------------------------------------------------------------------------- #elif defined(MT6225)//定义Memory List中的Asynchrnous Driving Setting #define EMI_GENERAL_CONTROL_0 0x40008000 #define EMI_GENERAL_CONTROL_1 0x739c739c
#if defined(MT6225)// Asynchrnous EMI Setting (Maximal MPLL) const kal_uint32 EMI_SettingOnCS[4] = {
0x405148, 0x40514808, 0, 0 };
----------------------------------------------------------------------------------------------------------- //#define __NOR_FDM5__ //custom_memorydevice.h,定义是否使用FDM5功能
MTK NOR FDM is upgraded to 5.0 from 2006/Q3 to support large NOR-flash disk (multi-bank), for example, disk space larger than blocks(指的是FAT的总Block数).
NOR FDM 5.0 and NOR FDM 4.0 主要区别如下:
1. RAM consumption:To manage 32MB INTEL M18 NOR-flash disk, FDM 5.0
consumes 1KB,but FDM 4.0 takes 32KB. 2. Addressable block numbers:The addressable space of NOR FDM 5.0 is 65K-1 blocks, but NOR FDM 4.0 is limited at 128-1 blocks.
3. Idle reclaim and manual reclaim are implemented on NOR FDM 5.0.To enable NOR FDM 5.0 on NOR-flash disk, please enable the following definition and customize custom_flash_norfdm5.c; the option is switch on/off at customer site without deliver new library.
[REMIND] To manage small disk space, like smaller than blocks, FDM 4.0 is
recommended.
FDM的设置步骤:
1. 在custom_MemoryDevice.h中添加“#define __NOR_FDM5__”。 2. 编辑custom_flash_norfdm5.c,编辑方法如下。 3. clean 并 remake “custom”模块。
----------------------------------------------------------------------------------------------------------- 设置方法二:手动
设置过程:手动编辑New时自动产生的5个文件如下,编辑方式见上文:
flash_opt.h,custom_emi.h,custom_emi.c,custom_flash.c, custom_flash_norfdm5.c, 然后clean并remake“custom”模块。 注意点: 手动设置会出现Code和FAT公用一个Bank的情况,此时修改方式如下: 1. 即使外部使用的NorFlash为Multi Bank,上文介绍的编译开关
ENHANCED_SINGLE_BANK_NOR_FLASH_SUPPORT或者SINGLE_BANK_NOR_FLASH_SUPPORT需要打开。
2. 当设置了SINGLE_BANK_NOR_FLASH_SUPPORT时,则需要设置
SNOR_ERASE_QUEUE_SIZE的值,表示在FAT中预留的Block数,此时FAT
3.
的大小变成:
ALLOCATED_FAT_SPACE-(SNOR_ERASE_QUEUE_SIZE×Max Block Size) 当调整FLASH_BASE_ADDRESS和ALLOCATED_FAT_SPACE后,对应的RegionInfo和BankInfo需要相应调整,详细说明如下。
NandFlash配置的基本步骤
1、
5. 消息机制
6. 如何添加新的应用(如:Task)
7. Trace
8. MTK异常处理
9. PC工具
10. Timer
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务