3516A調試


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

 

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

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#

把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,先調試別的以后再看看為什么這樣,

 

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

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

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

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

可以看到,我們修改的地方不多。也有可能還有其他問題沒有暴露出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM