爲海思u-boot快速生成reg_info.bin文件

    在海思平臺的底層開發中,SoC的引腳、時鐘的配置是通過一個Excel表格生成的reg_info.bin來實現的,這個reg_info.bin文件是在編譯u-boot過程中需要的,可以通過查看最終的u-boot鏡像文件的生成過程得知:

    爲了快速生成reg_info.bin文件,需要拋棄Excel表格,在編譯u-boot的過程中自動生成reg_info.bin,並重命名爲.reg,放置在u-boot源碼的根目錄下。通過查找代碼,可以確定reg_info.bin中每16個字節對應一個結構體;當u-boot啓動時,會按這些結構體數據來讀寫Soc的一些寄存器:

    如上圖,這個結構體的名稱爲regentry。在這裏我們選擇lua語言腳本來實現這一功能。首先,在Windows平臺上使用Excel軟件生成原始的reg_info.bin:

    查看此reg_info.bin的大小及MD5較驗值:

    將該bin文件複製到GNU/Linux主機上,並將其轉化爲文件文件:

    接下來,就是非常重要的操作,編寫LUA語言腳本,並將每行的寄存器配置重寫爲調用regInfo的Lua函數:

    然後,就可以使用lua解析器生成.reg文件了;經對比可知,生成的.reg與原先的reg_info.bin文件相同:

    至此,我們就可以完全脫離Excel表格了。不僅如此,若需要頻繁修改海思Soc的一些寄存器配置,此方法可以大幅度加快開發效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章