Embedded Linux, board initialization and loading microengines
Hi together, this question goes to everyone using embedded linux on the enp-2505 which has an ixp1200 and one IXF440 onboard. Hope there are some. ;) I am currently coding an MPLS-Router based on above hardware. To keep it fast and profiling simple I am handling all tasks in the microengines and therefore want to avoid ACEs. When switching from simulation, which worked fine, to hardware debugging I ran into trouble. Though receival of packets worked fine in simulation the code keeps waiting for mpackets when doing hardware debugging. The following loop (from Johnson and Kunze) keeps going forever : do { csr_read((void *)&rcv_ready_bits, rcv_rdy_lo, 1, ctx_swap); } while ( !(rcv_ready_bits & (1 << port_num)) ); The SDK was instructed to "start ports" and IX-Bus-Config is 64Bit, 1-2 MACs. To prepare the Hardware for Debugging I ran bootixp and after that insmod ue.o; insmod octmac.o; rs_udebug; Its definitely no hardware or cabling problem as the supplied l3forwarding_example (./ixstart) works fine. When instead of the above preparations loading an ace-example with (debug mode 1 - Download and debug via workbench) and inserting my own code debugging works as expected. This leads to the following questions : *** Question start here :-) What (else) has to be done to properly initialize the hardware ? Tried some ioctls() on octmac.o but could not find a promising sequence due to a lack of documentation on that subject. To configure a bunch of machines I have been looking for alternative ways to inject the microcode. A program/library that can be used to load+start the microengines would be of great interest. Though some libraries have functions with promising names there are too many and docomentation is to sparse to start guessing. Any suggestions are welcome. Thanks a lot in advance. Yours, Robert. -------------------------------------------------------------------------- Here some information on the Hard-/Software in use :
WARNING: IXF440 MAC Address Initialzation failed. sts = 130 Press space bar to stop auto-boot... 0 Flash download mode is 1
Cygmon, the Cygnus ROM monitor. Cygmon was written by Robert Richardson and Bob Manson of Cygnus Solutions Copyright(c) 1997, 1998, 1999 Cygnus Solutions
Version: release 2.04 This image was built on Fri Feb 22 16:35:14 PST 2002
CPU: IXP1200 StrongARM(R) Microprocessor rev. C0 Board: Intel(R) PA1104 Network Processor Base Card StrongARM is a Registered Trademark of Advanced RISC Machines Limited. Intel is a Registered Trademark of Intel Corporation Other Brands and Trademarks are the property of their respective owners. Waiting for host based download
Kernel in use :
Linux ixp_target 2.3.99-pre3-rmk3-np2 #235 Fri Feb 21 13:51:33 CET 2003 armv4b
Software: IXA SDK 2.01a IXA Education Workstation (CD from 05/28/2002) -------------------------------------------------------------------------- -- There are three ways to get something done: (1) Do it yourself. (2) Hire someone to do it for you. (3) Forbid your kids to do it.
What (else) has to be done to properly initialize the hardware ? Tried some ioctls() on octmac.o but could not find a promising sequence due to a lack of documentation on that subject.
You could start by looking at what "ixconfig" application does when an ACE example is started. Also, take a look at ingress/egress ACE core components, to see how they initialize the ports. By then, you would probably understand completely how the ACE framework works, and could use ACE instead of gleaning out code from it to make your own library :). The other option is to use some tools from Georgia Tech group, see Ken's mail below. I havent used it though, and am not sure if that is what you want. **************** Hi all, Here's an updated package of our local tools, just updated to include a microcode loader, etc. that we use to operate the microengines from the StrongARM under Linux without ACEs or the workbench. http://www.cercs.gatech.edu/projects/asan/software.html Note that the StrongARM tools (in the "utils/" directory) don't depend on our alternative host-side driver scheme, I'm just packaging them in one tarball. **************
participants (2)
-
Abhijeet Joglekar
-
Robert Klima