Sorry, I just found that Heinz actually also replied to this back in december, but in the digest form. :) **slowly working my way through email backlog for spring semester /sigh/*
On Fri, May 4, 2018 at 10:36 AM, Gedare Bloom <ged...@rtems.org> wrote: > Hello Anton, > > On Wed, Dec 13, 2017 at 9:13 PM, Anton Derbenev <aaderbe...@gmail.com> wrote: >> Hello all, >> >> at NSLS-II, we have several dozen MVME3100 VME crates running RTEMS with >> EPICS driver for various diagnostics and MRF timing hardware. The entire >> setup was handily created quite some time ago by combining RTEMS 4.9 with >> Cexp and GeSys to provide convenient booting and debugging capabilities. As >> an effort to make the setup more up-to-date, I made an attempt to compose a >> how-to which would describe how to successfully compile a bootable >> RTEMS+Cexp+GeSys image. A nice "bonus" would be if that image also worked >> when being run on a crate. >> >> It is not my first attempt as I already tried to do a similar thing for >> RTEMS 4.10. While in both cases I found lots of work being put by the >> community in helpful toolsets and documentation, the building process was >> not as straightforward as one would imagine by reading the QuickStart guide. >> There are many stumbles which, while probably being primitive in most cases, >> could be annoying to a user who lacks core developer knowledge and >> perspective. Some things can be mentioned _somewhere_ and can only be found >> quickly by google-fu and/or luck. >> >> This time I reached for RTEMS 5 right away. Results which I achieved are >> very similar to those which I had for RTEMS 4.10 - I can create a bootable >> image which appears to have working GeSys and Cexp shell, but access to >> "st.sys" fails along with other suspicious symptoms. >> >> Below is my "how-to" process which yields a bootable "rtems.ralf" file, and >> results for our test MVME3100 system boot procedure. Some points highlighted >> will probably be useful for further users' reference, and some of them come >> from earlier conversations on the mailing list. My hope is that someone >> knowledgeable will kindly review my steps and give some hint why the image >> fails to work as expected. Perhaps it would be great to have a step-by-step >> how-to as a part of documentation somewhere. >> >> ==================== >> RTEMS 5 + Cexp + GeSys How-To >> >> 1. Get RTEMS source builder (rsb). As a part of its configuration, rsb will >> try to fetch various sources from multiple locations. If rsb is being >> configured in a protected environment (e.g. http proxy, firewalls, etc.), >> source locations can be unavailable. Get rsb sources on a machine which can >> freely download from git.rtems.org, github.com etc. with both http(s) and >> git protocol: >> >> $ mkdir --parents ~/src/RTEMS >> $ cd ~/src/RTEMS >> $ git clone http://github.com/RTEMS/rtems-source-builder.git rsb >> $ cd rsb/rtems >> >> Perform dry configuration and only download sources, as suggested here: >> >> https://lists.rtems.org/pipermail/users/2017-September/031647.html >> >> Choose profile as appropriate (rtems-powerpc for MVME3100): >> >> $ ../source-builder/sb-set-builder --dry-run --with-download >> --without-error-report --without-release-url 5/rtems-powerpc >> >> 2. If firewalls and proxies are not a problem for you, skip this step. Even >> though sources were pre-downloaded, rsb will try to fetch the rtems-tools >> repository during the build process (even if --no-download is specified). We >> need to make sure the repository is accessible or the lengthy build process >> (~ hour on two cores) will fail. In our environment, git protocol didn't >> work through http(s) proxy, so git config was modified: >> >> $ cd ~/src/RTEMS/rsb/rtems >> $ nano sources/git/rtems-tools.git/.git/config >> >> Replace: >> url = git://git.rtems.org/rtems-tools.git >> with: >> url = https://github.com/RTEMS/rtems-tools.git >> >> 3. rsb now has sources and patches downloaded. If you will build RTEMS on a >> different host, move the entire folder to the build machine. >> >> My build setup: >> >> $ uname -a >> Linux sandbox8 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) >> x86_64 GNU/Linux >> $ cat /etc/debian_version >> 8.9 >> >> All further steps are performed on the build machine. >> >> 4. Run sb-check and install necessary packages if the check tool complains: >> >> $ cd ~/src/RTEMS/rsb >> $ ./source-builder/sb-check >> >> Alas, sb-check doesn't check for everything. For example, the build process >> can fail with something like: >> >> checking for python... /usr/bin/python >> checking for python2.7... no >> >> This is resolved by being lucky in finding a similar issue discussed on the >> mailing list. Additional packages may be needed, in the mentioned case it >> was: >> >> $ sudo apt-get install python2.7-dev >> >> 5. Build rsb (takes a while, was an hour on my dual-core VM). Since sources >> were pre-downloaded, specify "--no-download" (however rtems-tools will still >> be fetched!): >> >> $ ../source-builder/sb-set-builder --no-download --prefix=$HOME/src/RTEMS/5 >> 5/rtems-powerpc >> >> 6. Build rtems. First make sure rsb tools are in path: >> >> $ export PATH=$HOME/src/RTEMS/5/bin:$PATH >> >> Get RTEMS source: >> >> $ cd ~/src/RTEMS >> $ mkdir kernel >> $ cd kernel >> $ git clone https://github.com/RTEMS/rtems.git >> >> Run bootstrap scripts to generate files which are missing in cloned >> repository: >> >> $ cd rtems >> $ ./bootstrap -c >> $ ./bootstrap -p >> $ ../../rsb/source-builder/sb-bootstrap >> $ cd .. >> >> Configure and build RTEMS for the target: >> >> $ mkdir build-mvme3100 >> $ cd build-mvme3100 >> $ ../rtems/configure --enable-networking --enable-cxx --enable-rdbg >> --enable-posix --prefix=$HOME/src/RTEMS/5 --target=powerpc-rtems5 >> --enable-rtemsbsp=mvme3100 >> $ make -j 8 >> $ make install >> >> 7. Build Cexp. Two things which are not straightforward is getting all >> submodules and running "make prep". >> >> $ cd ~/src/RTEMS >> $ mkdir cexp >> $ cd cexp >> $ git clone https://github.com/till-s/cexpsh.git >> $ cd cexpsh >> $ git submodule update --init --recursive >> >> As with RTEMS bootstrap, we need to generate some missing files. Stunningly, >> I didn't find it mentioned in cexpsh/INSTALL: >> >> $ make prep >> >> Now the code is ready to be configured and built. Use >> "--enable-std-rtems-installdirs" to perform installation on top of the >> previously built RTEMS tree: >> >> $ cd .. >> $ mkdir build-mvme3100 >> $ cd build-mvme3100 >> $ ../cexpsh/configure --enable-std-rtems-installdirs >> --with-rtems-top=$HOME/src/RTEMS/5 --host=powerpc-rtems5 >> --enable-rtemsbsp=mvme3100 >> $ make -j 8 >> $ make install >> >> 8. Build GeSys. Another trickery here - before configuring, it is necessary >> to build the ldep tool as mentioned in documentation. >> >> Get all GeSys sources and submodules: >> >> $ cd ~/src/RTEMS >> $ mkdir gesys >> $ cd gesys >> $ git clone https://github.com/till-s/rtems-gesys.git >> $ cd rtems-gesys >> $ git submodule update --init --recursive >> >> As for other parts, generate missing files by running the bootstrap tool: >> >> $ ./bootstrap >> >> Another bootstrap is necessary for ldep: >> >> $ cd ldep >> $ ./bootstrap >> $ mkdir build >> $ cd build >> >> Configure and install ldep to where all rsb stuff is: >> >> $ ../configure --prefix=$HOME/src/RTEMS/5 >> $ make >> $ make install >> >> Configure and install GeSys in the same tree where RTEMS and Cexp are by >> using "--enable-std-rtems-installdirs". Note that $HOME/src/RTEMS/5/bin must >> be in PATH: >> >> $ cd ~/src/RTEMS/gesys >> $ mkdir build-mvme3100 >> $ cd build-mvme3100 >> $ ../rtems-gesys/configure --enable-std-rtems-installdirs >> --with-rtems-top=$HOME/src/RTEMS/5 --host=powerpc-rtems5 >> --enable-rtemsbsp=mvme3100 >> $ make -j 8 >> $ make install >> >> 9. Behold the build binaries: >> >> $ cd ~/src/RTEMS/5/powerpc-rtems5/bin >> $ ls >> ar ld nm objdump readelf rtems.ralf st.sys >> as ld.bfd objcopy ranlib rtems.exe strip >> >> rtems.ralf is the thing. It worth mentioning that none of .obj files loaded >> in the "st.sys" are present (telnetd.obj, monitor.obj etc.) >> >> ==================== >> Boot the image >> >> I put the resulting image in our VME timing test setup which successfully >> boots and runs RTEMS 4.9. Boot procedure is DHCP with MOTLoad netBoot. >> "rtems.ralf" was renamed to "rtems.boot" for booting purposes. Boot >> sequence: >> >> ******************** >> Copyright(C)2008-2013,Emerson Network Power-Embedded Computing,Inc. >> All Rights Reserved >> Copyright Motorola Inc. 1999-2007, All Rights Reserved >> MOTLoad RTOS Version 2.0, PAL Version 1.2 RM04 >> Wed Nov 6 17:17:43 MST 2013 >> >> MPU-Type =MPC8540 >> MPU-Int Clock Speed =666MHz >> MPU-CCB Clock Speed =333MHz >> MPU-DDR Clock Speed =166MHz >> MPU-PCI Clock Speed =66MHz, PCI, 64-bit >> MPU-Int Cache(L2) Enabled, 256KB, L2CTL =A8000300 >> >> Reset/Boot Vector =Flash0 >> >> Local Memory Found =10000000 (&268435456) >> User Download Buffer =0159D000:0179CFFF >> >> MVME3100> bootmem=malloc 0x500000 >> return = 0193D000 (&26464256) >> errno = 00000000 >> MVME3100> netBoot -d/dev/enet0 -v -abootmem -p -h -u >> Network Loading from: /dev/enet0 >> >> Locating BOOTP Server... Found It! >> >> Client IP Address = 10.0.1.104 >> Server IP Address = 10.0.1.1 >> Gateway IP Address = 0.0.0.0 >> Subnet IP Address Mask = 255.255.255.0 >> Boot File Name = rtems-5/rtems.boot >> Load Address = 0193D000 >> Buffer Size = ffffffff >> >> Network Boot File Load Start - Press <ESC> to Bypass, <SPC> to Continue >> >> Network Boot File Load in Progress - Press <CTRL-C> to Abort[]>>>> >> ... >> Bytes Received =&4886264, Bytes Loaded =&4886264 >> Bytes/Second =&488626, Elapsed Time =10 Second(s) >> >> Execution Halted on Request >> MV----------------------------------------- >> Welcome to rtems-5.0.0 (PowerPC/Generic (no FPU)/mvme3100) >> BSP: mvme3100, CVS Release ($Name$) >> CPU 0x8020 - rev 0x20 >> Additionnal boot options are H >> Initial system stack at 14c9980 >> Software IRQ stack starts at 14c9a90 with size 16384 >> Going to start PCI buses scanning and initialization >> Board Type: MVME3100-1152 (S/N E10EA0D) >> External (=PCI Bus) Clock Freq : 66666666 Hz >> Core Complex Bus (CCB) Clock Freq: 333333330 Hz >> CPU Clock Freq: 133333332 Hz >> Ethernet 0 EC:9E:CD:0E:16:5B >> Ethernet 1 EC:9E:CD:0E:16:5C >> Ethernet 2 EC:9E:CD:0E:16:5D >> Number of PCI buses found is : 2 >> BUS:SLOT:FUN VENDOR-DEV_ID: COMMAND STATUS BASE_ADDR0 BASE_ADDR1 IRQ_PIN -> >> IRQ_LINE >> 0:0x00:0 0x1057-0x0008: 0x0006 0x20b0 0x80000000 0x00000000 0 -> >> 0 (=0x00) >> 0:0x11:0 0x10e3-0x0148: 0x0146 0x02b0 0x80100004 0x00000000 1 -> >> 0 (=0x00) >> 0:0x12:0 0x10b5-0x6520: 0x0147 0x02b0 0x00000000 0x00000000 0 -> >> 0 (=0x00) >> 0:0x14:0 0x1095-0x3124: 0x01c7 0x02b0 0x80300004 0x00000000 1 -> >> 2 (=0x02) >> 1:0x00:0 0x10b5-0x9030: 0x0142 0x0290 0x80200000 0x00000000 1 -> >> 4 (=0x04) >> Memory: 268435456 bytes >> Cleared PCI errors: pci_stat was 0x20b0 >> OpenPIC Version 1.2 (1 CPUs and 56 IRQ sources) at 0x3775135744 >> OpenPIC Vendor 0 (Unknown), Device 0 (Unknown), Stepping 0 >> OpenPIC timer frequency is 41666666 Hz >> MSR is 0x00001000, TCR 0x04000000 >> ----------------------------------------- >> Exit from bspstart >> libi2c: Library not initialized >> Registering mpc8540 i2c bus driver :No such file or directory >> Tundra Tsi148 PCI-VME bridge detected at 0x80100000, IRQ 0 >> Tsi148 Outbound Ports: >> Port VME-Addr Size PCI-Adrs Mode: >> 0: 0x20000000 0x0e000000 0xc0000000 A32, SUP, D32, SCT >> 1: 0x00000000 0x00ff0000 0xcf000000 A24, SUP, D32, SCT >> 2: 0x00000000 0x00010000 0xcfff0000 A16, SUP, D32, SCT >> 7: 0x00000000 0x01000000 0xce000000 CSR, SUP, D32, SCT >> Tsi148 Inbound Ports: >> Port VME-Addr Size PCI-Adrs Mode: >> 0: 0xc0000000 0x10000000 0x00000000 A32, PGM, DAT, SUP, USR, MBLT, BLT >> vmeTsi148 IRQ manager: looking for registers on VME... >> Trying to find CSR on VME... >> vmeTsi148 - IRQ manager using VME CSR to flush FIFO >> Registering /dev/console as minor 0 (==/dev/ttyS0) >> Welcome to RTEMS 5.0.0 GeSys >> This system was built on 20171213EST19:00:39 >> Installing TIOCGWINSZ line discipline: ok. >> To skip initialization, press a key now... >> bootpc_init: using network interface 'tse1' >> bootpc hw address is ec:9e:cd:e:16:5b >> My ip address is 10 .0 .1 .104 >> Time Server is 10 .0 .1 .1 >> Domain name is cs.nsls2.local >> Boot file is rtems-5/rtems.boot >> Command line is IOCNAME=timing >> Subnet mask is 255 .255 .255 .0 >> Server ip address is 10 .0 .1 .1 >> Gateway ip address is 0 .0 .0 .0 >> Log server ip address is 10 .0 .1 .1 >> bootpc_adjust_interface: add net route, error=114 >> Trying to synchronize NTP...OK >> Trying symfile 'BUILTIN', system script 'st.sys' >> 'st.sys': >> opening script file: No such file or directory >> Type 'cexpsh.help()' for help (no quotes) >> ******************** >> >> There are several suspicious points: PCI buses scanning not reporting >> anything, i2c library/driver errors, bootpc_adjust_interface error, and of >> course "st.sys" script not being found. Peculiar enough, I can perform NFS >> mount and run a script from there. It doesn't work smoothly however and >> nfsMountsShow output is odd: >> >> Cexp>nfsInit(0,0) >> RTEMS-NFS, Till Straumann, Stanford/SLAC/SSRL 2002, See LICENSE file for >> licensing info. >> 0x00000000 (0) >> Cexp>nfsMount("10.0.1.1","/srv/tftp/rtems-5","/common") >> Trying to mount 10.0.1.1:/srv/tftp/rtems-5 on /common >> RTEMS-RPCIOD, Till Straumann, Stanford/SLAC/SSRL 2002, See LICENSE file for >> licensing info. >> 0x00000000 (0) >> Cexp>nfsMountsShow(0) >> Currently Mounted NFS: >> 10.0.1.1:/srv/tftp/rtems-5 on / >> 0x00000000 (0) >> >> ==================== >> Conclusion >> >> To conclude that, I'd be happy to hear any suggestions and insights to the >> procedure described. It might be something as obvious as missing an option >> somewhere. It would be also great if anyone who has a working >> RTEMS+Cexp+GeSys setup would share instructions on how to make it work >> properly. >> > > I don't know if you ever worked this out for yourself. libnetworking > does not get a lot of usage in RTEMS-5.0. Heinz Junkes tells me that > he got EPICS-7 working on RTEMS-5 with PPC/MVME6100, but I don't know > if they use the cexp/gesys modules yet. > > Gedare > >> Best regards, >> Anton A. Derbenev >> NSLS-II >> Brookhaven National Laboratory >> >> >> _______________________________________________ >> users mailing list >> users@rtems.org >> http://lists.rtems.org/mailman/listinfo/users _______________________________________________ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users