S32 デザインスタジオ・ナレッジベース

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

S32 Design Studio Knowledge Base

ディスカッション

ソート順:
This document describes how to link a binary file(s) with an existing project in S32 Design Studio using GCC build tools. Let's demonstrate this on S32K144 project in S32DS for ARM. Nevertheless it should work with any other GCC based development tools. The first step is to add the binary file(s) into your project folder in the workspace. In the example below I created two binary files "my_bin.bin" and "my_bin2.bin" and added them into a custom folder "bin_files". I also entered 10 characters into each file. my_bin.bin: 0x41 0x41 0x41 0x41 0x41 0x41 0x41 0x41 0x41 0x41  (represents 10 characters "A") my_bin2.bin: 0x42 0x42 0x42 0x42 0x42 0x42 0x42 0x42 0x42 0x42  (represents 10 characters "B") The next step is to modify the linker configuration file (.ld) in order to specify input file format and path to the binary files (see the line 14-17) /* Specify the memory areas */ MEMORY { /* Flash */ m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400 m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010 m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0007FBF0 /* SRAM_L */ m_data (RW) : ORIGIN = 0x1FFF8000, LENGTH = 0x00008000 /* SRAM_U */ m_data_2 (RW) : ORIGIN = 0x20000000, LENGTH = 0x00007000 } TARGET(binary) /* specify the file format of binary file */ INPUT (..\bin_files\my_bin.bin) /* first bin file path (relative to the output folder)*/ INPUT (..\bin_files\my_bin2.bin) /* second bin file path (relative to the output folder)*/ OUTPUT_FORMAT(default) /* restore the out file format */ /* Define output sections */ SECTIONS { ... ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Finally, in the SECTIONS block of .ld file specify where to place the binary files (in the example it is placed at the end of .text section - see the line 37,38). /* Define output sections */ SECTIONS { /* The startup code goes first into internal flash */ .interrupts : { __VECTOR_TABLE = .; __interrupts_start__ = .; . = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */ __interrupts_end__ = .; . = ALIGN(4); } > m_interrupts .flash_config : { . = ALIGN(4); KEEP(*(.FlashConfig)) /* Flash Configuration Field (FCF) */ . = ALIGN(4); }> m_flash_config /* The program code and other data goes into internal flash */ .text : { . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ *(.glue_7) /* glue arm to thumb code */ *(.glue_7t) /* glue thumb to arm code */ *(.eh_frame) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); ..\bin_files\my_bin.bin /* First binary file */ ..\bin_files\my_bin2.bin /* Second binary file */ } > m_text ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ After successful compilation and link let's check map and s-record file (HOWTO: Generate S-Record/Intel HEX/Binary file ) to confirm the binary files have been linked correctly: .glue_7t 0x0000080c 0x0 linker stubs *(.eh_frame) *(.init) *(.fini) 0x0000080c . = ALIGN (0x4) ..\bin_files\my_bin.bin() .data 0x0000080c 0xa ..\bin_files\my_bin.bin 0x0000080c _binary____bin_files_my_bin_bin_start 0x00000816 _binary____bin_files_my_bin_bin_end ..\bin_files\my_bin2.bin() .data 0x00000816 0xa ..\bin_files\my_bin2.bin 0x00000816 _binary____bin_files_my_bin2_bin_start 0x00000820 _binary____bin_files_my_bin2_bin_end .vfp11_veneer 0x00000820 0x0 .vfp11_veneer 0x00000820 0x0 linker stubs‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ If you need a reference to the binary file block start/end address in your code you can use the linker symbols generated automatically or you can define your own symbols in the linker script. /* declare symbols from linker script file */ extern unsigned int _binary____bin_files_my_bin_bin_start; extern unsigned int _binary____bin_files_my_bin_bin_end; int main(void) { #define COUNTER_LIMIT 100 unsigned int counter = 0; unsigned int * bin_start_ptr; unsigned int * bin_end_ptr; bin_start_ptr = &_binary____bin_files_my_bin_bin_start; bin_end_ptr = &_binary____bin_files_my_bin_bin_end; for(;;) { counter++; counter = *(bin_start_ptr); /*loads 0x4141_4141 into counter*/ if(counter > COUNTER_LIMIT) { counter = 0; } } return 0; }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Note: if it is intended to place the binary file at specific absolute address (e.g. if binary file that represent bootloader) you have to create a separate custom MEMORY and SECTION block in .ld file. /* Specify the memory areas */ MEMORY { /* Flash */ m_bootloader (RX) : ORIGIN = 0x001000, LENGTH = 0x00010000 /* section for bootloadeer*/ m_text (RX) : ORIGIN = 0x00011000, LENGTH = 0x0040000 /*section for application code*/ ... } TARGET(binary) /* specify the file format of binary file */ INPUT (..\bin_files\my_booloader.bin) /* bootloader bin file path (relative to the output folder)*/ OUTPUT_FORMAT(default) /* restore the out file format */ /* Define output sections */ SECTIONS { /* place the bootloader binary into 0x0..0x10000 */ .bootloader : { ..\binary_files\my_bootloader.bin /* place the binary file here */ } > m_bootloader ... ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Enjoy linking binaries in S32 Design Studio!
記事全体を表示
There are three methods to run the configuration tool; from S32DS, from Terminal and JTAG, and from command line. S32DS Method 1) Make sure EVB is powered and connected to PC via PEMicro (Universal Multilink) or Lauterbach 2) Launch S32DS for Vision 3) File -> New -> S32V DDR Configuration Project 4) Enter a name for the project, for example 'DDR_Config_test'. Click Next 5) Expand 'S32V' and select 'S32V_234' 6) Click Finish to generate the project with default settings OR if you wish, to view or adjust more project settings, click Next. For this demonstration, we click Next. a. Select which DDR controller to which the settings will be applied. For this demonstration, we leave it at default (1st DDR Controller) b. There is an option to import settings from a file c. Board setting allows you to select from a list of predefined configurations, one for each of the NXP S32V234 evaluation boards i. S32V234_EVB is for LPDDR2 (SCH28899 and SCH28292(old board)) ii. X_TR_DVAL_625 is for DDR3 (SCH28662(old board)) iii. S32V234_NXP_EVB is for SCH29288 (S32V234-EVB2) iv. Custom allows for more options to be selected. See user manual for more detail d. For this demonstration, we select S32V234_EVB e. Click Finish 7) It will take a couple minutes to generate the project. You will get a prompt to pen the S32V DDR Configuration perspective. Click Yes. 😎 Now the project is generated and you can see it listed in the Project Explorer 9) Notice the Components and Component Inspector views of the S32V DDR Configuration perspective. 10) Select the component 'MMDC_0:Init_MMDC from the Components view 11) In the Component Inspector window you can see all of the configuration settings. You can modify the settings here. Changes made to some of the high-level settings may also cause changes to some of the low-level settings. There are some consistency checks that are run automatically after settings are changed which will trigger an error message in the case of an invalid configuration. a. For an example of high-level settings affecting low-level settings, try changing the 'Memory type' from LPDDR2 to DDR3. You can see the Burst Length, Column Address Width, and Row Address Width have changed. b. For an example of a consistency check on an invalid configuration, try changing the CAS Read Latency value (MDCFG0) from 8 to 12 (valid range as displayed with mouse hover tooltip shows 3-11), you will see the error appear. Change back to 8 and error is gone. 12) Open Configuration Registers view. Window -> Show View -> Other -> Processor Expert -> Configuration Registers. This shows how the settings will appear in the memory map. As you change the settings, the values will update here and the affected rows will be highlighted. Try it by changing Column Address Width in MDCTL of the Component Selector window. Likewise, you can try changing the value manually in the Configuration Registers view and see the setting in the Component Selector window update as well. *Hint: enter the name of the view in the search bar to find it quicker 13) Once all changes to the settings are complete, code can be generated. Press the 'Generate Processor Expert Code' button in the Components view. The generated .c and .h file will appear in the 'Generated_Code' folder of the Configuration project. These can be copied into your application project. OR 14) Back in the Component Inspector view, there are tabs for Import and Export settings. The Import settings tab will allow you to import existing settings files, as was also shown in the new project wizard. From the Export settings tab, you can generate a settings file for storage or sharing. The settings files for MMDC_0 and MMDC_1 for each of the supported NXP EVBs are included and can be located in 'C:\NXP\S32DS_Vision_v2.0\eclipse\ProcessorExpert\Optimization\resources\S32V\Boards' and then select the folder for the specific board. The CodeWarrior Register Text format is recommended for these files. 15) Now select the 'Validation' tab (some views, such as Configuration Registers, can be minimized for better view). Here we can execute a validation of the configuration settings we've made. Now is a good time to double check the hardware connections. 16) Select the connection method (either PEMicro or Lauterbach, depending on your setup). We will use System: S32V234; PEMICRO 17) Press 'Connect to Target' 18) Check a box for one of the scenarios. For example, select 'Read Delay Calibration' 19) Select the 'Choose Tests' tab 20) You can select tests from a list. To see the script behind the test, simply double-click on the name. For faster operation, ELF file versions are also provided. 21) Select the tests you wish to execute and press 'Start Validation'. For example select 'Write-Read-Compare-Elf', 'Walking Ones Elf', and 'Walking Zeros Elf'. 22) These tests will try different values and to determine which will work and which will not. After the test is finished, the best values are chosen and written back to the project configuration settings. To see the values change, go to the Properties tab and find 'PHY Read delay-lines Configuration' or restore the 'Configuration Registers' view and see the values changed. 23) For each test, you can see the errors which occurred in the 'Summary' tab, Test results section. There is also Updated configuration registers section which shows the register and the new value which was written to it. For more details on the errors, there is a Log tab which displays the log for each test which was run. Finally there is a Scripts tab which shows the script for each test containing the test settings. Each test box is colored to reflect the result of the test. Clicking on different ones causes the display below to change and show the results for that test. 24) The Write Delay Calibration test scenario is very similar to the Read Delay Calibration test scenario, but instead, the Write delay-lines Configuration will be updated. 25) The Operational DDR Tests run the same tests, but no value in the configuration is changed. You can set it to run for many repetitions to test for stability. Terminal window Method (JTAG) This checks what settings are already uploaded in MMDC module 1) Make sure EVB is powered and connected to PC via PEMicro (Universal Multilink) or Lauterbach (to load test application) AND serial communications via USB cable(for terminal access). 2) In S32DS, create a simple project a. File->New->S32DS Application Project b. Enter name 'test' c. Select S32V234 Cortex-A53 d. Next e. Uncheck boxes for cores 2-4 f. Finish 3) Setup debug configuration a. Run->Debug Configurations… b. Select test_A53_1_PNE c. Change C/C++ Application to C:\NXP\S32DS_Vision_v2.0\utils\ddr_stresstool\ddr-test-uboot-jtag-s32v234.elf d. Select Debugger tab e. Click Advanced Options f. Check box for Enable initialization script g. Browse to find C:\NXP\S32DS_Vision_v2.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_3.1.3.201709051622\win32\gdi\P&E\supportFiles_ARM\NXP\S32Vxxx\S32V234M100_DDR.mac h. OK 4) Click Debug. You will see error message indicating the source file could not be found. This is expected. 5) Open terminal (such as PuTTY.exe) and connect a serial line using the USB port you have connected to the EVB, speed set to 115200, 8 data bits, 1 stop bit, and no parity or flow control. 6) Click Resume in S32DS Debugger. 7) In terminal window, you will see the test script has started. 😎 Select the MMDC channel (for example, enter 1 for MMDC1) 9) Select the DDR density (for example, enter 6 for 32MB) 10) Enter 'y' to accept the DDR Calibration 11) Enter 'y' to accept the DDR frequency of 533MHz 12) Wait and watch while the test completes. 13) When the test completes, the results are shown. You will have to manually update your settings from the information displayed. 14) Next you will have the option to run the DDR Stress Test.
記事全体を表示
If your EVB with OpenSDA debugger can't start debug session - you can try to update OpenSDA firmware on your board.  Go to PE Micro web pages - http://www.pemicro.com/opensda/ and get the latest firmware archive.  Extract .SDA file related to your EVB - for example            DEBUG-OPENSDA-E200_Pemicro_v110.SDA for DEVKIT-MPC5748G            MSD-DEBUG-EVB-S32K144_Pemicro_v119.SDA for S32K144EVB  Press and hold SW3 (Reset for S32K144EVB) button and connect OpenSDA connector on EVB to PC. New BOOTLOADER Drive should appear on your PC.  Copy .SDA file in BOOTLOADER drive Reset EVB.   More details you can find in "Updating the OpenSDA Firmware.pdf" file. It is part of downloaded zip file from PE Micro web pages. 
記事全体を表示
The S32 Design Studio for S32 Platform supports the S32R45 device with the S32 Debugger. This document provides the details on how to setup and begin a debugging session on the S32R45 evaluation board.   Preparation Setup the software tools Install S32 Design Studio IDE   Use the Extensions and Updates menu within S32 Design Studio for S32 Platform to add the S32R4xx Development Package.   Setup the hardware Confirm the setup of the S32R45 evaluation board.  Configure the JTAG. The S32R45 evaluation board supports both 10- and 20- pin JTAG connections. The default board configuration is set to 20-pin, change the position of the jumper J59 from 2-3(default)  to 1-2, if you are using the 10 Pin JTAG interface. Both are supported by the S32 Debugger and S32 Debug Probe. Connect the power supply cable Setup the S32 Debug Probe Connect the S32 Debug Probe to the evaluation board via JTAG cable. Refer to the S32 Debug Probe User Manual for installation instructions. Use the JTAG connection as was confirmed in the previous step. Connect the S32 Debug Probe to the host PC via USB OR via Ethernet (via LAN or directly connected, and configured for static IP address) and power supply connected to USB port. Launch S32 Design Studio for S32 Platform Create new or open existing project and check that it successfully builds. If creating a new project, be sure the S32 Debugger is selected in the New Project Wizard.     Procedure Open the Debug Configurations menu, then follow the steps depending on whether an S32 Debugger configuration exists for your project. If the project was created using the New Project Wizard in S32 Design Studio for S32 Platform, and the S32 Debugger was selected as the debugger, then it likely has existing debug configuration(s).       S32 Debugger Configuration(s) Exist If existing S32 Debugger configuration, proceed with probe configuration. Otherwise, skip to the next section. Below is shown the debug configuration which appears for the provided SDK example project 'hello_world_s32r45'. The suffixes 'debug', 'ram', and 's32debugger' refer to how the project was built and the debugger the configuration is for. Select the debug configuration which corresponds to the project, build type debug, and primary core (if a multicore project) Select the Debugger tab Select the Interface (Ethernet/USB) by which the S32 Debug Probe is connected. If connected via USB and this option is selected for interface, then the COM port will be detected automatically (in the rare event where 2 or more S32 Debug Probes are connected via USB to the host PC, then it may be necessary to select which COM port is correct for the probe which is connected to the EVB) If connected via Ethernet, enter the IP address of the probe. See the S32 Debug Probe User Manual for ways to determine the IP address.   S32 Debugger Configuration(s) Do Not Exist There might be no existing debug configuration if the project is being ported from another IDE or was created to use another debugger. Select the S32 Debugger heading and click New Launch configuration (or double click on the S32 Debugger heading, or right click on the S32 Debugger heading and select New from the context menu) A new debug configuration appears with the name set to the name of the active project in the Project Explorer window(this can be set by opening a file from the project or selecting an already opened file from the project in the editor), and the build type which was used to build it. If this is not matching your intended project then it can either be modified to match or deleted and recreated after the active project has been changed to the desired project. Adjust the name of the project as desired. From the Main tab, check that the Project field is set to the correct project name, as listed in the Project Explorer, and that the C/C++ Application is set to the ELF file which was built. The name of the project can be customized, but '_' must be used instead of spaces. If the Project field is not set or incorrect, click Browse... and then select the correct project name from the list. If more than one project is open in the workspace, then each will be listed. This shows how, regardless of which project is active in the C/C++ perspective, any available workspace project could be associated. This can be useful when reusing a debug configuration from one project in another. If the C/C++ Application is not set or incorrect, click Search Project... and then select the correct binary file (will only work if Project field is correct and project was successfully built). Switch to the Debugger tab, Click 'Select device and core' and then select the correct core from the list. In this case, the M7_0 core is correct. If this is not the primary core, then uncheck the box next to 'Initial core'. This is done only for multi-core projects for the non-boot cores. This causes the scripts to skip the initialization of the core as the boot core will launch the other cores so additional initialization will not be required. Select the Interface (Ethernet/USB) by which the S32 Debug Probe is connected. If connected via USB and this option is selected for interface, then the COM port will be detected automatically (in the rare event where 2 or more S32 Debug Probes are connected to the host PC, then it may be necessary to select which COM port is correct for the probe which is connected to the EVB) If connected via Ethernet, enter the IP address of the probe. See the S32 Debug Probe User Manual for ways to determine the IP address. Click Apply Click Debug. This will launch the S32 Debugger. When the debugger has been successfully started, the Debug perspective is opened and the application is executed until a breakpoint is reached on the first line in main().  
記事全体を表示
Hello, the new release of S32DS for ARM v1.3 is available now in the download section of S32DS web page: http://www.nxp.com/s32ds   The Activation code is required to install the product. The activation code is different to previous versions (v1.1/1.2). You should get the appropriate Activation Code by a notification email which is send automatically when you proceed to the downloading: What is new?  New device supported: S32K144 v2.0 ARM64: Linaro GCC 4.9-2015.05 Fully integrated S32 SDK for S32K144 EAR release v0.8.2. including PinMuxing and Processor Expert configuration. FreeMASTER Serial Communication driver for S32K144 family  Highly Assembly Optimized version of Automotive Math and Motor Control Libraries for KEA and S32K devices v1.1.6  IAR debugger support by new project wizard Updated SEGGER and P&E debug plugins to the latest and greatest versions Reset functionality added with P&E debugger for single core projects (KEA, S32K devices) and A5 core for MAC57D54H Flash configuration supported for S32V234 Header files for KEA and MAC57D54H updated Advanced FreeRTOS kernel aware debug support Bug fixes Project Explorer updated to correctly show active build configuration resources     Note: The plugins to support GreenHills, IAR, iSystem, Lauterbach are not included and have to be installed from corresponding update site or installation.
記事全体を表示
This document describes two ways how to add a static library file (*.a) into your S32 Design Studio GCC project. These methods differs from each other in sense how a library update is reflected into project build process. Adding a static library WITHOUT dependency to executable (elf) file This approach assumes a library does not change. An update of the library does not trigger project rebuild process. If the library changes the project needs to be manually cleaned (assuming no other source file has changed) and next build links the updated library. The path to the library and the library name shall be entered into Project Properties -> C/C++ Build -> Settings -> Standard S32DS C Linker -> Libraries Please note that GCC adds prefix "lib" and the extension ".a"  to the library name entered into the above dialog by default. GCC linker will search for the library file named: "libtestlib.a" in the folder "c:\my_libs" In the example above. In case a library cannot be found the linker error occurs e.g. one depicted below. The linker library file name option "-ltestlib.a" is expanded into file name "libtestlib.a.a" which does not exist. 10:28:53 **** Incremental Build of configuration Debug for project S32K144_Project_with_library **** make -j8 all Building target: S32K144_Project_with_library.elf Executing target #5 S32K144_Project_with_library.elf Invoking: Standard S32DS C Linker arm-none-eabi-gcc -o "S32K144_Project_with_library.elf" "@S32K144_Project_with_library.args" c:/nxp/s32ds_arm_v2.0/cross_tools/gcc-arm-none-eabi-4_9/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: cannot find -ltestlib.a collect2.exe: error: ld returned 1 exit status make: *** [makefile:49: S32K144_Project_with_library.elf] Error 1 10:28:54 Build Finished (took 1s.332ms)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ For a custom library name add colon character ":" at the beginning of the library name to disable the default prefix/extension expansion. GCC linker now searches for file name "testlib.lib" in the example below:   Adding a static library WITH dependency to executable (elf) file If a static library has changed - "touched"  it is sometimes desired to trigger project rebuild. In this scenario the library shall be added into a different project dialog: Project Properties -> C/C++ Build -> Settings -> Standard S32DS C Linker -> Miscellaneous -> Other objects The items from "Other objects" list is propagated into USER_OBJS makefile variable which is prerequisite for auto-generated makefile rule that build the target (elf): Enjoy linking static libraries in S32DS!
記事全体を表示
Create Project From Example S32DS for ARM: Create and Debug a New Project from Example Code in S32 DS IDE for ARM based MCUs. Learn how to create a new project in S32 Design Studio IDE and load an example code to blink an LED using the S32K144EVB and build and debug the project. Create New Project S32DS for ARM: Create and Debug a New Project in S32 DS IDE for ARM based MCUs Learn how to create a new project in S32 Design Studio IDE using Processor Expert and SDK to blink an LED using the S32K144EVB and build and debug the project.
記事全体を表示
1) Prepare the evaluation board hardware You can use the S32 Debug Probe to download code to target Connect S32 Debug Probe to S32V234 EVB using JTAG connector Connect S32 Debug Probe to PC via USB cable OR ethernet (if connected via ethernet, then USB power cable must also be connected) Connect the S32V234 EVB to PC via ethernet (typically via LAN) Connect power cable to evaluation board and switch on the power     2) Build the project using the TEST_A53 build option. 3) Start debug on A53 core. Project is now built, ELF file is read to be loaded to EVB for execution. 4) Before a debug session can be started, we must complete HOWTO: Setup A Remote Linux Connection in S32DS for Vision. 5) Select the debug drop-down menu and click Debug Configurations     6) Make sure the Debug_Remote_Linux debug configuration is selected and the connection setup in step 4 is selected (points to the IP address of your EVB). Click Debug     7) The first time you connect to a new IP address (i.e. the first time you debug after booting the board), you will receive a warning message, Click Yes and proceed.     The executable file is copied to Linux file system and gdbserver starts. You may get an error message on the first try, this is normal. Just try it again and it will work. 😎 Once the Linux GDB has started on A53 core and the initial breakpoint is reached in main(), we need to set a breakpoint at the function apu_hal_Enable().    This breakpoint has already been created for you, you just need to enable it! Locate the breakpoint in the Breakpoints view. Due to some known issues with Eclipse CDT, it is necessary to enable->disable->enable the breakpoint so it will work properly. The issue only affects this breakpoint, due to the way it is provided, and will not affect breakpoints which you set. 9) Press Resume twice, so that the breakpoint which was set at apu_hal_enable() is reached for the 2nd time. 10) Open Debug Configurations. You will see a debug configuration within the 'S32 Debugger' group (FAST9COLOR as shown below). This is the debug configuration we will use, however, it will require some setup.     11) You should notice the error message at the top of the window, just below the title and a red 'X' on the Debugger tab. Click on the Debugger tab to select it. We must setup the Debug Probe Connection before we can proceed. There are two options: Ethernet USB   If connecting the Probe via Ethernet, please refer to the Quick Start Guide or S32 Debug Probe User Guide provided with the S32 Debug Probe for instructions on how to connect it and determine the Hostname or IP address.     If connecting the Probe via USB, then the COM port will appear in the Port selection setting. If you have more than one S32 Debug Probe connected, you will need to determine which COM port is the correct one, otherwise, only the COM port for your S32 Debug Probe will appear.       12) Click Apply then Debug. It may take a few moments for the APEX core debug to launch.   13) It may take a moment or two before the APEX2 debug thread launch is complete, see the Thread listed within the <kernel_name>[S32 Debugger] in the Debug window. Also note, a new breakpoint is listed in the Breakpoints view. This breakpoint is set for you at the start of the APEX2 graph function. 14) The debugger context is still on the A53 thread. Press RESUME and then select the APEX2 thread to see that it has stopped on the graph function break point. Now you can step through the graph. 15) To step through a kernel, locate the call to the kernel function in the graph function and set a break point on the line. 16) Press RESUME to advance the program counter to the new break point 17) Press STEP INTO to advance the program counter into the kernel. It may take several steps as the optimizations performed by the compiler produce some synchronization inconsistencies. 18) You may need to help the IDE to locate the source files. Now you can see the kernel wrapper function... and the kernel! 19) Step through, monitor variables and registers and set breakpoints.
記事全体を表示
The Vision SDK root is contributed to the Design Studio as a dynamic path variable “S32DS_VSDK_DIR”. Several Design Studio services use this variable to access the resources inside the Vision SDK. By default, this variable points to “${eclipse_home}../S32DS/s32v234_sdk”, i.e. to the Vision SDK shipment bundled with Design Studio. Technically you can change this variable to point to another instance of Vision SDK using the following steps: 1. Go to the main menu "Window -> Preferences" 2. Filter the preference dialog with "sub" keyword or just navigate to "Run/Debug -> String Substitution node. 3. Edit Variable "S32DS_VSDK_DIR" to assign another value to be substituted as Vision SDK root 4. Press OK when changes are complete.
記事全体を表示
 Example shows how to configure PE Micro debugger to be able use FlexNVM as  backup for EEEPROM - Emulated EEPROM  (Backup size 64kB, EEEPROM size 4kB) and preserve the backup  memory. Configuration can be found in debugger Advanced Options.  In the example is data structure located in FlexRAM section by linker file.  FlexRAM data change cause flash store on background. Prior each data  change you shall check if previous flash operation is done.  In the example are two ways of FlexRAM (configured as an EEEPROM) usage:  Direct access (up to 4 bytes can be stored once)  IO Functions  By direct access you can store only data up to 4 bytes. There is no way how  to use memory move functions like memcpy/strcpy. In this case you need to  use functions for store arrays or 4 bytes+ types like double.  Part of example is LPIT timer storing runtime counter (seconds) each minute.  PE Micro configuration:  Enable partitioning for the device - code: 0x0204  Preserve memory - range: 10000000-1000FFFF
記事全体を表示
S32DS for Vision contains many example projects from which you can learn how S32DS for Vision can be used with the help of the Vision SDK to develop vision applications. The example projects contain generated and hand-written code, which utilize the Vision SDK to demonstrate a workflow using S32DS for Vision. In this document, the procedure for creating a project from one of the provided APEX2 examples through to execution on the EVB is detailed. 1) Launch S32DS for Vision 2) Select 'New S32DS Project from example' 3) Select apex2_fast9 project 4) Click Finish 5) Change to C/C++ perspective, click on 'Switch to C/C++ Development' 6) Select apex2_fast9: A53 in the Project Explorer panel. Build the project using build config 'TEST_A53'. 7) Start a debug session using method as described in HOWTO: Create A53 Linux Project in S32DS for Vision, beginning at step 9. 😎 Click Resume  Should see something similar to what is pictured below There are green diamonds at the corners in the image as identified by the fast9 corner detection algorithm
記事全体を表示
      Product Release Announcement Automotive Microcontrollers and Processors S32 Design Studio for ARM® 2018.R1  Update 9          What is new? S32K1xx SDK RTM 3.0.0 supporting S32K116, S32K118, S32K142, S32K144, S32K146, and S32K148  (S32K1xx SDK release notes) AMMCLIB version 1.1.15  (AMMCLIB S32K14x release notes) Segger J-Link drivers v6.42a (J-Link release notes) This is a cumulative update - it includes all the content of previous updates (Update 1, Update 2, Update 3, Update 4, Update 5, Update 6, Update 7, Update 8) Installation instructions The update is available for online (via Eclipse Updater) or offline installation (direct download link)  installation:  go to menu "Help" -> "Install New Software..." dialog  select predefined update site "S32DesignStudio - http://www.nxp.com/lgfiles/updates/Eclipse/S32DS_ARM_2018.R1/updatesite" select all available items and click "Next" button   offline installation:   go to S32 Design Studio for ARM product page -> Downloads section or use direct link to download the update archive zip file Start S32DS and go to "Help" -> "Install New Software..." Add a new "Archive" repository and browse to select the downloaded update archive .zip file you downloaded in the previous step Select all available items and click "Next" button.   This will starts the update installation process.
記事全体を表示
The Image Vector Table (IVT) image is a set of pointers to other images which are required by the BootROM. It typically contains the following images, though not all are required to create a valid IVT image: DCD Self-Test DCD HSE Application Bootloader The IVT Tool enables configuration and generation of the IVT image as specified in the BootROM reference manual. Prerequisites Before using the IVT Tool, it will be useful to have already generated the binary image from your application project, it will be an input to the IVT. It may also be necessary to include a DCD image, for example, to initialize the SRAM. For application bootloader image, follow the steps in HOWTO: Generate S-Record/Intel HEX/Binary file, selecting 'Raw binary' option. For DCD image, follow the steps in HOWTO: Use DCD Tool To Create A Device Configuration Data Image . Procedure With desired project open in project explorer (C/C++ perspective), switch to IVT perspective. Click on 'Open IVT'. In the Boot Configuration section, check that the correct Boot Target is selected. For the demonstration here, M7_0 is the correct selection. Check the 'Interface selection' section. If your intended boot device is SD, MMC or eMMC, then change the setting from QuadSPI Serial Flash. If your intended boot device is QuadSPI AND you do not have a QuadSPI parameter file to specify, then uncheck the box for 'Configure QuadSPI parameters'. QuadSPI parameters change some flash registers' settings away from the default setting and are generally required for larger memory sizes (for ex. applications over 1 MB in size, for some supported devices). From the Image Table section, depending on your configuration, turn off all unused images. For the demonstration here, the following will be changed to Reserved: Self-Test DCD, Self-Test DCD (backup), DCD (backup), Application bootloader (backup). The following images will remain enabled: DCD, Application bootloader. In DCD section of the Image Table, click 'Browse File' and select the DCD binary file. Some of the fields may become red shaded after the file is loaded. This is OK as it is showing the memory layout is no longer aligned. This will be resolved in a later step.  Scroll down to the Application bootloader section, again use  'Browse File' and select the application binary. When the application boot image is loaded, the tool processes the file to check if it contains the header for the application bootloader image. If the header is not found, it means that the file is only the raw code (the bin generated by S32 Design Studio) and it will be necessary to provide the values for RAM start & entry addresses (code length is automatically calculated), as noted with the expanded view and red shading. To set the RAM start pointer and entry pointer addresses, from to the C/C++ perspective: From Project Explorer on the C/C++ perspective, open the linker file (in this case: hello_world\Project_Settings\Linker_Files\<device_name>_common_ram.ld) and locate the RAM start address and enter it in both the RAM start pointer AND RAM entry pointer fields in the IVT Tool. Use copy and paste to add the values to the Application Boot Image settings. Since the application binary file which was loaded for this example is just a raw binary file, it is necessary to generate the full application bootloader image. The Export Image function takes the values entered for the RAM start & entry pointers and the automatically calculated Code length, then generates the Application bootloader header. This header is added to the raw binary file producing a new image, the full application bootloader image file. Within the Application bootloader section, click 'Export Image' and enter a meaningful name for the image file. In addition to being a necessary source component of the IVT image, this file can more easily be shared or re-used to as an input to other IVT images. After the file has been generated, you will notice that the address settings section has collapsed. This is because it has replaced the file you originally selected with the newly generated one and the tool has recognized that the file contains the required header information. Before the Blob image can be generated, all of the images must be properly aligned within the memory map. You will likely also see error messages regarding segment overlaps, but even without this error it is good to check that the alignment is correct. In the Automatic Align section, if you have a dedicated area of the memory you can specify the start address and then click 'Align'. If you don't have a dedicated area, then use the default automatic align start address of 0x0 (QSPI), or 0x1000 (SD, MMC, eMMC). Click 'Align' to automatically align the images to this address. Upon successful completion of the alignment, all of the red shading will be removed. Click 'Export Blob Image' to generate the blob image file. This is what will be flashed to the target. Now that the Blob Image is generated, the 'Flash Image' button could be used to program the image to the target over serial connection, or use the S32 Flash Tool.
記事全体を表示
Before you can start debugging an S32DS for Vision project for S32V234 Cortex-A53 APEX2/ISP Linux target on the S32V234-EVB, we must first setup the hardware connections and start the Linux BSP OS. 1) Connect (1) S32V234 USB Micro B port to (2) USB A port on your PC. This allow you to connect to the Linux BSP OS via a terminal program to issue commands and to obtain the IP address. 2) Insert microSDHC card (with U-boot, Linux kernel, devicetree, and root file system loaded*) into (3) the S32V234 SD card slot   3) Connect (1) Ethernet port on S32V234 daughter card to (2) LAN**. This will allow S32DS to communicate with the Linux BSP OS for flashing and GDB debugging.   4) Connect the power supply to (3) S234V234 EVB 5) Turn on the (4) power switch, this will start the Linux BSP OS *Instructions for preparing the SD card are provided in the VisionSDK document: ..\S32DS_Vision_v2.0\S234DS\s234v234_sdk\docs\vsdk\S32V234-EVB_SetupGuide.pdf or refer to https://community.nxp.com/docs/DOC-335023  **Ensure PC is connected to LAN as well (either hardwired or wireless)
記事全体を表示
Sometimes you would like to share sources between projects and - even better - between platforms. Let's say that we are developing software with the very same functionality for S32K144 and MPC5744P. In this case, we can identify platform independent functions - generic, platform specific functions - not related to MCU itself, but related to the way some peripheral works (for example different ADC result range) - and MCU dependent functions like clock init. In attachment is a very simple SDK which can be shared with S32K144 and MPC5744P (each in different S32DS editions).  Unzip my_sdk.zip archive (for example C:\NXP folder). You can import example projects, but instead let's start from the beginning. Create a new S32DS Application project and choose MCU: You can use default project configurations and click through to finish: Right click on project name -> Properties and select SDKs -> Add Complete the Name, Version and Description fields in New SDK dialog and click on Change button next to Location field. In Change SDK Location dialog, leave Define new variable setting selected, click Browse and find the my_sdk path: Now we can select files (sources, headers...) from selected SDK, you can select all available files. If you select a folder, then all files in that folder will be selected as well. Don't forget to select header files too: If you choose Copy - the files will be copied into project folder and you can do local changes. Without this option (default) - changes will be shared between all projects depended on this particular SDK. The ability to individually select the files to be included from the SDK as well as to copy into the project folder, provides much flexibility to customize SDK usage in your projects. Click on OK, then Attach/Detach... to attach this SDK into your project:  If you like to use your SDK for newly created projects (as an option in SDK select list) - click on Make global button: Now you can see changes in your project: As well, the SDK can be viewed in SDK Explorer (Window -> Show View -> Other...), where functions and macros are available for drag and drop functionality into your code: Platform specific code is filtered by preprocessor-defined macro. So - let's define if we are working with S32K144 or MPC5744P. Right click on project name -> Properties -> C/C++ Build -> Settings -> <Standard S32DS C Compiler OR name of your compiler> -> Preprocessor: We are done - now we can use SDK functions - S32K144:  and MPC5744P (enabling interrupts is default part of empty project for MPC5744P - that's only difference):
記事全体を表示
The Vision SDK root is contributed to the Design Studio as a dynamic path variable “S32DS_VSDK_DIR”. Several Design Studio services use this variable to access the resources inside the Vision SDK. By default, this variable points to “${eclipse_home}../S32DS/s32v234_sdk”, i.e. to the Vision SDK shipment bundled with Design Studio. Technically you can change this variable to point to another instance of Vision SDK using the following steps: 1. Go to the main menu "Window -> Preferences" 2. Filter the preference dialog with "sub" keyword or just navigate to "Run/Debug -> String Substitution node. 3. Edit Variable "S32DS_VSDK_DIR" to assign another value to be substituted as Vision SDK root
記事全体を表示
By defalut is SDK code in examples linked into project. Unfortunately there is no GUI config option, but this settings can be changed in ProcessorExpert.pe file - located in project's root folder.  First of all - backup your project. Locate SDK folder in project and delete all content. When done - close your project.  Open ProcessorExpert.pe file located in project's root folder in any text editor (it is XML file), locate <ProjectStaticFilesGenerationMode> tag and change value from LINKED to STANDALONE: Save changes and open again your project in S32DS. Generate processor expert code:  Now - all SDK code is copied into workspace:  There are also linked files in Project_Settings. Easiest way is just create an empty non SDK project and copy linker script and startup assembly to your project:  Make sure, that Linker uses your copied linker script file: 
記事全体を表示
Eclipse caches some settings within the workspace directory. After installing a new version of S32DS, some settings in old workspaces may not match the requirement of the new version. The result is often errors reported on new as well as previously existing projects located in an existing workspace which you selected when launching S32DS. The best way to resolve this is to create a new workspace and then import your projects. This will ensure the workspace is created using all the correct settings for the version you have installed.
記事全体を表示
      Product Release Announcement Automotive Microcontrollers and Processors S32 Design Studio for ARM® 2018.R1  Update 2          What is new? This update adds bare-board device support for S32K118 and some minor fixes. This is a cumulative update - it includes all the content of previous Update 1 Installation instructions The update is available for online (via Eclipse Updater) or offline installation (direct download link) online installation:  go to menu "Help" -> "Install New Software..." dialog  select predefined update site "S32DesignStudio - http://www.nxp.com/lgfiles/updates/Eclipse/S32DS_ARM_2018.R1/updatesite" select all available items and click "Next" button   offline installation:   go to S32 Design Studio for ARM product page -> Downloads section or use direct link to download the update archive zip file Start S32DS and go to "Help" -> "Install New Software..." Add a new "Archive" repository and browse to select the downloaded update archive .zip file you downloaded in the previous step Select all available items and click "Next" button.   This will starts the update installation process.
記事全体を表示
Example show one of the methods how to create and use shared memory with symbols between cores. In source code shared_mem.c are variables which can be seen by each core. This file is built once (during s32r274_shmemZ7_0 project compilation) and is linked to other core's elf file by linker into shared_mem section (see linker file for each core) starting on the very same address for each core. Hardware semaphores are used for access shared memory. Lock/Unlock functions are implemented in the shared_func.c (build once during s32r274_shmemZ7_0 project compilation too) file and the object is linked into .text section. Each core has it's own instance of shared functions. There is counter in the shared memory for each core increased each time when shared memory can be accessed by particular core.
記事全体を表示