This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28075 - loading Blinky into flash memory

Other Parts Discussed in Thread: CONTROLSUITE

Has anyone out there loaded Blinky (or something similar / simple)  into flash using the SCI bootstrap mechanism and a suitable flash kernel and run it successfully, just to test the process and better understand the documentation?  If so, can you please show me how to do it?  And if you can, also describe how you got the flash kernel to compile using CCS and link in the first place?  I am using ControlSuite 3.4 (V200 files) and CCSV6. 

I have reached the bottom of a pit of despair over what should be the easiest of tasks, and am dying under the weight of complex documentation and lack of success in compiling the kernel, and to make things worse, the Serial_Flash_programmer utility won't even compile on Visual Studio v10 - lots of missing references and files.

Many thanks in anticipation!

Chris 

  • Please see www.ti.com/lit/sprabv4

    There are also many E2E threads on this subject. Check out the other threads.

    I am not sure what the problems could be with compiling the kernel. It should compile in controlSUITE.

    For Visual Studio and serial flash programmer, I don't think this is the case, but you may need WinDDK installed. But I don't think it it necessary. What files are missing?

    sal
  • Hi Sal,

    I have just finished typing reply to you and went back to Controlsuite for a reference, came back and over an hour's careful typing has just disappeared. Not a happy bunny.

    Thanks for the response, but I am already working from SPRABV4A and a host of other related docs, and they don't help, they assume that we already know most of what we are being told. We are a bunch of skilled software engineers but novices at the TMS320 series, and the existing documentation is just too complex to use from scratch without a really, really simple example to relate to. We have tried (5 solid days now) and we still can't even get a flash kernel to compile, let alone download it via the SCI loader. In the documentation, the kernels are identified as "A" and "B", but which is which? ControlSuite gives examples, but neither will load into CCSV6 as a valid project, anyway.

    Our VS10 build of serial_flash_programmer.exe failed due to a lot of missing references, even including some of the basic "std's", so the build instruction is clearly missing something. We could use the already built version, but ideally we need to modify it to suit our systems, and we can't. I tried to paste an image of the first page with missing refs underlined, but it won't paste into this editor.

    We used "Blinky" as a start-up test piece and to test the SCI bootloader, and this (eventually) worked with kind help from e2e members. What we need now is a "Child's Garden of Flash Booting" which doesn't make any assumptions about our skills, but gives a serial, step-by-step "do this, do that" primer which will work, that we can then (by substitution), relate to our application.

    I am still searching e2e, but haven't found anything yet.

    Rgds

    Chris
  • Pages 5 and 6 of the document explicitly specify which kernel, A or B, is used on which device. With careful reading of the document it should be helpful. It was created to aid customers with their development and understanding of the process.

    I'd be glad to help with any specific questions related to the serial flash programmer, SCI flash kernels, flash programming, or bootloading.

    Regards,
    sal
  • Hi Sal,

    I reread the entire section on both kernels in SPRABV4A but I still can't find any reference which tells me which is the source of either A or B. The one we have tried to compile a number of times is identified below:-

    //###########################################################################
    //
    // FILE: flash_programming_cpu01.c
    //
    // TITLE: Flash Programming Example for F2807x.
    //
    //! \addtogroup cpu01_example_list
    //! <h1> Flash Programming </h1>
    //!
    //! This example demonstrates F021 Flash API usage to program
    //! Flash Bank 0 on F2807x.
    //!
    //
    //###########################################################################
    // $TI Release: F2807x Support Library v200 $
    // $Release Date: Tue Jun 21 14:11:45 CDT 2016 $
    // $Copyright: Copyright (C) 2014-2016 Texas Instruments Incorporated -
    // http://www.ti.com/ ALL RIGHTS RESERVED $
    //###########################################################################

    Is this A or B? Even assuming that it is "B", it still doesn't compile. We created a new workspace in CCSV6 just for this compile, and (via Import Project) pointed at:-

    \F2807x\v200\F2807x_examples_cpu01\flash_programming

    This created a project with (what seemed to be) all the correct files and includes (including FlashAPI), but when you try to compile it, this is what reports:-

    Description Resource Path Location Type
    #1965 cannot open source file "F021_F2837xD_C28x.h" Fapi_UserDefinedFunctions.c /flash_programming_cpu01 line 23 C/C++ Problem
    #1965 cannot open source file "F2807x_device.h" F2807x_DefaultISR.c /flash_programming_cpu01 line 14 C/C++ Problem
    #1965 cannot open source file "F2807x_device.h" F2807x_GlobalVariableDefs.c /flash_programming_cpu01 line 14 C/C++ Problem
    #1965 cannot open source file "F2807x_device.h" F2807x_Gpio.c /flash_programming_cpu01 line 17 C/C++ Problem
    #1965 cannot open source file "F2807x_device.h" F2807x_PieCtrl.c /flash_programming_cpu01 line 17 C/C++ Problem
    #1965 cannot open source file "F2807x_device.h" F2807x_PieVect.c /flash_programming_cpu01 line 17 C/C++ Problem
    #1965 cannot open source file "F2807x_device.h" F2807x_SysCtrl.c /flash_programming_cpu01 line 21 C/C++ Problem
    #1965 cannot open source file "F28x_Project.h" flash_programming_cpu01.c /flash_programming_cpu01 line 24 C/C++ Problem
    gmake: *** [F2807x_DefaultISR.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: *** [F2807x_GlobalVariableDefs.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: *** [F2807x_Gpio.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: *** [F2807x_PieCtrl.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: *** [F2807x_PieVect.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: *** [F2807x_SysCtrl.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: *** [Fapi_UserDefinedFunctions.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: *** [flash_programming_cpu01.obj] Error 1 flash_programming_cpu01 C/C++ Problem
    gmake: Target 'all' not remade because of errors. flash_programming_cpu01 C/C++ Problem
    Invalid project path: Include path not found (C:\F2807x_common\include). flash_programming_cpu01 pathentry Path Entry Problem
    Invalid project path: Include path not found (C:\F2807x_common\include\FlashAPI). flash_programming_cpu01 pathentry Path Entry Problem
    Invalid project path: Include path not found (C:\F2807x_headers\include). flash_programming_cpu01 pathentry Path Entry Problem
    This project was created using a version of compiler that is not currently installed: 6.4.2 [C2000]. Another version of the compiler will be used during build: 15.12.1.LTS. Go to 'Help > Check for Updates' page to check for updates and visit <a href="liveaction:OpenAppCenter">CCS App Center</a> to get the latest compilers. Go to 'Help > Install New Software...' to install older compilers. Alternatively, migrate the project to one of the available compiler versions by adjusting project properties. flash_programming_cpu01 properties Problems

    -oOo-

    It doesn't seem to be able to find any of the "includes", even though the references are present and correct. I presume that the compiler difference isn't the problem (we will update). Who sets the project path (reported as invalid)? Is this part of the "flash_programmer" structure, or do we have to do it? And if so, how and where? We checked the project properties\include options, and they are all correctly registered.

    There is a windows linker command file in the directory (), see below:-

    //###########################################################################
    // FILE: flash_programming_cpu1_FLASH.cmd
    // TITLE: Linker Command File For all F28X7x devices
    //###########################################################################
    // $TI Release: F2807x Support Library v200 $
    // $Release Date: Tue Jun 21 14:11:45 CDT 2016 $
    // $Copyright: Copyright (C) 2014-2016 Texas Instruments Incorporated -
    // http://www.ti.com/ ALL RIGHTS RESERVED $
    //###########################################################################
    */

    /* ======================================================
    // For Code Composer Studio V2.2 and later
    // ---------------------------------------
    // In addition to this memory linker command file,
    // add the header linker command file directly to the project.
    // The header linker command file is required to link the
    // peripheral structures to the proper locations within
    // the memory map.
    // The header linker files are found in <base>\F2807x_headers\cmd
    // For BIOS applications add: F28X7x_Headers_BIOS.cmd
    // For nonBIOS applications add: F28X7x_Headers_nonBIOS.cmd
    ========================================================= */

    We added the "nonBIOS.cmd" file, but it didn't make any difference, it still didn't compile or link. We are clearly missing something, but don't know what.

    Help?!!!

    Rgds,

    Chris
  • Please use the sci flash kernel called "F2807x_sci_flash_kernel" This is described as Kernel B in the document. If you see the Kernel B section, you will see F2807x device listed under the Section, indicating that the kernel used for F2807x is Kernel B.

    sal
  • Hi Sal,

    I still can't find a reference in SPRABV4A which links kernel B to F2807x_sci_flash_kernel - my document is March 2014 - Revised March 2015 - is there a later one?

    I found "F2807x_sci_flash_kernel_cpu01" in the examples_cpu01 folder - is this the correct file? If so, I compiled as per the previous one, but still no go:-

    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/Fapi_UserDefinedFunctions.c', needed by 'Fapi_UserDefinedFunctions.obj'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/SCI_Boot.c', needed by 'SCI_Boot.obj'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/SCI_GetFunction.c', needed by 'SCI_GetFunction.obj'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/Shared_Boot.c', needed by 'Shared_Boot.obj'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/Shared_Erase.c', needed by 'Shared_Erase.obj'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/Shared_Verify.c', needed by 'Shared_Verify.obj'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/fwupgradec1toc2_start.asm', needed by 'fwupgradec1toc2_start.obj'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/flash_programming_cpu1tocpu2_RAM.cmd', needed by 'F2807x_sci_flash_kernel_cpu01.out'.
    gmake: *** No rule to make target 'C:/QFLASH/QFlash_Workspace/c1bootROM_BootROMSymbols_fpu32.lib', needed by 'F2807x_sci_flash_kernel_cpu01.out'.
    gmake: Target 'all' not remade because of errors.

    **** Build Finished ****

    All of the includes are present and properly registered as before. The path pointer in "Include Options" is ${INSTALLROOT_F2807X}, which was auto-generated. Is there something else that we need to do to make the examples compile correctly?

    Rgds,

    Chris
  • Page 6. Section 5.

    "5 Flash Kernel B
    This Flash Kernel B runs on:
    • F2807x
    • F2837xD
    • F2837xS"
  • Hi Sal,

    Seen that, and sorry to be picky, but our problem was that there wasn't any reference anywhere in the document which says either directly or by inference "And by the way, when we use the term "Flash Kernel B" we actually mean the file "F2807x_sci_flash_kernel" which you can find in ........". Or have we missed something?

    Anyway, I have taken a closer look at the project contents and the errors following the compile, and they all seem to be the same - the filename is included in the project list, but when you try to look at the file in the editor screen by double clicking, a message appears that says that the source of this file isn't available. So if you then delete the reference and add the actual file, it still won't compile, telling me that there are now a load of duplicate references. So, screwed either way.

    -oOo-

    We are clearly not starting / running CCSV6 in the correct way, because surely it shouldn't be behaving like this?

    To recap, we launched CCSV6 and in response to the opening prompt for a workspace, we created one in the C: directory, didn't tick the "default" tab, and pressed OK.

    On the opening editor / display screen, we pressed "Import Project", and in the resulting window, we browsed for the "F2807x_sci_flash_kernel" folder in examples_cpu01, and a valid flash kernel project was identified (already ticked) so we accepted it, and the project then appeared in the Project Explorer window, ready to compile. All of the includes were properly referenced in the "Include Options", and as far as we could tell, there was nothing else that looked wrong.

    We clicked the project name, hit the build hammer and (as before) it fails to compile / link.

    Did we use the correct sequence, or is there something else we needed to do to make it work?

    Rgds,

    Chris
  • I just imported and built the kernel. And it built with no errors.

    That is the correct sequence.

    Can you try checking for CCS updates? CCS->Help->Check for Updates.

    sal
  • Hi Sal,

    We checked for CCS updates before the last build, and there were none. We are currently running 6.1.3.00034. On one of the errors, the report said that the current CCS version used was 6.4.0, but we looked for that and it doesn't show anywhere. We updated ControlSuite only a few days ago, and have V200 for the 28075.

    Can you zip me the project folder you built so that I can try it here? chris.moir@exactgroup.co.uk will find me. If that doesn't work then the only thing we can try is to reload CCS.

    Rgds,

    Chris
  • Hi Sal,

    Thanks for the pointer to the .zip, I loaded it into CCS and it compiled and linked first time - you even have hex2000 output!

    I will take a detailed look at the files and the setup and see if I can find out what was going wrong with our build, and will let you know if I find anything.

    Thanks for your patience and invaluable assistance,

    Regards,

    Chris

    ps. I noticed that you were running CCS v 6.4.2 - is this a soon-to-be-released version, and could it have had an effect re our problem?
  • That is not the CCS version. That is the compiler version.

    Please verify my above response to close the thread. If you have any more questions. Please open another thread with a different title so that it will be easier to search for specific issues.

    Thanks!
    sal