Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   C/C++ (http://www.chiefdelphi.com/forums/forumdisplay.php?f=183)
-   -   No Robot Code!!! (http://www.chiefdelphi.com/forums/showthread.php?t=85070)

masoug 08-04-2010 15:03

No Robot Code!!!
 
Hi,
We are using a Vista machine with WindRiver to program the cRIO. When we install the updates (for WindRiver), the robot complains with "No Robot Code".:ahh: We re-imaged the cRIO with version 20 and it still does not work.:mad: We downloaded the code and rebooted the robot, but it still does not work.

Does anyone else have the same problem?

Any help will be appreciated.

-Masoug

Al Skierkiewicz 08-04-2010 15:19

Re: No Robot Code!!!
 
Masoug,
A team in Minnesota had the same problem last weekend. They claimed it was a Vista machine that was causing the problem but I think it was more the type of machine than the operating system. Have you been using this machine all through the season or is this something new? They switched to an XP machine and were able to download just fine. It had me and the NI rep scratching our heads. If it works use it in good health.

Radical Pi 08-04-2010 15:48

Re: No Robot Code!!!
 
Install NetConsole (from the WPI update site) and post what is says. It could give a bit more insight about what the root problem is

Peter Johnson 09-04-2010 01:30

Re: No Robot Code!!!
 
Generally the cause for sudden "No Robot Code" is a missing symbol. WindRiver is set up to link dynamic executables so it doesn't report missing symbol errors at build time. NetConsole will definitely help you determine whether this is the cause, as any missing symbols will be reported to the console when the cRIO attempts to run UserProgram.out. They will be name mangled (C++'s way of converting "foo::bar::baz(int a, int b, int c)" into a unique name of only upper/lowercase/numbers/underscores) but you should be able to decipher it pretty easily. I've sometimes found a full rebuild fixes it. A particularly common cause is missing symbols in the WPILib camera code.

heydowns 09-04-2010 13:42

Re: No Robot Code!!!
 
You can also "Undeploy", reboot the robot, then load using the Debug method (described in C++ Getting Started guide). When loading this way, any unresolved symbols will be reported to you. In addition, if the program is crashing, the debugger may help you figure out where and/or why.

masoug 09-04-2010 15:51

Re: No Robot Code!!!
 
Hmmm, okay. I guess I will try it. Thanks!!! :)

-Masoug

masoug 21-04-2010 20:22

Re: No Robot Code!!!
 
It still does not work...
The executable is still there, but the DS is not recognizing it and cannot execute the program.
Plus, NetConsole doesn't work either, nothing shows up on the NetConsole client even after changing the "ni-rt.ini" file and rebooting the robot, nothing comes up.
Is there a step we were supposed to do right after competition that involved this?

Is there a way to manually execute the "FRC_UserProgram.out" file?

And now WindRiver cannot connect to the cRIO,
Quote:

Wed Apr 21 17:27:05 2010
Target name is 10.01.14.2
tgtsvr (VxWorks6x_10.01.14.2@VistaProX9): Wed Apr 21 17:27:05 2010
WTX Library version: 4.1.1.22
Tgtsvr core version: 4.1.1.17
Wind River Target Server: Win32 version
Connecting to the target agent ...
... switching to WDB4 mode ... ... succeeded !
Loading plug-in for VxWorks... succeeded.
Checking License... OK
VxWorks plugin version: 4.1.1.11
Attaching elf OMF reader for PPC CPU family... succeeded.

Differences for module "vxWorks" segment's address 0x100000:
Offset Target Value Host Value
0x152 0x9d 0x62
0x153 0xd0 0x5c
0x49d 0x09 0x0c
0x49e 0xaf 0xc8
Stopping dump. Other errors might exist.

Error: The systems running on the target and loaded into the target server memory are different.
Either wrong core file is selected on the host or text section is corrupted on target side.
Error during target server core initialization
Target Server will exit
How does this entire system work?

THANKS!!!

-Masoug

Radical Pi 21-04-2010 20:42

Re: No Robot Code!!!
 
are you sure Wind River is set to look at the right cRIO image?

also, is the "No App" switch set on the cRIO?

masoug 21-04-2010 22:01

Re: No Robot Code!!!
 
Yes, I double checked that WindRiver is downloading the right code. I hope I don't sound too wierd saying this, but what is the no app switch? THANKS!!!-Masoug

Radical Pi 21-04-2010 23:15

Re: No Robot Code!!!
 
It's one of the switches on the cRIO (next to the Serial out, no FPGA, etc). When set, it prevents the user code from running. Often used because many LabVIEW team's code starves the downloader of CPU time. I believe the edge nearest the end of the cRIO being down indicates the off position, but try it both ways to be sure

I didn't mean the .out file that is your user code. If Wind River doesn't have a local copy of the current cRIO image the serial port communications will fail. I don't know the exact instructions of how to point wind river to the right file, but I think they were in last year's control system manual.

Also, are you using serial CAN? If you have the Console Out switch set on it will take up the serial port, causing the CAN plugin to fail and possibly mess up all your other code.

With NetConsole, did you manually type in the IP of the cRIO into the box? I've had trouble getting it to auto-connect and I just type it in every time

byteit101 22-04-2010 15:11

Re: No Robot Code!!!
 
Just to make sure, do you have WPILib update 4.3?

masoug 22-04-2010 16:18

Re: No Robot Code!!!
 
Quote:

Originally Posted by byteit101
Just to make sure, do you have WPILib update 4.3?

Yes, rather I think THAT was the problem to this "No Robot Code" thing...

Would Driver Station updates have anything to do with this?

Quote:

With NetConsole, did you manually type in the IP of the cRIO into the box? I've had trouble getting it to auto-connect and I just type it in every time
For the NetConsole thing, NOTHING came up, auto-connect or not.

I hope this doesn't sound too weird either, but what is "Serial CAN"?

-Masoug

Radical Pi 22-04-2010 17:32

Re: No Robot Code!!!
 
Quote:

Originally Posted by masoug (Post 956833)
Would Driver Station updates have anything to do with this?

Do you have the 2nd update?

Quote:

Originally Posted by masoug (Post 956833)
For the NetConsole thing, NOTHING came up, auto-connect or not.

That means either you didn't install it correctly, or something on the cRIO is crashing it

Quote:

Originally Posted by masoug (Post 956833)
I hope this doesn't sound too weird either, but what is "Serial CAN"?

If you don't know what it is you probably don't have it. It's the version of the CAN motor control network that runs through a black jaguar

If you install the DS software on another computer (just run the updater), does it work?

Did you try the "No App" switch thing?

byteit101 22-04-2010 19:19

Re: No Robot Code!!!
 
Quote:

Originally Posted by masoug (Post 956833)
Yes, rather I think THAT was the problem to this "No Robot Code" thing...

it could be (although if you are not using the camera or DriverStationLCD, having 4.1, 4.2 and 4.3 are the same)

4.2 caused this error if you were using the camera, hence the 4.3 update


Try rebuilding:
right click the project>Rebuild

masoug 26-04-2010 17:59

Re: No Robot Code!!!
 
Okay, thanks for all the wonderful suggestions and comments, but there is too much going on. Lets answer each question one by one... :]

1) What are the Driver stations updates for? What do they do?

2) What are the possible ways that trigger a "No Robot Code" error?
(I am pretty sure that we did not enable the "No App" switch, lets assume we didn't.)
3) I have installed NetConsole on my computer (with LabView Runtime) and enabled the "NetConsole.out" in "ni-rt.ini" via FTP. I rebooted the robot but it still doesn't work... (auto-connect or not) Has anyone have this problem before?
4) What is supposed to come up upon booting (of cRIO) on the NetConsole?
5) What does updating the cRIO image do? Would it help?

Thank you very much, I appreciate your help! :]

-Masoug

byteit101 26-04-2010 19:48

Re: No Robot Code!!!
 
Quote:

Originally Posted by masoug (Post 958161)
Okay, thanks for all the wonderful suggestions and comments, but there is too much going on. Lets answer each question one by one... :]

1) What are the Driver stations updates for? What do they do?

They update the driver station software. you should have it if you passed inspection at the competitions.
Quote:

Originally Posted by masoug (Post 958161)
2) What are the possible ways that trigger a "No Robot Code" error?
(I am pretty sure that we did not enable the "No App" switch, lets assume we didn't.)

There are many ways, but the two main ones are: no program on the robot, or undefined symbols (linker error)
Quote:

Originally Posted by masoug (Post 958161)
3) I have installed NetConsole on my computer (with LabView Runtime) and enabled the "NetConsole.out" in "ni-rt.ini" via FTP. I rebooted the robot but it still doesn't work... (auto-connect or not) Has anyone have this problem before?
4) What is supposed to come up upon booting (of cRIO) on the NetConsole?
5) What does updating the cRIO image do? Would it help?

Updates the libraries the cRIO has. YES IT WOULD HELP (assuming it is not v20 already)
Quote:

Originally Posted by masoug (Post 958161)

Thank you very much, I appreciate your help! :]

-Masoug


Radical Pi 26-04-2010 21:50

Re: No Robot Code!!!
 
I'll get the ones the above didn't answer

Quote:

Originally Posted by masoug (Post 958161)
3) I have installed NetConsole on my computer (with LabView Runtime) and enabled the "NetConsole.out" in "ni-rt.ini" via FTP. I rebooted the robot but it still doesn't work... (auto-connect or not) Has anyone have this problem before?

haven't really heard of this happening. Most likely there is some error on the cRIO that is blocking it from sending properly

Quote:

Originally Posted by masoug (Post 958161)
4) What is supposed to come up upon booting (of cRIO) on the NetConsole?

NetConsole will show a nice long list of StartupLibs being initialized, talking about FRC_NetworkCommunication at the end, as well as other errors it may see (some important, some not), and some other small messages depending on what is in your code (camera errors come to mind. No consequence on the actual robot)

Quote:

Originally Posted by masoug (Post 958161)
5) What does updating the cRIO image do? Would it help?

If you update the image (even if you are at v20) it will do a complete reformat of the cRIO and wipe everything on it. That's probably a good idea right now since nothing seems to work. Be sure to remove any CAN libraries as they block updates

masoug 27-04-2010 15:39

Re: No Robot Code!!!
 
Thanks for all the wonderful suggestions and comments.
Here's my list so far...

1) What are the Driver stations updates for? What do they do? SOLVED
Thanks to byteit101
Quote:

Originally Posted by byteit101
They update the driver station software. you should have it if you passed inspection at the competitions.

2) What are the possible ways that trigger a "No Robot Code" error?
Quote:

Originally Posted by byteit101
There are many ways, but the two main ones are: no program on the robot, or undefined symbols (linker error)

Hmmm... Thanks, but what is a symbol? The linker wasn't able to successfully link the dynamic libraries correctly? (Incorrect correspondence between in-program link and the actual link library?)

3) I have installed NetConsole on my computer (with LabView Runtime) and enabled the "NetConsole.out" in "ni-rt.ini" via FTP. I rebooted the robot but it still doesn't work... (auto-connect or not) Has anyone have this problem before?

4) What is supposed to come up upon booting (of cRIO) on the NetConsole? SOLVED
Thanks to Radical Pi
Quote:

Originally Posted by Radical Pi
NetConsole will show a nice long list of StartupLibs being initialized, talking about FRC_NetworkCommunication at the end, as well as other errors it may see (some important, some not), and some other small messages depending on what is in your code (camera errors come to mind. No consequence on the actual robot)


5) What does updating the cRIO image do? Would it help? SOLVED
Thanks to Radical Pi
Quote:

Originally Posted by Radical Pi
If you update the image (even if you are at v20) it will do a complete reformat of the cRIO and wipe everything on it. That's probably a good idea right now since nothing seems to work. Be sure to remove any CAN libraries as they block updates

So apparently, this is my to-do list:
1) Check "No App" switch.
2) Reformat/reimage cRIO. (v20)
3) Run WindRiver updates. (4.3)
4) Run driver station updates.
5) Load new code. Hope it works! :]

Thank you guys, I learned a lot!

-Masoug

masoug 27-04-2010 15:41

Re: No Robot Code!!!
 
Thanks for all the wonderful suggestions and comments.
Here's my list so far...

1) What are the Driver stations updates for? What do they do? SOLVED
Thanks to byteit101
Quote:

Originally Posted by byteit101
They update the driver station software. you should have it if you passed inspection at the competitions.

2) What are the possible ways that trigger a "No Robot Code" error?
Quote:

Originally Posted by byteit101
There are many ways, but the two main ones are: no program on the robot, or undefined symbols (linker error)

Hmmm... Thanks, but what is a symbol? The linker wasn't able to successfully link the dynamic libraries correctly? (Incorrect correspondence between in-program link and the actual link library?)

3) I have installed NetConsole on my computer (with LabView Runtime) and enabled the "NetConsole.out" in "ni-rt.ini" via FTP. I rebooted the robot but it still doesn't work... (auto-connect or not) Has anyone have this problem before?

4) What is supposed to come up upon booting (of cRIO) on the NetConsole? SOLVED
Thanks to Radical Pi
Quote:

Originally Posted by Radical Pi
NetConsole will show a nice long list of StartupLibs being initialized, talking about FRC_NetworkCommunication at the end, as well as other errors it may see (some important, some not), and some other small messages depending on what is in your code (camera errors come to mind. No consequence on the actual robot)


5) What does updating the cRIO image do? Would it help? SOLVED
Thanks to Radical Pi
Quote:

Originally Posted by Radical Pi
If you update the image (even if you are at v20) it will do a complete reformat of the cRIO and wipe everything on it. That's probably a good idea right now since nothing seems to work. Be sure to remove any CAN libraries as they block updates

So apparently, this is my to-do list:
1) Check "No App" switch.
2) Reformat/reimage cRIO. (v20)
3) Run WindRiver updates. (4.3)
4) Run driver station updates.
5) Load new code. Hope it works! :]

Thank you guys, I learned a lot!

-Masoug

byteit101 27-04-2010 17:17

Re: No Robot Code!!!
 
Quote:

Originally Posted by masoug (Post 958442)
Hmmm... Thanks, but what is a symbol? The linker wasn't able to successfully link the dynamic libraries correctly? (Incorrect correspondence between in-program link and the actual link library?)

WPILib is compiled and on the robot. It exposes its functions, so you can compile your program with the WPILib headers on your computer, copy the program to the cRIO, and then the linker will move the references from the WPILib headers to the actual WPILib functions. If the linker cannot find the function you are calling, it will throw a undefined symbol error

If you call a old function from an old version of WPILib (assuming you have the right headers), it will compile fine, but linking will throw lots of symbol errors.

this can also be an artifact of a c++ feature: every cpp file is compiled by itself, and then linked together at the end, so when you change a file, only the changed file has to be recompiled. sometimes when you update, a file is not recompiled with the new changes, so it can also throw the error
the best way to twart this is to recompile the project (solved all of our symbol errors this year): right click the project and click rebuild
Quote:

Originally Posted by masoug (Post 958442)

So apparently, this is my to-do list:
1) Check "No App" switch.
2) Reformat/reimage cRIO. (v20)
3) Run WindRiver updates. (4.3)
4) Run driver station updates.
5) Load new code. Hope it works! :]

I would change that to:

1) Check "No App" switch.
2) Reformat/reimage cRIO. (v20)
3) Run WindRiver updates. (4.3)
4) Run driver station updates.
5) restart driverstation, restart cRIO, restart WindRiver
6) rebuild (right click project, rebuild)

7) Load new code. Hope it works! :]

Al Skierkiewicz 28-04-2010 07:29

Re: No Robot Code!!!
 
masoug et al,
A few of these issues have been plaguing teams and I saw a few up close at Champs that we were able to observe and rectify. Frayed/splayed wiring at the PD or at the Crio end of the power supply cable causes very intermittent breaks in the power supply line. On several robots, this eventually led to a no code or other error as the noise produced by the wiring eventually corrupted the Crio. Teams should know that a properly terminated power cable has no exposed copper and cannot be pulled out with a tug to each of the wires at both ends.

masoug 28-04-2010 21:29

Re: No Robot Code!!!
 
Unfortunately, I followed the steps:
Quote:

1) Check "No App" switch.
2) Reformat/reimage cRIO. (v20)
3) Run WindRiver updates. (4.3)
4) Run driver station updates.
5) restart driverstation, restart cRIO, restart WindRiver
6) rebuild (right click project, rebuild)

7) Load new code. Hope it works! :]
but it still did not work.

Does anyone have any suggestions? I am becoming very interested in the "Reset" button on the cRIO.

THANKS!

-Masoug

Radical Pi 28-04-2010 23:28

Re: No Robot Code!!!
 
The reset button only forces a reboot as far as I know (just like the reset button on a desktop computer)

So you've done a full reformat of the cRIO? Have you tried a direct connection to a non-classmate computer running the DS software? You can load it by running the latest updater on any computer. If it still doesn't work without using the classmate, then you most likely have a defective cRIO

byteit101 29-04-2010 15:00

Re: No Robot Code!!!
 
Quote:

Originally Posted by Radical Pi (Post 958817)
The reset button only forces a reboot as far as I know (just like the reset button on a desktop computer)

Yep it just reboots the cRIO, we used it extensively. It is nice when the software crashes and you cannot use the DS reboot, and when you need to reboot fast, but don't have the DS up.

masoug 29-04-2010 15:00

Re: No Robot Code!!!
 
What I am thinking happened the cRIO was damaged in some way (shaking? shock?) that somehow disturbed its system. Although the code works at first, when we update it the cRIO has an error we cannot detect.

As for this;
Quote:

Originally Posted by Radical Pi
So you've done a full reformat of the cRIO?

Yes we used the Imaging tool to load v20 onto the cRIO.

and
Quote:

Originally Posted by Radical Pi
Have you tried a direct connection to a non-classmate computer running the DS software?

We haven't tried that yet, but I think that is not the problem.
I believe that the cRIO has a configuration error that we cannot see, (I wish there is an SSH server on there) OR it is physically damaged.

THANKS!!!

-Masoug

mikets 29-04-2010 15:51

Re: No Robot Code!!!
 
I don't know if you got NetConsole working (I never do), you can do a direct connection to the cRIO's serial port with a NULL modem cable to your PC using 9600,n,8,1 (make sure the console debug DIP switch is enabled accordingly). I found this extremely useful because then you will see all the boot messages from the cRIO. If there is any code loading problem, it will show on your terminal console. There was an excellent thread somewhere talking about different causes of "No Robot Code". I don't remember which forum. You may want to search for it. It contains a lot of useful information.
Good luck.

masoug 30-04-2010 00:35

Re: No Robot Code!!!
 
Quote:

you can do a direct connection to the cRIO's serial port with a NULL modem cable to your PC using 9600,n,8,1 (make sure the console debug DIP switch is enabled accordingly).
I hope that I am not too weird on this, but could you explain this a little more? I am relatively a beginner. Thanks! -Masoug

mikets 30-04-2010 23:23

Re: No Robot Code!!!
 
On the cRIO, there is a 9-pin D connector. That's a serial port. Right around it, there are 8-bit DIP switches. The 2nd position is labeled "Console Out". Make sure console out is enabled. Here is more info about Console out:
http://digital.ni.com/public.nsf/all...25701B004A77CD

You need a COM port on your PC. Unfortunately, new laptops no longer have COM ports, you may need a desktop PC or you need to get a USB to Serial adapter such as this:
http://www.newegg.com/Product/Produc...-067-_-Product
You also need a Null modem cable (i.e. pin 2 and 3 on both ends are swapped). The one that came with the KOP is not a null modem cable. You may need to get a null modem cable such as this:
http://www.newegg.com/Product/Produc...-034-_-Product
You also need a terminal software. If you are running XP, you can use hyperterm that came with Windows. You need to set the communication protocol to 9600 baud, 8 data bit, no parity bit and 1 stop bit (i.e. 9600, n, 8, 1). Once you have this set up, you should see messages spitting out from the cRIO while it boots. If your code failed to load, there will be an error message telling you why.

masoug 06-05-2010 14:54

Re: No Robot Code!!!
 
Finally, we figured out what the problem was. The WindRiver working directory was just on the desktop, so when WindRiver regenerated the makefiles, all the paths (library paths) didn't correspond correctly, resulting in an undefined symbol error.

Thanks guys for helping me pinpoint the problem, so now we know what to look for when this happens.

-Masoug


All times are GMT -5. The time now is 12:18.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi