首页 > 其他分享 >TQ2440移植u-boot2016.11全过程记录-【3】NOR FLASH驱动移植

TQ2440移植u-boot2016.11全过程记录-【3】NOR FLASH驱动移植

时间:2023-02-01 22:35:53浏览次数:45  
标签:TQ2440 FLASH SYS NOR ENV CONFIG 移植 define


TQ2440移植u-boot2016.11 NOR FLASH驱动移植


TQ2440开发板上板载一片NOR FLASH,型号为EON EN29LV160AB,挂载到了0x0000_0000~0x001F_FFFF地址,2M字节,16bit位宽。

编辑配置头文件:

gedit include/configs/tq2440.h

定位到NOR Flash的配置宏:

/*-----------------------------------------------------------------------
* FLASH and environment organization
*/

#define CONFIG_SYS_FLASH_CFI
#define CONFIG_FLASH_CFI_DRIVER
#define CONFIG_FLASH_CFI_LEGACY
#define CONFIG_SYS_FLASH_LEGACY_512Kx16
#define CONFIG_FLASH_SHOW_PROGRESS 45

#define CONFIG_SYS_MAX_FLASH_BANKS 1
#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
#define CONFIG_SYS_MAX_FLASH_SECT (19)

#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + 0x070000)
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_SIZE 0x10000
/* allow to overwrite serial and ethaddr */
#define CONFIG_ENV_OVERWRITE

替换为:

/*-----------------------------------------------------------------------
* FLASH and environment organization
*/

#define CONFIG_SYS_FLASH_CFI
#define CONFIG_FLASH_CFI_DRIVER
#define CONFIG_FLASH_CFI_LEGACY
#define CONFIG_SYS_FLASH_LEGACY_1024Kx16 /* NOR FLASH 大小为2M字节,16位宽 */
#define CONFIG_FLASH_SHOW_PROGRESS 45

#define CONFIG_SYS_MAX_FLASH_BANKS 1 /* NOR FLASH 数量,TQ2440板子上只有一个 */
#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
#define CONFIG_SYS_MAX_FLASH_SECT (35) /* NOR FLASH 扇区数目 */

#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + 0x100000) /* 环境变量保存位置 */
#define CONFIG_ENV_IS_IN_FLASH /* 定义该宏后环境变量保存入NOR FLASH */
#define CONFIG_ENV_SIZE 0x10000 /* 环境变量大小为64K */
#define CONFIG_ENV_OVERWRITE /* 允许覆写环境变量 */

其中CONFIG_ENV_ADDR定义了环境变量保存的位置,使用命令​ls -hl u-boot.bin​查看一下u-boot的大小为521K大小,那么环境变量的位置就必须大于这个地址,否则就会把u-boot的内存覆盖掉,这里我设置的为​0x100000​,在NOR Flash的1M地址处保存环境变量。

添加TQ2440板子上的NOR Flash的初始化选项:

gedit drivers/mtd/jedec_flash.c

找到jedec_table这个数组,在该数组末尾加入以下代码:

#ifdef CONFIG_SYS_FLASH_LEGACY_1024Kx16
{
.mfr_id = 0x1C,
.dev_id = 0x2249,
.name = "EON EN29LV160AB",
.uaddr = {
[1] = MTD_UADDR_0x0555_0x02AA /* x16 */
},
.DevSize = SIZE_2MiB,
.CmdSet = P_ID_AMD_STD,
.NumEraseRegions = 4,
.regions = {
ERASEINFO(0x04000, 1),
ERASEINFO(0x02000, 2),
ERASEINFO(0x08000, 1),
ERASEINFO(0x10000, 31),
}
},
#endif

编译后使用tftp下载到开发板0x30008000处可以并go到0x30008000地址处运行程序,可以看到已经正确识别出Nor Flash的大小:

TQ2440移植u-boot2016.11全过程记录-【3】NOR FLASH驱动移植_TQ2440移植U-BOOT

下面测试一下NOR FLASH的读写:

  • 去除写保护:
    ​protect off all​
  • 擦除从0x100000地址开始的64K,从0x100000地址处开始是为了避开自带的u-boot:
    ​erase 0x100000 +0x10000​
  • TQ2440移植u-boot2016.11全过程记录-【3】NOR FLASH驱动移植_S3C2440_02

  • 拷贝内存64K的内容到NOR FLASH:
    ​cp.b 0x30008000 0x100000 0x10000​
  • TQ2440移植u-boot2016.11全过程记录-【3】NOR FLASH驱动移植_S3C2440_03

  • 读取Nor Flash 64K内容到内存:
    ​cp.b 0x100000 0x30108000 0x10000​
  • 比较64K数据:
    ​cmp.b 0x30108000 0x30008000 0x10000​

读出的与写入的一致,测试通过:

TQ2440移植u-boot2016.11全过程记录-【3】NOR FLASH驱动移植_U-BOOT移植_04


ends…


标签:TQ2440,FLASH,SYS,NOR,ENV,CONFIG,移植,define
From: https://blog.51cto.com/u_15950551/6031938

相关文章

  • TQ2440移植u-boot2016.11全过程记录-【2】DM9000网卡驱动移植
    TQ2440移植u-boot2016.11dm9000网卡驱动uboot中含有成熟的DM9000网卡驱动,只做简单的修改即可使用。编辑文件:​​geditboard/samsung/tq2440/tq2440.c​​将​​board_eth_......
  • STM32CubeMX | STM32 HAL库移植FreeModbus详细步骤
    STM32CubeMX|STM32HAL库移植FreeModbus详细步骤freemodbus下载地址:​​https://github.com/cwalter-at/freemodbus​​本博客示例工程代码:​​https://gitee.com/jhuangB......
  • STM32CubeMX | STM32使用HAL库手动移植FreeRTOS10.4.1
    STM32CubeMX|STM32使用HAL库手动移植FreeRTOS10.4.1目录​​STM32CubeMX|STM32使用HAL库手动移植FreeRTOS10.4.1​​​​(一)裸机工程创建​​​​(二)移植FreeRTOS​​本工......
  • 易灵思Ti60F100 Flash处理方案
    转载自:Ti60F100Flash处理方案(qq.com)Ti60F100内部合封一片flash。在使用过程中有很多人遇到过这样或者那样的问题,比如RISCV不能读写flash,程序无法加载。在这里简单总......
  • FLASH-CH32F203替换STM32F103 FLASH快速编程移植说明
    因CH32F203相对于STM32flash操作多了快速编程模式,该文档说明主要目的是为了方便客户在原先ST工程的基础上实现flash快速编程模式的快速移植。1、在stm32f10x.h文件......
  • FLASH-CH32F203替换CH32F103 FLASH快速编程移植说明
    因CH32F203相对于CH32F103flash操作的快速编程模式由单次128字节编程变成了单次256字节编程,该文档说明主要目的是为了方便客户在原先CH32F103工程的基础上实现flash单次......
  • FLASH-CH32F103替换STM32F103 FLASH快速编程说明
    因CH32F103相对于STM32F103flash操作多了快速编程模式,该文档说明主要目的是为了方便客户在原先ST工程的基础上实现flash快速编程模式的快速移植。1、在stm32f10x.h......
  • nuc900 nand flash mtd 驱动
    nuc900nandflashmtd驱动,请参考! /**Copyright©2009Nuvotontechnologycorporation.**WanZongShun<[email protected]>**Thisprogramis......
  • linux驱动移植-linux网卡驱动基础
    一、OSI七层模型1.1、概念OSI七层模式是一个标准,规定了各种计算机在世界范围内互联成网的标准框架,OSI模型是一个分层的模型,每一个部分称为一层,每一层扮演固定的角色,互不......
  • Adobe Flash Player 10.3.181.22 Final
    InternetExplorer:​​​http://fpdownload.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_10_active_x.exe​​Firefox,Safari,Opera:​......