1. 程式人生 > >高通 MSM8K bootloader 之二: SBL1

高通 MSM8K bootloader 之二: SBL1

FROM:http://blog.csdn.net/fybon/article/details/37565227

續:高通 MSM8K bootloader 之一: SBL1

上篇將我重點關注SBL1的內容1和2基本說明完,本篇繼續內容3和4。
1、    CDT : Platform ID和DDR引數 
2、 debug log :
3、 download : msm8K 新平臺軟體download支援兩種協議,sahara和firehose
4、 ramdump :宕機異常資訊dump

四、SW download

1、軟體升級模式

  高通8K以後平臺支援如下兩種,說到下載模式,忍不住又得罵高通。 
  以前6K, 7K平臺不支援緊急下載模式,工廠生產軟體要down到手機裡,非常複雜。   要嘛先用燒錄器燒一段sbl image,然後剩下的image自己開發升級軟體用usb多路升級。   要嘛全部image用燒錄器一次性燒完。   坑人的高通啊!麼得辦法,就害苦咱苦命的民工。 好了,介紹一下現在支援的兩種下載模式吧!  緊急下載模式:pbl負責與PC互動,實現軟體下載   自動進入緊急下載模式:主機板剛生產emmc是裸片時,或者sbl執行異常時,系統自動進入緊急下載模式。             這種情況就不多說了,主要是用於工廠生產,及sbl異常處理。   手動進入緊急下載模式:通過硬體一個gpio下拉,pbl檢測到該gpio後強制進入緊急下載模式。這種主要
             以防不測情況。    另外一種就是軟體通過設定magic number,然後由熱重啟,pbl檢測到magic number後,強制進入下載模式。   軟體切換介面,參考如下boot_dload.c程式碼: [cpp] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. /*============================================================================= 
  2. **  Function :  boot_dload_transition_pbl_forced_dload
     
  3. ** ========================================================================== 
  4. */
  5. /*! 
  6.  
  7. * @brief 
  8. *   This function sets the magic numbers for PBL to detect and enter forced 
  9. *   download mode.  It then calls the target specific function to trigger a 
  10. *   system reset. 
  11.  
  12. * @par Dependencies 
  13. *   None 
  14. *    
  15. * @retval 
  16. *   None 
  17.  
  18. * @par Side Effects 
  19. *   Set's PBL magic numbers to enter forced download, resets target, never to 
  20. *   return. 
  21.  
  22. */
  23. void <strong>boot_dload_transition_pbl_forced_dload</strong>( void )  
  24. {  
  25.   /* PBL uses the last four bits of BOOT_MISC_DETECT to trigger forced download. 
  26.      Preserve the other bits of the register. */
  27.   uint32 register_value =   
  28.     HWIO_TCSR_BOOT_MISC_DETECT_INM(HWIO_TCSR_BOOT_MISC_DETECT_RMSK);  
  29.   /* Clear the PBL masked area and then apply HS_USB value */
  30.   register_value &= ~(FORCE_DLOAD_MASK);  
  31.   register_value |= FORCE_DLOAD_HS_USB_MAGIC_NUM;  
  32.   /* Write the new value back out to the register */
  33.   HWIO_TCSR_BOOT_MISC_DETECT_OUTM(FORCE_DLOAD_MASK,  
  34.                                   register_value);  
  35.   boot_hw_reset(BOOT_WARM_RESET_TYPE);  
  36. /* boot_dload_transition_pbl_forced_dload() */
普通下載模式:sbl負責與PC互動,實現軟體下載 手機第一次下載完軟體以後,普通情況下,可不進入pbl緊急下載模式,可由sbl進行軟體升級。  sbl是如何進入普通下載模式的呢?看如下函式boot_dload_check()。  boot_dload_check()檢測到USB D+ 接地或者sbl發生異常時呼叫boot_dload_set_cookie()設定了cookie,進自  動進入普通的下載模式。 [cpp] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. <pre name="code"class="cpp">  
  2. /*=========================================================================== 
  3. **  Function :  boot_dload_check 
  4. ** ========================================================================== 
  5. */
  6. /*! 
  7.  
  8. * @brief 
  9. *   This function will check to see if the downloader should be entered 
  10. *   for QPST download, and enter the downloader if directed to. 
  11. *   
  12. * @param[in] bl_shared_data Pointer to the shared data  
  13. * 
  14. * @par Dependencies 
  15. *   Download ID must be present in IRAM if downloader is to be entered. 
  16.  
  17. * @retval 
  18. *   None 
  19.  
  20. * @par Side Effects 
  21. *   Boot may be halted and QPST downloader entered. 
  22.  
  23. */
  24. void boot_dload_check  
  25. (   
  26.   bl_shared_data_type *bl_shared_data   
  27. )  
  28. {  
  29.   /* Check whether USB D+ line is grounded. If it is, then enter 
  30.      PBL Download mode */
  31. <strong><span style="color:#cc0000;">  if(boot_qhsusb_al_check_for_pbl_dload(0))  
  32.   {  
  33.     boot_dload_transition_pbl_forced_dload();  
  34.   }</span></strong>  
  35.   /* Determine if the downloader should be entered at this time, 
  36.      instead of continuing with the normal boot process. */
  37.   if ( boot_dload_entry( ) == TRUE )  
  38.   {  
  39.     /* Check the UEFI ram dump cookie, we enter download mode 
  40.        only if UEFI ram dump cookie is NOT set*/
  41.     if ( !( boot_shared_imem_cookie_ptr != NULL &&  
  42.             boot_shared_imem_cookie_ptr->uefi_ram_dump_magic ==   
  43.             UEFI_CRASH_DUMP_MAGIC_NUM ) )  
  44.     {  
  45.       /* Before entering downloader clear RESET_DEBUG[BLOCK_RESIN] so 
  46.          the next resin_n is not blocked.  This is part of the abnormal 
  47.          reset logic in Bear family */
  48.       HWIO_GCC_RESET_DEBUG_OUTM(HWIO_GCC_RESET_DEBUG_BLOCK_RESIN_BMSK,  
  49.                                 0);  
  50.       /* Enter downloader for QPST */
  51.       sbl_dload_entry();  
  52.     }  
  53.   }  
  54. /* boot_dload_check() */
[cpp] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. /*=========================================================================== 
  2. **  Function :  boot_dload_set_cookie 
  3. ** ========================================================================== 
  4. */
  5. /*! 
  6.  
  7. * @brief 
  8. *   Set the SBL dload mode cookie 
  9. **         
  10. * @par Dependencies 
  11. 相關推薦

    MSM8K bootloader SBL1

    FROM:http://blog.csdn.net/fybon/article/details/37565227 續:高通 MSM8K bootloader 之一: SBL1 上篇將我重點關注SBL1的內容1和2基本說明完,本篇繼續內容3和4。 1、  

    MSM8K bootloader ramdump

    boot_procedure_func_type sbl1_pre_dload_procs[] = {  ............  /*-----------------------------------------------------------------------    * Ram dump

    Sql語法級應用視圖

    多個 用戶查詢 lec exist border repl 方式 多個數據庫 inventory SQL CREATE VIEW 語句 什麽是視圖? 在 SQL 中,視圖是基於 SQL 語句的結果集的可視化的表。 視圖包含行和列,就像一個真實的表。視圖中的字段就是來自一個或

    線上應用故障排查內存占用

    int tool iter net 參數 top jmap命令 eap tom 前一篇介紹了線上應用故障排查之一:高CPU占用,這篇主要分析高內存占用故障的排查。 搞Java開發的,經常會碰到下面兩種異常: 1、java.lang.OutOfMemoryError: Per

    雲資料庫POLARDB產品解讀如何做到性價比

    現在做任何事情都要看投入產出比,對應到資料庫上其實就是價效比。POLARDB作為一款阿里自研資料庫,經常被問的問題是:效能怎麼樣?能不能支撐我的業務?價格貴不貴?很顯然,在早期調研階段,對穩定性、可靠性很難有量化的指標時,效能的好快就成了一個非常關鍵的決策因子。 POLARDB在一開始設計時就把效能作為一項

    Java線上應用故障排查記憶體佔用

    搞Java開發的,經常會碰到下面兩種異常: 1、java.lang.OutOfMemoryError: PermGen space 2、java.lang.OutOfMemoryError: Java heap space 要詳細解釋這兩種異常,需要簡單重提下J

    4.AngularJS四大特征 雙向數據綁定

    sco font int out grep 模型 多行文本 pan oot AngularJS四大特征之二: 雙向數據綁定 (1)方向一:把Model數據綁定到View上——此後不論何時只要Model發生了改變,則View中的呈現會立即隨之改變!實現方法: {{ }}、

    linux學習日常的基礎命令收集

    幫助文檔 gedit 查看 日期 取整 style 位置 某月 linux 1、 ls 2、pwd  顯示當前目錄所在位置 3、date  日期時間 4、cal  日歷   默認顯示當前該月   cal 2012 :查看2012年的日歷   cal 月 年 : 查看某年某月

    【只怕沒有幾個人能說清楚】系列Unity中的特殊文件夾

    物體 avi ebp time 編輯模式 tro hive 預覽 打包 參考:http://www.manew.com/thread-99292-1-1.html 1. 隱藏文件夾 以.開頭的文件夾會被忽略。在這種文件夾中的資源不會被導入,腳本不會被編譯。也不會出現

    雙態運維分享 服務型CMDB的消費場景

    新增 iso20000 那種 .cn 關聯 通知 變更 不同 維護 近年來,CMDB在IT運維管理中的價值逐步得到認可,使用CMDB的期望值也日益增長。然而,CMDB實施和維護的高成本卻一直是建設者們的痛點。那麽今天,我們來探討一下如何通過消費來持續驅動CMDB的逐步完善。

    UVM序列篇sequence和item(上)

    技術 一點 目標 idt 需要 開始 掛載 ron 前行 無論是自駕item,穿過sequencer交通站,通往終點driver,還是坐上sequence的大巴,一路沿途觀光,最終跟隨導遊停靠到風景點driver,在介紹如何駕駛item和sequence,遵守什麽交規,最終

    Horizon7.1部署Horizon Composer服務器安裝

    vmware horizon composerHorizon Composer是個可選服務,如果計劃部署鏈接克隆桌面池(可以節省90%磁盤利用率),則需要安裝。我在windows2016上部署的Sql Server2016,ip是X.X.X.2,並在建立一個名為Horizon Composer的數據庫,防火墻

    【2017-07-01】Linux應用開發工程師面試問題記錄關於結構體的大小及內存對齊問題

    偶數 而且 strong span net 但是 開發 f11 flag Tencent後臺服務器開發有一道題是計算一個結構體的sizeof的大小: struct strData { int m_Int; char m_Char; short m_Short; char

    Linux時間子系統Alarm Timer

    數據 類型 oid mtime orm 分別是 type mon 超時 一、前言 嚴格來講Alarm Timer也算POSIX Timer一部分,包含兩種類型CLOCK_REALTIME_ALARM和CLOCK_BOOTTIME_ALARM。分別是在CLOCK_REALTI

    Modbus庫開發筆記Modbus消息幀的生成

    不同的 command dwr 分別是 slave 識別碼 align 數據格式 .com 前面我們已經對Modbus的基本事務作了說明,也據此設計了我們將要實現的主從站的操作流程。這其中與Modbus直接相關的就是Modbus消息幀的生成。Modbus消息幀也是實現Mod

    玩玩微信公眾號Java版接收、處理及返回微信消息

    log med iou set arch weixin b- rom data- 前面已經配置了微信服務器,那麽先開始最簡單的接收微信消息吧~ 可以用我們的微信號來直接進行測試,下面先看測試效果圖: 這是最基本的文本消息的接收、處理及返回,來看看是怎麽實現的

    Halcon學習攝像頭獲取圖像和相關參數

    digg tail tours mage eight sta vision name pict 1、close_all_framegrabbers ( : : : ) 關閉所有圖像采集設備。 2、close_framegrabber ( : : AcqHand

    Linux運維學習筆記常用命令2

    linux 運維 筆記71、passwd:修改用戶密碼語法passwd [參數]username選項-k --keep-tokens :保留即將過期的用戶在期滿後仍能使用-l --lock :鎖定用戶無權更改其密碼,只能root才能操作-u --unlock :解除鎖定-S --status :查看用戶狀

    緩存系列CDN與其他層面緩存

    級別 spl pecl apache 分布式緩存 -o 真實ip har 分享 緩存系列之二:CDN與其他層面緩存 一:內容分發網絡(Content Delivery Network),通過將服務內容分發至全網加速節點,利用全球調度系統使用戶能夠就近獲取,有效降低訪問延遲,

    數據庫面試系列視圖

    名稱 獨立 建立 數據庫 有用 圖的定義 適合 場景 多個 視圖的定義:視圖是一個或者多個基本表(或者視圖)導出的表。 視圖是一張虛表,視圖的數據並不實際存儲 視圖的優點: 1.視圖可以簡化用戶的操作 2.視圖可以讓用戶從多個角度來看待同一數據 3.視圖提供一定的數據邏輯獨