赞
踩
在海思平台的底层开发中,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的一些寄存器配置,此方法可以大幅度加快开发效率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。