公司最近刚设计了基于海思3516(Cortex-A9 @ 750M)的IP Camera,Flash使用的是三星的128MB nand,板子回来了才发现没有什么好的方法把程序烧写到Flash里。大家讨论了半天决定先试试用以前的板子把nand烧好然后再焊接到新板子上,试了几次串口都没有任何反应,于是只能寻找其他方法。幸好硬件设计的时候把JTAG口留了出来,之前在网上看到有人用J-Link调试3518,于是我也买了一个仿真器(V8版的,很便宜~),使用比较新的驱动提供可以支持ARM Cortex-A9的核,我用版本是V4.78K,最后通过J-Link成功实现了uboot启动并烧写程序。
先介绍下大体的调试步骤吧:
1. 调试硬件。
2. 编写基于J-Link的初始化脚本,初始化PLL及DDR,测试DDR读写是否正常。
3. 修改并编译u-boot,通过J-Link加载到DDR,运行。
4. 制作烧写镜像,烧写到nand中。
在开始之前,请仔细阅读海思SDK中的关键文档,包括《Hi3516 Full-HD IP-Cam SOC 用户指南》、《Hi3516 U-boot 移植应用 开发指南》、《Hi3516 Linux开发环境 用户指南》等。特别是用户指南,调试的时候要随时看。
下面具体介绍调试的步骤。
1. 调试基本硬件
板子刚拿回来之后,要首先检测电路,然后上电,测量CPU的几个核心电压及晶振是否输出正常。一般来说,如果CPU供电没问题,给Nand的晶振会12M的波形。之后就可以连接JTAG了。一般J-Link仿真器会有很多种接线接口可选,大家可以根据自己的硬件设计选择一个可以连接的即可。JTAG驱动安装成功后,运行J-Link Commander,成功后会有如下输出:
输入?或直接回车可以看到支持的命令列表。我们需要用到的命令主要就是w4,mem32及loadbin。
连接板子和仿真器,重新打开J-Link Commander,如果提示找到了Cortex-A9的核,就说明连接成功了,恭喜你已经成功了一小步!