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

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

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?

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

Do you have the 2nd update?

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

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?

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

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?

  1. 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.)
  2. 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?
  3. What is supposed to come up upon booting (of cRIO) on the NetConsole?
  4. What does updating the cRIO image do? Would it help?

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

-Masoug

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

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

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

I’ll get the ones the above didn’t answer

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

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)

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

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

2) What are the possible ways that trigger a “No Robot Code” 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

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

So apparently, this is my to-do list:

  1. Check “No App” switch.
  2. Reformat/reimage cRIO. (v20)
  3. Run WindRiver updates. (4.3)](http://first.wpi.edu/FRC/frccupdates.html)
  4. Run driver station updates.
  5. Load new code. Hope it works! :]

Thank you guys, I learned a lot!

-Masoug

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

2) What are the possible ways that trigger a “No Robot Code” 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

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

So apparently, this is my to-do list:

  1. Check “No App” switch.
  2. Reformat/reimage cRIO. (v20)
  3. Run WindRiver updates. (4.3)](http://first.wpi.edu/FRC/frccupdates.html)
  4. Run driver station updates.
  5. Load new code. Hope it works! :]

Thank you guys, I learned a lot!

-Masoug

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

I would change that to:

  1. Check “No App” switch.
  2. Reformat/reimage cRIO. (v20)
  3. Run WindRiver updates. (4.3)](http://first.wpi.edu/FRC/frccupdates.html)
  4. Run driver station updates.
    **5) restart driverstation, restart cRIO, restart WindRiver
  5. rebuild (right click project, rebuild)**
  6. Load new code. Hope it works! :]

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.

Unfortunately, I followed the steps:

  1. Check “No App” switch.
  2. Reformat/reimage cRIO. (v20)
  3. Run WindRiver updates. (4.3)](http://first.wpi.edu/FRC/frccupdates.html)
  4. Run driver station updates.
    **5) restart driverstation, restart cRIO, restart WindRiver
  5. rebuild (right click project, rebuild)**
  6. 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

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

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.

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;

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

and

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

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.

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

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/allkb/354A5124E6A667988625701B004A77CD

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/Product.aspx?Item=N82E16812191067&cm_re=USB_to_serial--12-191-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/Product.aspx?Item=N82E16812191034&cm_re=null_modem_cable--12-191-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.