UBOOT-2010.06 移植 支持norflash (四)

主要参考:U-BOOT-2010.06移植到TQ2440.pdf  这个资料

整理的一些资料:
u-boot-2011.03在TQ2440上的移植(3)--支持norflash启动 移植u-boot2009.08到OK2440V3开发板(3)---nor flash启动
嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(二)

EN29LV160AB  nor flash  开发板

1.修改u-boot 提示符


   gedit include/configs/smdk2440.h

  1. /*
  2.  * Miscellaneous configurable options
  3.  */
  4. #define    CONFIG_SYS_LONGHELP                /* undef to save memory        */
  5. #define    CONFIG_SYS_PROMPT        "[SMDK2440]# "    /* Monitor Command Prompt    */  修改
  6. #define    CONFIG_SYS_CBSIZE        256        /* Console I/O Buffer Size    */
  7. #define    CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */

2. 配置 nor falsh

发现自己的天嵌TQ2440板子所使用的Nor flash 芯片( NOE的EN29LV160AB)与smdk2410默认使用的芯片(AMD的AM29LV400B或AM29LV400)除了大小不一样外,其它如命令序列、工作方式等都是一样的。所以U-boot源码中关于nor flash的部分修改的不多。
 
因为已经知道自己板子的Nor flash芯片是Bottom boot模式,分成35个扇区(使用J-LINK烧写板载光盘的映像时,可以看到相应的芯片信息), 前4个扇区的大小分别为16KB,8KB,8KB,32KB,后3 1个扇区的大小都是64K。所以正好可以使用board/smdk2410目录下的flash.c,直接对芯片厂商以及ID进行赋值的方式。(当然还 有更好的方式就是读取芯片信息,判断出芯片厂商和ID再进行以后相应的操作,以后有空用这种方式)。


gedit include/configs/smdk2440.h

  1. /*-----------------------------------------------------------------------
  2.  * FLASH and environment organization
  3.  */
  4. #if 0   修改为 CONFIG_AMD_LV800
  5. #define CONFIG_AMD_LV400    1    /* uncomment this if you have a LV400 flash */
  6. #endif
  7. #define CONFIG_AMD_LV800    1    /* uncomment this if you have a LV800 flash */


  8. #define CONFIG_SYS_MAX_FLASH_BANKS    1    /* max number of memory banks */
  9. #ifdef CONFIG_AMD_LV800
  10. #define PHYS_FLASH_SIZE        0x00200000 /* 2MB */
  11. #define CONFIG_SYS_MAX_FLASH_SECT    (19)    /* max number of sectors on one chip */
  12. #define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE + 0x0F0000) /* addr of environment */
  13. #endif
  14. #ifdef CONFIG_AMD_LV400
  15. #define PHYS_FLASH_SIZE        0x00080000 /* 512KB */
  16. #define CONFIG_SYS_MAX_FLASH_SECT    (11)    /* max number of sectors on one chip */
  17. #define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE + 0x070000) /* addr of environment */
  18. #endif

  19. /* timeout values are in ticks */
    #define CONFIG_SYS_FLASH_ERASE_TOUT    (5*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
    #define CONFIG_SYS_FLASH_WRITE_TOUT    (5*CONFIG_SYS_HZ) /* Timeout for Flash Write */

    #define    CONFIG_ENV_IS_IN_FLASH    1
    #define CONFIG_ENV_SIZE        0x20000    /* Total Size of Environment Sector */



3. 配置下载
make mrproper
make smdk2440_config
make all

4.显示

  1. Now, Downloading [ADDRESS:33000000h,TOTAL:98790]
  2. RECEIVED FILE SIZE: 98790 (96KB/S, 1S)
  3. ## Starting application at 0x33000000 ...▲

  4. U-Boot 2010.06-rc1 ( 4鏈?16 2011 - 15:23:12)

  5. DRAM: 64 MiB
  6. Flash: 2 MiB
  7. *** Warning - bad CRC, using default environment

  8. In: serial
  9. Out: serial
  10. Err: serial
  11. Net: CS8900-0
  12. [SMDK2440]# ?
  13. ? - alias for 'help'
  14. base - print or set address offset
  15. bdinfo - print Board Info structure
  16. boot - boot default, i.e., run 'bootcmd'
  17. bootd - boot default, i.e., run 'bootcmd'
  18. bootelf - Boot from an ELF image in memory
  19. bootm - boot application image from memory
  20. bootp - boot image via network using BOOTP/TFTP protocol
  21. bootvx - Boot vxWorks from an ELF image
  22. cmp - memory compare
  23. coninfo - print console devices and information


因为使用的是 AM flash 原先的配置

  1. [SMDK2440]# flinfo

  2. Bank # 1: AMD: 1x Amd29LV800BB (8Mbit)  ##这里还是 AMD nor flash 芯片,
  3.   Size: 2 MB in 19 Sectors
  4.   Sector Start Addresses:
  5.     00000000 (RO) 00004000 (RO) 00006000 (RO) 00008000 (RO) 00010000 (RO)
  6.     00020000 00030000 00040000 00050000 00060000
  7.     00070000 00080000 00090000 000A0000 000B0000
  8.     000C0000







阅读(1255) | 评论(0) | 转发(0) |
评论热议
使用优化算法,以优化VMD算法的惩罚因子惩罚因子 (α) 和分解层数 (K)。 1、将量子粒子群优化(QPSO)算法与变分模态分解(VMD)算法结合 VMD算法背景: VMD算法是一种自适应信号分解算法,主要用于分解信号为不同频率带宽的模态。 VMD的关键参数包括: 惩罚因子 α:控制带宽的限制。 分解层数 K:决定分解出的模态数。 QPSO算法背景: 量子粒子群优化(QPSO)是一种基于粒子群优化(PSO)的一种改进算法,通过量子行为模型增强全局搜索能力。 QPSO通过粒子的量子行为使其在搜索空间中不受位置限制,从而提高算法的收敛速度与全局优化能力。 任务: 使用QPSO优化VMD中的惩罚因子 α 和分解层数 K,以获得信号分解的最佳效果。 计划: 定义适应度函数:适应度函数根据VMD分解的效果来定义,通常使用重构信号的误差(例如均方误差、交叉熵等)来衡量分解的质量。 初始化QPSO粒子:定义粒子的位置和速度,表示 α 和 K 两个参数。初始化时需要在一个合理的范围内为每个粒子分配初始位置。 执行VMD分解:对每一组 α 和 K 参数,运行VMD算法分解信号。 更新QPSO粒子:使用QPSO算法更新粒子的状态,根据适应度函数调整粒子的搜索方向和位置。 迭代求解:重复QPSO的粒子更新步骤,直到满足终止条件(如适应度函数达到设定阈值,或最大迭代次数)。 输出优化结果:最终,QPSO算法会返回一个优化的 α 和 K,从而使VMD分解效果最佳。 2、将极光粒子(PLO)算法与变分模态分解(VMD)算法结合 PLO的优点与适用性 强大的全局搜索能力:PLO通过模拟极光粒子的运动,能够更高效地探索复杂的多峰优化问题,避免陷入局部最优。 鲁棒性强:PLO在面对高维、多模态问题时有较好的适应性,因此适合海上风电时间序列这种非线性、多噪声的数据。 应用场景:PLO适合用于优化VMD参数(α 和 K),并将其用于风电时间序列的预测任务。 进一步优化的建议 a. 实现更细致的PLO更新策略,优化极光粒子的运动模型。 b. 将PLO优化后的VMD应用于真实的海上风电数据,结合LSTM或XGBoost等模型进行风电功率预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值