3516A調試

最近在調Hi3516A的板,硬件不知道爲何如此設計,用一片16bit4G的ddr,16Mspi flash,按理若是是A應該是2片16bit的ddr,組成32位總線,如今怕是隻能當D來用了,編譯成功後,燒錄uboot後,出現*** Warning - bad CRC, using default environment,嘗試用setenv改變量,sa也提示成功,但reset後問題仍是同樣,折騰了二天,最後參考下面的才解決。php

 

http://www.bubuko.com/infodetail-2118134.htmlhtml

U-Boot 2010.06 (Jan 05 2018 - 12:08:26)網絡

Check spi flash controller v350... Found
Spi(cs1) ID: 0xC2 0x20 0x18 0xC2 0x20 0x18
Spi(cs1): Block:64KB Chip:16MB Name:"KH25L12835F"
*** Warning - bad CRC, using default environment工具

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
uboOT#
uboOT#spa

把uboot和kernel下drivers\mtd\spi\hisfc350\hisfc350_spi_ids.c的文件,定義一個CONFIG_CLOSE_SPI_8PIN_4IO設計

#define CONFIG_CLOSE_SPI_8PIN_4IO調試

按理demo板也是用的spi nor flash,先調試別的之後再看看爲何這樣,

excel

 

關於HI3516A 使用SDK06版本更換DDR和SPI FLASH遇到的問題和解決方法

時間: 2017-06-13 16:14:54      閱讀:2378      評論:0      收藏:0      [點我收藏+]

標籤:int   jffs2   tool   模式   fastboot   就會   con   php   ini   htm

HI3516A 更換DDR 和 FLASH

最近有新的需求須要使用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 文件上。


1,excel文件的選擇
在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中已作了配置

2 SPI 配置
以下是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模式,否則串口沒有任何輸出

3,網絡配置

海思提供的網絡模式模式是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

能夠看到,咱們修改的地方很少。也有可能還有其餘問題沒有暴露出來。接口

相關文章
相關標籤/搜索