lpc1788移植u-boot-2010.03之spi flash移植

lpc1788移植u-boot-2010.03之spi flash移植 2013-08-10 14:58:46

轉載至:http://blog.chinaunix.net/uid-28974688-id-3842328.html

分類: LINUX

u-boot-2010.03移植spi flash支持讀、寫、擦除操作!!!
開發環境:
MCU:       NXP  LPC1788
u-boot:     u-boot-2010.03
SPI Flash: AT45DB321D

 由於ATMEL的spi flash在u-boot中已經實現,我們就不要去寫AT45DB321D的驅動了,現在考慮SPI總線的問題(u-boot中的spi驅動在driver/spi目錄中),在driver/spi目錄中可以看到各種芯片的spi總線實現,不過lpc1788是沒有的,別動別動看到了一個soft_spi.c,好了現在spi總線的驅動也不用寫了,直接用soft spi。

在lpc1788的配置文件中加入以下內容:

點擊(此處)摺疊或打開

  1. #define CONFIG_CMD_SF //加入cmd_sf.c文件的編譯,實現u-boot中spi flash的操作命令sf
  2. #define CONFIG_SOFT_SPI //加入driver/spi/soft_spi.c文件編譯,實現軟件spi總線
  3. #define CONFIG_SPI_FLASH //加入driver/mtd/spi/spi_flash.c文件編譯
  4. #define CONFIG_SPI_FLASH_ATMEL //加入driver/mtd/spi/atmel.c文件編譯,實現AT45的驅動


  5. #define CONFIG_SF_DEFAULT_MODE SPI_MODE_1
  6. #define SPI_SCL spi_scl
  7. #define SPI_SDA spi_sda
  8. #define SPI_READ spi_read()
  9. void spi_scl(int);
  10. void spi_sda(int);
  11. unsigned char spi_read(void);
  12. #define SPI_DELAY udelay(2)
在board/nxp/lpc1788/board.c文件中加入以下內容: 

點擊(此處)摺疊或打開

  1. void spi_scl(int bit)
  2. {
  3. struct lpc178x_gpio_dsc dsc;
  4. dsc.port = 2;
  5. dsc.pin = 22;
  6. lpc178x_gpout_set(&dsc, bit);
  7. }

  8. void spi_sda(int bit)
  9. {
  10. struct lpc178x_gpio_dsc dsc;
  11. dsc.port = 2;
  12. dsc.pin = 27;
  13. lpc178x_gpout_set(&dsc, bit);
  14. }

  15. unsigned char spi_read(void)
  16. {
  17. struct lpc178x_gpio_dsc dsc;
  18. dsc.port = 2;
  19. dsc.pin = 26;
  20. return (unsigned char)lpc178x_gpin_get(&dsc);
  21. }
  22. <span style="font-size: 14px; line-height: 1.5;">int spi_cs_is_valid(unsigned int bus, unsigned int cs)</span>
  23. {
  24. return bus == 0 && cs == 0;
u-boot中spi flash的操作命令:
1、選擇spi flash
    sf probe 0
2、擦除命令
   sf erase 0 0x210      //注意擦除長度一定是0x210的整數倍
3、讀命令
    sf read addr  offset  len
4、寫命令
    sf write addr offset len


參考一下內容:http://bbs.leekie.net/thread-667-1-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章