高通 专利8916主板F988刷机包!!!!!

博客访问: 2115160
博文数量: 431
博客积分: 12926
博客等级: 上将
技术积分: 4563
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
一、 MSM8K Boot Flow&
                              图1:
高通MSM8K平台bootloader启动流程基本类似,但具体各平台,比如MSM8974、MSM8916、MSM8994等,会有微小区别。
从上图,可以看出高通8K平台的boot过程非常不一般啊。相比MTK平台,或者高通7K平台,复杂了非常多。 下图是高通文档对启动流程的说明,
已经很清楚了,我这边就直接贴出来啦。
                                   图2:
系统上电后从RPM PBL启动到 APPS PBL 然后SBL1 ,再启动APPSBL 等等,整个过程看似非常复杂,但其实很多代码OEM厂家是看不到,也修改不了的。
那我们需要我们做什么? 能做点什么呢? 呵呵!不会没事情做的。 SBL1和appsbl高通是有开放代码。
本章我重点关注SBL1,且主要描述我认为重点的几方面:
1、 & &CDT : Platform ID和DDR参数&
2、 debug log :
3、 download : msm8K 新平台软件download支持两种协议,sahara和firehose
4、 ramdump :死机异常信息dump
好的,下面将SBL1我比较关注的点调用流程总结成如下图,后面再针对关注点展开,逐个分析。
                           图3:
二、CDT:Platform ID和DDR参数&
1、CDT(Configuration Data Table ) 里到底有什么内容?
& &参考下图,可知CDT包含CDB0: platform info信息和CDB1: DDR配置参数。
                图4:
& &platform info 包含平台id,主板的版本号,项目号等信息。
          图5:
CDB0: platform info 如下结构体表现:
typedef PACKED struct
& uint8 & & & & & & & & nV
& uint8 & & & & & & & &&nP      //这个是平台id,用于高通不同平台类型。我们不能去修改。
& uint8 & & & & & & & & nHWVersionM & //硬件版本号暂时没有使用,默认为0
& uint8 & & & & & & & & nHWVersionM
& uint8 & & & & & & & &&nS    // 默认为0没有用。我们可以用它来做项目区分   
& uint8 & & & & & & & & nNumKVPS;
& PlatformInfoKVPSCDTType &aKVPS[];
} PlatformInfoCDTT
参考如下文档和code:
80-N3411-1_B_EEPROM_SW_CDT.pdf
boot_images/core/boot/secboot3/hw/msm8916/boot_cdt_array.c
boot_images/core/systemdrivers/platforminfo/src/PlatformInfo.c
boot_images/core/boot/secboot3/scripts/cdt_generator.py
boot_images/core/boot/secboot3/scripts/jedec_lpddr3_single_channel.xml
2、CDB0:&platform info信息有什么用处?
 上图3可以看到CDB0:&platform info相关的代码调用有如下二函数:
voidboot_config_data_table_init(bl_shared_data_type* bl_shared_data)
& boot_log_message("boot_config_data_table_init, Start");
& boot_log_start_timer();
& /*populate configuration data table's info*/
& config_data_table_info.size = config_data_table_
&&config_data_table_info.cdt_ptr = config_data_
& &//get&default config_data_table array from&boot_cdt_array.c
& boot_update_config_data_table(&config_data_table_info);
& //read the cdt from eMMC and update the default config_data_table array
& /*put a pointer to the table info into sbl shared data so next sbl can access it*/
& bl_shared_data-&sbl_shared_data-&config_data_table_info = &config_data_table_
& boot_log_stop_timer("boot_config_data_table_init, Delta");
} &//该函数获取到cdt,并存放在config_data_table_info
void&sbl1_hw_platform_smem(bl_shared_data_type* bl_shared_data)
& & .......
& & if (eResult == DAL_SUCCESS)&
& & & /*call the following API to store the platform id to DAL and SMEM*/
& & &&boot_DalPlatformInfo_CDTConfigPostDDR(phPlatform, platform_id_cdb_ptr);
& & &&//调用&PlatformInfo.c&中的PlatformInfo_InitSMem保存platform info 到smem.
& & & boot_DAL_DeviceDetach(phPlatform);
}/* sbl1_hw_platform_smem() */
static DALResultPlatformInfo_InitSMem
& PlatformInfoDrvCtxt *pDrvCtxt
& &//申请共享内存区:SMEM_HW_SW_BUILD_ID
& pSMem = (DalPlatformInfoSMemType *)
& & smem_alloc(SMEM_HW_SW_BUILD_ID, sizeof(DalPlatformInfoSMemType));
& &...............
 //保存platform info到共享内存
&&pSMem-&ePlatformType = pDrvCtxt-&PlatformInfo.
& pSMem-&nPlatformVersion = pDrvCtxt-&PlatformInfo.
&&pSMem-&nPlatformSubtype = pDrvCtxt-&PlatformInfo.
& pSMem-&bFusion = pDrvCtxt-&PlatformInfo.
& &.................
& return DAL_SUCCESS;
} /* END PlatformInfo_InitSMem */
花了这么多精力谈如何存platform info,得用啊?这些platform info在lk和kernel有何用呢?
lk 根据platform id及subtype id匹配正确的dts,这样后面kernel也可以利用dts里的
platform info。
注:msm8916-mtp.dts 包含如下platform id & subtype id信息。
model = "Qualcomm Technologies, Inc. MSM 8916 MTP xxx";
compatible = "qcom,msm8916-mtp", "qcom,msm8916", "qcom,mtp", "qcom,xxxx";
qcom,board-id = &8 0x21&; & //platform id & subtype id
lk请参考这些函数,后面专门研究lk,再详细描述。
platform_detect &&//board.c , smem.h :&enum platform_subtype&
board_hardware_subtype&//board.c , smem.h :&enum platform_subtype&
board_hardware_id &&//board.c , smem.h :&enum platform_subtype&
dev_tree_get_entry_info &//dev_tree.c
kernel请参考setup.c
从上面CDT格式及代码分析,可以看出,如果不同项目cdt的nPlatform和nSubtype项配置成不同的值,&与dts 包含的platform id & subtype id信息进行匹配。就可以用来区分不同的项目。
即:我们在项目开发过程中,同一个分支代码要进行多项目开发时,
sbl、lk、kernel可以利用这些信息来区分不同项目,实现一套代码多项目配置目标。如下图:
总结:通过修改cdt和dts,sbl、lk、kernel阶段使用如下接口,可以将同一个branch代码中多项目区分出来!
sbl_board_subtype & & &// sbl高通没有,自己开发一个接口
board_hardware_subtype & // lk接口
of_board_is_xxx    &// kernel 接口
3、CDB1:DDR参数的配置流程?
cdt中还有一项重要内容是CDB1: DDR参数,下面看看如何利用这些参数进行ddr初始化的。
ddr初始化涉及如下重要三函数:
boot_procedure_func_type load_qsee_pre_procs[] =&
& /* Copy the configure data table from eeprom */
&&boot_config_data_table_init,&
& /* Configure ddr parameters based on eeprom CDT table data. */
&&sbl1_ddr_set_params, & // &保存cdt ddr 参数到底层
& /* Initialize DDR */
& (boot_procedure_func_type)sbl1_ddr_init, & &//初始化ddr
& &.......
& /* Last entry in the table. */
下面重点介绍这三个函数:
& &&&图7:
&cdt数据&config_data_table保存到config_data_table_info.cdt_ptr
& & &&图8:
sbl1_ddr_set_params调用ddr_set_params,将ddr参数保存到ddr_device_table。
获取num_of_device保存到ddr_device_table_entry_num 。
sbl1_ddr_init 通过&HAL_SDRAM_Init调用到如下函数,
HAL_SDRAM_Ram_Rank_Detection,========》cs auto detect&
HAL_SDRAM_Ram_Size_Detection, =========& ram size auto detect by :row、col、bank、width ,&manufacture_id
ddr_params_detection , ========》 two DDR chips auto detect&
HAL_SDRAM_DPE_Update_AC_Paramenters &=========& update ddr timing with new DDR timing
&上图说明,通过ddr_params_detection&实现一个项目自动支持多种ddr timing的方法。
好了,ddr timing就不再多说了,详细请阅读代码及参考文档:
80-NJ172-1_A_LPDDR2_CUSTOMIZATION_FOR_MSM8x26_DEVICES.pdf
三、Debug log
坑跌的高通,MSM6K/7K平台,包括旧的MSM8K平台bootloader都不支持uart。
需要自己添加uart debug log,否则只能连接jtag接口,使用Trace32调试。
哎,Trace32那价钱,咱这贫民企,都调试不起啦。
高通也赚了够多的,总算有良心,在MSM8916平台默认支持uart啦!
好了,不骂高通了,看下面代码。
void sbl1_main_ctl(boot_pbl_shared_data_type *pbl_shared)
 。。。。。。。。。
 //sbl入口足够早的地方就开始log初始化。再前面就没法打印log了,就当作前面的代码不出错吧。
& /* Initialize boot logger and start the log timer */
&&sbl1_boot_logger_init(&boot_log_data,
& & & & & & & & & & & & pbl_shared);
& 。。。。。。。。。
sbl1_boot_logger_init调用boot_log_init进行ram log , timer ,uart 初始化。
void boot_log_init(boot_log_init_data *init_data)
& /*we must first set meta info becasue boot_log_init_ram and
& &* boot_log_init_timer will use the meta info structure*/
& boot_log_set_meta_info(init_data-&meta_info_start);
& boot_log_init_ram(init_data);  //初始化ram log
& boot_init_timer(init_data); & & & &//初始化timer ,可用于打印sbl各阶段的启动时间
& boot_log_init_uart(); & & & & & & & &//初始化uart
/* boot_log_init */
做完初始化的工作后,就可直接使用boot_log_message将log打印到ram和uart啦!
使用方法参考:
  static char error_message[BOOT_ERROR_MSG_LEN];
  //自己将打印的信息格式化到自定义的buffer:error_message
& & & snprintf(error_message, BOOT_ERROR_MSG_LEN,&
& & & & & & &"Error code %lx at %s Line %lu", err_code, filename_ptr, line);
& & & //打印log & & &&
& & & boot_log_message(error_message);
参考代码:
boot_logger.c
boot_logger_uart.c
boot_logger_ram.c
boot_logger_timer.c
四、SW download
 待续:《高通 MSM8K bootloader之二: SBL1》
五、Crash ramdump
 待续:《高通 MSM8K bootloader之二: SBL1》
七、sbl1 常用的tools介绍
sbl1常用的tools及源码在如下目录:
boot_images/core/storage/tools/&
1、 fat32 udisk 生成工具:
boot_images/core/storage/tools/fattool ,
python fatgen.py –fat32 --name=udisk.bin --size=2048 & # Generate a 2GB FAT32 container.
python fatadd.py --name=udisk.bin --from=rdcookie.txt &----add rdcookie.txt into udisk.bin ,for test
这两个py比原来7k平台可执行文件cpfatfs功能更强了,cpfatfs只支持fat16
2、QPST下载工具(shahara):emmc programmer
&:/boot_images/core/storage/tools/emmcbld/MPRG8974.mbn
3、 T32 Jtag下载工具
boot_images/core/storage/tools/jsdcc/mjsdload.cmm 与jsdcc.elf
4、分区相关工具
boot_images/core/storage/tools/ptool/
ptool.py & & & & //分区生成工具 partition =========& rawprogram0.xml
& & & & & & & & & & Python ptool.py –x partition.xml:
msp.py & & & & &//ubuntu使用:根据&rawprogram0.xml进行升级软件工具
& & & & & & & & & & & &&
singleimage.py  //根据singleimage_partition_8974.xml生成single boot image:&8974_msimage.mbn
& & & & & & & & & & python singleimage.py -x singleimage_partition_8974.xml
lsusb.py & & & // ls usb
dd.py & & & & & &// dd command
checksparse.py & & & & //sparse system/cache/userdata image
参考资料:
80_NA157_7_C_MSM8974_Boot_Architecture_Overview.pdf
80-NL239-1_A_MSM8916_Boot_Architecture_Overview.pdf
80-N3411-1_B_EEPROM_SW_CDT.pdf
80-NJ172-1_A_LPDDR2_CUSTOMIZATION_FOR_MSM8x26_DEVICES.pdf
上篇将我重点关注SBL1的内容1和2基本说明完,本篇继续内容3和4。
1、 & &CDT : Platform ID和DDR参数&
2、 debug log :
3、 download : msm8K 新平台软件download支持两种协议,sahara和firehose
4、 ramdump :死机异常信息dump
四、SW download
五、Crash ramdump
阅读(16926) | 评论(0) | 转发(3) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。酷派5370 官方线刷包,非CPB 适用于高通9008 模式刷机救砖,含刷机教程/工具 发现, 酷派 5370 - ROM中国当前位置: →
仿三星9198造型,这个长虹A100的图片如下:
机器有问题,点这里联系QQ客服寻求帮助:
* 如果您发现下载链接错误,请点击谢谢!
* 站内提供的所有刷机包均来自网络,如果有侵权行为,通知我们!
页面执行时间:5,187.50000 毫秒手机维修网 Q群:(同行专业维修群: ),普通群:
我的位置:&>&&>&蓝博兴Laaboo V8原厂售后ROM线刷包高通8916平台
蓝博兴Laaboo V8原厂售后ROM线刷包高通8916平台
文件大小:491 MB
芯片厂商:高通
芯片型号:8916
下载人气:30
刷机类型:原厂线刷
刷机进度:测试OK!
手机厂商:
手机刷机截图--点击查看更多图
相关标签:
软件简介& && --->刷机过程中如遇到问题请加QQ群解决问题:技术支持Q群:
蓝博兴V8刷机包当前ROM固件版本号:Laaboo V8_L68_V1.0.0_150211
蓝博兴V8 移动4G 基本参数
操作系统说明: Android 4.4.4
内置应用: 浏览器、相册、电话、设置、音乐、短信、日历、计算器、相机、天气
尺寸 重量: 高度:142毫米
宽度:71毫米
厚度:8毫米
重量:150克
上市时间: 2016年2月
蓝博兴V8 移动4G 硬件配置
CPU频率: 1.2GHz
CPU核心数: 四核
存储: 运行内存(RAM):1GB
高速闪存(ROM):16GB
最大扩展存储32GB MicroSD卡
传感器: 重力传感器, 光线传感器, 距离传感器
这里是刷机教程& && &只做参考使用高通平台EMCP FLASH刷机教程& && &
高通QPST救砖教程& && &
同类周排行同类总排行后使用快捷导航没有帐号?
其他登录方式
—— 新手入门 ——
—— 智友精华 ——
查看: 1466|回复: 27
在线时间1083 小时最后登录阅读权限35UID注册时间积分1545精华0
, 积分 1545, 距离下一级还需 255 积分
主题帖子 金币2957 元 智豆99 点
本帖最后由 清风淡墨 于
16:44 编辑
R9PlusmA_11_A.10_160405发布说明:
1、解决沈阳使用170号段的迪信通的联通迪加3G卡开启4G的时候无服务的问题;
2、解决三方导致概率性的通话无声的问题。
备注:该版本不可用于128G版机器生产出货,如果你的机器是128G请下载另外一个版本!!!
00:02 上传
00:02 上传
00:03 上传
00:03 上传
下载地址:游客,查看隐藏内容请或一键去隐藏
在线时间24 小时最后登录阅读权限10UID2371867注册时间积分33精华0
, 积分 33, 距离下一级还需 17 积分
主题帖子 金币45 元 智豆2 点
感谢楼主分享 智友因你而精彩
在线时间6 小时最后登录阅读权限10UID注册时间积分18精华0
, 积分 18, 距离下一级还需 2 积分
主题帖子 金币47 元 智豆8 点
谢谢分享!!!!!
在线时间7 小时最后登录阅读权限10UID注册时间积分33精华0
, 积分 33, 距离下一级还需 17 积分
主题帖子 金币90 元 智豆30 点
感谢楼主的无私奉献
在线时间0 小时最后登录阅读权限10UID注册时间积分27精华0
, 积分 27, 距离下一级还需 23 积分
主题帖子 金币106 元 智豆58 点
学习学习刷机
在线时间55 小时最后登录阅读权限20UID8056265注册时间积分178精华0
, 积分 178, 距离下一级还需 22 积分
主题帖子 金币518 元 智豆20 点
希望楼主多发精品好帖啦.....
在线时间0 小时最后登录阅读权限10UID注册时间积分2精华0
, 积分 2, 距离下一级还需 3 积分
主题帖子 金币14 元 智豆1 点
而日日日日日日
在线时间0 小时最后登录阅读权限10UID注册时间积分1精华0
, 积分 1, 距离下一级还需 4 积分
主题帖子 金币12 元 智豆1 点
求助:OPPO R9TM黑砖 按开机加下键会震动,连电脑刷机,链接会3秒不断性的链接掉线!!怎么办?
在线时间94 小时最后登录阅读权限20UID7382431注册时间积分119精华0
, 积分 119, 距离下一级还需 81 积分
主题帖子 金币248 元 智豆6 点
看啊可能!!!!!!!!!!!!!!!!!
在线时间0 小时最后登录阅读权限10UID注册时间积分2精华0
, 积分 2, 距离下一级还需 3 积分
主题帖子 金币15 元 智豆1 点
我看看咋样
调整规则,限制刷楼党!vivo蓝 X20手机等你领,参与就有机会!}

我要回帖

更多关于 高通 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信