LabVIEW Embedded

cancel
Showing results for 
Search instead for 
Did you mean: 

New ARM project can't find Elemental I/O

I made a new project using the project wizzard with a generic STM32 ARM target but don't get the option under New in the target menu to add any Elemental I/O.  I have older projects where this was working.  Any ideas what has broken?
Message 1 of 10
(7,502 Views)

Sculptor,

 

Try this:

1) Right-click on your "Other" target.

2) Select "Select Elemental I/O".

3) Choose which profile you want.

4) Now right-click on your "Other" target » New » Elemental I/O.

 

This process was changed just slightly in later versions of the module.  If the above steps don't work (or you can't follow the steps altogether), answer these questions for me if you could:

1) What version of LabVIEW are you using?

2) What version of the ARM module are you using?  (1.0, 1.1, 2009, etc.)

3) What ARM target did you add to the project?  ("Other", etc.)

 

Kevin S.

Applications Engineer

National Instruments

0 Kudos
Message 2 of 10
(7,483 Views)

Kevin,

 

I tried.  There was no "select Elemental I/O" item to select.

 

I am using Labview 2009, version 9.0f1.  I do not know how to get to the embedded ARM version, but Keil is at 3.70.  The ARM target is an "Other" STM32F103x.

 

One old project can still select Elemental I/O.  

 

I tried something else, I  added a new target, in the project window, Project:-> New-> targets and devices... And selected another copy of the Embedded-> RealView-> Other, Processor type-> STM32, peripheral set-> STM32F013x.  It made a copy, "STM32F013x 1" that has Elemental I/O, but it is a small set, just a few GPIO's  on port F, the analog and four PWMs.  What's interesting, at least to me, is that now Elemental I/O shows up for the first "STM32F103x" target, but the available resource list is empty," --- No resources Available".  This doesn't really fix my issue, but the resource list, if I am remembering correctly, is the one from 8.6, not from when I updated to 2009 last September and received the files from Jamie that let me use Keil 3.7.  All these files seem to be intact.

 

 

Perhaps I should begin another thread, but this may also be related.  I started to work on another part of the code and got stopped by not being able to create ao select an interrupt vi in the build specification page.  The necessary icon is disabled.

 

 

0 Kudos
Message 3 of 10
(7,472 Views)

1) Did you install software after having successfully used LabVIEW for ARM in the past?  (If so, you need to repair the LabVIEW for ARM module.)
2) Are you able to successfully compile, link, download, and run your older code now?  (If so, what's the difference between your new code and old code?  If not, what's changed in your development environment?)
3) It sounds like you ported the LabVIEW for ARM module to a tier 2 device - the STM32F103x device.  (...or in other words, you developed code in LabVIEW for ARM such that you implemented support for STM32F103x devices)  Did you do this "porting" in the LabVIEW 2009 ARM module or a previous version?
4) Does the "No Resources Available" message appear for you the same way it does in the picture attached to the first post in this thread? (lost elemental I/O)

 

Kevin S.

Applications Engineer

National Instruments

0 Kudos
Message 4 of 10
(7,458 Views)

Kevin,

 

I have not updated the Keil tools and I do not recall installing another NI update recently.  I am not confident that I have what I need to do a clean install or repair, I have had to add and replace files sent to me under support.

 

The old code does run, as simple as it was, but I need to move from the eval board hardware to my custom hardware.  I had to change the target device and memory map in the uVision project.  The old code does run with these changes, but the hardware does not really support it.

 

I tried to port the ARM module using the porting guide discussed elsewhere, but the STM32 is a cortex and I ran into trouble at the agent step.  Under cortex, the real time agent is not used, but this is not relevant with what I am doing now.  The first port was under 8.6 and the old style Keil task declarations.  Jamie from NI support, provided a set of files that included the new Keil headers, libraries and the generic STM32 directories that worked with 2009 and Keil 3.7.  I am keeping my project files under the LabVIEW Data folder rather than in the <LabVIEW> folder, but tried making a project there also with the same isuue.

 

Yes, the No Resources Available looks like that.  I removed the additional  target from the project and again there is no Elemental I/O optin for the original target.  

0 Kudos
Message 5 of 10
(7,438 Views)

Sculptor,

 

1) If you do need/want to reinstall your LabVIEW for ARM 2009 software, you always have the option to download the evaluation from online and then activating both the module and Keil with your serial numbers.  You can do that here.

 

2) I can't comment too much on the porting to the STM32 class of microcontrollers.  I seem to gather from what you've said that you were previously downloading code successfully to an eval board (for STM32 chips-?) and are now trying to download code to custom hardware (presumably where you've integrated the STM32 chip into a custom printed circuit board).  Is this correct?

 

3) You porting to your STM32 target with LabVIEW for ARM 8.6.1, and it appears that you're now opening up that old code in LabVIEW for ARM 2009.  Is this correct?  (If so, keep in mind that LabVIEW for ARM 2009 doesn't know about the target you port to in 8.6.1, but it seems like you've already taken this into account....with the new files that worked with 2009.)

 

4) I'm trying to understand exactly where you are.  I gather that you ported to the STM32 series in LabVIEW for ARM 8.6.1 successfully.  You then tried to port to the STM32 series in LabVIEW for ARM 2009.  Was this successful?  (Is this the underlying issue?)

 

Kevin S.

Applications Engineer

National Instruments

0 Kudos
Message 6 of 10
(7,421 Views)

Kevin,

 

Thank you, I will keep the reinstall option in reserve.  I also am supporting a few cRIO boxes that I would rather not have to update at this time.

 

Yes, I have downloaded and ran code on a Keil MCBSTM32 board with a STM32F103RB chip.  I have custom hardware with the STM32F103RE that is running code while I am replying, under LabVIEW 2009. At this time I am just trying to verify that the hardware is working.  This is very simple demonstration code that is just using Inline c nodes to configure the gpio ports and bit bang on io lines. 

 

I was able to use Elemental I/O in 8.6 and at one time with 2009, but now if I make a new project using the project wizard, I do not see the Elemental I/O option on the target menu. 

 

If I open one of the old projects from last fall, the target menu does allow me to select Elemental I/O, but it is not the full selection I see in the eio.xml file under my STM32f103x device. 

 

If I add a new target STM32f103x in the new project it shows up in the project tree under the STM32f103x as "STM32F103x 1" and does have the same Elemental I/O list to choose from as the older project.  With the project in this state, the first STM32F103x will have an Elemental I/O in the target menu, but when selected it tells me there is no resource.  I was hoping that this would be enough information to determine which ini or xml file was miss configured or out of place.  What is the form these folders and files need to be in under a generic device? 

 

What I am trying do right now is have the on chip DAC output a continuous sine wave.  I am about to start by indexing through a table of values in a loop.  It would have been easy to do this with the eio, but will do it using c-nodes.  Once that is working, I want to use the DMA to cycle through the table, but see that I also have to have interrupts working to continue the cycles.  I had no target interrupt directory or interrupt.xml until this morning and have more work to do there before it will become functional, the create interrupt icon in the manage interrupts page of the build specification properties is dim.  After I get that far, I will need to coordinate an ADC to occur before the DAC updates and do some simple processing and buffering for the detection of my signal.  After that, I need to use timers, DMA's and interrupts to do some simple velocity profile driving stepper motors.  I will start new threads as I hit the obstacles on this path.

 

 

0 Kudos
Message 7 of 10
(7,408 Views)

Sculptor,

 

1) Restart LabVIEW (such that the elemental I/O can be reloaded).  I assume that you've done this probably multiple times up until now (probably along with a computer reboot).

2) Delete your first target (where the elemental I/O is not listed), and readd that target.  Based upon my inquiry into this matter, it appears that some configuration file is not being loaded correctly.  Are you able to create a project from scratch and use any elemental I/O at all?

3) As far as identifying the correct changes have been implemented in LabVIEW for ARM 2009, check the following:
a) Does the TgtSupp.ini file reference your "eio" folder which contains the implementation of your EIO?

C:\Program Files\National Instruments\LabVIEW 2009\Targets\Keil\Embedded\RealView\Generic\LPC2378
b) Does your "eio" folder contain all the implementation of your EIO?
c) Does the eio.xml file in the "eio" folder exist?  (Was it created with the EIO wizard?)
d) My "eio" folder for the LPC2378 Tier 1 device is located here.  Is the "eio" folder for your STM32 target located in an equivalent location?

C:\Program Files\National Instruments\LabVIEW 2009\Targets\Keil\Embedded\RealView\Generic\LPC2378\eio

 

Kevin S.

Applications Engineer

National Instruments

Message Edited by Kevin_S on 03-25-2010 02:56 PM
0 Kudos
Message 8 of 10
(7,387 Views)

Kevin,

 

1)  Yes, I have restarted and rebooted several times.  This does not change the symptom.

 

2)  I am leary of deleting the target because I can still make some limited progress without the eio.  I tried to create a few new projects from scratch using the wizard and no elemental io  shows up unless I use the trick I described before.

 

3a)  the TgtSupp.ini file in the <target> folder is small:

 

 [Target]

name = STM32F103x
description = STM32

eiodirectory = eio

 

3b)  I believe it does, at least all the paths that I have checked in the eio.xml are pointing to what look like the right places.

 

3c)  The eio.xml file is actually one more folder down, in <target>/eio/EIO.  I tried copying it into <target>/eio, but this did not fix it.  The folder structure is as I was given in a zip file last fall, I did not use the eio wizard. 

 

3d)  Your LPC2378/eio folder structure is flatter than the one I have with a separate EIO folder in addition to folders for AI, GPIO, PWM,  SPI and TEST.

0 Kudos
Message 9 of 10
(7,366 Views)

Note to the community:

 

The root of this issue existed in the fact that the project was referencing two different locations for the eio.xml file required in order to location the elemental i/o.  (If you open the LabVIEW project file itself up in a text editor, you can see the xml tags and paths used to reference various items.)

 

It's possible that two different variations of a port were used. 

 

Kevin S.

Applications Engineer

National Instruments

0 Kudos
Message 10 of 10
(7,218 Views)