陳彥丞
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    1
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    ###### tags: `TSC` `Linux` NXP i.MX8M Mini 開板流程 (Board Bring Up) ===================================== 世平集團代理`NXP的i.MX 8M Mini`應用處理器適用於高效能、低功耗的嵌入式系統,經過硬體人員縝密的設計電路圖、佈線後,第一個面臨的關卡就是洗板及打件回來後的開板,如果開板失敗將造成目標板(Target Board)變磚了。對於嵌入式系統來說,開板是一個重要的時刻。所以今天跟大家分享一下開板流程及相關注意事項。 - **文件與使用工具** **![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/tool_2.jpg)** # 開板流程 ## **0\. PCB 板檢查:** 在沒有焊接零件的PCB 裸板,先利用三用電表檢查有沒有短路或斷路的情況,特別是各組電源是否有短路? ## **1\. 上電前目視檢查:** 檢查主要零件是否有打件錯誤的情況,比如說IC、二極體、電晶體有沒有位置裝反或是旋轉的問題? ## **2\. 上電檢查電源:** 使用可限流的電源供應器,上電過程中如果超過限流則必須立即關掉電源,並檢查電源是否有短路的狀況?並檢查i.MX8M Mini 的各組電壓是否符合Datasheet 的要求,測量電壓要在電源輸出端(PMIC)和i.MX8M Mini 電源輸入端(越近越好,如在濾波電容上測量)兩側都要確認,以免有電壓衰退(IR-Drop)的狀況發生。建議在系統輕載及滿載時各量測⼀次,以確保電源的穩定度。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/voltage_1.jpg) 使用示波器檢查電源上電時序是否滿足Datasheet 要求。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/seq_1.jpg) ## **3.檢查系統時脈:** 電源啟動後,24MHz震盪器會自動起振,使用示波器檢查24M\_XTALI 及24M\_XTALO,檢查振盪器頻率時建議使用主動式探棒避免負載過大導致24MHz震盪器不容易起振。i.MX8M Mini上的32.768KHz是使用PMIC的CLK\_32K\_OUT輸出,可以一併檢查。 ## **4.檢查POR是否正確:** 系統上電後,PMIC預設會先提供NVCC\_SNVS\_1P8及VDD\_SNVS\_0P8兩組電源,i.MX8M Mini有SNVS電源之後會發PMIC\_ON\_REQ通知PMIC將其他各組電源按照預設的Power On時序供給,當各組電源都準備完成之後由PMIC發出POR_B(Power On Reset)由Low變High的訊號,通知系統重置。所以可以觀察PMIC\_ON\_REQ及POR_B的相關時序,這樣可以釐清是CPU的問題或是PMIC的問題。 ## **5.確認硬體相關設定:** - a.Serial Downloader:     將Boot Mode\[1:0\]=01,讓系統進入到Serial Downloader模式,提供使用者可以透過USB連線將程式碼下載到晶片上並執行的方法。這樣的好處是讓開發者不需要購買昂貴的仿真器(ICE)就可以下載Code到目標板上。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/boot_1.jpg) - b.USB:     將i.MX8M Mini的USB1連接到電腦,會識別到一個USB 輸入裝置,其識別碼為VID_1FC9&PID0134。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/usb.jpg)    由於Serial Downloader模式是執行i.MX8M Mini內部的ROM Code,只要USB1線有接對,電腦就要可以識別到目標板。要特別注意由於ROM Code預設就是USB1,接到USB2是不會有反應的。若還是有問題則需要仔細檢查USB相關線路。 - c.連接埠:     i.MX8M Mini公板的設計是用FT2232D UART to USB IC,電腦上會看到兩個USB Serial Port,其中一個是Cortex-M4的Debug Port,另一個是Cortex-A53的Debug Port,大部分電腦會預設較高的COM Port會給Cortex-A53使用,以我的電腦而言,COM12就是Cortex-A53的Debug Port,待會使用DDR Stress Test Tool選擇時要選COM12。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/uart.jpg) ## 6.DDR Stress Test Tool: 執行DDR Stress Test Tool之前一定要先確定電腦可識別到目標板的USB及Debug Port,若是沒有正確的識別則需要檢查相關硬體線路。選擇正確的COM埠、DDR Script、CPU、及DDR(符合目標板的DDR種類)後按Download即可出現下列訊息: ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/ddr.jpg) 如果達到這樣的情況,恭喜你已經完成60%開板了,表示目標板的CPU、USB、UART是可以正常工作的,接下來就是DRAM參數的調整。 預設的DDR Script位置在mscale\_ddr\_tool_v3.10\\script\\mx8mm下,按照不同的DDR種類有相對應的ds file。若是使用跟公板不同的DRAM,則需要修改DDR Register Programming Aid(RPA) Excel檔產生ds file。 按下Calibration之後進行DRAM Training。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/training.jpg) 當Training完成後可以進行壓力測試,您可以選擇Over Night Test,其目的是測試目標板DRAM的穩定度,目前i.MX8M Mini不支援測試頻率的調整,只會依照ds檔案預設速度(1500MHz)測試。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/stress.jpg) 經過長時間Stress Test測試OK後可以選擇ARRY並按下Gen Code,則會產生lpddr4\_timing.c,軟體開發人員用這個檔案更換U-Boot BSP路徑中的/board/freescale/imx8mm\_evk/lpddr4_timing.c並重新Build imge。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/gen.jpg) ## **7. SD Card開機:** 軟體開發人員Build完Code之後可將image燒入到MicroSD Card中,並切換Boot Device到MicroSD Card開機。 ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/boot_device_1.jpg) ![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2173/tinymce/log_1.jpg) 若能夠從COM Port看到系統開機的Log,則恭喜各位硬體及軟體開發工程師開板成功!!! ## 參考資料 NXP官網: [https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-processors/i-mx-8m-mini-arm-cortex-a53-cortex-m4-audio-voice-video:i.MX8MMINI?tab=Documentation_Tab](https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-processors/i-mx-8m-mini-arm-cortex-a53-cortex-m4-audio-voice-video:i.MX8MMINI?tab=Documentation_Tab) NXP論壇: [https://community.nxp.com/docs/DOC-340179](https://community.nxp.com/docs/DOC-340179) Source: https://www.wpgdadatong.com/tw/profile?uid=62743&type=blogPost&timeSort=2&title=blogPost

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully