- 收藏
- 点赞
- 分享
- 举报
关于HI3516A 使用SDK06版本更换DDR和SPI FLASH遇到的问题和解决方法
[b]HI3516A 更换DDR 和 FLASH[/b]
最近有新的需求需要使用SDK06版本,以及在硬件上更换了DDR和 FLASH,遇到了一些问题,这段时间搜索了很多hisi的资料和帖子,大概做了如下的总结, 希望对大家有帮助,若有错误的地方或遗漏的地方,请指出。谢谢。
更换DDR 和 flash,则需要更新uboot,因为里面包含了DDR和flash的配置。
首先需要对hisi的uboot有所了解。
hisi uboot分解为两部分。前面一部分为DDR的参数和其他寄存器的配置,总过大小为4K 具体的地址为从0x40 开始的4K大小。
这4K的配置是通过hisi提供的execl表格生成的一个reg_info.bin文件,然后通过mkboot.sh脚本把reg_info.bin和我们编译完的u-boot.bin 合成一个完整的bin文件,这样我们就可以通过fastboot工具中的Burn Fastboot 模式来刷机了。
如何配置execl中的参数。
reg_info.bin 如果仔细看,会发现里面都是excel中提到的寄存器地址然后是后面紧跟这个寄存器的值,如果恰巧别人没有提供这个表格, 自己也可以通过这个一步一步对比找出来。或者不想麻烦,直接把别人uboot中的前面4K 复制到自己的uboot bin 文件上。
[b]1,excel文件的选择[/b] 在osdrv\tools\pc\uboot_tools中有两支不同DDR CPU 频率的表格,选择的时候要注意点。 Hi3516A-DMEB-uboot-DDR250M-1GB-32bit-CPU600M-BUS198M.xls Hi3516A-DMEB-uboot-DDR297M-1GB-32bit-CPU850M-BUS198M.xls
如果你的HISI3516A 是超频到850M的,则要选择Hi3516A-DMEB-uboot-DDR297M-1GB-32bit-CPU850M-BUS198M.xls hisi3516A的CPU 正常是600M的,所以就选择Hi3516A-DMEB-uboot-DDR250M-1GB-32bit-CPU600M-BUS198M.xls
在这个文件更改的地方不多。很多时候会发现根本不用改什么就OK了 O(∩_∩)O~ DDR的就看位宽和bit,bank数,
修改的地方如下: DDRC_CFG_DDRMODE 存储数据总线位宽 AXI_CONFIG BANK 位宽配置
fastboot 工具会先将uboot通过串口线下载到的板子上,然后启动uboot, 如果下载进去后出现DDR init state error 则有可能就是上面配置没对
uboot启动后,就会把自己写入到flash中,前提是flash的驱动在uboot中已做了配置
[b]2 SPI 配置[/b] 如下是uboot的某个spi flash 配置,参考其他帖子说在READ WRITE中只保留READ_STD和WRITE_STD,才能有正常读写。
{
"W25Q256FV", {0xEF, 0x40, 0x19}, 3, _32M, _64K, 4,
{
&READ_STD(0, INFINITE, 50),
//&READ_FAST(1, INFINITE, 80),
//&READ_DUAL(1, INFINITE, 80),
//&READ_QUAD(1, INFINITE, 80),
0
},
{
&WRITE_STD(0, 256, 50),
//&WRITE_QUAD(0, 256, 80),
0
},
{
&ERASE_SECTOR_64K(0, _64K, 50),
0
},
&spi_driver_w25q256fv,
},
在kernel中也要这样改,不然再挂载文件系统的时候会出现jffs2: jffs2_scan_eraseblock() 错误
还有一个重要的点是会影响串口的输出:需要把如下配置改为03 DX3CTRL 0x388 0x00 -->0x03 DX2CTRL 0x308 0x00 -->0x03
我们就会在串口中看到有输出,并且能够进入uboot模式,不然串口没有任何输出
[b]3,网络配置[/b]
海思提供的网络模式模式是rgmii,所以如果你的模式不是这种或者是PHY接口不对,网络就ping不通。 会出现如下错误:
ETH0: PHY(phyaddr=1, rmii) not link! higmac init fail!
/include/configs/hi3516a.h 添加网络模式
define CONFIG_MDIO_INTF "rmii"
define CONFIG_HIGMAC_PHY1_INTERFACE_MODE 1
PHY的地址修改,可以通过mii info 来查看是属于0 还是1 ,或者其他
define CONFIG_HIGMAC_PHY1_ADDR 1
还需要在execel的表格中 把时钟配置为RMILL clk的时钟50M muxctrl_reg93 0x174 0x2 -->0x01
在kernel中需要在config中CONFIG_HIGMAC_PHY0_INTERFACE_MODE 修改为5
mill rmii rgmii 三种模式在uboot为 0 1 2 kernel中为1 5 6
可以看到,我们修改的地方不多。也有可能还有其他问题没有暴露出来。
非常感谢如下帖子的帮助: http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=13621&page=1#pid43461 http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=10128&highlight=rmii http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=11385&highlight=rmii http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=11434&highlight=uboot http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=10256&extra=&highlight=uboot&page=1 http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=7731&highlight=SPI%2Bflash http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=9363&extra=&page=1
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
-
2016-06-18 20:50:30
-
2017-03-30 22:04:19
-
2016-04-25 13:53:04
-
2018-10-11 16:15:20
-
2018-01-30 17:13:13
-
2018-04-13 16:01:38
-
2018-11-15 21:33:19
-
2018-09-29 09:11:48
-
2018-06-29 19:24:23
-
2018-07-11 14:37:00
-
2018-12-19 14:19:46
-
2017-05-20 15:01:00
-
2020-11-18 14:17:48
-
2021-10-09 15:27:34
-
2012-12-24 14:38:14
-
2016-10-08 19:26:04
-
2020-02-26 14:41:36
-
2010-01-25 14:03:23
-
2020-04-23 18:24:04
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明