groupUrl: https://ez.analog.com/dsp/blackfin-processors/
Analog.com Analog Dialogue Wiki English
Analog.com Analog Dialogue Wiki 简体中文
EngineerZone
EngineerZone
  • Site
  • User
  • Site
  • Search
  • User
EngineerZone
EngineerZone
  • Log in
  • Site
  • Search
  • Log in
  • Home
  • Blogs ⌵
  • Browse ⌵
    • All Groups
    • All Members
  • Support ⌵
    • 3D ToF Depth Sensing
    • A2B
    • Aerospace and Defense (ADEF)
    • Amplifiers
    • Analog Microcontrollers
    • Analysis Control Evaluation (ACE) Software
    • Audio
    • Clock and Timing
    • Condition-Based Monitoring
    • Data Converters
    • Design Tools and Calculators
    • Direct Digital Synthesis (DDS)
    • Embedded Vision Sensing
    • Energy Monitoring and Metering
    • FPGA Reference Designs
    • Industrial Ethernet
    • Interface and Isolation
    • Low Power RF Transceivers
    • MEMS Inertial Sensors
    • Motor Control Hardware Platforms
    • Optical Sensing
    • Power Management
    • Precision Technology Signal Chains
    • Processors and DSP
    • Reference Circuits
    • RF and Microwave
    • Signal Chain Power (SCP)
    • Switches/Multiplexers
    • Temperature Sensors
    • Video
    • Wide Band RF Transceivers
    • Wireless Sensor Networks Reference Library
  • About EZ
  • More
  • Cancel
  • 主页
  • 浏览 ⌵
    • 收件箱
    • 个人设置
    • 会员
    • 专区列表
  • 论坛专区 ⌵
    • 放大器专区
    • 精密转换器专区
    • 音频专区
    • ADE电能计量专区
    • MEMS和传感器专区
    • 接口和隔离专区
    • Power 中文专区
    • ADUC微处理器专区
    • 锁相环专区
    • 开关和多路复用器专区
    • 温度传感器
    • 基准电压源专区
    • 资源库
    • 论坛使用指南
    • 技术支持参考库
    • 在线研讨会
    • 论坛社群活动
    • 论坛激励活动
  • More
  • Cancel
Blackfin Processors
  • Processors and DSP
Blackfin Processors
Documents FAQ: VisualDSP++ Workaround for SPI Boot Anomaly 05-00-0490
  • Q&A
  • Discussions
  • Documents
  • File Uploads
  • Sub-Groups
  • Tags
  • Reports
  • Managers
  • More
  • Cancel
  • New
Blackfin Processors requires membership for participation - click to join
  • +Documents
  • ADSP-BF537 - Memory test
  • Anomaly (05-00-0495) affecting ADSP-BF50x revision 0.0
  • Blackfin GPIO Open-Drain Functionality
  • BLACKFIN PROCESSORS
  • Booting an application from internal flash in BF50xF processors
  • Controlling multiple ADCs with the ACM
  • DAS U-BOOT FOR BLACKFIN SUPPORT COMMUNITY
  • FAQ: ADSP-BF527 Multi dxe boot
  • FAQ: ADSP-BF592 SPI loopback
  • FAQ: BF51x OTP memory read and write on GP space using CCES
  • FAQ: BF592 SPORT Example code
  • FAQ: Does ADI has BF702 USB Device Examples without using uCOS?
  • FAQ: Example code for ADSP-BF548 UART Full duplex communication across two Ez-kits
  • FAQ: Get total code and data size from Blackfin linker
  • FAQ: How do I reconcile Blackfin SPI serial clock phase control (CPHA) settings with potentially conflicting hardware/software slave select modes, when both these attributes are managed by the same control bit?
  • FAQ: How do I restore the original SDP image to flash on my SDP board?
  • FAQ: How do you generate safe and strong keys in Lockbox?
  • FAQ: How to access global variables for multi cores
  • FAQ: I have a Blackfin based USB application for which I've enabled (unmasked) the Connect and Disconnect interrupts, however, when I plug and unplug the USB cable no interrupt is generated. Why is this?
  • FAQ: I'm interested in the Blackfin processor family but don’t know where to start?
  • FAQ: Lockbox on EZ-Kits
  • FAQ: One .ldf file for release and debug
  • FAQ: USB:: Disabling Double Buffering
  • FAQ: Using the Blackfin SDP-B as a BF527 Evaluation Platform
  • FAQ: VisualDSP++ Workaround for SPI Boot Anomaly 05-00-0490
  • FAQ: What is Lockbox?
  • FAQ:  Blackfin and IEEE 1588
  • FAQ:  Can the ADC in BF506F be powered at 5V while interfacing to 3.3V signals?
  • FAQ:  CLI and "Target option Mask interrupts during step"
  • FAQ:  Connecting I2S via SPORT
  • FAQ:  External vs. Internal Voltage Regulator
  • FAQ:  How is the internal flash of BF50xF processors programmed?
  • FAQ:  How to boot the BF537?
  • FAQ:  Slow down start-up of internal regulator of BF525C processor
  • FAQ:  Unused PPI port pins
  • FAQ:  USB hub use with BF54x/BF52x USB controller
  • Floating point to integer conversion error
  • How Can I Boot A Blackfin Processor from an Atmel DataFlash SPI Memory Device?
  • How to create a bootable LDR file of Lockbox Security example?
  • How to Transfer Data Across Two EZ-KITs via USB
  • image processing demo for BF527
  • Impact of New On-Chip Flash for BF51xF Designs
  • Is There A Recommended DHCP Server Test for Blackfin and LwIP?
  • SDRAM Discontinuation
  • suggest me for correct datasheet
  • Trouble Transferring16-Bit Data on Blackfin SPORT
  • USB VBUS PROTECTION
  • What training is available for ADI DSPs
  • Where Can I Find the Blackfin assembly code for Cordic Algorithm?

FAQ: VisualDSP++ Workaround for SPI Boot Anomaly 05-00-0490

Anomaly 05-00-0490 requires a very specific timing element that is unfortunately possible to encounter through normal boot ROM execution.  While the software workaround is a simple fix, it is obviously not possible to modify the ROM code itself.  However, all the processors susceptible to this anomaly also feature the ability to register a "custom boot handler"...if the custom boot handler is exactly the boot ROM code with these minor tweaks, this anomaly is avoided altogether (even for SPI_BAUD=2). The attached ZIP file contains the corrected code to be linked into your project as part of the initialization block to avoid anomaly 05-00-0490, as well as guidance for using it and augmenting it with other initialization customizations that your application may require (changing clock speeds, initializing the external memory interface, etc.).

However, additional protection beyond the custom boot handler is required to prevent the init block itself from encountering the same anomaly, which requires modification of the loader file (LDR) output image containing the application boot stream. The Workaround_Description.pdf file in the attached ZIP archive contains the details regarding the nature of the changes required and how to go about making the changes (based on which revision of VisualDSP++ is being used).

Attachments:
05000490_Description.zip
  • booting
  • 05000490
  • anomaly
  • blackfin
  • Share
  • History
  • More
  • Cancel
Comments
Anonymous

Top Comments

  • jobo23
    jobo23 over 10 years ago in reply to vix +1
    The code that is actually in the boot ROMs doesn't change, and you can get a build of that boot ROM code by going through the bk_version.h header to see which THIS_VERSION value selects the code that is…
  • jobo23
    jobo23 over 8 years ago in reply to wallman16

    The workaround code included in the ZIP file is generic to the boot ROM which is common to both the BF52x and BF51x families.  It provides native support of BF51x processors based on built-in switches that are configured inside the IDDE based on project options.  While this stand-alone project was built for and tested on the BF527 EZ-KIT, the SPI_LOAD.asm routine itself and the guidance for implementing the custom boot stream is common to BF51x as well.

    • Cancel
    • Vote Up 0 Vote Down
    • Reply
    • More
    • Cancel
  • wallman16
    wallman16 over 8 years ago in reply to vix

    Hi ,

    How about code for BF51x .

    Thanking you

    With best regards and wishes

    • Cancel
    • Vote Up 0 Vote Down
    • Reply
    • More
    • Cancel
  • jobo23
    jobo23 over 10 years ago in reply to vix

    The code that is actually in the boot ROMs doesn't change, and you can get a build of that boot ROM code by going through the bk_version.h header to see which THIS_VERSION value selects the code that is in the ROM of your processor. While I cannot say for sure what the files look like between tools revisions, the files themselves indicate the actual source code that is burned into the ROMs of the processors.  This code is UNCHANGED from tools revision to tools revision.  For your BF527 rev 0.2 processor, it is as follows:

    // Note: irrelevant code removed from bk_version.h

    #elif defined(__ADSPBF523__) || defined(__ADSPBF525__) || defined(__ADSPBF527__)

       #if !defined(__SILICON_REVISION__) || (__SILICON_REVISION__ == 2)

                #define BK_THIS_VERSION      0x03

    So, your THIS_VERSION is 0x03.  Comparing the bk_spi.asm file in the 03 directory to the load algorithm above:

    1> The function protocols at the top include all the generic boot ROM functions that configure the part to recognize SPI boot mode and establish a connection with the SPI memory.  These functions run in the boot ROM outside of anything that might arrive at the anomaly, so they are safe and are removed from our patch.  These functions also include all the SPI slave functions irrelevant to this discussion, so these are also removed.  Per this explanation, everything in bk_spi.asm up to line 289 is irrelevant for the comparison.

    2> In the _bootrom.spiboot.master.load routine in SPI_LOAD.asm, the NEWCODE macro at line 111 controls the addition of the DMA disable required between work units to avoid one manifestation of the anomaly.  The rest of the function is identical to the original in bk_spi.asm.

    3> Lines 359-575 of bk_spi.asm are the device detection routine, which is irrelevant and removed.

    4> Lines 575-759 of bk_spi.asm match exactly with SPI_LOAD.asm.  In the _bootrom.spiboot.master.disable function in SPI_LOAD.asm line 327, the NEWCODE macro adds the code to do the dummy read of SPI0_RDBR to clear the possible stuck bit condition for the boot anomaly.

    5> Starting at line 362 of SPI_LOAD.asm are functions that are declared externally in our boot ROM source, but for the purpose of this patch must be local because edits are required to protect against the anomaly.  So, the _bootrom.bootkernel.pdma function matches the same function in the bk_kernel.asm file, except for where we had to account for a stack modification made above, as noted by NEWCODE macro at line 445.  There is also some specific BF54x handling that doesn't apply to you (NEWCODE = 0 at line 519).

    6> In SPI_LOAD.asm, the getport routine is needed by the patch, but it uses the original routine and sub-routines in the ROM, so the code at lines 682-700 simply sets up a call to the original ROM function.

    7> In SPI_LOAD.asm, lines 701 on match exactly the bk_kernel.asm lines 1364-1440.

    • Cancel
    • Vote Up +1 Vote Down
    • Reply
    • More
    • Cancel
  • vix
    vix over 10 years ago in reply to jobo23

    OK, now everything is clear.

    Nothing is better than a clear and complete explanation...

    • Cancel
    • Vote Up 0 Vote Down
    • Reply
    • More
    • Cancel
  • vix
    vix over 10 years ago in reply to jobo23

    The files are vastly different because the patch removes all the SPI setup code

    ...

    The part of the boot ROM that is rewritten in the patch is the rest of the boot ROM code that actually performs the DMA and processes the stream as it comes over the SPI port.  This code matches  the bk_spi.asm source except where differentiated by the NEWCODE macro

    I can confirm without any doubt that this code doesn't match the bk_spi.asm included in VDSP++ 5.0 Update 9 for BF52x processor. The problem is not in some parts that have been removed, and other added inside the NEWCODE macro: the files are really different!!

    Please check carefully for the update and the processor I'm referring to.

    I believe that this workaround works for some processors and it is based over the bk_spi.asm file included in some of the past VDSP++ updates, but I'm interested in BF527 and VDSP++ Update 9.

    • Cancel
    • Vote Up 0 Vote Down
    • Reply
    • More
    • Cancel
>
Related
 
社交网络
快速链接
  • 关于ADI
  • Partners
  • 模拟对话
  • 职业
  • 联系我们
  • 投资信息
  • 新闻中心
  • 质量和可靠性
  • 办事处与代理商
  • Analog Garage
语言
  • English
  • 简体中文
  • 日本語
  • Руccкий
电子快讯

欲获得最新ADI产品、设计工具、培训与活动的相关新闻与文章,请从我们的在线快讯中选出您感兴趣的产品类别,每月或每季度都会发送至您的收件箱。

订阅
Switch to mobile view
Analog Logo
© 1995 - 2022 Analog Devices, Inc. All Rights Reserved 沪ICP备09046653号-1
  • ©
  • 1995 - 2022 Analog Devices, Inc. All Rights Reserved
  • 沪ICP备09046653号-1
  • 网站地图
  • 隐私和保密政策
  • 隐私设置
  • 使用条款
 
Social
Quick Links
  • About ADI
  • Partners
  • Analog Dialogue
  • Careers
  • Contact us
  • Investor Relations
  • News Room
  • Quality & Reliability
  • Sales & Distribution
  • Analog Garage
Languages
  • English
  • 简体中文
  • 日本語
  • Руccкий
Newsletters

Interested in the latest news and articles about ADI products, design tools, training and events? Choose from one of our 12 newsletters that match your product area of interest, delivered monthly or quarterly to your inbox.

Sign Up
Switch to mobile view
Analog Logo
© 1995 - 2022 Analog Devices, Inc. All Rights Reserved 沪ICP备09046653号-1
  • ©
  • 1995 - 2022 Analog Devices, Inc. All Rights Reserved
  • 沪ICP备09046653号-1
  • Sitemap
  • Privacy & Security
  • Privacy Settings
  • Terms of use
EngineerZone Uses cookies to ensure you get the best experience in our community. For more information on cookies, please read our Privacy & Security Statement.